Changelog

Jennifer Mann edited this page Feb 13, 2017 · 597 revisions

0.19.0 (02/11/2017)

Notes:

  • We have updated all of the docs related to these changes. The CI Docs got a much needed facelift.
  • There is a new docs section related to the Dashboard and the new features.

Overview:

  • We have officially released our Dashboard which is our service that will display recorded runs.
  • This service has now been fully integrated into the Desktop Application. There is a new on-boarding process that helps you setup projects for recording.

Breaking Changes:

  • We have done our very best to create as little breaking changes as possible.
  • You will need to download a new cypress-cli - version 0.13.1.
  • Older CLI versions will continue to work on 0.19.0 except for the cypress open command - and will we print a warning to nudge you to upgrade.
  • Newer CLI versions will not work on versions of Cypress < 0.19.0 (but we don't know why this would ever even happen).

Features:

  • There is a new Dashboard service that displays your recorded runs.
  • The Dashboard enables you to view your recorded runs, manage projects, create organizations, invite users and set permissions.
  • Projects are either public with their runs being publicly viewable by anyone, or private which restricts their access to only users you've invited. All existing projects were set to private by default.
  • When you invite users (from the Dashboard) we will automatically whitelist them. This means you can invite all of your teammates (or anyone else). They can start using Cypress without talking to us.
  • We now list all of the recorded runs directly in the Desktop GUI under a new Runs tab. Fixes #236.
  • Your list of projects in the Desktop GUI now displays their last recorded run status - passing, failing, pending, running, etc.
  • We've changed the "Config" tab to now be called "Settings". We added two new sections to the "Settings" tab which displays your projectId and your Record Key. These sections do a much better job explaining what these are and how you use them.
  • You no longer have to use cypress get:key to get your Record Key. We now display this in your "Settings" tab and also in the Dashboard.
  • Projects will no longer automatically acquire a projectId when being added. There is now a very explicit opt-in process where you setup your project to record. This should make it much clearer what's going on behind the scenes.
  • cypress run now behaves likes cypress ci previously did and downloads + installs Cypress if its not already installed.
  • cypress ci now works in OSX, and also works in Linux in Desktop flavors (like Ubuntu).

Misc:

  • cypress run will now download and install Cypress if its not already installed.
  • We renamed CYPRESS_CI_KEY TO CYPRESS_RECORD_KEY. This makes it clearer what this key actually does - and the fact that it can be run anywhere irrespective of CI. We still look for the old named key but will print a warning if we detect it.
  • We print a warning when using an older CLI tool version. Fixes #424.
  • We've improved many of the error messages related to recording runs. Fixes #423.
  • cypress ci has been deprecated. You now use cypress run --record --key <record_key>. The key you used to pass to cypress ci is the same key. We've simply consolidated these commands into just cypress run which makes it simpler and clearer. Their only difference is that passing --record to cypress run will record the build to our Dashboard. Fixes #417.

0.18.8 (02/05/2017)

Overview:

  • We have officially implemented our Sinon.JS integration: adding cy.stub, cy.spy, cy.clock, and cy.tick. We've matched Sinon's API's and added sinon-as-promised and chai-sinon. In addition we've fixed Sinon performance issues, and improved the display of assertion passes and failures.
  • These new API's will work well in both unit tests and integration tests.

Features:

  • You can now use cy.stub and cy.spy synchronously. These both match the Sinon API identically. We will display stub/spy calls in the command log and provide the call count, arguments, context, and return values when you click on the log. Stubs are automatically reset between tests. Fixes #377.
  • We've added our own special aliasing flavor to cy.stub and cy.spy. You can use the .as(alias) command and we will associate spy and stub invocations (the same way we do with XHR aliasing and route matching).
  • We've added cy.clock and cy.tick which are both asynchronous methods to modify timers in your application under test. We automatically apply clock (even if you invoke it before your first cy.visit) and will automatically reapply it after page load. cy.tick will enable you to control the amount of time you want passed in your application. This is great for controlling throttled or debounced functions.
  • sinon-as-promised is automatically applied under the hood which extends Sinon and provides the .resolves(...) and .rejects(...) API's which makes it easy to stub promise returning functions.
  • We support and display multiple sub spies when using Sinon's .withArgs(...) function.

Misc:

  • We've enhanced chai-sinon by improving the output during passes or failures. Fixes #31.
  • We've ripped out Sinon's argument serialization in favor of our own.
  • We no longer send Sinon to the remote application under test. In other words, you'll no longer see sinon.js being sent as a network request.
  • Deprecated the undocumented cy.agents function, but it will continue to work and will be officially removed later.

0.18.7 (01/30/2017)

Bugfixes:

  • Fixed regression in 0.18.6 that caused Cypress to fail when switching spec files when baseUrl was set in cypress.json. Fixes #403.

0.18.6 (01/29/2017)

Features:

  • We now launch Cypress tests directly to the baseUrl to avoid an initial page refresh when encountering the first cy.visit command. This should help tests run faster. Fixes #382.

Bugfixes:

  • Uninstalling the last used browser no longer causes the Desktop GUI to error and hang. Fixes #371.
  • Fixed issue where stdout would not be displayed on a completed cypress ci run. Fixes #398.
  • Fixed a longstanding issue in Cypress where logging in from another computer would kill the session on all other computers, and prevent you from accessing cypress get:key (amongst other things). Fixes #400.

Misc:

  • We now validate all of the configuration options set in cypress.json to ensure it has valid types. Fixes #399.
  • We now validate that baseUrl is accessible prior to running tests. This prevents a common situation where you may forget to boot your web server and have instantly failing tests. Fixes #383.
  • We now show the entire scaffolded tree of files when adding a brand new project. Fixes #401.
  • We display errors coming from babel with more helpful information now.
  • Changed the Desktop GUI to use JWT for authorization. You will have to log in again.

0.18.5 (01/08/2017)

Features:

  • You can now disable videoCompression by passing false in cypress.json or env variables. In very long runs and on CPU throttled instances compression can take a considerable amount of time, possibly as much as 50% of the time spent running actual tests. Fixes #372.

Misc:

  • Improved performance when running headlessly by caching the last bundled spec. This prevents having the same spec file rebundled each time cy.visit caused a full page navigation. You should see a moderate improvement in test run time. Fixes #370.
  • We are now capturing stdout and several other properties for use + display in our Dashboard on cypress ci runs.
  • Enable cy.fixture to send an encoding for images other than forcing the default encoding of base64. Fixes #373.
  • Enable cy.route to pass an encoding parameter when using fx:fixture syntax. Fixes #374.

0.18.4 (12/28/2016)

Bugfixes:

  • Prevent cy.url from accessing the URL during transition phase and throwing an error. Fixes #356.
  • Stubbed functions now serialize correctly when switching domains on a cy.visit. Fixes #354.
  • Fixed a handful of scenarios and edge cases where cookies were not properly synchronized between external requests and the browser. This led to situations where cookies were either duplicated on requests, or were not sent. Fixes #357 and #361 and #362.

Misc:

  • cy.request now favors baseUrl config over remote origin when you do not pass a fully qualified URL. Fixes #360.

0.18.3 (12/18/2016)

Features:

  • There is now a cy.log command for displaying an arbitrary message and args. Useful for providing context while testing and debugging long tests. Fixes #342.

Bugfixes:

  • cy.title now uses the document.title property as opposed to querying for <title> elements in the <head>. Fixes #331 and #351.
  • We now exit correctly (with status of 1) in the case of headless renderer crashes. Additionally we capture these errors properly, explain what happened, and link to external error document to suggest fixes. Fixes #348 and #270.

Misc:

  • Improved headless performance, and added optimizations for early and often GC.

0.18.2 (12/15/2016)

Bugfixes:

  • Under the hood cy.visit now sets an Accept: text/html,*/* request header to prevent some web servers from sending back 404 in the case where they required this header. Only a small % of servers would ever do this, but webpack-dev-server was one of them. Fixes #309.
  • cy.request now sends an Accept: */* request header by default too. Fixes #338.

Misc:

  • cy.request now includes more debugging information (related to headers) in the error output. Fixes #341.
  • When cy.request times out, we now output much better error messages including information about the request sent. Fixes #340.

0.18.1 (12/11/2016)

Notes:

Features:

  • cy.request can now have its automatic redirect following turned off by passing {followRedirect: false}. Fixes #308.
  • cy.request now has a qs option that automatically appends query params to the url property. Fixes #321.
  • cy.request now follows redirects exactly like a real browser. Previously if you POSTed to an endpoint and it redirected to a GET then cy.request would not follow it due to the method changing. It now follows method changing redirects by default. Fixes #322.
  • cy.request now accepts the form option which will convert the body values to urlencoded content and automatically set the x-www-form-urlencoded header. This means you can now use cy.request to bypass your UI and login with standard form values. Fixes #319.
  • When cy.request fails, it now outputs the full request / response information. This behaves more similar to cy.visit failures. Fixes #324.
  • cy.request now prints all of the underlying HTTP request / response information into the Dev Tools' console (when clicking on the Command Log). This means that you will see everything you would normally see from the Network tab as if the request were made from the browser. We even print redirect information. Fixes #325.

Bugfixes:

  • Cypress' internal babel will no longer attempt to load your project's .babelrc. This helps avoid potential version conflicts. Fixes #312.
  • We no longer watch the supportFile while running headlessly. Fixes #329.
  • watchForFileChanges is now correctly respected in regards to watching all files, including the supportFile. Fixes #336.
  • There is no longer an error when scaffolding a new Cypress project. Fixes #326.
  • The Runner UI no longer appears to be "running" when there is a spec bundle error in the supportFile.
  • Cypress now correctly exits when running headlessly in linux when the browser fails to connect. Fixes #333.
  • Cypress now correctly exits when running headlessly in linux when there is a spec bundle error. Fixes #337.
  • Cypress now retries up to 3 times for the browser to connect when running headlessly. The warning / error messages were also updated to be clearer. Partially addresses #334.

Misc:

  • Deprecated failOnStatus property for cy.request and renamed to failOnStatusCode. Fixes #323.
  • Removed the cookies option from cy.request because cookies are now always get/set on requests. This option really never made any sense to have. Fixes #320.
  • Better data reporting when recording builds in CI.
  • We now collect "global" errors that may prevent any tests from running. We will be displaying these in our future CI platform.

0.18.0 (11/27/2016)

Notes:

  • We've created a new example recipes repo to show you common testing scenarios including how to use the new module support.

Summary:

  • We've added automatic ES2015+, module, JSX, and CJSX support to all test files. This means you can use require, import, or export declarations to load other files. You can also use this to import your own application specific JavaScript modules and write unit tests for them. More of these details are yet to come. See this issue.
  • You can now use your regularly installed node_modules in your project to do things like utilizing lodash for utility functions or extending chai with assertion plugins.
  • Because we're now processing the spec files prior to handing them off to the browser, this means we will display problems like syntax errors when something in the processing goes wrong. Additionally, we print these out when running headlessly, so you're not stuck wondering what went wrong.

Breaking Changes:

  • Previously, we auto-magically included all files within cypress/support. This has now gone away and we've simplified this to automatically including a single cypress/support/index.js file. That single file acts as the entry point meaning you should import or require the other support files you'd like to include. Although this is still "automatic" it's much less magical and we'll be updating all of our docs to reflect this. The purpose of cypress/support hasn't really changed, just the implementation of it has. We will automatically seed a cypress/support/index.js file for you (even on existing projects). The file location of cypress/support/index.js can be changed with the new supportFile option in your cypress.json. This feature can also be turned off by specifying supportFile: false.

Features:

  • We now support ES2015+, modules, and JSX in all spec files. Fixes #246.
  • Spec files may now be written as .js, .jsx, .coffee, or cjsx files.
  • Test files with JS syntax errors are now handled and we provide a GUI that points to the exact line/column number. Additionally we print these out when running headlessly and exit the process with code 1. Fixes #293.

Misc:

  • We improved the logic around when and if we scaffold files on a new project. We're much smarter about this and not generating these forcibly every time. Fixes #285.
  • Simplified handling of support files and made them less "magical". Fixes #286.
  • Renamed supportFolder to supportFile in cypress.json. We will automatically rename your cypress.json if this property was present on update.

0.17.12 (11/21/2016)

Bugfixes:

  • You no longer have to log in again after updating. Fixes #305.
  • Updating in app now works again. Sorry about that. Fixes #304.
  • Headless frame rate is now correctly set to 20 instead of resetting back to 60. Fixes #303.
  • We now automatically drop frames that the CPU cannot keep up with while video recording headlessly. Previously we would buffer all frames in memory and it was possible to exhaust all memory due to the way that streaming backpressure works. Fixes #302.
  • Fixed an edge case in the driver that could lead to memory leaks. This happened when Command Logs updated from previously run tests. Normally, in headless mode, we automatically remove references to purge memory after each test, but when logs were updated after this, their references were merged back in again and held onto forever. If you were seeing long Cypress runs die or eventually halt, this was likely the cause. We did extensive memory regression analysis on Cypress and could not find any more memory leaks. Fixes #301.

Misc:

  • Improved cypress run and cypress ci headless output. Fixes #306.
  • Improved performance by preventing snapshots from being taken during headless runs.

0.17.11 (11/16/2016)

Roadmap:

  • The changes in version 0.17.11 below are in preparation for Cypress’ platform service: a portal where screenshots, videos, config, and logs of your builds are accessible.

Overview:

  • cypress ci now uploads build assets to our servers after a test run completes. Additionally, it tracks the config settings used during the build and tracks each individual test failure.
  • If you do not want these assets to be tracked by Cypress, you need to switch to using cypress run. We will happily remove any build assets that are accidentally uploaded to us during the update transition.
  • Read about the differences between cypress ci and cypress run in our docs.

Features:

  • We now record videos during a headless run with both cypress ci and cypress run. Fixes #229.
  • After completing cypress ci, we now upload build assets (such as screenshots and videos) to be used in our upcoming admin interface. This will enable you to review assets without having to touch your CI server. Fixes #292.

Misc:

  • We've redesigned the headless run stdout to give you more details of the run, the stats after the run, what screenshots were taken, the video that was recorded, compression settings for the video, uploading asset progress, etc.
  • Screenshot names now include their parent titles, and invalid file system characters are scrubbed. Fixes #297.
  • We no longer artificially restrict the environment cypress ci can run in. It can now run anywhere. Fixes #296.
  • We removed scaffolding any directories on a new project (when running headlessly). Fixes #295.
  • cypress run no longer prompts the user for any kind of interaction, thus enabling you to use this in CI if you choose to do so. Fixes #294.
  • There is a new configuration property called: trashAssetsBeforeHeadlessRuns that is set to true by default and will automatically clear out screenshots + videos folders before each run. These files are not deleted, they are just moved to your trash.
  • There are several new configuration properties for video recording: videoRecording, videoCompression, and videosFolder.

0.17.10 (11/07/2016)

Bugfixes:

  • Fixed switching between two different spec files from the desktop app causing document.domain to be wrong. Fixes #276.
  • Fixed inserting the string null into cy.request urls when providing a baseUrl in cypress.json while origin could not be determined. Fixes #274.
  • Fixed incorrect error message on reverse visibility assertions. Fixes #275.

Misc:

  • We've improved the way we inject content into <html> responses by filtering the underlying HTTP request headers. We no longer inject content into templates which were loaded via XHR. Fixes #257 and #288.

0.17.9 (10/22/2016)

Bugfixes:

  • Cypress now applies cookies to the browser which were cleared between redirects. Fixes #224.
  • Snapshots now work even when <html> tag has invalid attributes. Fixes #271.
  • Cypress no longer crashes on initial cy.visit when the 3rd party webserver never ends the response. Fixes #272.

Misc:

  • Changed default responseTimeout from 20000 to 30000
  • Changed default pageLoadTimeout from 30000 to 60000
  • The internal Cypress proxy now forcibly responds to requests taking longer than responseTimeout. Currently this sends back text/html with the ETIMEDOUT error, but this likely needs to be configurable. The reason we are now forcibly applying timeouts is to prevent socket pooling exhaustion where tests are running and a 3rd party server never responds to the request.

0.17.8 (10/13/2016)

Bugfixes:

  • Fixed opener of undefined errors due to page load events causing snapshots prior to the load event of the remote application. Thanks to everyone who helped pitched in on this one! Fixes #258.
  • Cypress now correctly sets cookies with expirationDate in the past. Chrome did not handle these cookies as documented and our code did not take this into account. We also added a lot more e2e tests around this behavior. Fixes #266.
  • We are now taking additional precautions to prevent Cypress from trashing the wrong folder during an upgrade (with an open project). This was actually fixed in 0.17.7 but the problem was is that during an update, the new version (which was fixed) was still being passed the wrong arguments from the older (broken) application. We've now upgraded 0.17.8 to detect this, and just use the expected default install location of Cypress. If you're concerned, just close your currently open project before updating. Fixes #265.

Misc:

  • When an in app update fails in linux we now provide instructions on how to manually update Cypress.
  • We now properly take the maxAge cookie flag into account and give it preference over the expires flag as per the cookie spec.

0.17.7 (10/12/2016)

Features:

  • There is now a new chromeWebSecurity option you can set in cypress.json to turn off Chrome's Web Security features. We've written a brand new reference that details why and how you could use this. Cypress Web Security. This option can be used for accessing cross origin <iframes> or if your application needs to test navigation across super domains. Fixes #262.

Bugfixes:

  • We now capture cross origin errors correctly instead of these showing as Uncaught DOMExceptions in the console. Fixes #261.
  • We no longer trash the wrong folder on OSX in-app updates (when a project is open). Sorry about this! Fixes #260.
  • cy.visit urls with domain-like segments (which weren't actually the domain) no longer cause Cypress to think you're trying to navigate to a different superdomain. Fixes #255.

0.17.6 (10/04/2016)

Features:

  • Snapshots will now be pinned when clicking on a command in the Command Log. This enables you to inspect the state of the DOM when the snapshot was taken. We've given you a new series of controls for turning off the element highlighting and hitboxes. Additionally we've given you the ability to manually click through each named snapshot when there are multiple states (like before and after). Fixes #247.

Bugfixes:

  • Fixed a regression where tests that failed outside of a hook would incorrectly indicate themselves as a before each hook. In addition, in the default spec, reporter will now display the test name when a hook was the source of failure. Fixes #253.
  • Fixed a deployment bug in the core-desktop-gui.
  • We now prevent cy.visit from accidentally snapshotting twice.

Misc:

  • cy.request and cy.visit now correctly send User-Agent headers based on the current open browsing session. Fixes #230.

0.17.5 (10/02/2016)

Features:

  • We've added JUnit as a valid built-in reporter. Fixes #178.
  • You can now add or write your own custom reporters. This means you can npm install xyz-mocha-reporter and we'll automatically correctly require that package. Alternatively you can write your own xyz-custom_reporter.js file. Fixes #231.
  • The reporter can now be resized. We persist this state locally so it should "stick" between browser launches / app restarts. Fixes #204.
  • Cypress now "remembers" the last browser you had open and will suggest opening that whenever a project is opened. Addresses #193.
  • Instead of seeing Script error. - cross origins script errors are now handled specially and we throw a very long and exciting error explaining what just happened. Fixes #241.
  • When uncaught errors are thrown in hooks we now indicate Mocha's behavior as part of the error - that it is skipping the remaining tests in the current suite. Fixes #240.

Bugfixes:

  • The reporter now more intelligently scrolls to prevent commands from being cut off. Useful in screenshots / video recording. Fixes #228.
  • We've improved the logic of how snapshots are restored so that it does not break the CSS when there were full page navigations in the test and the CSS changed. Fixes #223.
  • Iframes are now correctly handled when we restore snapshots. Previously, we removed iframes which would change the page layout and the hitboxes' coordinates we drew were wrong. Now we insert iframe placeholders that prevent the page layout from changing. Fixes #234.
  • Snapshot hitboxes no longer incorrectly draw for elements that are hidden. Fixes #251.
  • Fixed a bug that caused commands to time out on subsequent tests whenever there was an uncaught error + an assertion conflict. Fixes #238.
  • Fixed an edge case where assertions would incorrectly associate to a previously run assertion. Fixes #252.
  • Cypress commands now correctly execute in after and afterEach hooks on a failed test. Previously they would only run on passing tests. Fixes #203.

Misc:

  • We've bypassed Mocha's default uncaught error handling and replaced it with something much better - actually using the thrown error instances instead of creating a new arbitrary one. This means you'll see better stack traces on uncaught errors. Fixes #193.
  • We've bypassed Mocha's default uncaught error handling in a hook. Normally this immediately ends the run. Instead we are skipping the remaining tests in the current suite. This prevents skipping potentially dozens or hundreds of tests downstream that are typically unrelated to the hook failure.
  • We've updated cypress-cli package to 0.12.0. You will need to download this new CLI version if you want to pass --reporter-options.
  • Bumped the internal version of mocha from 2.2.1 to 2.4.5.

0.17.4 (09/12/2016)

Breaking Changes:

  • Using subsequent cy.visit's in the same test will not necessarily force a full page refresh. If all that changed was the hash of a url, then the hash changes will take affect without a full page refresh. This matches the behavior of a real browser. Previously cy.visit always forced a full page refresh and this was not correct.

Features:

  • Using cy.visit now acts exactly how modifying the URL in a real browser works. This means that if you visit a url with a hash in it, instead of forcing a full page refresh, it will now simply modify the hash route as if you had manually changed it. This more accurately reflects real user behavior. Previously this was impossible to do with Cypress other than manually altering window.location.hash

Bugfixes:

  • Fixed a regression in 0.17.2 which caused separate tests that were visiting the same URL not to actually visit the new URL and eventually time out. We've updated some of our internal QA processes around this because we rarely have regressions and they are a pretty big deal. Fixes #225.
  • Fixed displaying (null) contentType when a cy.visit returned a 404 status code. We now only display contentType when one exists.

0.17.3 (09/11/2016)

Features:

  • When visible assertions such as should('be.visible') fail we now print the reason Cypress thought the element was invisible. Matches what Cypress prints out when attempting to interact with invisible elements. Fixes #221.

Bugfixes:

  • Prevent Host header from having its port appended when request was for port 80 or 443 which lead to 3rd party reverse proxy problems such as with zeit.co hosting. Fixes #222.
  • Send valid http response errors, and display new lines correctly. Fixes #218.
  • Correctly inject on 5xx http response codes. Fixes #217.
  • Correctly inject on 4xx and other bad http response codes when using Cypress as the file server. Fixes #219.
  • Correctly inject on gzip errors from 3rd party servers doing dumb things. Fixes #220.

0.17.2 (09/06/2016)

Notes:

  • After this update if you are seeing <iframe> origin errors please let us know by opening an issue. We will screen-share with you to diagnose the issue. We're no longer aware of any situation where this should happen, so if you're experiencing these bugs, please help us track them down.

Features:

  • Attempting to cy.visit a non text/html resource will now throw a specific error message instead of bombing on page injection with an <iframe> origin error. You have to visit actual html, you cannot visit something like a .json or .png. If you're wanting to visit an API route on your backend that does something like set cookies (thus avoiding loading your UI) you can just use cy.request for this since it will now automatically get and set cookies under the hood. Fixes #211.

Bugfixes:

  • Fixed a regression in 0.17.1 that was incorrectly setting Cache headers. This could cause a situation where you received an <iframe> origin error. Additionally we now set No-Cache headers whenever we inject content, but otherwise respect the headers coming from web servers. When using Cypress as the file server, we set etags but prevent caching.
  • Most likely fixed a bug that was crashing Cypress due to Cannot set headers after they've been sent. We were unable to write a test for this since we could not recreate the error, but analyzed how it may happen and fixed the code there. Open an issue if you see this error, it will be obvious since Cypress will literally crash.
  • We stopped minifying vendor.js (for real this time). More optimizations to come around this.
  • Prevented accidentally setting domain cookies when they were really hostOnly cookies, thus duplicating the number of cookies sent on requests. Kudos to @bahmutov for finding this one. Fixes #207.
  • Fixed some edge cases in cypress-core-extension where it threw errors when attempting to executeScript on a tab with about:blank or chrome:// urls.
  • We've fixed some underlying issues with cy.go while running headlessly. It always worked fine in real Chrome. Previously there were some situations where it would not navigate forward / back correctly.

Misc:

0.17.1 (08/31/2016)

Features:

  • You can now pass keyboard modifiers such as ctrl, cmd, shift, and alt to cy.type. In addition we've added support for not "releasing" these keys so they can affect other actions such as cy.click. Addresses #196.
  • You can now type into the <body> or document as opposed to previously having to target a valid focusable element. This is useful in situations where you're testing keyboard shortcuts and do not want to target a specific element. Addresses #150.
  • There is a new command cy.readFile that reads files on your file system and changes the subject to the contents. Addresses #179.
  • There is a new command cy.writeFile that creates and/or writes contents to files on your file system. Addresses #179.

Bugfixes:

  • defaultCommandTimeout now works correctly. The driver was still referencing the old commandTimeout value.
  • The __cypress.initial cookie should now be removed during any cy.visit, which should fix some edge cases with the proxy accidentally injecting content when it shouldn't. We also added a ton more e2e tests covering these edge cases and other behavior.
  • The proxy now restricts it's injection to only Content-Type: text/html headers so it will not accidentally inject into the wrong responses.

Misc:

  • All cy.fixture extensions are now supported and Cypress will no longer throw on extensions it doesn't recognize. For known fixture extensions we'll continue to apply a default encoding and for everything else it will default to utf8. Fixes #200.
  • cy.fixture now accepts encoding as a 2nd optional argument.
  • We now display a keyboard 'modifiers' column when clicking on a cy.type in the Command Log.

0.17.0 (08/30/2016)

Overview:

  • The desktop application has been completely redesigned. We have moved from a tray application to a standard dock application. The list of projects is now in the same window as the list of tests in a project. As each test runs, the application highlights the currently running spec and displays the browser version running. The configuration of a project is now displayed in it's own tab. There is now a Desktop Menu where you can logout, check for updates, or view help links.
  • The test runner has been rebuilt from the ground up in React.js. The left side of the runner called the reporter is now a separate application. This, as well as other changes, markedly improved the performance of running tests. Your tests will now run faster. This will also enable you to test your application in full screen. Additionally this paves the way for being able to spawn multiple browsers at once and synchronize testing across them. This also means we'll be able to support mobile browsers. The UI for doing this hasn't been implemented but the vast majority of the work to accomplish this is done now.
  • We have rewritten the entire proxy layer of the Cypress server to finally fix all the problems with CORS.

Breaking Changes:

  • You cannot cy.visit two different super domains within a single test. Example: cy.visit("https://google.com").visit("https://apple.com"). There shouldn't be any reason you ever need to do this in a single test, if you do, you should make these two separate tests.

Features:

  • All CORS related issues should finally be fixed now. Cypress now internally switches to the domain that you used in your cy.visit. This means that the correct domain will display in the URL based on the application currently under test. Your application's code will run under the current domain at all times. Previously we implemented an endless amount of hacks and internal translations to figure out the domain you were supposed to be on without actually being on the domain. This caused code to behave different and caused subtle issues. Those issues should now be resolved. The entire proxy layer has been rewritten to handle all https certificates flawlessly, continue to inject (even on https pages), and still know when to automatically bypass injection so you can open other tabs while testing in Cypress. These new proxy changes also unlock the ability to do things like whitelisting or blacklisting specific 3rd party domains, or even be able to stub not just XHR's but any kind of HTTP request.
  • window.fetch now works correctly. Stubbing these does not yet work but it is now possible for us to implement stubbing in a future version. Addresses #95.
  • The list of tests now automatically refresh when test files are renamed, deleted, or added. In addition, because the list of tests is now displayed in the desktop application, we now synchronize the state of the current running spec.
  • cy.visit has better error messages. Cypress now programmatically determines why a cy.visit failed and gives you a ridiculously accurate error message. Addresses #138.
  • cy.visit now displays redirects and any cookies set.
  • The currently running test is now scrolled into view. This behavior can be turned off by scrolling in the command log or selecting to disable auto-scroll at the top of the command log. Addresses #194
  • Tests in the Command Log now automatically expand when specific commands take longer than 1000ms to run. Previously when running more than 1 test we did not expand commands until a test failed. Now they will be expanded and automatically collapsed whenever a single command is taking a long time to finish.
  • We now have full blown subdomain support. This means you can now navigate to a subdomain either directly via a cy.visit or by navigating in your application naturally (such as clicking an <a>).
  • cy.request now attaches and sets cookies transparently on the browser. Even though the browser will not physically make the request, we automatically apply outgoing cookies as if the browser had made the request. Additionally we will automatically set cookies on the browser based on the response. This means you can use cy.request to bypass not just CORS but handle things like automatically logging in without having to manually perform these actions in the UI.
  • We now handle HTTP request errors much better. Previously if your web server sent us back a 4xx or 5xx response we would automatically send back a 500. Now we transparently pass these through.
  • Improved dozens of error messages.
  • cy.debug output has been improved, and you can now easily inspect the current command's subject.
  • Clicking the URL in the header of the runner now opens that URL in a new tab.

Bugfixes:

  • Fixed URL proxy issue with subdomains. Fixes #183.
  • Viewport size maximum has been decreased from 3001px to 3000px and minimum has been increased from 199px to 200px to match error messages. Fixes #189
  • Websockets are now correctly proxied through https and through subdomains different than the current domain under test.
  • Stopped cy.debug from accidentally mutating subjects.
  • Cypress now correctly injects and handles pages which are missing a <head>, a <body>, or even an <html> tag. Previously it would bomb on pages missing these tags.
  • All commands with a long message (such as assertions) are automatically scaled down in font size and truncated properly. In addition, assertions will correctly bold the expected and actual values.

Misc:

  • cypress run no longer requires being logged in.
  • Renamed configuration option commandTimeout to defaultCommandTimeout. Cypress will transparently rewrite this if you have it in your cypress.json, so you don't have to do anything.
  • Renamed onConsole and onRender Command Log options to consoleProps and renderProps. We still support the older property names for backwards compatibility.
  • Added support for a command's message or renderProps.message to use markdown.
  • The default value of port within a project's global configuration has changed from 2020 to now being a random open port. You can still configure a specific port if needed within the configuration.
  • We have upgraded the Chromium that runs headlessly on cypress run to version 51.
  • The internal version of node which is built into Cypress is now 6.1.0.
  • Cypress .js files are no longer minified to make them easier to debug.
  • We are cleaning up internal __cypress cookies more so they won't get in the way of testing your application.
  • We now opt into gzip handling instead of forcing requests to omit it.
  • The runner is now responsive. It will correctly scale down URLs on smaller screen sizes instead of looking completely broken in CSS. We also designed a much better loading indicator.
  • Added button to the reporter that focuses the Desktop GUI and shows the list of tests.
  • The reporter now updates the duration every 100ms instead of only when a test changes.
  • In the reporter, suites that are pending or contain only pending tests have the blue "pending" indicator on the left instead of the white "processing" indicator.

0.16

0.16 Changelog

0.15

0.15 Changelog

0.14

0.14 Changelog

0.13

0.13 Changelog

0.12

0.12 Changelog

0.11

0.11 Changelog

0.10

0.10 Changelog

0.09

0.09 Changelog

0.08

0.08 Changelog

0.07

0.07 Changelog

0.06

0.06 Changelog

0.05

0.05 Changelog

0.04

0.04 Changelog

0.03

0.03 Changelog