In most projects in this course, when running npm test
, you are actually invoking a script defined in package.json
like this:
"scripts": {
"test": "react-scripts test",
Some documentation for this can be found here:
Command line options for npm test
By typing the following command (note the extra --
in the middle) you can get a list of command line options for npm test
.
- Note that the
--
means that any further command line options are passed tojest
, which is the software that is used bynpm test
, rather than being passed tonpm
itself.
npm test -- --help
A reference for these options appears here: https://jestjs.io/docs/cli
Running only some tests
One of the most useful command line options is the simple -t
option, which takes a regular expression for the test description as its argument.
Running only tests from a certain file
Suppose the test you are working on is in the file frontend/src/tests/components/Commons/CommonsTable.test.js
.
You can copy this path in VSCode by right clicking at the top of the file tab and selecting Copy Relatve Path
, like this:
Then you can paste that into this command (note that you must use the arrow key on the command line to delete the prefixed frontend/
since you are already in that directory:
npm test -- src/tests/components/Commons/CommonsTable.test.js
This runs only tests from this file, as shown below:
Running only tests with a certain description:
Suppose you are working on this test:
test("Has the expected column headers and content for adminUser", () => {
If you type the following, it will run only tests that match this description:
npm test -- -t "Has the expected column headers and content for adminUser"
As it turns out, when I ran this example, there were two tests that matched this description, in two different files. One passed and the other failed, as shown in this output:
Since the argument is a regular expression, we can often specify just part of it with the same effect. For example, this has the same effect as the longer command above:
npm test -- -t "Has the expected column headers"
Here’s what that looks like; note that it matches the output above in terms of which tests were run:
Running only tests from a specific file with a specific description
We can also restrict to running only tests from a certain source file, for example, only the tests in frontend/src/tests/components/Commons/CommonsTable.test.js
by combining the two command arguments:
npm test -- src/tests/components/Commons/CommonsTable.test.js -t "Has the expected column headers"
Now we get only the single test run: