All templates
Desktop AutomationAdvanced
GUI Testing Calculator
Robomotion•Updated 6 months ago

Overview
Drives the Windows Calculator through native UI automation to validate arithmetic. A concrete template for end-to-end GUI testing of desktop apps.
GUI Testing Calculator
Manual GUI testing can be a challenging task for applications with complicated interfaces. Use Robomotion as a testing tool and create desktop flows that replicate testing steps every time they are needed.
What GUI Testing Calculator can do
- Pre-test —
Set Variables(Core.Flow.SubFlow): seeds the core identifiers and computes the CSV report file paths. - Pre-test —
Start Test Report(Core.Flow.SubFlow): writes the CSV header row to the temporary report file. - Test setup —
Launch App(Core.Flow.SubFlow): starts Calculator, waits for its window, captures its product version, thenResize and Position Appnormalises the window geometry. - Test pass —
Navigation Menu(Core.Flow.SubFlow): exercises the hamburger menu by switching betweenGraphing CalculatorandStandard Calculatormodes. - Teardown —
Close App(Core.Flow.SubFlow) thenFinish Test Report(Core.Flow.SubFlow) writes the final report row and closes the target application beforeCore.Flow.Stop. Core.Trigger.Catchwatches theLaunch App,Resize and Position App,Navigation Menu, andClose Appsubflows — on any subflow error it invokesLog Errors(Core.Flow.SubFlow) and stops withfailedand reasonA subflow raised an error.
Behind the scenes
- The flow is orchestrated entirely from
Core.Flow.SubFlownodes; each step is an isolated subflow that can be run or debugged independently. - The central
Core.Trigger.Catchfunnels errors from every test subflow into a singleLog Errorspath, so per-subflow Fail rows remain consistent in the CSV report. - The success path lets each subflow write its own
Passrow at the tail; the error path writes the correspondingFailrow — mirror this two-outcome shape when adding new test subflows. - CSV writes inside the
Log Errorsbranch should usecontinueOnError: trueso logging a failure cannot itself abort the flow.