Test add-ons in Volto 17#
Volto uses Jest for unit tests.
You must configure package.json
to let Jest know about your aliases and make them available to it to resolve them.
"jest": {
"moduleNameMapper": {
"@plone/volto/(.*)$": "<rootDir>/node_modules/@plone/volto/src/$1",
"@package/(.*)$": "<rootDir>/src/$1",
"@plone/some-volto-addon/(.*)$": "<rootDir>/src/addons/@plone/some-volto-addon/src/$1",
"my-volto-addon/(.*)$": "<rootDir>/src/addons/my-volto-addon/src/$1",
"~/(.*)$": "<rootDir>/src/$1"
}
}
You can use yarn test src/addons/addon-name
to run tests.
Override Jest configuration#
In CI or for testing add-ons, it's useful to modify Jest's package.json
configuration file.
You can use a jest.config.js
file, or point the test runner to a file of your choice, using the RAZZLE_JEST_CONFIG
environment variable.
RAZZLE_JEST_CONFIG=my-custom-jest-config.js yarn test
Both configurations are merged in a way that the keys of the configuration provided override the initial package.json
configuration, either in Volto or in your projects.
Test add-ons in isolation#
Testing an add-on in isolation, as you would when you develop a Plone Python backend add-on, can be a bit challenging, since an add-on needs a working project in order to bootstrap itself. The latest generator has the boilerplate needed to bootstrap a dockerized environment where you can run any test to your add-on.
Set up the environment#
Run the following command once.
make dev
Build the containers manually#
Run the following commands.
make build-backend
make build-addon
Unit tests#
Run the following command.
make test
Acceptance tests#
Use Cypress to run acceptance tests. Run the following command once.
make install-acceptance
To start the servers, run the following command.
make start-test-acceptance-server
You run the frontend in development mode, so you can develop while writing tests. Run the following command to run Cypress tests afterward.
make test-acceptance
When finished, shut down the backend server.
make stop-test-acceptance-server