cypress 3.1.4 → 3.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cli.js +10 -6
- package/package.json +2 -2
- package/types/index.d.ts +240 -88
    
        package/lib/cli.js
    CHANGED
    
    | @@ -26,8 +26,7 @@ function unknownOption(flag) { | |
| 26 26 | 
             
              logger.error('  error: unknown ' + type + ':', flag);
         | 
| 27 27 | 
             
              logger.error();
         | 
| 28 28 | 
             
              this.outputHelp();
         | 
| 29 | 
            -
               | 
| 30 | 
            -
              process.exit(1);
         | 
| 29 | 
            +
              util.exit(1);
         | 
| 31 30 | 
             
            }
         | 
| 32 31 | 
             
            commander.Command.prototype.unknownOption = unknownOption;
         | 
| 33 32 |  | 
| @@ -65,9 +64,9 @@ var descriptions = { | |
| 65 64 | 
             
              dev: 'runs cypress in development and bypasses binary check',
         | 
| 66 65 | 
             
              forceInstall: 'force install the Cypress binary',
         | 
| 67 66 | 
             
              exit: 'keep the browser open after tests finish',
         | 
| 68 | 
            -
              cachePath: 'print the  | 
| 69 | 
            -
              cacheList: 'list  | 
| 70 | 
            -
              cacheClear: 'delete  | 
| 67 | 
            +
              cachePath: 'print the path to the binary cache',
         | 
| 68 | 
            +
              cacheList: 'list cached binary versions',
         | 
| 69 | 
            +
              cacheClear: 'delete all cached binaries',
         | 
| 71 70 | 
             
              group: 'a named group for recorded runs in the Cypress dashboard',
         | 
| 72 71 | 
             
              parallel: 'enables concurrent runs and automatic load balancing of specs across multiple machines or processes',
         | 
| 73 72 | 
             
              ciBuildId: 'the unique identifier for a run on your CI provider. typically a "BUILD_ID" env var. this value is automatically detected for most CI providers'
         | 
| @@ -140,8 +139,13 @@ module.exports = { | |
| 140 139 | 
             
                });
         | 
