After Run API

The after:run event fires after a run is finished. When running cypress via cypress open, the event will fire when closing a project.

When running via cypress run, the event will fire each time cypress run executes. As a result, if running your specs in parallel, the event will fire once for each machine on which cypress run is called.

Syntax

const { defineConfig } = require('cypress')

module.exports = defineConfig({
  // setupNodeEvents can be defined in either
  // the e2e or component configuration
  e2e: {
    setupNodeEvents(on, config) {
      on('after:run', (results) => {
        /* ... */
      })
    }
  }
})
import { defineConfig } from 'cypress'

export default defineConfig({
  // setupNodeEvents can be defined in either
  // the e2e or component configuration
  e2e: {
    setupNodeEvents(on, config) {
      on('after:run', (results) => {
        /* ... */
      })
    }
  }
})
// cypress/plugins/index.js

module.exports = (on, config) => {
  on('after:run', (results) => {
    /* ... */
  })
}

results (Object)

Results of the run, including the total number of passes/failures/etc, the project config, and details about the browser and system. It is the same as the results object resolved by the Module API.

Results are only provided when running via cypress run. When running via cypress open, the results will be undefined.

Usage

You can return a promise from the after:run event handler and it will be awaited before Cypress proceeds running your specs.

Log the number of passed tests of a run

module.exports = (on, config) => {
  on('after:run', (results) => {
    // results will look something like this when run via `cypress run`:
    // {
    //   totalDuration: 81,
    //   totalSuites: 0,
    //   totalTests: 1,
    //   totalFailed: 0,
    //   totalPassed: 1,
    //   totalPending: 0,
    //   totalSkipped: 0,
    //   browserName: 'electron',
    //   browserVersion: '59.0.3071.115',
    //   osName: 'darwin',
    //   osVersion: '16.7.0',
    //   cypressVersion: '3.1.0',
    //   config: {
    //     projectId: '1qv3w7',
    //     baseUrl: 'http://example.com',
    //     viewportWidth: 1000,
    //     viewportHeight: 660,
    //     // ... more properties...
    //   }
    //   // ... more properties...
    //   }
    // }

    if (results) {
      // results will be undefined in interactive mode
      console.log(results.totalPassed, 'out of', results.totalTests, 'passed')
    }
  })
}

See also