---
title: "0.17.0"
url: "https://www.cypress.io/releases/0-17-0"
description: "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…"
---

# 0.17.0

ReleasedReleased on August 29, 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 its own tab. There is now a Desktop Menu where you can logout, check for updates, or view help links.
    
-   The test [runner](https://github.com/cypress-io/cypress/tree/develop/packages/runner) has been rebuilt from the ground up in [React.js](https://reactjs.org/). The left side of the runner called the [reporter](https://github.com/cypress-io/cypress/tree/develop/packages/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()`](/api/commands/visit) two different super domains within a single test. Example: `cy.visit('https://cypress.io').visit('https://anotherwebsite.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()`](/api/commands/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 allowing or blocking 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](https://github.com/cypress-io/cypress/issues/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()`](/api/commands/visit) has better error messages. Cypress now programmatically determines why a [`cy.visit()`](/api/commands/visit) failed and gives you a ridiculously accurate error message. Addresses [#138](https://github.com/cypress-io/cypress/issues/138).
    
-   [`cy.visit()`](/api/commands/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](https://github.com/cypress-io/cypress/issues/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()`](/api/commands/visit) or by navigating in your application naturally (such as clicking an `<a>`).
    
-   [`cy.request()`](/api/commands/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()`](/api/commands/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.
    
-   [`.debug()`](/api/commands/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](https://github.com/cypress-io/cypress/issues/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](https://github.com/cypress-io/cypress/issues/189)
    
-   WebSockets are now correctly proxied through HTTPS and through subdomains different than the current domain under test.
    
-   Stopped [`.debug()`](/api/commands/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](/app/references/command-line#cypress-run) no longer requires being logged in.
    
-   Renamed configuration option `commandTimeout` to [`defaultCommandTimeout`](/app/references/configuration). 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](/app/references/configuration) has changed from `2020` to now being a random open port. You can still configure a specific `port` if needed within the [configuration](/app/references/configuration).
    
-   We have upgraded the `Chromium` that runs headlessly on [cypress run](/app/references/command-line#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 Test Runner 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.