DEV Community

loading...

Angular 11 - Setting up Jest

alfredoperez profile image Alfredo Perez Updated on ・1 min read

This is a quick guide to setup Jest in your new Angular 10 application

1. Install Jest

npm install jest @types/jest jest-preset-angular --save-dev
Enter fullscreen mode Exit fullscreen mode

2. Uninstall Karma

npm uninstall karma karma-chrome-launcher karma-coverage-istanbul-reporter karma-jasmine karma-jasmine-html-reporter @types/jasmine @types/jasminewd2 jasmine-core jasmine-spec-reporter
Enter fullscreen mode Exit fullscreen mode

3. Remove test from angular.json

Remove the test section from angular.json, this section looks like the following:

   "test": {
          "builder": "@angular-devkit/build-angular:karma",
          "options": {
            "main": "src/test.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "tsconfig.spec.json",
            "karmaConfig": "karma.conf.js",
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ],
            "styles": [
              "src/styles.scss"
            ],
            "scripts": []
          }
        },
Enter fullscreen mode Exit fullscreen mode

4. Remove karma.conf.js and src/test.ts files

5. Create setupJest.ts file

This file should have the following:

import 'jest-preset-angular';
Enter fullscreen mode Exit fullscreen mode

6. Modify tsconfig.spec.json

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./out-tsc/spec",
    "types": [
      "jest",
      "node"
    ]
  },
  "files": [
    "src/polyfills.ts"
  ],
  "include": [
    "src/**/*.spec.ts",
    "src/**/*.d.ts"
  ]
}
Enter fullscreen mode Exit fullscreen mode

7. Modify package.json file

Modify the test scripts to the following:

 "test": "jest",
 "test:coverage": "jest --coverage",
Enter fullscreen mode Exit fullscreen mode

Add Jest configuration to the end of this file:

"jest": {
    "preset": "jest-preset-angular",
    "setupFilesAfterEnv": [
      "<rootDir>/setupJest.ts"
    ],
    "testPathIgnorePatterns": [
      "<rootDir>/node_modules/",
      "<rootDir>/dist/"
    ],
    "globals": {
      "ts-jest": {
        "tsConfig": "<rootDir>/tsconfig.spec.json",
        "stringifyContentPathRegex": "\\.html$"
      }
    }
}
Enter fullscreen mode Exit fullscreen mode

Discussion (4)

pic
Editor guide
Collapse
edezekiel profile image
Edward Ezekiel

Thank you for posting this article! I just upgraded an Angular 9 app to Angular 10 and was running into errors using Jest. I tweaked my Jest configurations using the steps in this post and everything worked like a charm.

Collapse
ushakovmaksim profile image
Maksim Ushakov

ts-jestconfig The option tsConfig is deprecated and will be removed in ts-jest 27, use tsconfig instead

Collapse
non4me profile image
Vladimir Troyanenko

Why src/test.ts you remove in step 4. but use in steps 6 and 7?

Collapse
alfredoperez profile image
Alfredo Perez Author

Thanks! I will remove it =)