If you are using
and you’re looking for how to show their results in TeamCity as follows:
Then this article will help you configure that ?
jest tests on TeamCity, you need to use jest as your testing framework of course ? If you use TypeScript – which I definitely recommend – ts-jest package will also be useful.
Having these packages installed, your basic
jest.config.js file should look similar to this:
You should also have a
test script defined in
scripts section of your
With this setup, you are able to execute your tests with
npm test command and see the results in the console:
Such tests results are however not recognized in any way by TeamCity build server. Let’s see how to configure that.
Installing TeamCity reporter
In order to see the tests results in TeamCity, we need the
npm test command to produce a different output when run on TC server. This output must be compatible with TeamCity’s service messages.
Fortunately, you don’t need to implement it by yourself ?
First, install jest-teamcity npm package to your project. Next, add
reporters configuration option in your
Adding TeamCity build step
Next, login to your TeamCity server. You need to know the location of
npm.cmd file on your TeamCity server. It should be in NodeJS installation catalog. In our case, the path to the file is
Now, go to TeamCity web administration interface and create a new build configuration or edit a current one. Then, add a new build step:
Configure the new step as follows:
- Runner type: Command line
- Step name: Jest JS tests
- Execute step: If all previous steps finished successfully (or anything else you prefer)
- Working directory: name of the catalog in your web app where you normally run
- Run: Custom script
- Custom script: “your_path_to_nodejs\npm.cmd” run test, for example: “C:\Dev\nodejs\npm.cmd” run test
- Format stderr output as: error
If everything is configured correctly, during the next build you should see
jest tests output recognized and nicely reported by TeamCity:
If that’s not the case, make sure that
TEAMCITY_VERSION environment variable is set on your TeamCity machine. That’s how
jest-teamcity reporter recognizes when to output standard
jest output and when to use TeamCity’s service messages format.
Debugging jest tests on TeamCity locally
If you run
npm test locally, you will see that the output is still normal, not the TeamCity format. That’s correct, because as we said before, the
TEAMCITY_VERSION environment variable must exist in order to see TeamCity-formatted output. Normally we don’t want to see TeamCity-formatted tests output locally, of course ?
It means that if you want to debug this configuration locally and actually see the TC tests output on your dev machine, you need to define such environment variable locally.
In order to do that in Windows, go to
Edit the system environment variables, click on
Evironment Variables... and add a new one in
System variables section. Call this variable
TEAMCITY_VERSION and give it some value, for example
If you’re on another operating system, add the environment variable according to your system’s requirements.
Next, restart Visual Studio Code or the console tool you are using and execute
npm test again. Now you should see the tests results output in TeamCity format:
Jest tests in TeamCity – summary
I hope you found this piece of advice useful. At Yumasoft, we value tests a lot, both backend and frontend ones. However, the tests which are not run automatically are worth nothing. That’s why we always have all of our tests run automatically as part of our CI process (TeamCity in the sample project’s case).