Angular CLI 15.1.4 breaks ng test with jsdom because CLI is loading JavaScript bundles as module
- Vorherrschende Sprache
- TypeScript
- Sterne
- 27k
- Forks
- 11.8k
- Ø Merge
- 14 Std. 23 Min.
- Gemergte PRs (30 T.)
- 162
Beschreibung
### 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
15.1.3
### Description
I have a standard Angular project, using Karma & Jasmine for unit tests. The unit tests run can run in either Chrome or jsdom. I need jsdom because my CI environment doesn't have Chrome (org policy: no browsers on servers).
Angular CLI 15.1.4 introduced a change in https://github.com/angular/angular-cli/pull/24620 wherein Javascript bundles are loaded as modules.
Unfortunately, jsdom doesn't support ; it simply doesn't load the module scripts. This is a known issue in jsdom - https://github.com/jsdom/jsdom/issues/2475
Ideally jsdom would add module support; but since that ticket has been open for four years, I'm not holding out much hope. So instead, here's my request:
**REQUEST:** Could Angular CLI add a flag to add/omit type="module" ?
My workaround for now is patching jsdom (using patch-package) to ignore the type attribute on <script type="module">.
### Minimal Reproduction
Clone my git repo: https://github.com/andrewpmontgomery/angular-15-jsdom
1. Run `npm install`
2. Run `npm run test:chrome` and all three tests should pass.
3. Run `npm run test:jsdom` and it should time-out.
4. Run `npm run patch-package`
5. Run `npm run test:jsdom` again and now it works.
### Exception or Error
_No response_
### Your Environment
```text
Angular CLI: 15.2.0
Node: 16.19.1
Package Manager: npm 8.19.3
OS: win32 x64
Angular: 15.2.0
... animations, cli, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, router
Package Version
---------------------------------------------------------
@angular-devkit/architect 0.1502.0
@angular-devkit/build-angular 15.2.0
@angular-devkit/core 15.2.0
@angular-devkit/schematics 15.2.0
@schematics/angular 15.2.0
rxjs 7.8.0
typescript 4.9.5
```
### Anything else relevant?
_No response_
Beitragsleitfaden
Rechercherichtung
Reproduziere das Problem aus dem verlinkten Repository mit `npm run test:chrome` und `npm run test:jsdom` und untersuche anschließend den Angular CLI-Befehl `test` und das Laden seines JavaScript-Bundles. Als erledigt gilt die Aufgabe, wenn die jsdom-Tests ohne den Patch ausgeführt werden, während die Chrome-Tests weiterhin bestehen, und es eine Möglichkeit gibt, `type="module"` hinzuzufügen oder wegzulassen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- angular, typescript
- Bereich
- cli, testing
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100