Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
@angular-builders/jest
Advanced tools
Jest runner for Angular build facade. Allows ng test run with Jest instead of Karma
@angular-builders/jest is an Angular builder that allows you to use Jest as a test runner for Angular projects. It integrates seamlessly with Angular CLI, enabling you to run Jest tests with Angular's build system.
Running Jest Tests
This configuration allows you to run Jest tests using Angular CLI. By setting the builder to '@angular-builders/jest:run', you can execute Jest tests with the 'ng test' command.
json
{
"architect": {
"test": {
"builder": "@angular-builders/jest:run",
"options": {}
}
}
}
Custom Jest Configuration
You can customize your Jest configuration by adding a 'jest' section in your Angular project's configuration file. This allows you to specify presets, setup files, and other Jest options.
json
{
"jest": {
"preset": "jest-preset-angular",
"setupFilesAfterEnv": ["<rootDir>/src/setup-jest.ts"]
}
}
Code Coverage
Enabling code coverage is straightforward with @angular-builders/jest. By setting the 'codeCoverage' option to true, you can generate code coverage reports for your Angular project.
json
{
"architect": {
"test": {
"builder": "@angular-builders/jest:run",
"options": {
"codeCoverage": true
}
}
}
}
jest-preset-angular is a preset that makes it easier to use Jest in Angular projects. It provides a set of configurations and utilities specifically designed for Angular applications. While @angular-builders/jest integrates Jest with Angular CLI, jest-preset-angular focuses on providing a Jest configuration tailored for Angular.
Karma is a test runner that is commonly used with Angular projects. It is the default test runner for Angular CLI. Unlike @angular-builders/jest, which uses Jest, Karma uses a different approach and is often paired with Jasmine for testing.
angular-jest is another package that integrates Jest with Angular. It provides similar functionalities to @angular-builders/jest, such as running Jest tests and generating code coverage. However, it may have different configuration options and integrations.
Allows running ng test
with Jest instead of Karma & Jasmine.
The builder comes to provide zero configuration setup for Jest while keeping the workspace clear of boilerplate code.
$ npm remove karma karma-chrome-launcher karma-coverage-istanbul-reporter karma-jasmine karma-jasmine-html-reporter
$ rm ./karma.conf.js ./src/test.ts
jest
if you still haven't):
$ npm i -D jest @types/jest @angular-builders/jest
In tsconfig.spec.json (root directory, used by Jest):
jasmine
in types
array with jest
test.ts
entry from files
arrayIn tsconfig.json (root directory, used by IDE):
jest
to types
arraytsconfig.json
is the config file that your IDE uses so you have to instruct it explicitly to use Jest typings.angular.json
:
"projects": {
"[your-project]": {
"architect": {
"test": {
"builder": "@angular-builders/jest:run",
"options": {
// see below
}
}
}
}
}
ng test
The builder supports multi-project workspaces out of the box, the only thing required is editing tsconfig.spec.json in the relevant project directory as described above.
configPath
- path to jest config file, relative to project root (or src/ directory in case of non-project app), defaults to jest.config.js
. Other extensions are also supported. The Jest configuration might be written is TypeScript, but you should explicitly specify the path to the jest.config.ts
. The configuration is merged on top of the default configuration, so there is no need to specify the whole jest configuration in this file. Just specify the changes you'd like to make to the default configuration.
The way the configurations are merged is as following:
Thus, if you don't provide configPath
in options, and you'd like to customize the configuration of a single project in your workspace, you only have to add jest.config.js in this project's root directory and specify the configuration delta in this file.
Or, if you'd like the same custom configuration to be applied to all the projects in the workspace, you just specify it in package.json. Another option in such a case is creating a single config file in the workspace root and specifying it in angular.json for each project.
tsConfig
- path to tsconfig file. If the path is relative then it is evaluated relative to the project root. Defaults to tsconfig.spec.json
that is located in project root.
globalMocks
- there are 4 global mocks available:
["getComputedStyle", "doctype", "styleTransform", "matchMedia"]
.
The mocks implementation can be found here.
styleTransform
and matchMedia
are not implemented in jsdom, therefore these are enabled by default.
getComputedStyle
and doctype
are implemented but do not support 100% of cases.
If you want to disable/enable one or more of these mocks just pass an updated list in options.
For example:
"options": {
"globalMocks": ["styleTransform", "matchMedia", "getComputedStyle"]
}
[jest-cli-option]
- any option from Jest CLI options. For example, to run unit tests without caching and with junit-reporter
use:
"options": {
"no-cache": true,
"reporters": "jest-junit"
}
These options can also be provided directly to ng test
command. For example, to run a single test from this suite:
describe('My cool suite', () => {
it('Should do one thing', () => {
// do something...
});
it('Should do another thing', () => {
// do something...
});
});
Use the following command: ng test --test-name-pattern="My cool suite Should do one thing"
Notice that for array-like arguments you should use ,
delimiter instead of space delimiter. These are limitations of Angular CLI.
Thus, if you want to provide multiple arguments to find-related-tests
option you should be passing it like this:
$ ng test --find-related-tests file1,file2
Use this for automatic migration of your Jasmine tests to Jest framework.
Please find below a selection of potential issues you might face when using this builder. Refer to jest-preset-angular Troubleshooting for jest-preset-angular
specific issues.
This means that the library you're using doesn't use commonjs
module format (which jest
expects to see). You will need to implement the recommendations mentioned in jest-preset-angular Troubleshooting Guide.
One of the recommendations might require you to transpile js files through babel-jest.
In this case make sure you add allowSyntheticDefaultImports
to the ts-jest
configuration (see here for an explanation of this setting).
transform: {
'^.+\\.tsx?$': [
'ts-jest',
{
allowSyntheticDefaultImports: true,
},
],
}
Your final jest.config.js
file should look something like this:
const esModules = ['[thir-party-lib]'].join('|');
module.exports = {
transformIgnorePatterns: [`<rootDir>/node_modules/(?!${esModules})`],
transform: {
'^.+\\.tsx?$': [
'ts-jest',
{
allowSyntheticDefaultImports: true,
},
],
'^.+\\.js$': 'babel-jest',
},
};
FAQs
Jest runner for Angular build facade. Allows ng test run with Jest instead of Karma
The npm package @angular-builders/jest receives a total of 102,812 weekly downloads. As such, @angular-builders/jest popularity was classified as popular.
We found that @angular-builders/jest demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.