Cycle 2.22.0
Released 2025-08-07.
New features
WebDriver Step Plugin
The WebDriver step plugin is the first major plugin to use the Step Plugin Architecture released in 2.20, and it comes bundled by default in Cycle 2.22. The plugin introduces several new project settings. To ensure your projects are automatically updated with the default settings, open your project in the Desktop IDE before attempting to run tests locally or in your CI pipelines.
New execution settings include:
- Element finding strategy: Indicates how the WebDriver step driver will find or "locate" the elements on a page.
- "Frame" finder strategy: Automatically searches both the main part of the page and any iFrames on the page. This is slower but backwards compatible, and we recommend it for most testers.
- "Direct" finder strategy: Requires testers to be explicit about entering and exiting iFrames.
- Default waiting timeout (ms): Sets the amount of time that Cycle will wait to find an element or validate a condition before failing a step. This applies to all steps, even if the step does not contain a "within" timeout.
- Chromium switches: Cycle now enables testers to set any command line switches they want for Chrome and Edge.
The WebDriver step plugin uses the latest version of Selenium (4.34), which includes Selenium Manager. Selenium will automatically attempt to download and install the appropriate WebDriver executables if they are not found on the machine or if they are out of date. If a tester explicitly provides WebDriver paths as execution settings, then Cycle will use them. If a tester leaves the WebDriver paths blank, then Cycle will default to Selenium's mechanisms for searching the system path or using Selenium Manager; in that case, make sure your version of Chrome is up to date. The existing web steps work the same way, but under the hood they run much more efficiently. Based on performance benchmarks, web tests may run up to 25% faster with the new WebDriver step plugin.
New Web Steps for Handling Alerts
We have renamed some previous "JavaScript" alert steps to use the more intuitive term "alert". The original steps using the verbiage "JavaScript prompts" or "JavaScript modals" have been preserved for backwards compatibility.
I click cancel on alertI click cancel on alert within {timeoutValue} {timeoutUnit}I click ok on alertI click ok on alert within {timeoutValue} {timeoutUnit}I copy text from alert to variable {variableName}I copy text from alert to variable {variableName} within {timeoutValue} {timeoutUnit}I scan {text} in alertI scan {text} in alert within {timeoutValue} {timeoutUnit}I type {text} in alert within {timeoutValue} {timeoutUnit}I see {text} in alertI see {text} in alert within {timeoutValue} {timeoutUnit}
New Web Steps for Element Properties and Attributes
You can now interact with HTML attributes and properties directly through the following steps:
I copy attribute {attribute} from element {locator} in web browser to variable {variableName}I copy attribute {attribute} from element {locator} in web browser to variable {variableName} within {timeoutValue} {timeoutUnit}I verify attribute {attribute} from element {locator} contains {text} in web browserI verify attribute {attribute} from element {locator} contains {text} in web browser within {timeoutValue} {timeoutUnit}I verify attribute {attribute} from element {locator} is {text} in web browserI verify attribute {attribute} from element {locator} is {text} in web browser within {timeoutValue} {timeoutUnit}I copy property {property} from element {locator} in web browser to variable {variableName}I copy property {property} from element {locator} in web browser to variable {variableName} within {timeoutValue} {timeoutUnit}I verify property {property} from element {locator} contains {text} in web browserI verify property {property} from element {locator} contains {text} in web browser within {timeoutValue} {timeoutUnit}I verify property {property} from element {locator} is {text} in web browserI verify property {property} from element {locator} is {text} in web browser within {timeoutValue} {timeoutUnit}
Refer to the User Manual for more information on the difference between attributes and properties.
New Browser Zoom Step
A new zoom control step is now available. The step parameter should be a non-negative integer value; for example, "50" represents a 50% zoom. Behavior can vary depending on the web page implementation.
I set the page zoom to <NUMBER> percent
New Element Drag and Drop Steps
I click in element "<FROMLOCATOR>" and drag to element "<TOLOCATOR>" in web browserI click in element "<FROMLOCATOR>" and drag to element "<TOLOCATOR>" in web browser within <NUMBER> "<TIMEOUTUNIT>"
New File Input Steps
These steps type the specified text into the file input element, setting the target file input element to the given file path value.
I set file input element {locator} to file path {text} in web browserI set file input element {locator} to file path {text} in web browser within {timeoutValue} {timeoutUnit}
Report Dashboard Improvements
- Syntax highlighting: The scenario trace in the Report Dashboard now has syntax highlighting that mirrors the feature file editor in the Desktop IDE, making test results easier to read.
- Restarted scenarios in group test workers: The Report Dashboard now clearly indicates when a worker has been restarted during a group test, making test results easier to interpret while troubleshooting.
Language Server Updates
The language server can now distinguish between test case scenarios and @wip scenarios. This is important for the VS Code extension to determine what should appear in the Testing view.
Changes
Along with the introduction of new steps, we have deprecated web steps that were previously marked as "deprecated", as well as image matching steps. For a full list of these steps, refer to the Knowledge Base.
Known Compatibility Issue
There is a known issue when downgrading from Cycle 2.21 or later to a previous version of Cycle. This issue is caused by changes to default settings in the cycle2settings.json file. More details on the issue and the steps to resolve it can be found in the linked Knowledge Base article.
Feedback addressed
- Feedback #7476 — Distinguish between lines displayed in the Report Dashboard. Addressed by adding syntax highlighting and Report Dashboard line indents, which were implemented in Cycle 2.21.
- Feedback #7970 — Better mechanism for interacting with the Windows file browser popup. Customers requested the ability to interact with a Windows file browser popup in order to upload a file into their system, which previous steps did not support. New WebDriver steps now allow this functionality; see the new file input steps above.
- Feedback #8381 — Show restarted group test workers in the Report Dashboard. Feedback indicated it would be helpful to have an indicator that repeated failed scenarios in the Report Dashboard came from workers restarting. This was implemented through the feature to mark restarted scenarios in a group test worker.
- Feedback #8500 — Retrieve the value of an HTML element attribute. Customers suggested the ability to retrieve the value of an HTML element attribute. We added new steps to the WebDriver step plugin for copying and verifying web element attributes; see the new attribute and property steps above.
Bug fixes
- Bug #4505 — Windows uninstall can fail when the app is open. Added a checkbox option on install that, when selected, closes background processes related to Cycle, including
cycle.exe,cycle-cli.exe,cycle-result-service.exe,chromedriver.exe,edgedriver.exe, andIEDriverServer.exe. (See also Bug #9445, where the Cycle Setup installer could not overwrite files if the app was open.) - Bug #6263 — Basic authentication when opening Chrome. The implementation of the WebDriver step plugin fixes an issue where the step "Given I open Chrome using basic authentication" did not work with the new web steps.
- Bug #6399 — Caching issue with Pendo prompts for the new installer. Cycle now displays in-app notifications when an update is available, and the download link works without requiring reauthentication.
- Bug #7931 — Text finding within elements with the web driver service enabled. The implementation of the WebDriver step plugin fixes failures in text finding within elements when
CYCLE_WEB_DRIVER_SERVICE_ENABLEDis set to true. - Bug #8981 — Email summaries not sent in Cycle 2.20. Fixed the issue where email summaries were not being sent.
- Bug #9171 — Reporting settings not passed from the project level. Fixed an issue in the Electron app where some users' reporting settings were not passed in from the project level.
- Bug #9178 — Group test worker ordering. Group test workers now appear in alphanumerical order.
- Bug #9434 — Typo on the Group Test screen. Fixed a typo in the Electron app from "Add an entry to being building a Group Test" to "Add an entry to begin building a Group Test".
- Bug #9907 — Headless browser window size. Headless browsers are now automatically set to a standard size of 1920x1080 when headless browser WebDriver instances are initialized, which is large enough for Blue Yonder tests.