3.1.0
Released Released on August 12, 2018
Summary:
Cypress can now run tests in parallel across multiple virtual machines, or can be parallelized on a single machine. Cypress will automatically figure out, detect, and load balance all of your specs in the fastest and most efficient way possible. There is no configuration other than passing a
--parallelflag and spinning up multiple machines on your CI provider. From our experiments you can expect to see approximately 40% reduction in overall run time per machine you add. However, attempting to run in parallel on a single machine requires server grade hardware with dozens (or even hundreds) of CPU's and GB of RAM to run efficiently. A much better and simpler approach is to use a cluster of Docker containers that are all isolated from each other. Any standard CI service (CircleCI, TravisCI, etc) comes with the ability to do this. We automatically tap into their environment variables to make parallelization possible without you having to configure anything.Beyond parallelization, you now have the ability to group multiple runs with each other so that they show up together (grouped) in the Dashboard. This enables you to test different applications, groups of specs, or different environments (like development, staging, production) and see all of the results together. We know how important cross browser testing is to everyone, so we built this to lead directly into aggregating the results of multiple browsers into a single run.
The Dashboard Service has been updated to show you more visual information about what happened during a run. You can see how specs were parallelized and you can calculate the effect of adding or removing machines to help reduce the overall run time.
Features:
cypress runaccepts a new --parallel flag to run specs in parallel. Fixes #1690 and #64 and #2297.cypress runaccepts a new --group flag to group multiple spec files within a single run. Fixes #2169cypress runaccepts a new--ci-build-idflag. Fixes #2153.
Bugfixes:
We've finally tracked down the source of specs "hanging" and failing to start when running Electron. We finally tracked it down to a bug in Electron itself with setting
menuwhen using offscreen rendering. Fixes #2322 and #2294 and #1235 and #1333.Clicking on svg elements is now working. 3.0.2 introduced a bug that would throw an 'illegal invocation' error. Fixes #2245 and #2252 and #2258 and #2277 and #2288.
Fixed a regression in 3.0.2 that caused typing
{enter}not to submit a form when there were<button>elements other thantype='submit'. Fixes #2261 and #2326.Fixed a small visual bug where failed commands were not aligned to other commands. Fixes #2314.
Fixes a race condition where async electron browser commands came in after the renderer had been destroyed, causing failures. Fixes #2321.
Misc
When recording to the Dashboard Service, we now provide estimated durations per spec directly within the standard output, as long as the spec has had enough run history for this to be determined. Fixes #2276.
When using the new --parallel or --group feature, we now visually indicate that to you in the standard output when recording. Fixes #2275.
We have added support for more CI providers to automatically detect and show more relevant information in the Dashboard, instead of showing 'Unknown'. Fixes #2146.
We have added better checks and reliability for detecting runs in Jenkins. Fixes #1990.
The built in
cypress-browserify-preprocessorwas bumped to1.1.0. This supports more JavaScript features by default, including async/await, object rest spread, and class properties. Fixes #2254.cypress run now creates a new browser profile per run per browser, but keeps the same browser profile when run via cypress open. This means you can run Cypress locally over multiple processes and the browser profiles will not conflict with each other. Fixes #1566.
The Desktop-GUI has been updated to get the new routes provided by the Cypress API for runs. Fixes #2189.
Cypress now retries multiple times (with a backoff strategy) when communicating with our API fails while recording runs. This will provide better feedback in situations when the API is temporarily unavailable. Fixes #1590.
When Cypress retries due to an API timeout or failure it now displays a very nice message indicating to you the delay and number of retries left. Fixes #2280.
We've added parallelization to our own internal tests for the driver and the desktop-gui. We've been able to reduce the number of concurrent instances our tests use by 4, and shaved about 6 minutes off of each build. Faster with less resources. Fixes #2325.
Documentation Changes: