DEV Community

Dany Paredes
Dany Paredes

Posted on • Originally published at danywalls.com on

Play with Jest builder for Angular 17 (Experimental)

When we write tests in Angular Jasmine and Karma are the default for testing library and runner, but the Angular team was working on bringing Jest to Angular.

Today, we're going to experiment with the Jest Builder for Jest (Experimental) in Angular 17. Let's get started.

Build Example App

First, we will create a sample application using Angular 17. In my situation, I have Angular 15 installed globally since that is the version I utilize for my work.

The simplest method to create a project with Angular 17, without installing it, involves executing it using npx.

//create a project npx -p @angular/cli ng new lab//generate component and servicenpx ng g c components/toasternpx ng g s services/toaster
Enter fullscreen mode Exit fullscreen mode

To run the application using npx, execute the following command: npx ng serve.

To run tests in an Angular 17 project without installing it, you can use the npx command along with Jasmine and Karma. To accomplish this, simply execute the following command: npx ng test.

Our goal is to use the Jest Builder, but before we do that, we must remove Karma and Jasmine from our project.

Remove Jasmine and Karma

First, we are going to remove Jasmine by executing the following command.

npm remove karma karma-chrome-launcher karma-jasmine karma-jasmine-html-reporter
Enter fullscreen mode Exit fullscreen mode

Moving to Jest Builder

Next, install Jest, its types, and the builder in the project.

npm i -D jest @types/jest @angular-builders/jest
Enter fullscreen mode Exit fullscreen mode

Next, update the test section in the angular.json file to utilize the Jest builder.

"test": { "builder": "@angular-devkit/build-angular:jest", "options": { "tsConfig": "tsconfig.spec.json", "polyfills": ["zone.js", "zone.js/testing"] } }
Enter fullscreen mode Exit fullscreen mode

Save the changes and run the command ng test again, using Jest as the default test runner for Angular (experimental).

We received the warning because it is "EXPERIMENTAL." If you read this, you'll see that the experimental version takes more time than Jasmine (but, of course, it's not optimized yet!).

It looks great! Of course, we need to wait to use it, but it's nice progress for Angular. Currently, if you want to use Jest with Angular, you must use the schematic: https://github.com/briebug/jest-schematic

ng add @briebug/jest-schematic
Enter fullscreen mode Exit fullscreen mode

You can continue to follow the progress of angular-jest builder or check my example project

Enjoy!

Top comments (0)