The document discusses integrating TestComplete automation testing with Ruby. Originally, TestComplete was used for Windows, Mac, and system tests, while Ruby and Cucumber were used separately. It was decided to create a common layer using a TestComplete client, HTTP bridge, and Ruby client to allow communication between TestComplete and Ruby for distributed testing across platforms. The solution involves TestComplete code executing via commands from the Ruby client to allow non-technical users to involve automation using a common solution.
2. What was originally Win UI tests System tests Mac UI tests Ruby AQA TestComplete Cucumber
3. Win UI tests System tests Mac UI tests Ruby ??? Cucumber AQA TestComplete How it was supposed to be
4. Main goals Provide common layer for all areas Give the ability to involve non-technical people into automation Provide common solution for distributed testing All improvements should be done smoothly (current solution should always work) 06.02.11
5. Win UI tests System tests Mac UI tests AQA TestComplete Ruby Cucumber What was decided
13. AQA TC client Http Bridge Ruby Client Get command Command Send command Set pending status Status Check status Run command Set «done» status Send results Results Get Results How it works
14. TestComplete part 06.02.11 Wait for command Reset status Process functions Execute code Send results Set “done” status
15. Ruby part 06.02.11 Verify “done” status Valid TC code Set “pending” status Send code to execute Verify completion Call TC code Get results
16. Step 2: start TC client AQA TestComplete client Step 1: start bridge Http bridge Ruby client Step 3: start Ruby client How to start it
17. Results in YAML format. Example: ret_val: <return value> errors: - <error message 1> - <error message 2> Get results AQA TestComplete client Transform into Ruby structure Http bridge Executable TestComplete code Ruby client Data exchange Fail if some errors present
18. Case 2: TC crashes Case 1: TC request failed Stable communication Case 3: execution is pending when Ruby client starts Resolution: Resend several times until success Stable communication Resolution: Ruby client waits for some limited time to execute Case 4: bridge was stopped Resolution: Ruby client sets status into «done» at the begining Resolution: clients are stopped AQA TestComplete client Http bridge Ruby client Hard cases
20. Goals achievement 06.02.11 Win UI tests System tests Mac UI tests It still works AQA TestComplete Ruby Distributed architecture Common Layer Cucumber Works for non-technical people
22. Why alternative doesn’t work? Too tight connection to TestComplete Dependency on system-dependend values (UID) Distributed solution works for Windows only Complex Ruby structures 06.02.11