Testing#

We use Jest for unit testing in Volto. The popular @testing-library/react is also available for writing your tests. For every feature or component, a unit test is mandatory in Volto core.

Jest configuration#

Jest is configured in package.json under the jest key.

Run Jest tests on Volto core#

Note

All commands in this documentation run from inside the packages/volto directory. See Run commands for pnpm workspaces for other options to run tests.

Jest tests must pass locally before you push commits to the remote Volto repository. Jest has several modes to run unit tests locally. You can run Jest in watch mode, run only failed tests, or run specific tests only.

To get to the test runner modes choices, run the following command.

pnpm test

Then you can follow the Jest prompts for keys that you can enter to trigger test execution.

No tests found related to files changed since last commit.
Press `a` to run all tests, or run Jest with `--watchAll`.

Watch Usage
 › Press a to run all tests.
 › Press f to run only failed tests.
 › Press p to filter by a filename regex pattern.
 › Press t to filter by a test name regex pattern.
 › Press q to quit watch mode.
 › Press Enter to trigger a test run.

You can also run only specific tests using the following commands.

pnpm test src/components/theme/Image
# will run only the Image components tests

If a certain test fails, you can run that test only in watch mode. This makes it faster and easier to test code changes.

Jest configuration override#

In GitHub workflows or for testing add-ons, it's useful to use an alternate Jest configuration. Volto provides a way to do so using a file jest.config.js, or pointing the test runner to a file of your choice, using the RAZZLE_JEST_CONFIG environment variable.

RAZZLE_JEST_CONFIG=my-custom-jest-config.js pnpm test

Note

Both configurations are merged in a way that the keys of the config provided override the initial (package.json) default config, either in Volto or in your projects.

This is especially useful in GitHub workflows while developing add-ons. You can pass a specific configuration file that properly deals with the add-on configuration.

Add add-ons via environment variable for testing purposes#

Sometimes you need to enable different configurations and enable optional components, for example, testing purposes. You can use the ADDONS environment variable to define them.

ADDONS=test-addon,test-addon2 pnpm start

See Environment variables for more information.