2.3 KiB
JavaScript Testing
Tests for JavaScript in the Blocks plugin are powered by Jest.
The Blocks plugin follows the same patterns as Gutenberg, therefore for instructions on writing tests you can refer to this page in the Gutenberg Handbook.
We have two kinds of JavaScript tests:
- JavaScript unit tests - test APIs, hooks, library functionality that we use to build blocks or expose to plugin authors.
- End-to-end (e2e) tests - test blocks from the user interface.
These tests are all run automatically on open PRs by Travis CI.
All the following tests require that the dependencies are installed (npm install
composer install
). Ensure you've followed the Getting Started Guide to set up node and other dependencies before running any tests.
How to run JavaScript unit tests
Unit tests are implemented near the code they test, in *.test.js
files.
Use the following command to run the unit tests:
$ npm run test
The test scripts use wp-scripts to run jest for component and unit testing.
Additionally,
test:update
updates the snapshot tests for components, used if you change a component that has tests attached.test:watch
keeps watch of files and automatically re-runs tests when things change.
How to run end-to-end tests
End-to-end tests are implemented in tests/e2e-tests/specs/
.
Since these drive the user interface, they need to run against a test environment - i.e. a web server running WordPress, Woo and blocks plugin, with a known state/configuration.
To set up to run e2e tests:
npm run build:e2e-test
builds the assets (js/css), you can exclude this step if you've already got built files to test with.npm run wp-env start
to start the test environment
Then, to run the tests:
npm run test:e2e
When you're iterating on a new test you'll often run this repeatedly, as you develop, until your test is just right.
When you're done, you may want to shut down the test environment:
npm run wp-env stop
to stop the test environment
Note: There are a number of other useful wp-env
commands. You can find out more in the wp-env docs.