Skip to content

Latest commit

 

History

History

README.md

@nx-extend/e2e-runner

@nx-extend/e2e-runner NPM package

Nx plugin to start your API and then run the Cypress/Playwright E2E tests.

Features

  • Start multiple targets before running tests
  • Health check URLs to ensure targets are ready
  • Support for Cypress, Playwright, and custom runners
  • Configurable retry attempts for health checks
  • Optional log forwarding from targets
  • Reuse existing servers option

Setup

Install

npm install -D @nx-extend/e2e-runner
nx g @nx-extend/e2e-runner:add

Usage

Available Options

All options of the specified runner are available:

  • @nrwl/cypress:cypress options (if runner = cypress)
  • @nx-extend/playwright:test options (if runner = playwright)
  • @nx/playwright options (if runner = @nx/playwright)
  • @nx/workspace:run-commands options (if runner = run-commands)

Target Configuration

The targets option is used to define targets that should be started before running the tests. Each target can be configured with the following options:

{
  target: string // The target to run.
  checkUrl?: string // The url to check if the target is "live", a target is live if this url returns a status-code in the 200 range.
  checkMaxTries?: number // The amount of times the `checkUrl` is tried before failing, there is a two second delay between tries.
  env?: { [key: string]: string } // Extra parameters provided to the target on startup.
  reuseExistingServer?: boolean // Set to true to allow using a previously started target.
  rejectUnauthorized?: boolean // Set to false to allow the use of self-signed certificates in your target.
  logging?: boolean // Set to true to forwards the logs of the target, set to false to hide the logs of the target. When undefined, the logs are only forwarded with the `--verbose` flag.
}

Example Configuration

{
  "e2e": {
    "executor": "@nx-extend/e2e-runner:run",
    "options": {
      "runner": "playwright",
      "targets": [
        {
          "target": "app:serve",
          "checkUrl": "http://localhost:4200/",
          "checkMaxTries": 50,
          "rejectUnauthorized": true
        },
        {
          "target": "api:serve",
          "checkUrl": "http://localhost:9000/health",
          "checkMaxTries": 50,
          "logging": false
        }
      ]
    }
  }
}

How It Works

  1. The executor starts all configured targets in parallel
  2. For each target with a checkUrl, it performs health checks
  3. Once all targets are healthy (or max tries reached), the E2E tests run
  4. After tests complete, all started targets are terminated