Unhandled promise rejections aren't properly reported in tests
- Dominant language
- TypeScript
- Stars
- 27k
- Forks
- 11.8k
- Avg merge
- 14h 23m
- Merged PRs (30d)
- 162
Description
### Which @angular/* package(s) are the source of the bug?
Don't known / other
### Is this a regression?
Yes
### Description
In an Angular project that uses zone.js, unhandled promise rejections are not reported. In a zoneless Angular project, they are reported twice.
Steps to reproduce:
1. Create a new Angular project.
2. Paste the code below into a spec file.
3. `npm t`
```
it('triggers an unhandled rejection', function(done) {
Promise.reject(new Error('nope'));
// Make sure the unhandled rejection event has plenty of time to fire before
// Jasmine finishes running. This helps distinguish between timing issues
// (event is firing a bit later than usual) and the event not firing at all.
setTimeout(done, 1000);
});
```
Expected result: The spec should fail with a single "Unhandled promise
rejection: Error: nope" error.
Observed:
* If the project was set up zoneless, the spec fails with two copies of the expected error.
* Otherwise, the spec passes.
### Please provide a link to a minimal reproduction of the bug
https://github.com/sgravrock/ng-unhandled-rejection
### Please provide the exception or error you saw
```true
```
### Please provide the environment you discovered this bug in (run `ng version`)
```true
_ _ ____ _ ___
/ \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _|
/ △ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | |
/ ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | |
/_/ \_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___|
|___/
Angular CLI: 20.1.5
Node: 20.19.0
Package Manager: npm 10.8.2
OS: darwin arm64
Angular: 20.1.6
... common, compiler, compiler-cli, core, forms
... platform-browser, router
Package Version
------------------------------------------------------
@angular-devkit/architect 0.2001.5
@angular-devkit/core 20.1.5
@angular-devkit/schematics 20.1.5
@angular/build 20.1.5
@angular/cli 20.1.5
@schematics/angular 20.1.5
rxjs 7.8.2
typescript 5.8.3
zone.js 0.15.1
```
### Anything else?
_No response_
Contributor guide
Research direction
Reproduce the issue with the provided spec in a new Angular project and run `npm t`, comparing zoneless and zone.js configurations. The relevant project files are not named; use the test setup and the minimal reproduction at https://github.com/sgravrock/ng-unhandled-rejection as entry points. Done means the spec reports exactly one unhandled rejection in both configurations.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- angular, typescript
- Domain
- testing
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100