@analogjs/vitest-angular 2.1.0-beta.1 → 2.1.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -76,52 +76,37 @@ export default defineConfig(({ mode }) => ({
|
|
|
76
76
|
include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
|
|
77
77
|
reporters: ['default'],
|
|
78
78
|
},
|
|
79
|
-
define: {
|
|
80
|
-
'import.meta.vitest': mode !== 'production',
|
|
81
|
-
},
|
|
82
79
|
}));
|
|
83
80
|
```
|
|
84
81
|
|
|
85
82
|
Next, define a `src/test-setup.ts` file to setup the `TestBed`:
|
|
86
83
|
|
|
84
|
+
### Zoneless setup
|
|
85
|
+
|
|
86
|
+
As of Angular v21, `Zoneless` change detection is the default for new projects.
|
|
87
|
+
|
|
88
|
+
Use the following setup:
|
|
89
|
+
|
|
87
90
|
```ts
|
|
88
91
|
import '@angular/compiler';
|
|
89
|
-
import '@analogjs/vitest-angular/setup-
|
|
90
|
-
|
|
91
|
-
import {
|
|
92
|
-
BrowserTestingModule,
|
|
93
|
-
platformBrowserTesting,
|
|
94
|
-
} from '@angular/platform-browser/testing';
|
|
95
|
-
import { getTestBed } from '@angular/core/testing';
|
|
92
|
+
import '@analogjs/vitest-angular/setup-snapshots';
|
|
93
|
+
import { setupTestBed } from '@analogjs/vitest-angular/setup-testbed';
|
|
96
94
|
|
|
97
|
-
|
|
98
|
-
BrowserTestingModule,
|
|
99
|
-
platformBrowserTesting(),
|
|
100
|
-
);
|
|
95
|
+
setupTestBed();
|
|
101
96
|
```
|
|
102
97
|
|
|
103
|
-
|
|
98
|
+
### Zone.js setup
|
|
99
|
+
|
|
100
|
+
If you are using `Zone.js` for change detection, import the `setup-zone` script. This script automatically includes support for setting up snapshot tests.
|
|
104
101
|
|
|
105
102
|
```ts
|
|
106
103
|
import '@angular/compiler';
|
|
107
|
-
import '@analogjs/vitest-angular/setup-
|
|
104
|
+
import '@analogjs/vitest-angular/setup-zone';
|
|
105
|
+
import { setupTestBed } from '@analogjs/vitest-angular/setup-testbed';
|
|
108
106
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
platformBrowserTesting,
|
|
113
|
-
} from '@angular/platform-browser/testing';
|
|
114
|
-
import { getTestBed } from '@angular/core/testing';
|
|
115
|
-
|
|
116
|
-
@NgModule({
|
|
117
|
-
providers: [provideZonelessChangeDetection()],
|
|
118
|
-
})
|
|
119
|
-
export class ZonelessTestModule {}
|
|
120
|
-
|
|
121
|
-
getTestBed().initTestEnvironment(
|
|
122
|
-
[BrowserTestingModule, ZonelessTestModule],
|
|
123
|
-
platformBrowserTesting(),
|
|
124
|
-
);
|
|
107
|
+
setupTestBed({
|
|
108
|
+
zoneless: false,
|
|
109
|
+
});
|
|
125
110
|
```
|
|
126
111
|
|
|
127
112
|
Next, update the `test` target in the `angular.json` to use the `@analogjs/vitest-angular:test` builder:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@analogjs/vitest-angular",
|
|
3
|
-
"version": "2.1.0-beta.
|
|
3
|
+
"version": "2.1.0-beta.10",
|
|
4
4
|
"description": "Vitest Builder for Angular",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "Brandon Roberts <robertsbt@gmail.com>",
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
".": "./src/index.js",
|
|
9
9
|
"./package.json": "./package.json",
|
|
10
10
|
"./setup-zone": "./setup-zone.js",
|
|
11
|
-
"./setup-snapshots": "./setup-snapshots.js"
|
|
11
|
+
"./setup-snapshots": "./setup-snapshots.js",
|
|
12
|
+
"./setup-testbed": "./setup-testbed.js"
|
|
12
13
|
},
|
|
13
14
|
"keywords": [
|
|
14
15
|
"angular",
|
|
@@ -35,7 +36,7 @@
|
|
|
35
36
|
},
|
|
36
37
|
"peerDependencies": {
|
|
37
38
|
"@analogjs/vite-plugin-angular": "*",
|
|
38
|
-
"@angular-devkit/architect": ">=0.1500.0 < 0.
|
|
39
|
+
"@angular-devkit/architect": ">=0.1500.0 < 0.2200.0",
|
|
39
40
|
"vitest": "^1.3.1 || ^2.0.0 || ^3.0.0 || ^4.0.0"
|
|
40
41
|
},
|
|
41
42
|
"ng-update": {
|
package/setup-testbed.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { NgModule, provideZonelessChangeDetection } from '@angular/core';
|
|
3
|
+
import { getTestBed, ɵgetCleanupHook as getCleanupHook, } from '@angular/core/testing';
|
|
4
|
+
import { BrowserTestingModule, platformBrowserTesting, } from '@angular/platform-browser/testing';
|
|
5
|
+
import { afterEach, beforeEach } from 'vitest';
|
|
6
|
+
beforeEach(getCleanupHook(false));
|
|
7
|
+
afterEach(getCleanupHook(true));
|
|
8
|
+
const ANGULAR_TESTBED_SETUP = Symbol.for('testbed-setup');
|
|
9
|
+
export function setupTestBed(options = { zoneless: true, providers: [] }) {
|
|
10
|
+
if (!globalThis[ANGULAR_TESTBED_SETUP]) {
|
|
11
|
+
globalThis[ANGULAR_TESTBED_SETUP] = true;
|
|
12
|
+
let ZonelessTestModule = class ZonelessTestModule {
|
|
13
|
+
};
|
|
14
|
+
ZonelessTestModule = __decorate([
|
|
15
|
+
NgModule({
|
|
16
|
+
providers: options?.zoneless ? [provideZonelessChangeDetection()] : [],
|
|
17
|
+
})
|
|
18
|
+
], ZonelessTestModule);
|
|
19
|
+
getTestBed().initTestEnvironment([
|
|
20
|
+
BrowserTestingModule,
|
|
21
|
+
...(options?.zoneless ? [ZonelessTestModule] : []),
|
|
22
|
+
...(options?.providers || []),
|
|
23
|
+
], platformBrowserTesting());
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAtdGVzdGJlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3ZpdGVzdC1hbmd1bGFyL3NldHVwLXRlc3RiZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsOEJBQThCLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUNMLFVBQVUsRUFDVixlQUFlLElBQUksY0FBYyxHQUNsQyxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsc0JBQXNCLEdBQ3ZCLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFL0MsVUFBVSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUVoQyxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7QUFPMUQsTUFBTSxVQUFVLFlBQVksQ0FDMUIsVUFBK0IsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFFaEUsSUFBSSxDQUFFLFVBQWtCLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDO1FBQy9DLFVBQWtCLENBQUMscUJBQXFCLENBQUMsR0FBRyxJQUFJLENBQUM7UUFLbEQsSUFBTSxrQkFBa0IsR0FBeEIsTUFBTSxrQkFBa0I7U0FBRyxDQUFBO1FBQXJCLGtCQUFrQjtZQUh2QixRQUFRLENBQUM7Z0JBQ1IsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsOEJBQThCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2FBQ3ZFLENBQUM7V0FDSSxrQkFBa0IsQ0FBRztRQUUzQixVQUFVLEVBQUUsQ0FBQyxtQkFBbUIsQ0FDOUI7WUFDRSxvQkFBb0I7WUFDcEIsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2xELEdBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBaUI7U0FDL0MsRUFDRCxzQkFBc0IsRUFBRSxDQUN6QixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgcHJvdmlkZVpvbmVsZXNzQ2hhbmdlRGV0ZWN0aW9uLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBnZXRUZXN0QmVkLFxuICDJtWdldENsZWFudXBIb29rIGFzIGdldENsZWFudXBIb29rLFxufSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHtcbiAgQnJvd3NlclRlc3RpbmdNb2R1bGUsXG4gIHBsYXRmb3JtQnJvd3NlclRlc3RpbmcsXG59IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvdGVzdGluZyc7XG5pbXBvcnQgeyBhZnRlckVhY2gsIGJlZm9yZUVhY2ggfSBmcm9tICd2aXRlc3QnO1xuXG5iZWZvcmVFYWNoKGdldENsZWFudXBIb29rKGZhbHNlKSk7XG5hZnRlckVhY2goZ2V0Q2xlYW51cEhvb2sodHJ1ZSkpO1xuXG5jb25zdCBBTkdVTEFSX1RFU1RCRURfU0VUVVAgPSBTeW1ib2wuZm9yKCd0ZXN0YmVkLXNldHVwJyk7XG5cbnR5cGUgVGVzdEJlZFNldHVwT3B0aW9ucyA9IHtcbiAgem9uZWxlc3M/OiBib29sZWFuO1xuICBwcm92aWRlcnM/OiBUeXBlPGFueT5bXTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cFRlc3RCZWQoXG4gIG9wdGlvbnM6IFRlc3RCZWRTZXR1cE9wdGlvbnMgPSB7IHpvbmVsZXNzOiB0cnVlLCBwcm92aWRlcnM6IFtdIH0sXG4pIHtcbiAgaWYgKCEoZ2xvYmFsVGhpcyBhcyBhbnkpW0FOR1VMQVJfVEVTVEJFRF9TRVRVUF0pIHtcbiAgICAoZ2xvYmFsVGhpcyBhcyBhbnkpW0FOR1VMQVJfVEVTVEJFRF9TRVRVUF0gPSB0cnVlO1xuXG4gICAgQE5nTW9kdWxlKHtcbiAgICAgIHByb3ZpZGVyczogb3B0aW9ucz8uem9uZWxlc3MgPyBbcHJvdmlkZVpvbmVsZXNzQ2hhbmdlRGV0ZWN0aW9uKCldIDogW10sXG4gICAgfSlcbiAgICBjbGFzcyBab25lbGVzc1Rlc3RNb2R1bGUge31cblxuICAgIGdldFRlc3RCZWQoKS5pbml0VGVzdEVudmlyb25tZW50KFxuICAgICAgW1xuICAgICAgICBCcm93c2VyVGVzdGluZ01vZHVsZSxcbiAgICAgICAgLi4uKG9wdGlvbnM/LnpvbmVsZXNzID8gW1pvbmVsZXNzVGVzdE1vZHVsZV0gOiBbXSksXG4gICAgICAgIC4uLigob3B0aW9ucz8ucHJvdmlkZXJzIHx8IFtdKSBhcyBUeXBlPGFueT5bXSksXG4gICAgICBdLFxuICAgICAgcGxhdGZvcm1Ccm93c2VyVGVzdGluZygpLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|