Skip to content

Playwright Test (@playwright/test) demo to collect coverage information via Istanbul

License

Notifications You must be signed in to change notification settings

mxschmitt/playwright-test-coverage

Repository files navigation

Use Istanbul coverage collection with Playwright Test

Coverage Status CI

This example demonstrates how to use vite-plugin-istanbul to collect coverage data during runtime with your end-to-end tests which will be stored on the filesystem. When applying the shown parts, you are able to view the coverage report e.g. as HTML, or convert it to the lcov format for upload to Coveralls or other similar providers. In this example, we are using GitHub Actions to run the tests and upload them to Coveralls.

Prerequisites

  • The web application which you are using needs to have vite-plugin-istanbul configured during the build process.
  • It's recommended to only enable it during end-to-end testing, for example by checking a variable to determine if it should be enabled.
  • You could also add it only when the dev server NODE_ENV=development is used.

Usage

  • Place baseFixtures.ts into your test directory. Instead of requiring @playwright/test to get the test object, use ./baseFixtures.
  • This will collect the corresponding coverage files into the .nyc_output directory which can be used from the Istanbul CLI.
  • For an example test, see App.test.ts

Coverage formats

Helpful commands are the following:

  • npx nyc report --reporter=html -> Writes an HTML report to coverage/index.html.
  • npx nyc report --reporter=lcov -> commonly used to upload to Coveralls or Codecov.
  • npx nyc report --reporter=text -> CLI output how the current code coverage per file and statement will look like.

Used tools

  • vite - tooling and bundling for React
  • vite-plugin-istanbul - to add coverage information
  • nyc - Istanbul CLI to generate lcov coverage

See this version in the ct-react-vite branch.

Using create-react-app / Webpack

See this archived version in the create-react-app branch.