I am working on an ionic/angular application. For my unit tests environment Im using jest. It had worked till yesterday. Somehow all tests, where ionic modules (components, services, etc.) are included, failing now. There was now change to the node_modules or anything else related.
Thats the output from the cli.
FAIL projects/choosio-app/src/app/features/search/search-container.component.spec.ts
● Test suite failed to run
Cannot find module 'ionicons/components/ion-icon.js' from 'node_modules/@ionic/angular/fesm2022/ionic-angular-standalone.mjs'
Require stack:
node_modules/@ionic/angular/fesm2022/ionic-angular-standalone.mjs
projects/choosio-core/src/lib/choosio-core/components/card/card.component.ts
projects/choosio-core/src/public-api.ts
projects/choosio-app/src/app/features/search/save-search-modal/save-search-modal.component.ts
projects/choosio-app/src/app/features/search/search-container.component.ts
projects/choosio-app/src/app/features/search/search-container.component.spec.ts
1 | import { Component, input } from '@angular/core';
> 2 | import { IonCard, IonCardContent, IonCardHeader, IonCardTitle } from '@ionic/angular/standalone';
| ^
3 | import { BASE_IMAGE_URL } from '../../../../../../choosio-app/src/app/shared/constants/base';
4 |
5 | @Component({
at Resolver._throwModNotFoundError (node_modules/jest-resolve/build/resolver.js:427:11)
at Object.<anonymous> (node_modules/@ionic/angular/fesm2022/ionic-angular-standalone.mjs:95:63)
at Object.<anonymous> (projects/choosio-core/src/lib/choosio-core/components/card/card.component.ts:2:1)
at Object.<anonymous> (projects/choosio-core/src/public-api.ts:48:1)
at Object.<anonymous> (projects/choosio-app/src/app/features/search/save-search-modal/save-search-modal.component.ts:8:1)
at Object.<anonymous> (projects/choosio-app/src/app/features/search/search-container.component.ts:14:1)
at Object.<anonymous> (projects/choosio-app/src/app/features/search/search-container.component.spec.ts:2:1)
jest.config.js
module.exports = {
preset: 'jest-preset-angular',
transformIgnorePatterns: [`<rootDir>/node_modules/(?!.*\\.mjs$|ionicons|@ionic|@stencil)`],
setupFilesAfterEnv: ['<rootDir>/setup-jest.ts'],
transform: {
'^.+\\.tsx?$': [
'ts-jest',
{
allowSyntheticDefaultImports: true,
},
],
'^.+\\.js$': 'babel-jest',
},
};
Im aware of the hint from Ionic for the transformIgnorePatterns, but it changed nothing for me. I tried several different configurations and I was also not able to find any related issue.
tsconfig.spec.ts
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "../../out-tsc/spec",
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"types": [
"jest", "@testing-library/jest-dom"
]
},
"include": [
"src/**/*.spec.ts",
"src/**/*.d.ts"
],
}
Hope thats enough of informations.
Thank you in advance, guys!
try to add this in moduleNameMapper in your jest config.
'ionicons/components/ion-icon.js': '@ionic/core/components/ion-icon.js'
it worked for me