chore(deps): update dependency @cypress/webpack-dev-server to v3
This MR contains the following updates:
Package | Type | Update | Change |
---|---|---|---|
@cypress/webpack-dev-server (source) | devDependencies | major | ^1.8.4 -> ^3.11.0 |
Release Notes
cypress-io/cypress (@cypress/webpack-dev-server)
v3.11.0
v3.10.1
v3.10.0
v3.9.0
v3.8.0
: 3.8.0
Released 12/12/2019
Features:
- Chrome can now be run in headless mode by using
cypress run --headless --browser chrome
. Addresses #832. - Cypress now accepts a
--tag
argument to be used to identify separate runs. Any tags assigned will be shown on the run in the Cypress Dashboard. Addresses #2561. - The commands
.its()
and.invoke()
now accept anoptions
object to allow changing logging options. Addresses #1450. - Cypress will now attempt to use the
unzip
binary duringcypress install
before trying the slower, Node.js-based unzipping method. Addresses #3803. - Upgraded Electron to 7.1.4. This bumps the internal Node version to 12.8.1 and the internal Chromium version to 78.0.3904.113.
Bugfixes:
- We fixed a regression in 3.5.0 where Cypress would crash on Windows when trying to pass a url through
--config
or--env
command line flags. Fixes #5466. - We fixed a regression in 3.5.0 where a supplied
Cookie
header during "cy.visit()
visit orcy.request()
would be overwritten by theCookie
header generated from the browser's cookie store. Fixes #5894. - We fixed a regression in 3.5.0 where
cy.getCookie()
would incorrectly filter cookies by their domain, leading to unexpected results. Fixes #5656. - We fixed a regression in 3.5.0 where calling
.type({ force: true })
on hidden inputs would not type the correct characters. Fixes #5835. - We fixed a regression in 3.5.0 where
.type()
was not respecting previous selections if the current value of the input was the same as the key. This also fixed an where.type()
would not respect previous selections in non-selectionRange inputs (like email or number inputs). Fixes #5703. - During visibility checks, Cypress now properly evaluates a DOM element transformed by
scale(0)
orrotateY(90deg)
as not visible. Fixes #723. - Fixed a bug where the specs list in interactive mode would not refresh when files are changed on disk. Fixes #5933.
-
env
configuration option displays properly within the settings panel. Previously, setting env options would incorrectly render"undefined"
as the value. Fixes #5859.
Misc:
- We removed the max viewport size and lowered min viewport size to
0
forcy.viewport()
Addresses #5871 and #5892. - The Test Runner now shows a non-Chrome logo for browsers passed in via
config.browser
that are not of the Chrome family. It also supports showing the Firefox logo (in preparation for Firefox browser support). Fixes #5745. - We updated the look of some of our icons. Addressed in #5822.
- We're continuing to make progress in converting our codebase from CoffeeScript to JavaScript. Addresses #2690 in #5643.
-
cy.request
will now automatically encode special characters in the request URL, including Unicode. Addresses #5274. - You can pass additional Electron launch command line arguments using environment variable
ELECTRON_EXTRA_LAUNCH_ARGS
. Addresses #5807.
Dependency Updates:
- Upgraded
ansi-escapes
from4.2.1
to4.3.0
. Addressed in #5815. - Upgraded
electron-context-menu
from0.11.0
to0.15.1
. Addressed in #5495.
v3.7.4
v3.7.3
v3.7.2
v3.7.1
v3.7.0
: 3.7.0
Released 11/27/2019
Features:
- Cypress now includes the full list of browsers found and their properties within the Cypress configuration. This means that the
browsers
array is also editable within plugins by accessingconfig.browsers
via the Configuration API. The currently available browsers are also displayed within the configuration panel under Settings in the Test Runner. Addresses #5067. - Environment variables within GitHub Actions are now detected and passed to the Dashboard in order to display the proper git information for recorded runs. Fixes #5609.
Bugfixes:
- Fixed a regression in 3.5.0 where a
cy.visit
that changes superdomain would incorrectly clear cookies of other domains. Fixes #5756. - Fixed a regression in 3.5.0 where cookies set in a redirect on a
cy.visit
or in acy.request
with a customDomain
that is not a subdomain of the current domain would fail to set. Fixes #5656. - Fixed a regression introduced in 3.5.0 which caused
cy.type
to send duplicate modifier keys. Fixes #5622. - We fixed a regression in 3.6.1 where cy.request() with
followRedirect: false
would fail if aSet-Cookie
header was present in the response. Fixes #5654. - The context of
window
is no longerundefined
within the application under test when called within asetTimeout
during strict mode. Fixes #5707. - Cypress now captures the SHA of builds generated through Travis CI during pull requests. This should resolve issues with Cypress status checks sometimes not running within GitHub Integration. Fixes #5728.
- Cypress now automatically strips double quotes from
--ci-build-id
andgroup
flag arguments duringcypress run
. Fixes #5686. - Assertions printed in the Command Log now correctly identify integers from string integers. Fixes #25.
- Empty spaces are now accurately reflected in the Command Log within assertions. Fixes #1360.
- Keys printed in the Command Log when using the
have.all.keys
assertion now correctly display. Fixes #753. - We fixed an issue where Cypress would throw an error when using
cy.visit()
on acleverapp.io
domain. Fixes #5722. - Fixed a bug where fixtures consisting only of
null
would cause an error. Fixes #472. - Fixed a bug where, if the Test Runner child process is killed with a signal and does not exit normally, the npm CLI process would not exit with an error. Fixes #5808.
Misc:
- Added a new, more specific error message when an item is not visible because it has
position: fixed
and is being overflowed over. Addresses #1379. -
cy.visit
s that cause a superdomain change will now result in 2 requests to the origin server. This should not affect tests, as tests will still re-run on a superdomain change. This is a side-effect of the fix for #5756. - The configuration object returned from the plugins file is now validated and will throw a helpful error message when invalid. Addresses #5712.
- The configuration panel under Settings in the Test Runner now has a white background for better readability. Also each configuration option with nested properties is now collapsible. Addressed in #5068.
Dependency Updates:
- Upgraded
parse-domain
from2.0.0
to2.3.4
. Addressed in #5726.
v3.6.1
: 3.6.1
Released 11/08/2019
Bugfixes:
- The Electron browser no longer hangs when testing applications that have a prompt in a
beforeunload
handler. Fixes #2118. - We fixed a regression in 3.5.0 where HTTP redirects could cause strange behavior, including cookies not being set as expected, leading to authentication issues and other problems. Fixes #5436 and #5432.
- When using
cy.setCookie()
with the sameoptions
Object, Cypress now correctly sets the new cookie instead of the one passed into a previouscy.setCookie()
. Fixes #2701. - We fixed a regression in 3.5.0 where
cy.clearCookie()
would not act as expected when using certainbaseUrls
. Fixes #5453. - Cypress no longer crashes with the error
Failed to parse or set cookie named "xxx"
when loading certain websites. Fixes #4990. - Cypress now sends the expected headers or request body in a
cy.visit()
to an HTTPS URL using the default port, 443. Fixes #5367. - We fixed a regression in 3.6.0 where Cypress would crash with
TypeError: Cannot read property 'length' of null
on some network requests. Fixes #5585. - We fixed a regression in 3.5.0 that caused the red target to be rendered incorrectly when specifying offset coordinates to
.click()
. Fixes #5635. - We fixed a regression in 3.6.0 that was causing an incorrect element to receive the
click
event during action commands. Fixes #5578. - We fixed a regression in 3.5.0 causing text after using modifier keys in
.type()
to not be typed. Fixes #5622. - Elements with
backface-visibility: hidden;
are now accounted for when asserting on the elemtent's visibility. Fixes #2985. - We fixed a bug where a failed Cypress commands would incorrectly throw
cannot read property 'replace' of undefined
if the error's stack wasundefined
. Fixes #1669. - The 'Log In' modal within Cypress when setting up a project now correctly closes when manually closed. Fixes #5631.
Misc:
- We improved the user experience around inspecting events fired during
.click()
and.type()
commands within the console. Addresses #5553. - We increased the timeout when connecting to the "Developer Tools Protocol" from 5 seconds to 20 seconds and also added logging for when the connection takes longer than 5 seconds. Addresses #5610.
- There is no longer a warning about
Promise.defer
appearing in stderr when running with video recording enabled. Addresses #5611. - Types for
.rightclick()
and.dblclick()
have been updated to correctly reflect their accepted options. Addresses #5617. - We're continuing to make progress in converting our codebase from CoffeeScript to JavaScript. Addresses #2690 in #5556
v3.6.0
: 3.6.0
Released 10/31/2019
Features:
-
testFiles
now also accepts an Array of glob patterns when specifying what test files to load in configuration. Addresses #5401.
Bugfixes:
- We fixed a regression in 3.5.0 where the maximum size of an HTTP header or body in a stubbed
cy.route()
was limited to 8kb causing requests to fail with a 431 HTTP error. Fixes #5431. - We fixed a bug where certain types of uncaught errors originating from the application under test would not route through the
uncaught:exception
handler, and thus could not caught and ignored. These errors will also now correctly indicate that they came from application code. Fixes #987. - We fixed a regression in 3.5.0 that would throw an error during
cypress verify
when running as a non-root user on a non-Windows machine. We now always set the--no-sandbox
flag when verifying in Electron, even when running as a non-root user. Fixes #5434. - We fixed a regression in 3.5.0 where sometimes cookies were not set on the correct URL during a redirect inside of a
cy.visit()
orcy.request()
. Fixes #5432. - We fixed a regression in 3.5.0 causing environment variables containing unicode values to be incorrectly resolved when read via
Cypress.env()
. Fixes #5435. - We fixed a regression in 3.5.0 that prevented use of
.click()
or.type()
inside of an iframe element. Fixes #5449. Fixes #5435. - We now throw the proper error message when an element cannot be interacted with due to being covered by an element with
position:fixed
. Fixes #5430. - We fixed a regression in 3.5.0 that caused some
click
events to not be sent to the correct elements during.click()
. Fixes #5459. - We updated
.type()
to properly respect focus selection changes during typing. Fixes #5456. - We fixed a regression in 3.5.0 that caused selected text to be overwritten while typing a modifer key during
.type()
. Fixes #5439. - We now send all the proper events during
.type()
to input elements with typedate
,time
, anddatetime-local
so that it now behaves as it did prior to 3.5.0. Fixes #5476. - We now properly render iframe placeholder content when previewing DOM snapshots. Fixes #5295.
Misc:
- We no longer log the default option
{multiple: true}
in the Command Log or the console duringcy.dblclick()
. Addresses #5406. - The text color of inactive tabs within the Cypress Chrome browser has been set to white for better readability. Addresses #1661.
Dependency Updates
- Replaced
express-handlebars
withsquirrelly
to reduce dependency size. Addressed in #5521. - Upgraded
graceful-fs
from4.2.0
to4.2.3
. Addressed in #5497.
v3.5.3
v3.5.2
v3.5.1
v3.5.0
: 3.5.0
Released 10/23/2019
Features:
- We now record video during
cypress run
in Chrome, Chromium, and Canary browsers. This requires passing the name or path of the Chrome browser to the--browser
flag. Addresses #4608. - There is a new
.rightclick()
command to right click on DOM elements. Addresses #53. - Cypress now accepts a
--config-file
argument to specify a different file to be used for Cypress configuration. You can also passfalse
to the--config-file
to not use any configuration file. Addresses #1369. - You can now use your system's Node version by setting the
nodeVersion
tosystem
in your configuration. This Node version will be used to build files in yourintegrationFolder
and "supportFile
" configuration#Folders-Files and also be used to execute code in your "pluginsFile
" configuration#Folders-Files. If not set, Cypress will continue to use the Node version bundled with Cypress. Addresses #4432. - "
.dblclick()
dblclick now acceptsposition
,x
, andy
arguments. Addresses #116. - "
.dblclick()
dblclick now acceptsforce
andmultiple
in itsoptions
. Addresses #116. -
.screenshot()
now accepts apadding
argument when screenshotting elements that will alter the dimensions of the screenshot of the element. Addresses #4440. -
cy.visit()
now accepts aqs
option representing an object of query paramaters to be used in the URL. Addresses #5034. -
cy.viewport()
now allows for viewport sizes up to 4,000 pixels. Addresses #5181. -
cy.viewport()
accepts new size presets foriphone-xr
,iphone-x
,samsung-s10
andsamsung-note9
. Addresses #4967. - Passing a
~
toCYPRESS_CACHE_FOLDER
will automatically resolve to the user's home directory. Addresses #5386.
Bugfixes:
- "
.dblclick()
dblclick and.click()
now fire all appropriate mouse events includingmouseover
,mousemove
,mouseout
,pointerdown
,pointerup
, andpointermove
. Fixes #1016, #1847, #2045, #2521, #2768, #2928, #2957, and #3224. - We updated "
.dblclick()
dblclick to follow the same actionability checks as.click()
. Fixes #3798. - Coordinates clicked during
.click()
are now correct if the element being clicked is within an iframe. Fixes #4347. - We now allow
.type()
to be used on any DOM element. The element will receive all of the type events. Fixes #2166 and #3661. - If a typeable element gains focus during
.type()
, Cypress now continues typing into the newly focused element. Fixes #2240. - We now correctly borrow the property getter for
maxLength
when using .type() on an input. Fixes #4587. - We fixed an issue where
datetime-local
inputs would not have theirvalue
updated during.type()
. Fixes #2613. -
.type()
now allows you to type-
into number inputs with text selection. Fixes #4767. - We now fire an
input
event when using.type()
typing{enter}
inserts a newline. Fixes #4870. - We no longer input text when non-
{shift}
modifier keys are typed in.type()
. Fixes #5424. - We now properly send the
code
property during keyboard events triggered during.type()
. Fixes #3722 - Cypress now sends
screenX
andscreenY
properties to events triggered using.trigger()
. Fixes #3187. - We fixed a bug where Cypress could not intercept traffic sent through
cy.visit()
to IP addresses over HTTPS, leading toERR_SSL_VERSION_OR_CIPHER_MISMATCH
errors. Fixes #771. - We fixed a bug introduced in 3.3.0 where some HTTPS sites failed to load during
cy.visit()
andcy.request()
with a "handshake failed" error. Fixes #4394. - We fixed a bug where ECC SSL Certificates were not supported during
cy.visit()
that was introduced in 3.3.0. Fixes #4368. - We fixed an issue introduced in 3.4.0 that would cause the Selector Playground to not properly highlight the currently hovered element. Fixes #4872.
-
Cypress.env()
now escapes<script>
tags in the configuration file. Fixes #4952. - Cypress now properly handles converting responses of
content-type
application/vnd.api+json
to JSON. Fixes #5165. - XHR responses in
cy.route()
that exceed 80kb in size no longer fail with anERR_EMPTY_RESPONSE
error. Fixes #76. - Cypress no longer crashes with
dest.end
errors on Windows machines. Fixes #2181. - The
onFocus
event no longer incorrectly fires on hidden elements. This fixes an issue introduced in 3.3.2. Fixes #4898. - You can now call
.click()
on inputs or textareas that arereadonly
. This fixes an issue introduced in 3.4.1. Fixes #4874. - Cypress no longer crashes with a
"port" option should be a number or string
error when receiving an erroneous HTTP CONNECT. Fixes #3250. - Cypress tests now timeout if there are no Cypress commands enqueue and the
done()
callback is not called within thecommandTimeout
. Fixes #1075, #2478, #3349, and #4790. - We fixed a bug where Cypress would exit with an
ENOTCONN
error at the end of a test run when using Node >12.11.0 on Windows OS. Fixes #5241. - We fixed a bug where the Chrome policy warnings introduced in 3.4.0 would not appear. Fixes #4986.
- We improved the way that cookies are handled for Chrome browsers. This fixes an issue when parsing cookies that were set with a domain beginning with a
.
in Chrome 77. Fixes #5142 and #5206. - We fixed a bug when visiting an application that does an HTTP request to a
.js
file containing Unicode transferred usingContent-Encoding: gzip
that could cause the JavaScript file to become corrupted. Fixes #1746. - We now normalize the Cypress cache folder to resolve in the current folder and not with respect to the
node_modules/cypress
folder. Fixes #2364.
Misc:
- Cypress now displays a more precise error message when checking an element's visibility if an element is detached from the DOM. Addresses #4946.
- We increased the timeout to wait for Xvfb to start from 5 seconds to 30 seconds. This should resolve some issues where the error
Could not start Xvfb
was being thrown because Xvfb could not start within the allowed time. Addresses #5110. - We now warn when using
cypress run
from the binary directly (not from an npm module) since this is not its intended use. Addresses #1573. - We now warn on
cy.visit('file://...)
to explain that this url format is not supported and suggest visiting a relative HTML file. Addresses #4452. - Setting the reserved
CYPRESS_ENV
environment variable will now throw an error. Addresses #1621. - We now throw a better error when passing in an Object to the
browser
argument of the Browser Launch API explaining that a String is expected instead. Addresses #4966. - An error will now be thrown if an invalid
name
orvalue
is supplied tocy.setCookie()
, matching the RFC 6265 compliant validation of cookie names and values. Addresses #5206. - Passing an invalid type to the 2nd argument of
cy.get()
now throws an error explaining that anoptions
Object is expected. Addresses #2953. - We now throw a more helpful error message during
cy.screenshot()
that would result in a screenshot with 0 width or height. Addresses #5149. - Stdout printed during
cypress run
no longer truncates text such a filenames and instead wraps the text to fit within the width of the terminal. Addresses #4977. - We now display up to 2,000 characters of HTTP property values within error messages during
cy.request()
errors. Addresses #3145. - Cypress now always considers
localhost
to be inNO_PROXY
. To make Cypress send traffic forlocalhost
through the proxy, you will now have to pass<-loopback>
inNO_PROXY
. Addresses #4780. - We changed the way cookies are set in
cy.visit()
to more closely match the browser's behavior when setting cookies, particularly when usingfetch
with cookies. Addresses #4433. - We've added more flags to send to Chrome upon launch that should help with issues encountered during browser automation including
--disable-backgrounding-occluded-window
,--disable-breakpad
,--disable-ipc-flooding-protection
,--password-store=basic
, and--use-mock-keychain
. Addresses #5132 and #3633. - Scrolling the specs list now only scrolls the list of spec files and no longer scrolls the search and filter bar. Addresses #4904.
- We fixed some layout issues within the Test Runner that were introduced in 3.4.1. Addresses #4888, #4912, and #4959.
- The counter badge for spies and stubs no longer appears visually cut off. Fixes #4822.
- TypeScript 3.6.2 no longer errors due to outdated jQuery types. Addresses #5065.
- We updated types for
Cypress.Commands.overwrite()
to not allow anoptions
object as an argument. Addresses #5341. - We added
failures
andmessage
types when a run fails using the Module API. Addresses #5335. - We're continuing to make process in converting our codebase from CoffeeScript to JavaScript. Addresses #2690 in #4869, #4906, #5096, #5107, #5156, #5173, and #5352.
Documentation Changes:
- Added a
.rightclick()
doc. - Added a Webinars doc containing videos of all of the official Cypress webcasts.
- Updated the
.dblclick()
doc to include newposition
,x
, andy
arguments plusforce
andmultiple
options. - Added the
--config-file
argument to Command Line and Module API doc. - Added the
nodeVersion
argument to Configuration doc and mentioned its uses in the Plugins Guide and Writing a Plugin doc. - Updated all docs to mention 'configuration file' instead of static
cypress.json
file since this is not configurable via a--config-file
argument. - Added
qs
option tocy.visit()
with examples. - Added
padding
option tocy.screenshot()
with examples. - Updated the
cy.viewport()
doc to have a max viewport size of4000
. - Added newly supported viewport sizes to the
cy.viewport()
doc. - Documented new keyboard shortcuts in the Test Runner doc.
- Added a new section on troubleshooting problems with Xvfb to the Continuous Integration doc.
- Added a section to our Debugging doc about our
cypress-fiddle
plugin used for playing around with small test cases. - Added a section to our Debugging doc explaining how to patch an installed version of Cypress.
- Mention not needing to decode portions of the
url
in thecy.route()
doc. - Mention that the
file://
prefix is not supported in thecy.visit()
doc. - Add a note about when passing
<-loopback>
inNO_PROXY
is necessary in the Proxy Configuration doc. - Updated our Dashboard docs to include screenshots containing our new Dashboard navigation design.
- We have some newly translated documentation in Portuguese. If you'd like to help in translating more, please open a pull request in our documentation repo.
Dependency Updates
- Upgraded Chrome browser version used during
cypress run
and when selecting Electron browser incypress open
from61
to73
. Addressed in #4720. - Upgraded
electron
from2.0.18
to5.0.10
. Addressed in #4720. - Upgraded
node
from8.9.3
to12.0.0
. Addressed in #4720. - Upgaded
jquery
from2.2.4
to3.1.1
. Addressed in #1229. - Upgraded
sanitize-filename
from1.6.1
to1.6.3
. Addressed in #5216. - Upgraded
@cypress/get-windows-proxy
from1.5.4
to1.6.0
. Addressed in #5108.
v3.4.1
: 3.4.1
Released 7/29/2019
Dashboard Features:
- We’re excited to announce GitHub integration for the Cypress Dashboard. You can now get timely and useful test run information within pull-requests via status checks and pull-request comments. Learn all about it on our blog. Addresses #981.
Bugfixes:
- Fixed a bug where the content of pages using non-UTF-8 character encoding would become corrupted when opened in Cypress. Fixes #3479, #1543, and #3650.
- Fixed a regression introduced in 3.4.0 that caused an error to be thrown when chaining together multiple assertions using the
and
chainable getter. Fixes #4833. - The
include
andincludes
assertion chainers now correctly work the same ascontain
andcontains
assertion chainers. Fixes #4833. - Cypress now correctly works offline on Windows when visiting a localhost URL. Fixes #4763.
-
cy.type()
now factors in thereadonly
property of<input />
elements, and will wait for this property to befalse
before attempting to type. Fixes #1246. - Variables beginning with
top
andlocation
in your application code are no longer modified whenmodifyObstructiveCode
istrue
. Fixes #4794. - We removed erroneous socket connections when the browser is initially launching. Fixes #4776.
- Fixed a bug when dismissing pinned snapshots that would cause the page to be wiped with nothing rendered. Fixes #4864.
- We upgraded the
mocha-teamcity-reporter
dependency so that it no longer errors in certain situations when trying to access duration on tests. Fixes #4654. - We upgraded the
lodash
dependency to fix a security vulnerability warning. Fixes #4699, #4730, #4743.
Misc:
- We now ensure we are shipping with production versions of dependencies such as
react
,mobx
, etc. This should help to prevent conflicts with Developer Tools extensions and increase performance by reducing memory, heap allocation, and overall JS bundle size. Addresses #4844. - Video recordings now wait after all tests finish to ensure that the video captures the final rendered frames of the browser. This prevents the last few paints from being cut off. Fixes #2370.
- Cypress now looks for any npm proxy configuration values as a fallback when no other system proxy configuration is found. This brings this feature into parity with how npm reads off proxy configuration values during an
npm install
. Addresses #4719. - We updated the messaging when there is a failure downloading Cypress to recommend checking your proxy settings. Addresses #1662.
- A warning message now displays if you attempt to run the Cypress binary directly instead of going through the cypress
npm
package. Addresses #1573. - There are newly added examples in the TypeScript definitions for custom commands,
cy.location()
and.should()
. Addresses #3684 and #4715. - The types for the
cy.contains(content, options)
syntax have been added. Addresses #4727. - Types for
cy.once()
have been added. Addressed in #4788. - There is now a
{ parseSpecialCharSequences: false }
option tocy.type()
that disables parsing the special character sequences found between the{}
characters. This will now type what you've provided literally without any special parsing. Fixes #4287. - You can now zoom in the main Test Runner window and also the Electron browser. Corresponding keyboard shortcuts for Zoom in, Zoom out and Actual Size are also available. Addresses #1231.
- When viewing the Test Runner's main window at its smallest size, the header text no longer incorrectly wraps. Addresses #86.
- We're continuing to make process in converting our codebase from CoffeeScript to JavaScript. Addresses #2690 in #4781 and #4817.
- We increased the cypress binary verification phase from 10 seconds to 30 seconds to accomodate underpowered or overwhelmed machines typically found in CI environments. Addresses #4624.
Documentation Changes:
- We have new instructions on how to set up GitHub Integration with the Cypress Dashboard.
- Updated instructions for adding types for custom commands in the TypeScript Support doc. Addressed in #1901
- Added a section about video encoding and how to speed up the encoding time to Screenshots and Videos doc. Addressed in #1880
Dependency Updates
- Upgraded
@ffmpeg-installer/ffmpeg
from1.0.17
to1.0.19
. Addressed in #4792. - Upgraded
browserify
from13.3.0
to16.3.0
. Addressed in #4751, #4825 and #4826. - Upgraded
data-uri-to-buffer
from1.2.0
to2.0.1
. Addressed in #4622. - Upgraded
duplexify
from4.0.0
to4.1.1
. Addressed in #4853. - Upgraded
graceful-fs
from4.1.15
to4.2.0
. Addressed in #4818. - Upgraded
lodash
from4.17.11
to4.17.15
. Addressed in #4684, #4709, #4784. - Upgraded
mocha-junit-reporter
from1.23.0
to1.23.1
. Addressed in #4785. - Upgraded
p-queue
from1.2.0
to6.1.0
. Addressed in #4750. - Upgraded
semver
from6.0.0
to6.3.0
. Addressed in #4797. - We also updated and removed some dependencies used for development.
v3.4.0
: 3.4.0
Released 7/9/2019
User Authentication Changes:
- Users can now log in to the Test Runner using the browser installed on their system. Fixes #3583, #4337, and #1162.
- Users can now log in to the Test Runner with Google or with SSO (if configured). Fixes #3519.
Continuous Integration Support:
- Environment variables for Semaphore CI v2 are now recognized when recording a test for the dashboard. Fixes #4671.
- Support for Concourse CI has been added when recording a test for the dashboard. Fixes #4376.
- SnapCI support has been removed and GoCD support has been added. Fixes #2680.
Bugfixes:
-
contain.text
,contain.html
, andcontain.value
assertions now support partial matching in all scenarios to match expected behavior. Fixes #1969. - Electron rendering warnings are no longer printed to console output. Fixes #4288.
Misc:
- Added verification for
cypress download
that checks the checksum and filesize. This will fix issues with Cypress downloads being corrupted in transit. Fixes #812 and #3515. - Added a warning when a percent-encoded URL is passed to
cy.route()
. Fixes #2372. - Added an error for when
cy.click()
fails because an element has the CSSpointer-events: none
. Fixes #3164. - Added a warning for Windows users who have Group Policy settings that may interfere with usage of Cypress. Fixes #4391.
- The JSON schema file used for intelligent code completion for the Cypress configuration file has been updated to match our documentation. Addressed in #4300.
- Type definitions were added to
cy.server()
for theonAnyRequest
,onAnyResponse
, andonAnyAbort
callback options. Fixes #3992. - The outline when focusing on a panel heading within the 'Settings' tab of the Test Runner now correctly outlines the element. Fixes #3357.
Documentation Changes:
- Documented
cy.get()
's optionalwithinSubject
argument. - Documented "Expected to find element..." error message and potential causes.
- Documented new "Cypress detected policy settings on your computer that may cause issues" warning in Error Messages.
Dependency Updates:
- Removed
string-to-stream
since it was no longer being used. Addressed in #4619. - Upgraded
@cypress/commit-info
from2.1.3
to2.1.4
. Addressed in #4597. - Upgraded
@cypress/react-tooltip
from0.4.0
to0.5.0
. Addressed in #4610. - Upgraded
errorhandler
from1.5.0
to1.5.1
. Addressed in #4618. - Upgraded
fs-extra
from8.0.1
to8.1.0
. Addressed in #4620. - Upgraded
request-progress
from0.4.0
to3.0.0
. Addressed in #4584. - We also updated and removed some dependencies used for development.
v3.3.1
: 3.3.1
Released 5/23/2019
News:
- We've written a blog post about the 300% increase in proxy performance delivered in 3.3.0.
Bugfixes:
- Cypress no longer accidentally prints internal Electron logs when running
cypress run
. This bug would exhibit itself when verifying and running Cypress the first time after installation. You may have seen these logs when running in CI. Fixes #4255. - Fixed a bug for users running external network proxies that prevented requests from completing. Requests should now all work correctly. Fixes #4257.
- Fixed a regression in 3.3.0 causing large requests such as
multipart/form-data
uploads to hang. Fixes #4240, #4252, and #4253. - Fixed issue where support for
have.focus
,not.have.focus
,be.focused
andnot.be.focused
assertions were not working. Fixes #4265. - Names given to .as() now work properly when they contain a
.
character. Fixes #3512. - The proper error is now thrown when passing
{log: false}
to a Cypress command that failed. Fixes #3847. - Fixed an issue where highlighting a command's snapshot would throw an error when no application was rendered in the AUT frame. Fixes #4177.
- We now properly detect the branch name when running Cypress in AppVeyor. Fixed in #4234.
Misc:
- Fix capitalization of
Xvfb
in error messages. Addressed in #4262.
Documentation Changes:
- We have some newly translated documentation in Chinese and Japanese. If you'd like to help in translating more, please open a pull request in our documentation repo.
v3.3.0
: 3.3.0
Released 5/17/2019
Features:
- Cypress now automatically reads from your system's
HTTP_PROXY
,HTTPS_PROXY
, andNO_PROXY
environment variables and proxies traffic accordingly through Cypress based on these values. This includes network traffic within your application under test, when downloading Cypress, and when accessing 'Runs' within the Test Runner. Please read our new Proxy Configuration doc to understand more about proxy configuration in Cypress. Fixes #672, #733, #939, #1039, #1459, #1469, #1470, #1541, #1608, #2295, #3855, #3865, #1401 and #3857. - Your project's current proxy settings now display in the Settings of the Test Runner. Addresses #3856.
- Support for
have.focus
,not.have.focus
,be.focused
andnot.be.focused
assertions have been added. Addresses #97. - We now offer a separate 32bit and 64bit build for Windows. Addresses #716, #787, #2095, #706, #3706, and #4016.
- Requests that go through
cy.visit()
orcy.request()
are now automatically retried under the hood when the request fails. This more closely reflects Chrome's default behavior on requests. Addresses #4013, #898 and #1013. -
cy.visit()
andcy.request()
now support new optionsretryOnStatusCodeFailure
andretryOnNetworkFailure
to allow changing Cypress's automatic request retry on status codes and network errors. Addresses #4013, #898 and #1013. -
.type()
now supports the special character sequences{insert}
,{pageup}
, and{pagedown}
. Addresses #3845. - We now indicate which XHRs match which alias in the Command Log on
.wait()
when they match an alias multiple times. Addresses #477. - The console log when clicking on the
cy.visit()
command now displays its resolvedoptions
arguments. Addresses #3721. - There's a new 'canceled' XHR status shown on the Command Log to indicate the difference between calling
xhr.abort()
and the browser canceling the request due to page navigation. Addresses #3973. - The Electron browser now runs Chrome Version 61. Addresses #4000.
- Running Cypress via
cypress run
now supports scripts oftype="module"
. Fixes #3696. - Exposed
Cypress.isCy()
method to check if a value is a valid instance ofcy
or acy
chainable. Fixes #3822. - There is a new "Download Chromium" menu item in the "Help" menu of the Test Runner links to Cypress's Chromium Download Tool. Addresses #3977
Bugfixes:
- Fixed a regression introduced in 3.2.0 that caused an error to throw when visiting domains with certain public suffixes. Fixes #3717.
- When running Cypress with
NODE_OPTIONS
environment variables set, Cypress no longer issues an incorrect 0 exit code. #1676 - Fixed a regression introduced in 3.2.0 that caused
.its()
to no longer retry when it yieldsundefined
. #3837 - Fixed a regression introduced in 3.2.0 that caused
cy.fixture()
to throw aEISDIR
error if a directory had the same name as a file within that same directory. Fixes #3739. -
user-agent
headers sent as arguments tocy.request()
andcy.visit()
are now properly sent. Fixes #3873 and #3719. - When a request is proxied through Cypress and there is a network error, we no longer send an HTML response with a 500 status code. We now kill the browser-facing socket and let the network error be handled by the application under test. Fixes #4101, #4231, #1036, #4231, and #1398.
- We changed Cypress's implementation to no longer rely on internal XHR events when the browser navigates. This fixes a a bug in Chrome 71+ that could cause XHRs to pend forever. Fixes #3973 and #4130
- We greatly improved the speed of proxied requests through our network layer. Fixes #3192 and #1469.
- If an error occurs during
cypress verify
, we now kill the verification process after 10 seconds and print the error message. This should prevent some situations where Cypress would hang during installation or verification and never exit. Fixes #819. - Cypress automatically retries
cypress verify
andcypress run
commands by starting its own Xvfb server on Linux if the first attempt fails due to possibleDISPLAY
misconfiguration. Addresses #4034. - Cypress now properly handles typing JavaScript object prototype methods (like
hasOwnProperty
) into .type(). Fixes #3423. - We now set the
form
option totrue
if theContent-Type
header equalsapplication/x-www-form-urlencoded
andjson
is not already set by a user. This fixes a situation where Cypress would try to parse thebody
as a string, resulting in a confusing error message. Fixes #2923. -
cy.contains()
now correctly handles comma delimited arguments passed to the selector argument. Fixes #2407. - Passing a browser path containing spaces now works properly when passed to the
--browser
argument. Fixes #3979 - Fixed display of tooltips when selecting elements from the Selector Playground so that they display at the correct coordinates when scrolling. Fixes #1351.
- The lists of spec files now display at the correct indentation level when they are nested more than 5 directories deep. Fixes #3652.
- Cypress now properly parses environment variables with empty values. Fixes #3742.
- Assertions running outside of a test are now properly handled in Cypress instead of throwing internal errors. Fixes #3926.
-
Cypress.log()
now throws an error when not properly passed an object as its argument. Addresses #3658. -
Cypress.log()
no longer throws when called before any other Cypress commands. Fixes #3658.
Misc:
- We now better support capturing environment variables within Azure DevOps. Addresses #3657.
- Cypress now only scans for spec changes when the watcher sees changes, rather than polling to scan. Addresses #3069.
- The ability to open the context menu to see "Inspect Element" has been reenabled in the Electron browser. Addresses #4002.
- We no longer package non-Windows
ffmpeg
builds with Windows builds, resulting in a 35-40% reduction in zipped size and a 36-43% reduction in unzipped size of download. Addresses #3888. - The warning messages when going over test recording limits have been updated to correctly display 'monthly tests' and 'private tests' where necessary. Addresses #4024.
- When an HTTP request is received by the proxy layer, by default, we send it with a
Connection: keep-alive
header so that the connection will be reused if possible. Addresses #3857. - Improved accessibility of Test Runner for screen readers. Addresses #3850.
- Cypress type definition now allow a
timeout
option incy.hash()
. Fixes #3844. - Fixed type definition for
match
assertion so that it now only acceptsRegExp
type arguments. Fixes #2578. - The
.trigger()
type definition now expects itsoptions
to beObjectLike
. Addressed in #3809. - The
cy.clock()
type definition now allows for typeDate
. Fixed in #4106. - Added type definition for undocumented
Cypress.LocalStorage.clear
method. Fixes #4070. - Added type definition for
Cypress.isCy()
method. Fixes #3822. - Added missing type definitions for some
cy.visit()
options. Fixes #3989. - The spinner animation should more smoothly spin when a command is pending in the Test Runner. Addressed in #4005.
Documentation Changes:
- New Proxy Configuration doc. Addressed in #1486.
- Added
{insert}
,{pageup}
, and{pagedown}
as supported special character sequences to.type()
. Addressed in #1567. - Added newly supported
focus
assertion to Assertions doc. Addresses #1372. - Added new options
retryOnStatusCodeFailure
andretryOnNetworkFailure
tocy.visit()
andcy.request()
. - Updated install instructions for Windows on how to target 64bit and 32bit infrastructures. Addressed in #1568.
- Updated
.its()
and.invoke()
docs to better explain how default assertions are handled. Addresses #1643. - Updated our Roadmap to more closely reflect the work we are doing. Addressed in #1567.
- Added a section about how to request our new Open Source Plan in the Dashboard Service doc. Addressed in #1567.
Dependency Updates
- Upgraded
commit-info
from2.1.2
to2.1.2
. Addressed in #4045 - Upgraded
data-uri-to-buffer
from0.0.4
to1.2.0
. Addresses #4152. - Upgraded
electron
from1.8.2
to2.0.18
. Addresses #4000. - Upgraded
electron-packager
from9.1.0
to13.1.1
. Addresses #4155. - Upgraded
express-handlebars
from3.0.0
to3.0.2
. Addressed in #4086. - Upgraded
find-process
from1.2.1
to1.4.1
. Addressed in #4087. - Upgraded
getos
from2.8.4
to3.1.1
. Addressed in #4222. - Upgraded
http-status-codes
from1.3.0
to1.3.2
. Addressed in #3949. - Upgraded
jimp
from0.6.0
to0.6.4
. Addressed in #4097. - Removed
method-override
. Addressed in #4209. - Upgraded
node
from8.2.1
to8.9.3
. Addressed in #4001. - Downgraded
parse-domain
from 2.1.7 to 2.0.0 to avoid a regression released inparse-domain
. Addresses #3717. - Upgraded
pluralize
from3.1.0
to7.0.0
. Addressed in #4205 and #4206. - Upgraded
semver
from5.6.0
to5.7.0
. Addressed in #4112. - Upgraded
send
from0.16.2
to0.17.0
. Addressed in #4134. - Upgraded
supports-color
from5.5.0
to6.1.0
. Addressed in #4150. - Removed
tar-fs
. Addressed in #4148. - Upgraded
term-size
from1.2.0
to2.0.0
. Addressed in #4148. - Upgraded
tmp
from0.0.33
to0.1.0
. Addressed in #4111. - Upgraded
trash
from4.3.0
to5.2.0
. Addressed in #4140. - Upgraded
url-parse
from1.4.4
to1.4.7
. Addressed in #4110. - Upgraded
widest-line
from2.0.1
to3.1.0
. Addressed in #4139. - We updated and removed some dependencies used for development.
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.2.0
: 3.2.0
Released 3/15/2019
Features:
-
cy.visit()
has been expanded to allow optionsurl
,method
,body
, andheaders
. This allowscy.visit()
to be called with aPOST
method or with headers likeAccept-Language
orAuthorization
. Fixes #1500, #1904 and #908. -
cy.request()
now allows any valid HTTPmethod
to be used includingTRACE
,COPY
,LOCK
,MKCOL
,MOVE
,PURGE
,PROPFIND
,PROPPATCH
,UNLOCK
,REPORT
,MKACTIVITY
,CHECKOUT
,MERGE
,M-SEARCH
,NOTIFY
,SUBSCRIBE
,UNSUBSCRIBE
,SEARCH
, andCONNECT
. Addresses #1302 - The
--browser
argument of the Command Line and thebrowser
argument of the Module API have been updated to allow passing a<path>
. Addresses #1026. -
cy.type()
now accepts{home}
and{end}
special character sequences to move the cursor to the start or end of a line. Addresses #2033. - The Cypress Chrome extension now has a static ID of
caljajdfkjjjdehjdoimjkkakekklcck
. This allows Cypress to be added to extension whitelists for those working under corporate policies that prohibit extensions. Addresses #3673, #1239 and #2494.
Bugfixes:
- Problems logging in through GitHub in the Test Runner have been fixed. The GitHub login window no longer shows the browser support banner and the "Authorize cypress-io" button is no longer disabled. Fixes #1251.
- Fixed an issue when testing applications using older versions of jQuery. They now no longer throw
item.first is not a function
. Fixes #2927. - Cypress now detects more instances of
browser
installations. Fixes #3183 and #3218. - Fixed issue with loading fixture files containing more than one
.
in their filename while not specifying the file extension. We are also displaying a clearer warning when a fixture file cannot be found. Fixes #1402. - All third party
@types
have been moved from Cypressdependencies
intodevDependencies
. This should fix situations where user's type dependencies were conflicting with Cypress's third party type definitions. Fixes #3371 and #1227. -
Cypress.config('baseUrl')
has been updated to no longer strip singular/
at the end of urls and instead only strip instances of multiple/
. Fixes #3540. - The prompt to "Restore pages?" is no longer displayed within Chrome upon restarting a crashed Chrome window. Addresses #2048.
-
cy.wrap()
no longer throws an error when a non-jQuery wrapped DOM element is passed in as an argument. Fixes #3549. - Fixed issue where all arguments passed to
setTimeout
orsetInterval
were not properly passed on to the target function. Fixes #3592. -
.filter()
has been updated so that when called with a function, the options are now properly read. Fixes #3315. - Cypress's recognition of websites attempting framebusting has been updated to include framebusting code wrapped within
()
. #3267 - When
.its()
returnsundefined
it no longer errors. It will now follow the same logic as all other commands and only fail when directly by a.should()
command with an assertion that is not met. Fixes #1531. - When
cy.wrap()
is followed directly by a.should()
command,cy.wrap()
will now retry when its argument evaluates toundefined
until it meets the requirements of the assertion or thecy.wrap()
command times out. Fixes #3241.
Misc:
- We now display a warning when passing an argument to
--spec
that is not surrounded by quotes""
recommending that the argument instead be surrounded by quotes. In some cases, not providing quotes can cause the arguments to be read in a way that is likely not its intended use. Addresses #3318 and #2298. - The number of logs printed when installing Cypress in docker has been reduced. Partially addresses #1243.
- The seeded Kitchen Sink examples have some new examples showing how to add a message to assertions, how to compare the text content of two elements, and how to make assertions about
data
attributes. The examples also have some small typo fixes. Fixes #502. Addressed in #3272, #3287, and #3700. - We now only mount internal servers on
loopback
. Addresses #3712. - The instructions in Cypress's update window now include
yarn
update instructions alongsidenpm
. Addresses #2871. - The spec file's font weight has been increased within the Test Runner for better readability. Addressed in #3065.
- We improved the error message displayed when a record key is unrecognized during
cypress run
. Addresses #1449. - We improved the typings when using
Cypress.on
to listen forwindow.alert
events to allow forSinon.stub
. Fixes #3451. - Fixed typo in typing for
.trigger
options. Addressed in #3588.
Documentation Changes:
- New Retryability doc #1278
- Updated
--browser
andbrowser
args to acceptpath
#1419 - Add documentation on how to 'accept' or 'reject' project transfer #1474
- Updated docs on explain how to run Chrome and Chromium browsers #1339
- Added
{home}
and{end}
character sequences tocy.type()
doc. Also wrote better description of what{downarrow}
and{uparrow}
character sequences actually do. #1347 - Added all newly supported HTTP methods to
cy.request()
doc. - Add new section to Debugging doc explaining whitelisting the Cypress Chrome extension.
- Fixed code example for google analytics stubbing #1454
Dependency Updates
- Upgraded
@cypress/commit-info
from2.1.1
to2.1.2
. #3327. - Upgraded
@cypress/xvfb
from1.2.3
to1.2.4
. #3328. - Upgraded
@ffmpeg-installer/ffmpeg
from1.0.15
to1.0.17
. #3329. - Upgraded
cachedir
from1.3.0
to2.1.0
. #3660. - Upgraded
chalk
from2.4.1
to2.4.2
. #3362. - Upgraded
chokidar
from1.6.0
to1.7.0
. #3363. - Upgraded
coffee-script
from1.12.5
to1.12.7
. #3365. - Upgraded
commander
from2.11.0
to2.19.0
. #3366. - Upgraded
common-tags
from1.4.0
to1.8.0
. #3368. - Upgraded
compression
from1.7.2
to1.7.3
. #3379. - Upgraded
cookie
from0.2.4
to0.3.1
. #3380. - Upgraded
cookie-parser
from1.4.3
to1.4.4
. #3443. - Upgraded
dependency-tree
from6.4.0
to6.5.0
. #3381. - Upgraded
electron-context-menu
from0.8.0
to0.11.0
. #3383. - Upgraded
electron-packager
from9.0.1
to9.1.0
. #3384. - Upgraded
electron-positioner
from3.0.0
to3.0.1
. #3385. - Upgraded
errorhandler
from1.1.1
to1.5.0
. #3386. - Upgraded
express
from4.16.2
to4.16.4
. #3409. - Upgraded
extract-zip
from1.6.6
to1.6.7
. #3410. - Upgraded
glob
from7.1.2
to7.1.3
. #3412. - Upgraded
image-size
from0.5.5
to0.7.2
. #3413 and #3500. - Upgraded
is-ci
from1.0.10
to1.2.1
. #3414. - Upgraded
lodash
from4.17.4
to4.17.11
. #3344. - Upgraded
mocha-junit-reporter
from1.17.0
to1.18.0
. #3417. - Upgraded
moment
from2.23.0
to2.24.0
. #3433. - Upgraded
morgan
from1.3.0
to1.9.1
. #3434. - Upgraded
node-uuid
from1.4.1
to1.4.8
. #3436. - Upgraded
parse-domain
from2.0.0
to2.1.7
. #3437. - Upgraded
request
from2.87.0
to2.88.0
. #3444. - Upgraded
request-progress
from0.3.1
to0.4.0
. #3445. - Upgraded
request-promise
from4.1.1
to4.2.4
. #3446 and #3476. - Upgraded
return-deep-diff
from0.2.9
to0.3.0
. #3447. - Upgraded
send
from0.14.2
to0.16.2
. #3448. - Upgraded
ssl-root-cas
from1.2.5
to1.3.1
. #3449. - Upgraded
supports-color
from5.1.0
to5.5.0
. #3464. - Upgraded
through
from2.3.6
to2.3.8
. #3465. - Upgraded
tmp
from0.0.31
to0.0.33
. #3466. - Upgraded
tough-cookie
from2.4.3
to3.0.1
. #3477 and #3659. - Upgraded
trash
from4.0.0
to4.3.0
. #3478. - Upgraded
underscore.string
from3.3.4
to3.3.5
. #3480. - Upgraded
yauzl
from2.8.0
to2.10.0
. #3481. Potentially fixes #3515. - We also updated many dependencies used for development and removed some unused dependencies.
v3.1.2
: 3.1.2
Released 11/18/2018
Bugfixes:
- Fixed a regression caused in
3.1.1
where we attempted to set a property on an invalid cookie sent from a server. Fixes #2724. - Fixed Cypress not correctly aborting long running connections (such as server sent events) on proxied requests. Fixes #2612.
- Fixed bug where tests were failing due to assertions causing Cypress to accidentally iterate through cross origin iframes. If you were seeing "random" cross origin errors, this likely fixes those issues. Fixes #2784.
- Fixed incorrectly setting
charCode
andkeyCode
when using .type() on a few different special characters such as{
. Fixes #2105. - Fixed another regression in
3.1.1
where passingundefined
to asetTimeout
caused Cypress to error. Fixes #2719. - Fixed a bug in node core where Cypress would not show up in
Windows
for users onnode >= 11
. Fixes #2667. - Fixed a bug with trashing assets in linux that caused recursive
.Trash
files to show up. We now have opted to actuallyrm -rf
the files in linux because trashing is too inconsistent between linux distros. Fixes #2742.
Misc
- Added type definitions for
Cypress.moment()
. Fixes #2746. - We now display better error messages in the CLI when runs exceed billing limits. Fixes #1689.
Dependency Updates
- Removed
progress
#2733.
v3.1.1
: 3.1.1
Released 11/2/2018
Known regressions in this release
Features:
- You can now pass a
flag
option tocy.writeFile()
. The following flags are available. Fixes #1249. - There is a new
CYPRESS_DOWNLOAD_MIRROR
environment variable for installing Cypress at a mirror url. Fixes #2609. - The Module API now returns the
runUrl
fromcypress.run()
. Fixes #2596. - Specs now properly display as focused when navigating through specs via the keyboard. Fixes #2273.
Bugfixes:
- Fixed a bug where Cypress would error when a secure cookie flag was set and then expired from an
https
url without the subsequent secure flag. Due to the way Cypress was constructing the url, this would fail to actually remove the cookie. Fixes #1264, #1321, #1799. - We now truncate filenames for screenshots to not exceed 255 characters in length. Previously there were cases where the screenshot filename would exceed 255 characters and error. Fixes #2403 and #2665.
- Fixed issue when using
cy.writeFile()
and passing an object to a.json
file. The object is now correctly written to the JSON file instead of a string. Fixes #2373. - We updated how we handle
trashAssetsBeforeRuns
behavior. We now trash the contents of thescreenshotsFolder
andvideosFolder
directories instead of trashing the directories themselves. This helps maintain any file access permissions for the directories. Fixes #1943 and #2600. - Fixed bug where mocked Dates using
cy.clock()
would not be an instance ofDate
. Fixes #2570. - Directories within specs whose names contain
.
are now correctly read as directories instead of spec files within the Test Runner. Fixes #2423. - Cypress no longer automatically takes screenshots of skipped tests. Fixes #2368.
- Fixed an issue where returning/resolving
undefined
from acy.task()
handler resulted in an incorrect runtime error. Fixes #2553. - Update
modifyObstructiveCode
to account for framebusting techniques that usewindow.frameElement
, so that Applications using this technique will run properly in Cypress. Fixes #2582. - Fixed bug where only the first DOM element of an array of DOM elements would be blacked out after being passed as argument to
blackout
withincy.screenshot()
. Fixes #2508. - We fixed an issue involving timers after running
cy.screenshot()
. Fixes #2432. - The Test Runner now retries node-originated errors from our internal API requests. Fixes #2341
- Fixed issue with multiple
readyStateChanges
with the samereadyState
. Fixes #1150. - Fixed Type error being thrown for users using TypeScript 3. Fixes #2363.
Misc
- We are now collecting more environment variables from runs when run in Semaphore, GitLab, Bitbucket, Team Foundation Server, Codeship, and Shippable. Fixes #2460, #2358, #2343, and #2453.
- We now display better error messages in the CLI when runs exceed billing limits. Fixes #1689.
- The Test Runner's search now resets when switching between projects. Fixes #2512.
- Fixed internal Cypress tests. Fixes #2606.
- Replaced use of
new Buffer
withBuffer.from
. Fixes #2626. - Whitelisted
autoScrollingEnabled
to be saved instate.json
. Fixes #2476. - Fixed internal test error
beforeSpecRun is not a function
. Fixes #2401. - Switched our internal tests to use CircleCI workspaces. Fixes #2398.
- Update TypeScript definition for
cy.screenshot()
to include screenshot specific options. Fixes #2654. - Urls printed within the CLI will now display as the color blue. Fixes #2493.
- We began bulk converting some of our codebase from CoffeeScript to JavaScript. Fixes #2686 and #2687.
- We updated some of our internal ESLint rules to be more strict and also to help with CoffeeScript to JavaScript conversions. Fixes #2688.
Dependency Updates
- Upgraded common-tags from
^1.4.0
to^1.8.0
#2415 - Upgraded @cypress/browserify-preprocessor from
1.1.0
to1.1.1
#2513 - Upgraded lolex from
^1.5.2
to^3.0.0
#2570
- Upgraded @types/jquery from
3.2.16
to3.3.6
#2363
- Upgraded zunder from
5.6.5
to6.1.1
#2541
Documentation Changes:
- Added
flag
option tocy.writeFile()
doc. - Added
runUrl
to returned run in Module API doc. - Documented new
CYPRESS_DOWNLOAD_MIRROR
flag and rewrote advanced install instructions to be clearer in Installing Cypress doc.
v3.1.0
: 3.1.0
Released 8/13/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
--parallel
flag 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 run
accepts a new--parallel
flag to run specs in parallel. Fixes #1690 and #64 and #2297. -
cypress run
accepts a new--group
flag to group multiple spec files within a single run. Fixes #2169 -
cypress run
accepts a new --ci-build-id flag. 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
menu
when using offscreen rendering. Fixes #2322 and #2294. - 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-preprocessor
was 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 for interactive mode withcypress 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:
- Added
Parallelization
doc. - Update
Dashboard Service
doc with new screenshots and run sections. - Update
Command Line
doc with new flags and alphabetized flags.
v3.0.1
: 3.0.1
Released 5/30/2018
Bugfixes:
- Seeded KitchenSink tests no longer fail. Fixes #1812.
- The binary cache now correctly works and will not reinstall Cypress if an existing version is already installed. Fixes #1813.
- Closing the
Electron
browser and then openingChrome
no longer causescy.screenshot()
to fail. Fixes #1820. - Fixed a bug with Windows users seeing crashes with
tty.getWindowSize is not a function
. Fixes #1815 and #1817.
v3.0.0
: 3.0.0
Released 5/29/2018
Summary:
- There is a new cy.task() command that enables you to go outside the browser to perform tasks directly in
node
. This will make it easy to setup, scaffold, seed, talk to your database, or anything else useful on a backend. - cy.screenshot() has been rewritten from the ground up. It now takes a screenshot of only the application under test by default. It also can take full page screenshots or element only screenshots. This is the first step of Cypress Dashboard support for screenshot diffing.
- When running with
cypress run
we now run each spec file in isolation from others. We have rewritten our reporter to provide more details and provide a summary of the run at the bottom. - The Dashboard has been upgraded to make it easier to understand the results of each spec run. This was done in anticipation of providing you the ability to parallelize and load balance your spec files automatically in CI.
- We are now capturing the performance and timings data of every test when using
--record
mode and are beginning to offer the first analytics and insights into the health of your tests on our Dashboard service. - Cypress now caches globally per version which prevents it from being installed multiple times across projects.
Breaking Changes:
- We now run each spec file in isolation from one another. This shouldn't technically break anything, but if you have set up your tests in a way that requires the state of a previous spec file, this could potentially break your tests. This will go a long ways towards reducing problems we were seeing with long runs in CI. Fixes #431, #681, #1589, #1539, and #1692.
- The environment variable
CYPRESS_BINARY_VERSION
has been removed. You should use the equivalent environment variableCYPRESS_INSTALL_BINARY
instead. - The environment variable
CYPRESS_SKIP_BINARY_INSTALL
has been removed. To skip the binary install, setCYPRESS_INSTALL_BINARY=0
. -
screenshotOnHeadlessFailure
has been removed as an option incypress.json
. Instead you can now control this behavior directly with code by settingscreenshotOnRunFailure
tofalse
within the new Screenshot API. Fixes #1140 and #1754. -
trashAssetsBeforeHeadlessRuns
has been renamed totrashAssetsBeforeRuns
in our configuration. Fixes #1754. -
videoRecording
has been renamed tovideo
in our configuration to be clearer and prevent confusion about recording to our Dashboard. Fixes #562. - Cypress no longer copies screenshots and videos to artifacts for CircleCI. Copying artifacts should be left up to the user to handle themselves in their
circle.yml
file. Fixes #1592. - The standard output has been redesigned to better visualize spec files running in isolation and to be more visually appealing. This may break any specialized logic written that expected the standard output to be structured in a specific way or contain specific words. Fixes #1588.
- cy.screenshot() no longer takes a screenshot of the runner by default. Instead it will hide the runner, remove application scaling and then scroll to take a full page picture of your application.
-
before
andafter
hooks within a support file now run before/after every spec file, instead of only once before/after the entire run. #681
Features:
- There is a new cy.task() command for executing any arbitrary
node
code. - You can now run multiple specs by passing a glob to the
--spec
argument ofcypress run
. Fixes #263, #416 and #681. - There is a new Screenshot API and new cy.screenshot() options that allow you set defaults for how screenshots are captured, whether to scale your app, disable timers and animations, or which elements to black out in the screenshot. You can also set defaults for whether to automatically take screenshots when there are test failures or whether to wait for the Command Log to synchronize before taking the screenshot. Fixes #1424.
- cy.screenshot() can now be chained off of commands that yield a DOM element and will only take a screenshot that element.
- During install of cypress, the Cypress binary is now downloaded to a global cache. This prevents multiple projects from downloading the same Cypress version. Fixes #1300.
- The seeded
example_spec.js
file has been replaced by anexamples
folder with several spec files. This more closely reflects the recommended use of Cypress - as smaller groups of tests split among many files that will now be run in isolation. The tests were also updated from ES5 to ES6. You can see all changes in thecypress-example-kitchensink
repo Fixes #1460. - Cypress now watches all the
plugins file
's entire dependency tree to make iterating on plugins easier. Fixes #1407. - Videos will now be saved locally with a filename named after the associated
spec
file that it represents. Fixes #980. - The Test Runner now displays
skipped
tests differently thanpending
tests. #244. - Standard output now displays the number of
skipped
tests within the summary output duringcypress run
. #1559. - The url to view the run in the Dashboard is now printed to output during
cypress run
. #494. - We now print the browser and browser version run in the output during
cypress run
. #833. - The build number and url to CI for tests run within Drone are now captured and displayed on the run within the Dashboard. #1709.
Bugfixes:
- Cypress no longer crashes when attempting to proxy a websocket connection that fails. Fixes #556.
- Asserting that an attribute equals a falsy value no longer fails when the value was falsy. Fixes #831 and #1491.
- Snapshots now ignore stylesheets with
media="print"
. Fixes #1568. - Fixed issue where the Cypress
window
was being returned instead of AUT'swindow
. Fixes #1436. - The
close
event now properly fires onfile
when manually closing the browser. Fixes #1560. -
cypress.env.json
is now being watched for changes. Fixes #1464. - Fixed issue when using TypeScript that caused namespace errors to be thrown. Fixes #1627.
- Fixed error message on
.type()
and.clear()
when typing into non-typeable elements or clearing non-clearable elements to accurately list the elements allowed. Fixes #1650. - Added Chrome flag
--disable-blink-features=RootLayerScrolling
to prevent the application under test from "shaking" in recent versions of Chrome. Fixes #1620. - Fixed issue where some TTY characters were not properly formatted in the terminal for Windows during
cypress run
. Fixes #1143 and #1550. - Removed an extraneous error display from Electron during
cypress run
about a "transparent titlebar" setting. Fixes #1745.
Misc:
- We are now aggressively turning on colors when running in CI. If you're using Jenkins and do not have an ANSI color plugin installed, you can turn off colors with the
NO_COLOR=1
environment variable. Fixes #1747 and #1748. - When running
cypress run --record
on forked MR's, we now detect that the Record Key is missing and do not fail the build. We will display a warning, but continue running the tests. Fixes #1193. - Searching in the Test Runner now filters out any non-matching folders. Fixes #1706.
- Duplicate, subsequent logs in the Command Log are now collapsed and can be expanded to view all logs. Fixes #1580.
- We now throw a descriptive error if an alias using
.as()
was defined starting with the@
character. #1643. - We now pass the
--disable-device-discovery-notifications
flag automatically. This should prevent Chromium browser from automatically trying to communicate with devices in your network, such as printers, while running tests. Fixes #1600. - We now pass any reporter errors along and provide a stack if a custom reporter you've provided does not exist. Fixes #1192.
- You can now pass a normal object to
cypress.open()
orcypress.run()
through the Module API, just as you would from the command line. #1442. - Added type definitions for
Cypress.off
andCypress.log
. Fixes #1110 and #1591. - Update type definitions for cy.screenshot() to reflect new changes to command's options. Fixes #1753.
- The type definition for .filter() now correctly supports a function argument.
- The type definition for .scrollIntoView() no longer errors when passed a
duration
option. Fixes #1606. -
NODE_OPTIONS
environment variables now print within thecypress:cli
logs when running inDEBUG
mode. Although usingNODE_OPTIONS
themselves should not be used due to #1676. Fixes #1673. - Cypress will error and exit with status 1 if no specs were found during
cypress run
. Fixes #1585. - We are now counting and aggregating the stats at the end of test runs separately from Mocha. Cypress considers a test to be the
it
and any accompanyinghooks
that run before or after a test. Cypress will correctly associate failures in those hooks to the test itself. We believe this more accurately models and just "makes sense". Fixes #1163. - The minimum viewport size has been lowered from
200
pixels to20
pixels. Fixes #1169 and #1444. - Internal changes to our API structure and communication. Fixes #1170, #1413, #1415.
- We output a much more complete test results object when using cypress as a module. Fixes #1248.
- Added keywords to Cypress NPM package. Fixes #1508.
- Centered the animating icon in the Test runner when 'running'. Fixes #1695.
- We made some changes to internal references of
headed
andheadless
to be more specific and instead referencerun mode
andinteractive mode
. Fixes #1140. - The test name text is now selectable inside the Command Log. Fixes #1476.
- Minor improvements to contributing docs and scripts. Fixes #1665.
- We now collect Semaphore CI params and provide URL's to click into the builds from the Dashboard. Fixes #1785.
- Config overrides coming from the CLI or environment variables are now validated the same way as if they've been set in
cypress.json
. Fixes #1783. - There is a better / more helpful experience around passing unknown options to the CLI. Fixes #837.
- Display an empty message when there is no commit information on recorded runs. Fixes #1809.
Documentation Changes:
- New
cy.task()
doc - New
Screenshot API
doc - Update
cy.screenshot()
doc to include new accepted usage and options - Update
Installing Cypress
doc to include new options for Cypress binary caching - Updated
Writing and Organizing Tests
to include newly seededexamples
folder - Updated
cypress run
spec args - Updated
Dashboard Service
- Updated
Launching Browsers
to include our disabling of device discovery notifications - Updated
Preprocessors
to reflect all waysclose
event could be triggered - Updated use of "running headlessly" to more accurate "during
cypress run
"
v2.5.0
v2.4.1
v2.4.0
v2.3.0
v2.2.0
v2.1.0
: 2.1.0
Released 3/1/2018
Bugfixes:
- Prevent a bug with
node-sass
on OSX + Windows when localnode
version does not match bundlednode
when importing components directly in spec files. The underlying issue was because we forgot to updateBuildkite
andAppveyor
when we upgradedElectron
in2.0.0
. Fixes #1387 and #1390.
Features:
- The Selector Playground has been updated to automatically prefer
data-cy
,data-test
ordata-testid
attributes when providing the unique selector for an element. Additionally it now exposes a public API that you can use to control how it determines which selector to use. Fixes #1135.
Documentation Changes:
- Added
Selector Playground Guide
- Added
Selector Playground API
- Updated
Best Practices
- Updated
FAQ
- Updated
Introduction to Cypress
v2.0.0
: 2.0.0
Released 2/15/2018
Breaking Changes:
- The built in default
Electron
browser has been bumped from version53
to59
. This version represents the version ofChromium
that Electron is using. In other words, runningcypress run
(or viaElectron
) will be like running your tests inChrome 59
now. Although it is unlikely this would actually break any of your tests - it is technically possible they could behave differently. Fixes #895 and #891 and #823 and #860 and #1011 and #1252 and #1276. - We are now detecting and automatically stripping code that obstructs Cypress from being able to test your application. Specifically, we are removing JavaScript code that tries to prevent clickjacking and framebusting. We have written very conservative rules that do their best to only strip these specific JS snippets, but it is technically possible that it may unintentionally rewrite valid JS if they match the regexp patterns. There is a new configuration option called
modifyObstructiveCode
that istrue
by default. If you are experiencing problems after upgrading, you can turn this off and this will disable modifying your JS code. If you were using Cypress and upon visiting your website you would experience seemingly "random" redirects - these problems should now be eliminated. Fixes #886 and #1245 and #1064 and #992 and #692 and #352. - We are now clearing the browser's disk cache each time it opens (before any tests run). This means that any files that have been cached from
Cache-Control
headers will be cleaned and removed. In the future, we will expose a newcy.clearCache()
method to provide finer grained control of clearing the cache on a per test basis. But for now, this is an improvement. Fixes #1124. - The
--spec
option is now normalized against the current working directorycwd
instead of the project that you are running Cypress in. That means passing a path from the command line to a spec file will now work even when the project path is notcwd
. Fixes #1159.
Bugfixes:
-
blacklistHosts
would occasionally not work if you were blacklisting a host that had previously cached a file. In this case, the browser would serve it from disk and not make an actual HTTP request. This issue has been solved by clearing the cache when the browser opens. Fixes #1154. -
blacklistHosts
is now correctly accepted via the--config
CLI flag. - Spies and Stubs created with
cy.stub()
andcy.spy()
will now retry their assertions when utilized from an alias. Fixes #1156. - Basic auth is working again in Chrome 63 and Chrome 64. We "for real" fixed it this time by adding auth headers automatically at the network proxy layer and bypassed the browser altogether. We automatically apply auth headers if you provide a username/password in the URL of a
cy.visit(url)
. We also added a newauth
option to specify theusername/password
usingcy.visit(url, options)
. All of the requests that match the origin of theurl
will have theAuthorization: Basic <...>
headers added. Fixes #1288. - Fixed domain parsing failures when
local
orlocalhost
was not used as atld
. Fixes #1292 and #1278. - Removed the flag
--disable-background-networking
from the Chrome launch args to fix problems in CI that would throttle XHR callbacks by up to 20-30 seconds. Fixes #1320.
Misc:
- We now properly display nested objects and arrays that come from
cypress.json
in the Settings tab in the Desktop Application. - There's now a proper "empty view" when you go to setup your project to record on our Dashboard and you have not created any Organizations. Fixes #1306.
- Removed the message about private projects requiring a paid account in the future. There will be a free tier including private projects. Fixes #827.
- We moved the location of the browser's disk cache. That means that if you've been using Cypress for a really long time - you may have built up quite a large existing cache (in the hundreds of
mb
). Before upgrading, you should open the browser and then manually clear the Cache. Or - if you have already upgraded to2.0.0
delete the following folders:- OSX:
~/Library/Caches/Cypress
- Linux:
~/.cache/Cypress
- Windows:
%APPDATA%\Cypress\cy\production\browsers
- OSX:
Configuration
-
If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.