| 141 140 |  | 
| 142 141 | 
             
                program.command('cache').usage('[command]').description('Manages the Cypress binary cache').option('list', text('cacheList')).option('path', text('cachePath')).option('clear', text('cacheClear')).action(function (opts) {
         | 
| 142 | 
            +
                  if (!_.isString(opts)) {
         | 
| 143 | 
            +
                    this.outputHelp();
         | 
| 144 | 
            +
                    util.exit(1);
         | 
| 145 | 
            +
                  }
         | 
| 146 | 
            +
             | 
| 143 147 | 
             
                  if (opts.command || !_.includes(['list', 'path', 'clear'], opts)) {
         | 
| 144 | 
            -
                    unknownOption.call(this, 'cache ' + opts, ' | 
| 148 | 
            +
                    unknownOption.call(this, 'cache ' + opts, 'command');
         | 
| 145 149 | 
             
                  }
         | 
| 146 150 |  | 
| 147 151 | 
             
                  cache[opts]();
         | 
    
        package/package.json
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            {
         | 
| 2 2 | 
             
              "name": "cypress",
         | 
| 3 | 
            -
              "version": "3.1. | 
| 3 | 
            +
              "version": "3.1.5",
         | 
| 4 4 | 
             
              "main": "index.js",
         | 
| 5 5 | 
             
              "bin": {
         | 
| 6 6 | 
             
                "cypress": "bin/cypress"
         | 
| @@ -31,7 +31,7 @@ | |
| 31 31 | 
             
                "@types/minimatch": "3.0.3",
         | 
| 32 32 | 
             
                "@types/mocha": "2.2.44",
         | 
| 33 33 | 
             
                "@types/sinon": "7.0.0",
         | 
| 34 | 
            -
                "@types/sinon-chai": "2. | 
| 34 | 
            +
                "@types/sinon-chai": "3.2.2",
         | 
| 35 35 | 
             
                "bluebird": "3.5.0",
         | 
| 36 36 | 
             
                "cachedir": "1.3.0",
         | 
| 37 37 | 
             
                "chalk": "2.4.1",
         | 
    
        package/types/index.d.ts
    CHANGED
    
    | @@ -116,10 +116,12 @@ declare namespace Cypress { | |
| 116 116 | 
             
                 * Cypress version string. i.e. "1.1.2"
         | 
| 117 117 | 
             
                 * @see https://on.cypress.io/version
         | 
| 118 118 | 
             
                 * @example
         | 
| 119 | 
            -
             | 
| 120 | 
            -
             | 
| 121 | 
            -
             | 
| 122 | 
            -
             | 
| 119 | 
            +
                  ```
         | 
| 120 | 
            +
                  expect(Cypress.version).to.be.a('string')
         | 
| 121 | 
            +
                  if (Cypress.version === '1.2.0') {
         | 
| 122 | 
            +
                    // test something specific
         | 
| 123 | 
            +
                  }
         | 
| 124 | 
            +
                  ```
         | 
| 123 125 | 
             
                 */
         | 
| 124 126 | 
             
                version: string
         | 
| 125 127 |  | 
| @@ -143,6 +145,15 @@ declare namespace Cypress { | |
| 143 145 |  | 
| 144 146 | 
             
                /**
         | 
| 145 147 | 
             
                 * Currently executing spec file.
         | 
| 148 | 
            +
                 * @example
         | 
| 149 | 
            +
                ```
         | 
| 150 | 
            +
                Cypress.spec
         | 
| 151 | 
            +
                // {
         | 
| 152 | 
            +
                //  name: "config_passing_spec.coffee",
         | 
| 153 | 
            +
                //  relative: "cypress/integration/config_passing_spec.coffee",
         | 
| 154 | 
            +
                //  absolute: "/users/smith/projects/web/cypress/integration/config_passing_spec.coffee"
         | 
| 155 | 
            +
                // }
         | 
| 156 | 
            +
                ```
         | 
| 146 157 | 
             
                 */
         | 
| 147 158 | 
             
                spec: {
         | 
| 148 159 | 
             
                  name: string // "config_passing_spec.coffee"
         | 
| @@ -156,11 +167,45 @@ declare namespace Cypress { | |
| 156 167 | 
             
                browser: Browser
         | 
| 157 168 |  | 
| 158 169 | 
             
                /**
         | 
| 170 | 
            +
                 * Returns all configuration objects.
         | 
| 159 171 | 
             
                 * @see https://on.cypress.io/config
         | 
| 172 | 
            +
                 * @example
         | 
| 173 | 
            +
                ```
         | 
| 174 | 
            +
                Cypress.config()
         | 
| 175 | 
            +
                // {defaultCommandTimeout: 10000, pageLoadTimeout: 30000, ...}
         | 
| 176 | 
            +
                ```
         | 
| 160 177 | 
             
                 */
         | 
| 161 178 | 
             
                config(): ConfigOptions
         | 
| 179 | 
            +
                /**
         | 
| 180 | 
            +
                 * Returns one configuration value.
         | 
| 181 | 
            +
                 * @see https://on.cypress.io/config
         | 
| 182 | 
            +
                 * @example
         | 
| 183 | 
            +
                ```
         | 
| 184 | 
            +
                Cypress.config('pageLoadTimeout')
         | 
| 185 | 
            +
                // 60000
         | 
| 186 | 
            +
                ```
         | 
| 187 | 
            +
                 */
         | 
| 162 188 | 
             
                config<K extends keyof ConfigOptions>(key: K): ConfigOptions[K]
         | 
| 189 | 
            +
                /**
         | 
| 190 | 
            +
                 * Sets one configuration value.
         | 
| 191 | 
            +
                 * @see https://on.cypress.io/config
         | 
| 192 | 
            +
                 * @example
         | 
| 193 | 
            +
                ```
         | 
| 194 | 
            +
                Cypress.config('viewportWidth', 800)
         | 
| 195 | 
            +
                ```
         | 
| 196 | 
            +
                 */
         | 
| 163 197 | 
             
                config<K extends keyof ConfigOptions>(key: K, value: ConfigOptions[K]): void
         | 
| 198 | 
            +
                /**
         | 
| 199 | 
            +
                 * Sets multiple configuration values at once.
         | 
| 200 | 
            +
                 * @see https://on.cypress.io/config
         | 
| 201 | 
            +
                 * @example
         | 
| 202 | 
            +
                ```
         | 
| 203 | 
            +
                Cypress.config({
         | 
| 204 | 
            +
                  defaultCommandTimeout: 10000,
         | 
| 205 | 
            +
                  viewportHeight: 900
         | 
| 206 | 
            +
                })
         | 
| 207 | 
            +
                ```
         | 
| 208 | 
            +
                 */
         | 
| 164 209 | 
             
                config(Object: Partial<ConfigOptions>): void
         | 
| 165 210 |  | 
| 166 211 | 
             
                // no real way to type without generics
         | 
| @@ -277,16 +322,20 @@ declare namespace Cypress { | |
| 277 322 | 
             
                 * @see https://on.cypress.io/variables-and-aliases
         | 
| 278 323 | 
             
                 * @see https://on.cypress.io/get
         | 
| 279 324 | 
             
                 * @example
         | 
| 280 | 
            -
             | 
| 281 | 
            -
             | 
| 282 | 
            -
             | 
| 283 | 
            -
             | 
| 284 | 
            -
             | 
| 325 | 
            +
                ```
         | 
| 326 | 
            +
                // Get the aliased ‘todos’ elements
         | 
| 327 | 
            +
                cy.get('ul#todos').as('todos')
         | 
| 328 | 
            +
                //...hack hack hack...
         | 
| 329 | 
            +
                // later retrieve the todos
         | 
| 330 | 
            +
                cy.get('@todos')
         | 
| 331 | 
            +
                ```
         | 
| 285 332 | 
             
                 */
         | 
| 286 333 | 
             
                as(alias: string): Chainable<Subject>
         | 
| 287 334 |  | 
| 288 335 | 
             
                /**
         | 
| 289 | 
            -
                 * Blur a focused element. This element must currently be in focus. | 
| 336 | 
            +
                 * Blur a focused element. This element must currently be in focus.
         | 
| 337 | 
            +
                 * If you want to ensure an element is focused before blurring,
         | 
| 338 | 
            +
                 * try using .focus() before .blur().
         | 
| 290 339 | 
             
                 *
         | 
| 291 340 | 
             
                 * @see https://on.cypress.io/blur
         | 
| 292 341 | 
             
                 */
         | 
| @@ -355,19 +404,29 @@ declare namespace Cypress { | |
| 355 404 | 
             
                 * to clear localStorage inside a single test. Yields `localStorage` object.
         | 
| 356 405 | 
             
                 *
         | 
| 357 406 | 
             
                 * @see https://on.cypress.io/clearlocalstorage
         | 
| 358 | 
            -
                 * @ | 
| 359 | 
            -
                 * | 
| 360 | 
            -
             | 
| 361 | 
            -
             | 
| 407 | 
            +
                 * @param {string} [key] - name of a particular item to remove (optional).
         | 
| 408 | 
            +
                 * @example
         | 
| 409 | 
            +
                  ```
         | 
| 410 | 
            +
                  // removes all local storage keys
         | 
| 411 | 
            +
                  cy.clearLocalStorage()
         | 
| 412 | 
            +
                    .should(ls => {
         | 
| 413 | 
            +
                      expect(ls.getItem('prop1')).to.be.null
         | 
| 414 | 
            +
                    })
         | 
| 415 | 
            +
                  // removes item "todos"
         | 
| 416 | 
            +
                  cy.clearLocalStorage("todos")
         | 
| 417 | 
            +
                  ```
         | 
| 362 418 | 
             
                 */
         | 
| 363 419 | 
             
                clearLocalStorage(key?: string): Chainable<Storage>
         | 
| 364 420 | 
             
                /**
         | 
| 365 421 | 
             
                 * Clear keys in local storage that match given regular expression.
         | 
| 366 422 | 
             
                 *
         | 
| 367 423 | 
             
                 * @see https://on.cypress.io/clearlocalstorage
         | 
| 424 | 
            +
                 * @param {RegExp} re - regular expression to match.
         | 
| 368 425 | 
             
                 * @example
         | 
| 369 | 
            -
             | 
| 370 | 
            -
             | 
| 426 | 
            +
                ```
         | 
| 427 | 
            +
                // Clear all local storage matching /app-/
         | 
| 428 | 
            +
                cy.clearLocalStorage(/app-/)
         | 
| 429 | 
            +
                ```
         | 
| 371 430 | 
             
                 */
         | 
| 372 431 | 
             
                clearLocalStorage(re: RegExp): Chainable<Storage>
         | 
| 373 432 |  | 
| @@ -384,7 +443,8 @@ declare namespace Cypress { | |
| 384 443 | 
             
                /**
         | 
| 385 444 | 
             
                 * Click a DOM element at specific corner / side.
         | 
| 386 445 | 
             
                 *
         | 
| 387 | 
            -
                 * @param {String} position The position where the click should be issued. | 
| 446 | 
            +
                 * @param {String} position - The position where the click should be issued.
         | 
| 447 | 
            +
                 * The `center` position is the default position.
         | 
| 388 448 | 
             
                 * @see https://on.cypress.io/click
         | 
| 389 449 | 
             
                 * @example
         | 
| 390 450 | 
             
                 *    cy.get('button').click('topRight')
         | 
| @@ -397,9 +457,11 @@ declare namespace Cypress { | |
| 397 457 | 
             
                 * @param {number} y The distance in pixels from the element’s top to issue the click.
         | 
| 398 458 | 
             
                 * @see https://on.cypress.io/click
         | 
| 399 459 | 
             
                 * @example
         | 
| 400 | 
            -
             | 
| 401 | 
            -
             | 
| 402 | 
            -
             | 
| 460 | 
            +
                ```
         | 
| 461 | 
            +
                // The click below will be issued inside of the element
         | 
| 462 | 
            +
                // (15px from the left and 40px from the top).
         | 
| 463 | 
            +
                cy.get('button').click(15, 40)
         | 
| 464 | 
            +
                ```
         | 
| 403 465 | 
             
                 */
         | 
| 404 466 | 
             
                click(x: number, y: number, options?: Partial<ClickOptions>): Chainable<Subject>
         | 
| 405 467 |  | 
| @@ -623,9 +685,11 @@ declare namespace Cypress { | |
| 623 685 | 
             
                fixture<Contents = any>(path: string, encoding: Encodings, options?: Partial<Timeoutable>): Chainable<Contents> // no log?
         | 
| 624 686 |  | 
| 625 687 | 
             
                /**
         | 
| 626 | 
            -
                 *  | 
| 688 | 
            +
                 * Focus on a DOM element.
         | 
| 627 689 | 
             
                 *
         | 
| 628 690 | 
             
                 * @see https://on.cypress.io/focus
         | 
| 691 | 
            +
                 * @example
         | 
| 692 | 
            +
                 * cy.get('input').first().focus() // Focus on the first input
         | 
| 629 693 | 
             
                 */
         | 
| 630 694 | 
             
                focus(options?: Partial<Loggable & Timeoutable>): Chainable<Subject>
         | 
| 631 695 |  | 
| @@ -1327,19 +1391,37 @@ declare namespace Cypress { | |
| 1327 1391 | 
             
                 *
         | 
| 1328 1392 | 
             
                 * @see https://on.cypress.io/then
         | 
| 1329 1393 | 
             
                 */
         | 
| 1330 | 
            -
                then<S>(fn: (this: ObjectLike, currentSubject: Subject) => Chainable<S | 
| 1394 | 
            +
                then<S>(fn: (this: ObjectLike, currentSubject: Subject) => Chainable<S>): Chainable<S>
         | 
| 1395 | 
            +
                /**
         | 
| 1396 | 
            +
                 * Enables you to work with the subject yielded from the previous command.
         | 
| 1397 | 
            +
                 *
         | 
| 1398 | 
            +
                 * @see https://on.cypress.io/then
         | 
| 1399 | 
            +
                 */
         | 
| 1400 | 
            +
                then<S>(options: Partial<Timeoutable>, fn: (this: ObjectLike, currentSubject: Subject) => Chainable<S>): Chainable<S>
         | 
| 1331 1401 | 
             
                /**
         | 
| 1332 1402 | 
             
                 * Enables you to work with the subject yielded from the previous command / promise.
         | 
| 1333 1403 | 
             
                 *
         | 
| 1334 1404 | 
             
                 * @see https://on.cypress.io/then
         | 
| 1335 1405 | 
             
                 */
         | 
| 1336 | 
            -
                then<S>(fn: (this: ObjectLike, currentSubject: Subject) => PromiseLike<S | 
| 1406 | 
            +
                then<S>(fn: (this: ObjectLike, currentSubject: Subject) => PromiseLike<S>): Chainable<S>
         | 
| 1337 1407 | 
             
                /**
         | 
| 1338 1408 | 
             
                 * Enables you to work with the subject yielded from the previous command / promise.
         | 
| 1339 1409 | 
             
                 *
         | 
| 1340 1410 | 
             
                 * @see https://on.cypress.io/then
         | 
| 1341 1411 | 
             
                 */
         | 
| 1342 | 
            -
                then<S  | 
| 1412 | 
            +
                then<S>(options: Partial<Timeoutable>, fn: (this: ObjectLike, currentSubject: Subject) => PromiseLike<S>): Chainable<S>
         | 
| 1413 | 
            +
                /**
         | 
| 1414 | 
            +
                 * Enables you to work with the subject yielded from the previous command / promise.
         | 
| 1415 | 
            +
                 *
         | 
| 1416 | 
            +
                 * @see https://on.cypress.io/then
         | 
| 1417 | 
            +
                 */
         | 
| 1418 | 
            +
                then<S extends object | any[] | string | number | boolean>(fn: (this: ObjectLike, currentSubject: Subject) => S): Chainable<S>
         | 
| 1419 | 
            +
                /**
         | 
| 1420 | 
            +
                 * Enables you to work with the subject yielded from the previous command / promise.
         | 
| 1421 | 
            +
                 *
         | 
| 1422 | 
            +
                 * @see https://on.cypress.io/then
         | 
| 1423 | 
            +
                 */
         | 
| 1424 | 
            +
                then<S extends object | any[] | string | number | boolean>(options: Partial<Timeoutable>, fn: (this: ObjectLike, currentSubject: Subject) => S): Chainable<S>
         | 
| 1343 1425 | 
             
                /**
         | 
| 1344 1426 | 
             
                 * Enables you to work with the subject yielded from the previous command.
         | 
| 1345 1427 | 
             
                 *
         | 
| @@ -1348,7 +1430,16 @@ declare namespace Cypress { | |
| 1348 1430 | 
             
                 *    cy.get('.nav').then(($nav) => {})  // Yields .nav as first arg
         | 
| 1349 1431 | 
             
                 *    cy.location().then((loc) => {})   // Yields location object as first arg
         | 
| 1350 1432 | 
             
                 */
         | 
| 1351 | 
            -
                then(fn: (this: ObjectLike, currentSubject: Subject) => void | 
| 1433 | 
            +
                then(fn: (this: ObjectLike, currentSubject: Subject) => void): Chainable<Subject>
         | 
| 1434 | 
            +
                /**
         | 
| 1435 | 
            +
                 * Enables you to work with the subject yielded from the previous command.
         | 
| 1436 | 
            +
                 *
         | 
| 1437 | 
            +
                 * @see https://on.cypress.io/then
         | 
| 1438 | 
            +
                 * @example
         | 
| 1439 | 
            +
                 *    cy.get('.nav').then(($nav) => {})  // Yields .nav as first arg
         | 
| 1440 | 
            +
                 *    cy.location().then((loc) => {})   // Yields location object as first arg
         | 
| 1441 | 
            +
                 */
         | 
| 1442 | 
            +
                then(options: Partial<Timeoutable>, fn: (this: ObjectLike, currentSubject: Subject) => void): Chainable<Subject>
         | 
| 1352 1443 |  | 
| 1353 1444 | 
             
                /**
         | 
| 1354 1445 | 
             
                 * Move time after overriding a native time function with [cy.clock()](https://on.cypress.io/clock).
         | 
| @@ -1502,9 +1593,12 @@ declare namespace Cypress { | |
| 1502 1593 | 
             
                visit(url: string, options?: Partial<VisitOptions>): Chainable<Window>
         | 
| 1503 1594 |  | 
| 1504 1595 | 
             
                /**
         | 
| 1505 | 
            -
                 * Wait for a number of milliseconds | 
| 1596 | 
            +
                 * Wait for a number of milliseconds.
         | 
| 1597 | 
            +
                 * You almost never need to wait for an arbitrary period of time.
         | 
| 1598 | 
            +
                 * There are always better ways to express this in Cypress, see the documentation.
         | 
| 1506 1599 | 
             
                 *
         | 
| 1507 1600 | 
             
                 * @see https://on.cypress.io/wait
         | 
| 1601 | 
            +
                 * @param {number} ms - Milliseconds to wait.
         | 
| 1508 1602 | 
             
                 * @example
         | 
| 1509 1603 | 
             
                 *    cy.wait(1000) // wait for 1 second
         | 
| 1510 1604 | 
             
                 */
         | 
| @@ -1513,12 +1607,44 @@ declare namespace Cypress { | |
| 1513 1607 | 
             
                 * Wait for a specific XHR to respond.
         | 
| 1514 1608 | 
             
                 *
         | 
| 1515 1609 | 
             
                 * @see https://on.cypress.io/wait
         | 
| 1610 | 
            +
                 * @param {string} alias - Name of the alias to wait for.
         | 
| 1611 | 
            +
                 *
         | 
| 1612 | 
            +
                ```
         | 
| 1613 | 
            +
                // Wait for the route aliased as 'getAccount' to respond
         | 
| 1614 | 
            +
                // without changing or stubbing its response
         | 
| 1615 | 
            +
                cy.server()
         | 
| 1616 | 
            +
                cy.route('/accounts/*').as('getAccount')
         | 
| 1617 | 
            +
                cy.visit('/accounts/123')
         | 
| 1618 | 
            +
                cy.wait('@getAccount').then((xhr) => {
         | 
| 1619 | 
            +
                  // we can now access the low level xhr
         | 
| 1620 | 
            +
                  // that contains the request body,
         | 
| 1621 | 
            +
                  // response body, status, etc
         | 
| 1622 | 
            +
                })
         | 
| 1623 | 
            +
                ```
         | 
| 1516 1624 | 
             
                 */
         | 
| 1517 1625 | 
             
                wait(alias: string, options?: Partial<Loggable & Timeoutable & TimeoutableXHR>): Chainable<WaitXHR>
         | 
| 1518 1626 | 
             
                /**
         | 
| 1519 1627 | 
             
                 * Wait for list of XHR requests to complete.
         | 
| 1520 1628 | 
             
                 *
         | 
| 1521 1629 | 
             
                 * @see https://on.cypress.io/wait
         | 
| 1630 | 
            +
                 * @param {string[]} aliases - An array of aliased routes as defined using the `.as()` command.
         | 
| 1631 | 
            +
                 *
         | 
| 1632 | 
            +
                ```
         | 
| 1633 | 
            +
                // wait for 3 XHR requests to complete
         | 
| 1634 | 
            +
                cy.server()
         | 
| 1635 | 
            +
                cy.route('users/*').as('getUsers')
         | 
| 1636 | 
            +
                cy.route('activities/*').as('getActivities')
         | 
| 1637 | 
            +
                cy.route('comments/*').as('getComments')
         | 
| 1638 | 
            +
                cy.visit('/dashboard')
         | 
| 1639 | 
            +
             | 
| 1640 | 
            +
                cy.wait(['@getUsers', '@getActivities', '@getComments'])
         | 
| 1641 | 
            +
                  .then((xhrs) => {
         | 
| 1642 | 
            +
                    // xhrs will now be an array of matching XHR's
         | 
| 1643 | 
            +
                    // xhrs[0] <-- getUsers
         | 
| 1644 | 
            +
                    // xhrs[1] <-- getActivities
         | 
| 1645 | 
            +
                    // xhrs[2] <-- getComments
         | 
| 1646 | 
            +
                  })
         | 
| 1647 | 
            +
                ```
         | 
| 1522 1648 | 
             
                 */
         | 
| 1523 1649 | 
             
                wait(alias: string[], options?: Partial<Loggable & Timeoutable & TimeoutableXHR>): Chainable<WaitXHR[]>
         | 
| 1524 1650 |  | 
| @@ -1527,11 +1653,13 @@ declare namespace Cypress { | |
| 1527 1653 | 
             
                 *
         | 
| 1528 1654 | 
             
                 * @see https://on.cypress.io/window
         | 
| 1529 1655 | 
             
                 * @example
         | 
| 1530 | 
            -
             | 
| 1531 | 
            -
             | 
| 1532 | 
            -
             | 
| 1533 | 
            -
             | 
| 1534 | 
            -
             | 
| 1656 | 
            +
                ```
         | 
| 1657 | 
            +
                cy.visit('http://localhost:8080/app')
         | 
| 1658 | 
            +
                cy.window().then(function(win){
         | 
| 1659 | 
            +
                  // win is the remote window
         | 
| 1660 | 
            +
                  // of the page at: http://localhost:8080/app
         | 
| 1661 | 
            +
                })
         | 
| 1662 | 
            +
                ```
         | 
| 1535 1663 | 
             
                 */
         | 
| 1536 1664 | 
             
                window(options?: Partial<Loggable & Timeoutable>): Chainable<Window>
         | 
| 1537 1665 |  | 
| @@ -1540,14 +1668,15 @@ declare namespace Cypress { | |
| 1540 1668 | 
             
                 * Useful when working within a particular group of elements such as a `<form>`.
         | 
| 1541 1669 | 
             
                 * @see https://on.cypress.io/within
         | 
| 1542 1670 | 
             
                 * @example
         | 
| 1543 | 
            -
             | 
| 1544 | 
            -
             | 
| 1545 | 
            -
             | 
| 1546 | 
            -
             | 
| 1547 | 
            -
             | 
| 1548 | 
            -
             | 
| 1549 | 
            -
             | 
| 1550 | 
            -
             | 
| 1671 | 
            +
                ```
         | 
| 1672 | 
            +
                cy.get('form').within(($form) => {
         | 
| 1673 | 
            +
                  // cy.get() will only search for elements within form,
         | 
| 1674 | 
            +
                  // not within the entire document
         | 
| 1675 | 
            +
                  cy.get('input[name="username"]').type('john')
         | 
| 1676 | 
            +
                  cy.get('input[name="password"]').type('password')
         | 
| 1677 | 
            +
                  cy.root().submit()
         | 
| 1678 | 
            +
                })
         | 
| 1679 | 
            +
                ```
         | 
| 1551 1680 | 
             
                 */
         | 
| 1552 1681 | 
             
                within(fn: (currentSubject: Subject) => void): Chainable<Subject>
         | 
| 1553 1682 | 
             
                /**
         | 
| @@ -1562,10 +1691,13 @@ declare namespace Cypress { | |
| 1562 1691 | 
             
                 *
         | 
| 1563 1692 | 
             
                 * @see https://on.cypress.io/wrap
         | 
| 1564 1693 | 
             
                 * @example
         | 
| 1565 | 
            -
             | 
| 1566 | 
            -
             | 
| 1567 | 
            -
             | 
| 1568 | 
            -
             | 
| 1694 | 
            +
                ```
         | 
| 1695 | 
            +
                // wraps DOM element
         | 
| 1696 | 
            +
                cy.get('form').within(($form) => {
         | 
| 1697 | 
            +
                  // more commands
         | 
| 1698 | 
            +
                  cy.wrap($form).should('have.class', 'form-container')
         | 
| 1699 | 
            +
                })
         | 
| 1700 | 
            +
                ```
         | 
| 1569 1701 | 
             
                 */
         | 
| 1570 1702 | 
             
                wrap<E extends Node = HTMLElement>(element: E | JQuery<E>, options?: Partial<Loggable & Timeoutable>): Chainable<JQuery<E>>
         | 
| 1571 1703 | 
             
                /**
         | 
| @@ -1573,9 +1705,11 @@ declare namespace Cypress { | |
| 1573 1705 | 
             
                 *
         | 
| 1574 1706 | 
             
                 * @see https://on.cypress.io/wrap
         | 
| 1575 1707 | 
             
                 * @example
         | 
| 1576 | 
            -
             | 
| 1577 | 
            -
             | 
| 1578 | 
            -
             | 
| 1708 | 
            +
                ```
         | 
| 1709 | 
            +
                cy.wrap(new Promise((resolve, reject) => {
         | 
| 1710 | 
            +
                  setTimeout(resolve, 1000);
         | 
| 1711 | 
            +
                }).then(result => {})
         | 
| 1712 | 
            +
                ```
         | 
| 1579 1713 | 
             
                 */
         | 
| 1580 1714 | 
             
                wrap<F extends Promise<S>, S>(promise: F, options?: Partial<Loggable & Timeoutable>): Chainable<S>
         | 
| 1581 1715 | 
             
                /**
         | 
| @@ -1583,10 +1717,12 @@ declare namespace Cypress { | |
| 1583 1717 | 
             
                 *
         | 
| 1584 1718 | 
             
                 * @see https://on.cypress.io/wrap
         | 
| 1585 1719 | 
             
                 * @example
         | 
| 1586 | 
            -
             | 
| 1587 | 
            -
             | 
| 1588 | 
            -
             | 
| 1589 | 
            -
             | 
| 1720 | 
            +
                ```
         | 
| 1721 | 
            +
                // Make assertions about object
         | 
| 1722 | 
            +
                cy.wrap({ amount: 10 })
         | 
| 1723 | 
            +
                  .should('have.property', 'amount')
         | 
| 1724 | 
            +
                  .and('eq', 10)
         | 
| 1725 | 
            +
                ```
         | 
| 1590 1726 | 
             
                 */
         | 
| 1591 1727 | 
             
                wrap<S>(object: S, options?: Partial<Loggable & Timeoutable>): Chainable<S>
         | 
| 1592 1728 |  | 
| @@ -1594,6 +1730,12 @@ declare namespace Cypress { | |
| 1594 1730 | 
             
                 * Write to a file with the specified contents.
         | 
| 1595 1731 | 
             
                 *
         | 
| 1596 1732 | 
             
                 * @see https://on.cypress.io/writefile
         | 
| 1733 | 
            +
                ```
         | 
| 1734 | 
            +
                cy.writeFile('path/to/message.txt', 'Hello World')
         | 
| 1735 | 
            +
                  .then((text) => {
         | 
| 1736 | 
            +
                    expect(text).to.equal('Hello World') // true
         | 
| 1737 | 
            +
                  })
         | 
| 1738 | 
            +
                ```
         | 
| 1597 1739 | 
             
                 */
         | 
| 1598 1740 | 
             
                writeFile<C extends FileContents>(filePath: string, contents: C, options?: Partial<Loggable>): Chainable<C>
         | 
| 1599 1741 | 
             
                /**
         | 
| @@ -3674,26 +3816,28 @@ declare namespace Cypress { | |
| 3674 3816 | 
             
                 * Fires when an uncaught exception occurs in your application.
         | 
| 3675 3817 | 
             
                 * Cypress will fail the test when this fires.
         | 
| 3676 3818 | 
             
                 * Return `false` from this event and Cypress will not fail the test. Also useful for debugging purposes because the actual `error` instance is provided to you.
         | 
| 3677 | 
            -
                 * @example
         | 
| 3678 | 
            -
                 * // likely want to do this in a support file
         | 
| 3679 | 
            -
                 * // so it's applied to all spec files
         | 
| 3680 | 
            -
                 * // cypress/support/index.js
         | 
| 3681 | 
            -
                 *
         | 
| 3682 | 
            -
                 * Cypress.on('uncaught:exception', (err, runnable) => {
         | 
| 3683 | 
            -
                 *   // returning false here prevents Cypress from
         | 
| 3684 | 
            -
                 *   // failing the test
         | 
| 3685 | 
            -
                 *   return false
         | 
| 3686 | 
            -
                 * })
         | 
| 3687 | 
            -
                 * // stub "window.alert" in a single test
         | 
| 3688 | 
            -
                 * it('shows alert', () => {
         | 
| 3689 | 
            -
                 *    const stub = cy.stub()
         | 
| 3690 | 
            -
                 *    cy.on('window:alert', stub)
         | 
| 3691 | 
            -
                 *    // trigger application code that calls alert(...)
         | 
| 3692 | 
            -
                 *    .then(() => {
         | 
| 3693 | 
            -
                 *      expect(stub).to.have.been.calledOnce
         | 
| 3694 | 
            -
                 *    })
         | 
| 3695 | 
            -
                 * })
         | 
| 3696 3819 | 
             
                 * @see https://on.cypress.io/catalog-of-events#App-Events
         | 
| 3820 | 
            +
                 * @example
         | 
| 3821 | 
            +
                ```
         | 
| 3822 | 
            +
                  // likely want to do this in a support file
         | 
| 3823 | 
            +
                  // so it's applied to all spec files
         | 
| 3824 | 
            +
                  // cypress/support/index.js
         | 
| 3825 | 
            +
             | 
| 3826 | 
            +
                  Cypress.on('uncaught:exception', (err, runnable) => {
         | 
| 3827 | 
            +
                    // returning false here prevents Cypress from
         | 
| 3828 | 
            +
                    // failing the test
         | 
| 3829 | 
            +
                    return false
         | 
| 3830 | 
            +
                  })
         | 
| 3831 | 
            +
                  // stub "window.alert" in a single test
         | 
| 3832 | 
            +
                  it('shows alert', () => {
         | 
| 3833 | 
            +
                    const stub = cy.stub()
         | 
| 3834 | 
            +
                    cy.on('window:alert', stub)
         | 
| 3835 | 
            +
                    // trigger application code that calls alert(...)
         | 
| 3836 | 
            +
                    .then(() => {
         | 
| 3837 | 
            +
                      expect(stub).to.have.been.calledOnce
         | 
| 3838 | 
            +
                    })
         | 
| 3839 | 
            +
                  })
         | 
| 3840 | 
            +
                ```
         | 
| 3697 3841 | 
             
                 */
         | 
| 3698 3842 | 
             
                (action: 'uncaught:exception', fn: (error: Error, runnable: Mocha.IRunnable) => false | void): void
         | 
| 3699 3843 | 
             
                /**
         | 
| @@ -3701,23 +3845,28 @@ declare namespace Cypress { | |
| 3701 3845 | 
             
                 * Cypress will auto accept confirmations. Return `false` from this event and the confirmation will be cancelled.
         | 
| 3702 3846 | 
             
                 * @see https://on.cypress.io/catalog-of-events#App-Events
         | 
| 3703 3847 | 
             
                 * @example
         | 
| 3704 | 
            -
             | 
| 3705 | 
            -
             | 
| 3706 | 
            -
             | 
| 3707 | 
            -
             | 
| 3848 | 
            +
                ```
         | 
| 3849 | 
            +
                cy.on('window:confirm', (str) => {
         | 
| 3850 | 
            +
                  console.log(str)
         | 
| 3851 | 
            +
                  return false // simulate "Cancel"
         | 
| 3852 | 
            +
                })
         | 
| 3853 | 
            +
                ```
         | 
| 3708 3854 | 
             
                 */
         | 
| 3709 3855 | 
             
                (action: 'window:confirm', fn: ((text: string) => false | void) | Agent<sinon.SinonSpy>): void
         | 
| 3710 3856 | 
             
                /**
         | 
| 3711 3857 | 
             
                 * Fires when your app calls the global `window.alert()` method.
         | 
| 3712 3858 | 
             
                 * Cypress will auto accept alerts. You cannot change this behavior.
         | 
| 3713 3859 | 
             
                 * @example
         | 
| 3714 | 
            -
             | 
| 3715 | 
            -
             | 
| 3716 | 
            -
             | 
| 3717 | 
            -
             | 
| 3718 | 
            -
             | 
| 3719 | 
            -
             | 
| 3720 | 
            -
             | 
| 3860 | 
            +
                ```
         | 
| 3861 | 
            +
                const stub = cy.stub()
         | 
| 3862 | 
            +
                cy.on('window:alert', stub)
         | 
| 3863 | 
            +
                // assume the button calls window.alert()
         | 
| 3864 | 
            +
                cy.get('.my-button')
         | 
| 3865 | 
            +
                  .click()
         | 
| 3866 | 
            +
                  .then(() => {
         | 
| 3867 | 
            +
                    expect(stub).to.have.been.calledOnce
         | 
| 3868 | 
            +
                  })
         | 
| 3869 | 
            +
                ```
         | 
| 3721 3870 | 
             
                 * @see https://on.cypress.io/catalog-of-events#App-Events
         | 
| 3722 3871 | 
             
                 */
         | 
| 3723 3872 | 
             
                (action: 'window:alert', fn: ((text: string) => void) | Agent<sinon.SinonSpy>): void
         | 
| @@ -3931,26 +4080,29 @@ declare namespace Cypress { | |
| 3931 4080 | 
             
                left: number
         | 
| 3932 4081 | 
             
              }
         | 
| 3933 4082 |  | 
| 3934 | 
            -
              // Diff  | 
| 4083 | 
            +
              // Diff taken from https://github.com/Microsoft/TypeScript/issues/12215#issuecomment-311923766
         | 
| 3935 4084 | 
             
              type Diff<T extends string, U extends string> = ({[P in T]: P } & {[P in U]: never } & { [x: string]: never })[T]
         | 
| 3936 | 
            -
               | 
| 3937 | 
            -
              type Omit<T, K extends keyof T> = Pick<T, Diff<keyof T, K>> // tslint:disable-line
         | 
| 4085 | 
            +
              type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>
         | 
| 3938 4086 | 
             
            }
         | 
| 3939 4087 |  | 
| 3940 4088 | 
             
            /**
         | 
| 3941 4089 | 
             
             * Global variables `cy` added by Cypress with all API commands.
         | 
| 3942 4090 | 
             
             * @see https://on.cypress.io/api
         | 
| 3943 4091 | 
             
             * @example
         | 
| 3944 | 
            -
             | 
| 3945 | 
            -
             | 
| 4092 | 
            +
            ```
         | 
| 4093 | 
            +
            cy.get('button').click()
         | 
| 4094 | 
            +
            cy.get('.result').contains('Expected text')
         | 
| 4095 | 
            +
            ```
         | 
| 3946 4096 | 
             
             */
         | 
| 3947 4097 | 
             
            declare const cy: Cypress.Chainable<undefined>
         | 
| 3948 4098 | 
             
            /**
         | 
| 3949 4099 | 
             
             * Global variable `Cypress` holds common utilities and constants.
         | 
| 3950 4100 | 
             
             * @see https://on.cypress.io/api
         | 
| 3951 4101 | 
             
             * @example
         | 
| 3952 | 
            -
             | 
| 3953 | 
            -
             | 
| 3954 | 
            -
             | 
| 4102 | 
            +
            ```
         | 
| 4103 | 
            +
            Cypress.config("pageLoadTimeout") // => 60000
         | 
| 4104 | 
            +
            Cypress.version // => "1.4.0"
         | 
| 4105 | 
            +
            Cypress._ // => Lodash _
         | 
| 4106 | 
            +
            ```
         | 
| 3955 4107 | 
             
             */
         | 
| 3956 4108 | 
             
            declare const Cypress: Cypress.Cypress
         |