dd56a3ba61
* Clean up block templates after running e2e tests * Add changelog entry * Fix linting |
||
---|---|---|
.. | ||
bin | ||
mocks/custom-plugins | ||
playwright-utils | ||
test-data/data | ||
tests | ||
types | ||
utils | ||
wc-blocks-eslint-rules | ||
.eslintrc.js | ||
README.md | ||
block-theme-with-templates.setup.ts | ||
block-theme.setup.ts | ||
classic-theme.setup.ts | ||
global-setup.ts | ||
global-teardown.ts | ||
playwright.block-theme-with-templates.config.ts | ||
playwright.classic-theme.config.ts | ||
playwright.config.ts | ||
playwright.side-effects.config.ts | ||
tsconfig.json |
README.md
WooCommerce Blocks Playwright End to End Tests
This is the documentation for the new E2E testing setup based on Playwright and wp-env. Over time, these playwright E2E tests should replace the current Puppeteer E2E tests.
Table of contents
Pre-requisites
- Node.js (Installation instructions)
- NVM (Installation instructions)
- Docker and Docker Compose (Installation instructions)
Note, that if you are on Mac and you install docker through other methods such as homebrew, for example, your steps to set it up might be different. The commands listed in steps below may also vary.
If you are using Windows, we recommend using Windows Subsystem for Linux (WSL) for running E2E tests. Follow the WSL Setup Instructions first before proceeding with the steps below.
Introduction
End-to-end tests are powered by Playwright. The test site is spun up using wp-env
(recommended), but we will continue to support e2e-environment
in the meantime.
Running tests for the first time
In the root directory, run:
nvm use
pnpm install
Now change directory to plugins/woocommerce-blocks/
:
cd plugins/woocommerce-blocks/
Ensure necessary browsers are installed:
npx playwright install
pnpm run env:start
pnpm run test:e2e
ℹ️ If you have any problems running the tests, check out the Troubleshooting section for help.
To run the test again, re-create the environment to start with a fresh state
pnpm run env:restart
pnpm run test:e2e
Adding posts for testing block content
During test setup posts are automatically created from all the html files contained in ./bin/posts
. All posts are given a title like File Name Block
which generates a url like file-name-block
.
e.g. my-test.html
will generate a post with the title My Test Block
and permalink my-test-block
. You'll be able to navigate to that page in your test like:
await page.goto( '/my-test-block/' );
Please also note that the posts are generated during initial environment setup, so if you add or edit a post file you'll need to restart the environment to see the changes.
Tests with side effects
We call tests that affect other tests (ones that modify the site settings, using custom plugins) are tests with side effects and we split those tests to a separate test suite:
pnpm run test:e2e:side-effects
Note: All command parameters of test:e2e
can be used for
test:e2e:side-effects
.
Tests with a classic theme and a block theme with custom templates
By default, e2e tests run in a non-customized block theme. However, we also have some e2e tests which run specifically in a classic theme and in a block theme with custom templates. They can be run like this:
pnpm run test:e2e:classic-theme
pnpm run test:e2e:block-theme-with-templates
_Note: All command parameters of test:e2e
can be used for these commands too.
Other ways of running tests
Headless mode:
pnpm run test:e2e
Interactive UI mode:
pnpm run test:e2e --ui
Headed mode:
pnpm run test:e2e --headed
Debug mode:
pnpm run test:e2e --debug
Running a single test:
pnpm run test:e2e ./tests/e2e/tests/example.spec.ts
To see all options, run the following command:
npx playwright test --help
Troubleshooting
If you run into problems the first time you try to run the tests, please run the following command before starting the test suite:
pnpm wp-env:config
This helps set up your environment correctly and can prevent some of the usual issues from happening.