Angular 21 new unit test builder with Karma and zone.js
- 主要言語
- TypeScript
- スター
- 27k
- フォーク
- 11.8k
- 平均マージ
- 14時間 23分
- マージ済み PR(30日)
- 162
説明
### Command
test
### Is this a regression?
- [x] Yes, this behavior used to work in the previous version
### The previous version in which this bug was not present was
20
### Description
After upgrading from Angular 20 to 21, I ran into NGXXXX errors when running unit tests still with Karma and zone.js.
I found a [closed issue](https://github.com/angular/angular-cli/issues/32047) and a supposed fix for it, but that did not resolve the issue.
Others experienced the same and implemented workarounds which actually do work: [StackOverflow](https://stackoverflow.com/a/79837997), [Reddit](https://www.reddit.com/r/angular/comments/1p8suok/upgrading_from_angular_20_21_app_works_but_tests/).
I found that the solution could be that the `angular.json` has to be modified to be in line with the new project template like this:
- change `"builder": "@angular/build:karma`" to `"builder": "@angular/build:unit-test"`
- add `"runner": "karma"`
- remove the rest of the properties (according to [documentation](https://angular.dev/guide/testing/migrating-to-vitest#:~:text=does%20not%20support%20this) these derive from the development configuration)
I did not find anything regarding the necessity of this change in the documentation, but if that is the case, it would be wise to mention it and maybe even add a migration schematic.
Also its not clear what is the alternative for `"main": "src/test.ts"` which contains global test setup. My guess is that the `"setupFiles"` property would be the successor (like `"karmaConfig"` became `"runnerConfig"`), but that is [disabled for Karma](https://github.com/angular/angular-cli/blob/v21.2.5/packages/angular/build/src/builders/unit-test/runners/karma/executor.ts#L40).
So my question is: Where should I put global test setup with the new `"unit-test"` builder when using Karma?
Thanks in advance.
### Minimal Reproduction
npm test
### Exception or Error
```text
```
### Your Environment
```text
Angular CLI : 21.2.5
Node.js : 24.14.0
Package Manager : npm 11.9.0
Operating System : win32 x64
```
### Anything else relevant?
_No response_
コントリビューションガイド
調査の方向性
packages/angular/build/src/builders/unit-test/runners/karma/executor.ts から始め、angular.json にある Angular 20 と 21 の unit-test builder の設定を比較します。報告書にリンクされているテスト移行のドキュメントを読み、Karma がグローバルなテストセットアップをどのように処理するかを追跡します。期待される Karma 設定が確立され、ドキュメントまたは移行動作によって報告されたアップグレードパスが扱われていれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- angular, typescript
- 領域
- build-system, testing
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 静か
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 45/100