angular / angular/angular-cli

Angular 21 new unit test builder with Karma and zone.js

Đang mở
#32,905 3 bình luận 4 reaction 0 người được giao Xem trên GitHub
area: @angular/cli gemini-triaged
Ngôn ngữ chính
TypeScript
Star
27k
Fork
11.8k
Merge trung bình
14 giờ 23 phút
Pull request đã merge (30 ngày)
162

Mô tả

### 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_

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu với packages/angular/build/src/builders/unit-test/runners/karma/executor.ts và so sánh cấu hình unit-test builder của Angular 20 và 21 trong angular.json. Đọc tài liệu migration cho testing được liên kết trong báo cáo và theo dõi cách Karma xử lý thiết lập test toàn cục. Được xem là hoàn tất khi cấu hình Karma dự kiến được thiết lập và tài liệu hoặc hành vi migration giải quyết đường dẫn nâng cấp được báo cáo.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
angular, typescript
Lĩnh vực
build-system, testing
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Ít trao đổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
45/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.