Open
Description
Command
test
Is this a regression?
- Yes, this behavior used to work in the previous version
The previous version in which this bug was not present was
No response
Description
Unit tests using esbuild + Vite will rebuild during the initial test run when they use a large dependency.
- App is configured to use esbuild + Vite for unit testing with Jasmine + Karma.
- App imports and uses a large dependency in a test--specifically from
@arcgis/core
. - Start the test run with
npm test
/npx ng test
. - It will build the app and begin running tests. In the terminal it will say
Changes detected. Rebuilding...
and interrupt the test run to rebuild the app and re-run the tests. - Does not happen with
npm start
/npx ng serve
.
Minimal Reproduction
git clone https://github.com/ekrapfl/karma-esbuild.git
cd karma-esbuild
- Repro is in default/
main
branch, so shouldn't need to change branches.
- Repro is in default/
npm ci
npm test
- It will build the app and begin running tests. In the terminal it will say
Changes detected. Rebuilding...
and interrupt the test run to rebuild the app and re-run the tests.
Here is an example of the output. Note that you see the build and test output twice (for example, the listed chunks and the TOTAL: 1 SUCCESS
):
<user>@<machine> karma-esbuild % npm test
> karma-esbuild@0.0.0 test
> ng test
Initial chunk files | Names | Raw size
test_main.js | test_main | 2.26 MB |
chunk-MITMOUO7.js | - | 1.03 MB |
polyfills.js | polyfills | 977.55 kB |
chunk-S2PYDWQZ.js | - | 222.85 kB |
spec-app-test.spec.js | spec-app-test.spec | 122.86 kB |
chunk-CLNYNMKO.js | - | 68.76 kB |
jasmine-cleanup-1.js | jasmine-cleanup-1 | 66.02 kB |
chunk-NLY2VED7.js | - | 58.23 kB |
chunk-GMU4Y5RB.js | - | 44.21 kB |
chunk-IGE366CE.js | - | 35.16 kB |
chunk-PEI5DOI2.js | - | 33.49 kB |
chunk-67H43HPZ.js | - | 32.98 kB |
chunk-DLLIXDQJ.js | - | 31.16 kB |
chunk-GUQCX7FL.js | - | 28.99 kB |
chunk-KFYH4SPY.js | - | 27.55 kB |
chunk-WKWCFPFU.js | - | 25.27 kB |
chunk-RUHZSHAS.js | - | 24.68 kB |
chunk-VIIYUK2K.js | - | 23.59 kB |
chunk-S5SF36OC.js | - | 19.43 kB |
chunk-KG4BIUKD.js | - | 17.69 kB |
chunk-3FIEHSLD.js | - | 16.11 kB |
chunk-QU2MBKM2.js | - | 15.50 kB |
chunk-2JCYBFRE.js | - | 13.24 kB |
chunk-IYMCIKBN.js | - | 12.95 kB |
chunk-3F4PO5YK.js | - | 12.16 kB |
chunk-EMJGFKMO.js | - | 12.15 kB |
chunk-XTRHB6YJ.js | - | 12.00 kB |
chunk-3VQVZRJW.js | - | 11.90 kB |
chunk-U6GPAMFH.js | - | 11.44 kB |
chunk-P6PP5FFA.js | - | 8.39 kB |
chunk-QBVWJ5BQ.js | - | 8.02 kB |
chunk-V5GQNYJW.js | - | 7.58 kB |
chunk-ISE7BAXF.js | - | 6.83 kB |
chunk-57YFPQD2.js | - | 6.82 kB |
chunk-DCEWUTX7.js | - | 6.37 kB |
chunk-PQJOHYCX.js | - | 6.34 kB |
chunk-6KE5MFW7.js | - | 6.26 kB |
chunk-WLOOFSFD.js | - | 6.22 kB |
chunk-BC6NYFS4.js | - | 5.95 kB |
chunk-VSSF3FSX.js | - | 5.61 kB |
chunk-3VFNOLPC.js | - | 5.36 kB |
chunk-6AU6F7WO.js | - | 5.35 kB |
chunk-UIPW7YTA.js | - | 5.10 kB |
chunk-FWSFP64L.js | - | 4.90 kB |
chunk-54WWS2FG.js | - | 4.86 kB |
chunk-4A7UBKFO.js | - | 4.83 kB |
chunk-IMJ3IFYR.js | - | 4.53 kB |
chunk-HILJZ7CS.js | - | 4.52 kB |
chunk-QWWCY6CL.js | - | 4.21 kB |
chunk-R7RRKMJK.js | - | 4.15 kB |
chunk-TNWTOKB2.js | - | 3.94 kB |
chunk-6X7W7D2N.js | - | 3.94 kB |
chunk-Q6MIXVDY.js | - | 3.84 kB |
chunk-GBNDW62H.js | - | 3.77 kB |
chunk-J64CY5AX.js | - | 3.76 kB |
chunk-N3LKOPKJ.js | - | 3.57 kB |
chunk-NRBCM5Q2.js | - | 3.41 kB |
chunk-44L2S3WI.js | - | 3.39 kB |
chunk-PPIAAZ4T.js | - | 3.34 kB |
chunk-GIE5IDJZ.js | - | 3.25 kB |
chunk-IU6SVGTC.js | - | 3.24 kB |
chunk-6E6I6BDF.js | - | 3.24 kB |
chunk-PNIWOYG5.js | - | 3.20 kB |
chunk-N6LQ6P5V.js | - | 3.10 kB |
chunk-M7FDAUGU.js | - | 2.73 kB |
chunk-7DYNAUCF.js | - | 2.73 kB |
chunk-GJSXZBFL.js | - | 2.65 kB |
chunk-MOZ5H2V5.js | - | 2.57 kB |
chunk-3NRD5LN2.js | - | 2.42 kB |
chunk-SOPOEFYX.js | - | 2.42 kB |
chunk-P3TZLLHA.js | - | 1.80 kB |
chunk-DAQVEFAV.js | - | 1.80 kB |
chunk-X2MMQPE4.js | - | 1.65 kB |
chunk-TNTSCJFR.js | - | 1.60 kB |
chunk-76DAZ52M.js | - | 1.59 kB |
chunk-BEF5GDMO.js | - | 1.46 kB |
chunk-M7WB6VWV.js | - | 1.46 kB |
chunk-LQOQYXFP.js | - | 1.37 kB |
chunk-LU66KJFR.js | - | 1.35 kB |
chunk-O7FGNMQR.js | - | 1.34 kB |
chunk-PZL2QO6L.js | - | 1.24 kB |
chunk-LUJCFMKN.js | - | 1.20 kB |
chunk-YSTEUQC7.js | - | 1.16 kB |
chunk-35IVQMXG.js | - | 1.15 kB |
chunk-54V2O57B.js | - | 1.14 kB |
chunk-MITCB24Y.js | - | 1.12 kB |
chunk-WGMYO3T3.js | - | 1.06 kB |
chunk-TKTZDKMY.js | - | 949 bytes |
chunk-7RQR5TQA.js | - | 939 bytes |
chunk-NDVDKQJ3.js | - | 890 bytes |
chunk-AKU4GLYK.js | - | 868 bytes |
chunk-LFGNSQVW.js | - | 813 bytes |
chunk-WAOTNTT5.js | - | 808 bytes |
chunk-FVLEHQ7R.js | - | 783 bytes |
chunk-EYVR5RA3.js | - | 766 bytes |
chunk-MRRA2DQ2.js | - | 756 bytes |
chunk-IFS4WU72.js | - | 752 bytes |
chunk-24MRNFNH.js | - | 743 bytes |
chunk-N4BQOBXH.js | - | 707 bytes |
chunk-IUAL5ZYH.js | - | 661 bytes |
chunk-IWYL5UY2.js | - | 652 bytes |
chunk-RLZDILSZ.js | - | 642 bytes |
chunk-HW7FLCQX.js | - | 634 bytes |
chunk-MH64JGYN.js | - | 567 bytes |
chunk-QGXFAXUJ.js | - | 558 bytes |
chunk-SDIKYKAK.js | - | 539 bytes |
jasmine-cleanup-0.js | jasmine-cleanup-0 | 519 bytes |
chunk-67D6R4WZ.js | - | 484 bytes |
chunk-GAZNEZUD.js | - | 459 bytes |
chunk-SQ3QJA4A.js | - | 453 bytes |
chunk-SASCSLKH.js | - | 427 bytes |
chunk-SV7NTLFB.js | - | 425 bytes |
chunk-2YXNHQKF.js | - | 419 bytes |
chunk-JA2RTXAP.js | - | 394 bytes |
chunk-QQTTOYUI.js | - | 362 bytes |
chunk-ZFSYULG4.js | - | 344 bytes |
chunk-JJKQ67SD.js | - | 280 bytes |
chunk-E3S67AAZ.js | - | 276 bytes |
chunk-3VW3G2WH.js | - | 273 bytes |
chunk-ZSRCROYJ.js | - | 264 bytes |
chunk-XU3X4QFM.js | - | 233 bytes |
chunk-DEIM3ABM.js | - | 221 bytes |
chunk-QEGOSNHD.js | - | 217 bytes |
chunk-NLFHMHDN.js | - | 202 bytes |
chunk-PO4QYSZG.js | - | 130 bytes |
styles.css | styles | 96 bytes |
| Initial total | 5.50 MB
Lazy chunk files | Names | Raw size
chunk-FPAK4VYJ.js | GraphicsLayerView3D | 503.77 kB |
chunk-SA33J72D.js | FeaturePipelineWorker | 486.68 kB |
chunk-HTXXLWRH.js | editingTools | 347.22 kB |
chunk-VGBXL5IR.js | zipjs-wrapper | 261.96 kB |
chunk-C6QTVOF3.js | - | 242.15 kB |
chunk-3J7UAUOV.js | libtess-asm | 212.25 kB |
chunk-A5UECCLP.js | - | 203.28 kB |
chunk-QNBTGLJQ.js | - | 203.24 kB |
chunk-EFFLTRHO.js | arcadeUtils | 200.56 kB |
chunk-3YZDHMVM.js | - | 184.00 kB |
chunk-XIPBJMHU.js | ImageryTileLayer | 160.85 kB |
chunk-ZJDEDZJH.js | ImageryLayer | 154.04 kB |
chunk-TERLLYWV.js | RouteLayer | 144.02 kB |
chunk-4TCNGLPI.js | - | 135.42 kB |
chunk-SQWJOVTC.js | - | 127.36 kB |
...and 491 more lazy chunks files. Use "--verbose" to show all the files.
Application bundle generation complete. [2.040 seconds]
▲ [WARNING] The glob pattern import("./**/*.entry.js*") did not match any files [empty-glob]
node_modules/@stencil/core/internal/client/index.js:82:2:
82 │ `./${bundleId}.entry.js${BUILD4.hotModuleReplacement && hmrVersi...
╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Watch mode enabled. Watching for file changes...
29 04 2025 17:17:38.397:WARN [karma]: No captured browser, open http://localhost:9876/
29 04 2025 17:17:38.411:INFO [karma-server]: Karma v6.4.4 server started at http://localhost:9876/
29 04 2025 17:17:38.411:INFO [launcher]: Launching browsers Chrome with concurrency unlimited
29 04 2025 17:17:38.414:INFO [launcher]: Starting browser Chrome
Initial chunk files | Names | Raw size
test_main.js | test_main | 2.26 MB |
chunk-MITMOUO7.js | - | 1.03 MB |
polyfills.js | polyfills | 977.55 kB |
chunk-S2PYDWQZ.js | - | 222.85 kB |
spec-app-test.spec.js | spec-app-test.spec | 122.86 kB |
chunk-CLNYNMKO.js | - | 68.76 kB |
jasmine-cleanup-1.js | jasmine-cleanup-1 | 66.02 kB |
chunk-NLY2VED7.js | - | 58.23 kB |
chunk-GMU4Y5RB.js | - | 44.21 kB |
chunk-IGE366CE.js | - | 35.16 kB |
chunk-PEI5DOI2.js | - | 33.49 kB |
chunk-67H43HPZ.js | - | 32.98 kB |
chunk-DLLIXDQJ.js | - | 31.16 kB |
chunk-GUQCX7FL.js | - | 28.99 kB |
chunk-KFYH4SPY.js | - | 27.55 kB |
chunk-WKWCFPFU.js | - | 25.27 kB |
chunk-RUHZSHAS.js | - | 24.68 kB |
chunk-VIIYUK2K.js | - | 23.59 kB |
chunk-S5SF36OC.js | - | 19.43 kB |
chunk-KG4BIUKD.js | - | 17.69 kB |
chunk-3FIEHSLD.js | - | 16.11 kB |
chunk-QU2MBKM2.js | - | 15.50 kB |
chunk-2JCYBFRE.js | - | 13.24 kB |
chunk-IYMCIKBN.js | - | 12.95 kB |
chunk-3F4PO5YK.js | - | 12.16 kB |
chunk-EMJGFKMO.js | - | 12.15 kB |
chunk-XTRHB6YJ.js | - | 12.00 kB |
chunk-3VQVZRJW.js | - | 11.90 kB |
chunk-U6GPAMFH.js | - | 11.44 kB |
chunk-P6PP5FFA.js | - | 8.39 kB |
chunk-QBVWJ5BQ.js | - | 8.02 kB |
chunk-V5GQNYJW.js | - | 7.58 kB |
chunk-ISE7BAXF.js | - | 6.83 kB |
chunk-57YFPQD2.js | - | 6.82 kB |
chunk-DCEWUTX7.js | - | 6.37 kB |
chunk-PQJOHYCX.js | - | 6.34 kB |
chunk-6KE5MFW7.js | - | 6.26 kB |
chunk-WLOOFSFD.js | - | 6.22 kB |
chunk-BC6NYFS4.js | - | 5.95 kB |
chunk-VSSF3FSX.js | - | 5.61 kB |
chunk-3VFNOLPC.js | - | 5.36 kB |
chunk-6AU6F7WO.js | - | 5.35 kB |
chunk-UIPW7YTA.js | - | 5.10 kB |
chunk-FWSFP64L.js | - | 4.90 kB |
chunk-54WWS2FG.js | - | 4.86 kB |
chunk-4A7UBKFO.js | - | 4.83 kB |
chunk-IMJ3IFYR.js | - | 4.53 kB |
chunk-HILJZ7CS.js | - | 4.52 kB |
chunk-QWWCY6CL.js | - | 4.21 kB |
chunk-R7RRKMJK.js | - | 4.15 kB |
chunk-TNWTOKB2.js | - | 3.94 kB |
chunk-6X7W7D2N.js | - | 3.94 kB |
chunk-Q6MIXVDY.js | - | 3.84 kB |
chunk-GBNDW62H.js | - | 3.77 kB |
chunk-J64CY5AX.js | - | 3.76 kB |
chunk-N3LKOPKJ.js | - | 3.57 kB |
chunk-NRBCM5Q2.js | - | 3.41 kB |
chunk-44L2S3WI.js | - | 3.39 kB |
chunk-PPIAAZ4T.js | - | 3.34 kB |
chunk-GIE5IDJZ.js | - | 3.25 kB |
chunk-IU6SVGTC.js | - | 3.24 kB |
chunk-6E6I6BDF.js | - | 3.24 kB |
chunk-PNIWOYG5.js | - | 3.20 kB |
chunk-N6LQ6P5V.js | - | 3.10 kB |
chunk-M7FDAUGU.js | - | 2.73 kB |
chunk-7DYNAUCF.js | - | 2.73 kB |
chunk-GJSXZBFL.js | - | 2.65 kB |
chunk-MOZ5H2V5.js | - | 2.57 kB |
chunk-3NRD5LN2.js | - | 2.42 kB |
chunk-SOPOEFYX.js | - | 2.42 kB |
chunk-P3TZLLHA.js | - | 1.80 kB |
chunk-DAQVEFAV.js | - | 1.80 kB |
chunk-X2MMQPE4.js | - | 1.65 kB |
chunk-TNTSCJFR.js | - | 1.60 kB |
chunk-76DAZ52M.js | - | 1.59 kB |
chunk-BEF5GDMO.js | - | 1.46 kB |
chunk-M7WB6VWV.js | - | 1.46 kB |
chunk-LQOQYXFP.js | - | 1.37 kB |
chunk-LU66KJFR.js | - | 1.35 kB |
chunk-O7FGNMQR.js | - | 1.34 kB |
chunk-PZL2QO6L.js | - | 1.24 kB |
chunk-LUJCFMKN.js | - | 1.20 kB |
chunk-YSTEUQC7.js | - | 1.16 kB |
chunk-35IVQMXG.js | - | 1.15 kB |
chunk-54V2O57B.js | - | 1.14 kB |
chunk-MITCB24Y.js | - | 1.12 kB |
chunk-WGMYO3T3.js | - | 1.06 kB |
chunk-TKTZDKMY.js | - | 949 bytes |
chunk-7RQR5TQA.js | - | 939 bytes |
chunk-NDVDKQJ3.js | - | 890 bytes |
chunk-AKU4GLYK.js | - | 868 bytes |
chunk-LFGNSQVW.js | - | 813 bytes |
chunk-WAOTNTT5.js | - | 808 bytes |
chunk-FVLEHQ7R.js | - | 783 bytes |
chunk-EYVR5RA3.js | - | 766 bytes |
chunk-MRRA2DQ2.js | - | 756 bytes |
chunk-IFS4WU72.js | - | 752 bytes |
chunk-24MRNFNH.js | - | 743 bytes |
chunk-N4BQOBXH.js | - | 707 bytes |
chunk-IUAL5ZYH.js | - | 661 bytes |
chunk-IWYL5UY2.js | - | 652 bytes |
chunk-RLZDILSZ.js | - | 642 bytes |
chunk-HW7FLCQX.js | - | 634 bytes |
chunk-MH64JGYN.js | - | 567 bytes |
chunk-QGXFAXUJ.js | - | 558 bytes |
chunk-SDIKYKAK.js | - | 539 bytes |
jasmine-cleanup-0.js | jasmine-cleanup-0 | 519 bytes |
chunk-67D6R4WZ.js | - | 484 bytes |
chunk-GAZNEZUD.js | - | 459 bytes |
chunk-SQ3QJA4A.js | - | 453 bytes |
chunk-SASCSLKH.js | - | 427 bytes |
chunk-SV7NTLFB.js | - | 425 bytes |
chunk-2YXNHQKF.js | - | 419 bytes |
chunk-JA2RTXAP.js | - | 394 bytes |
chunk-QQTTOYUI.js | - | 362 bytes |
chunk-ZFSYULG4.js | - | 344 bytes |
chunk-JJKQ67SD.js | - | 280 bytes |
chunk-E3S67AAZ.js | - | 276 bytes |
chunk-3VW3G2WH.js | - | 273 bytes |
chunk-ZSRCROYJ.js | - | 264 bytes |
chunk-XU3X4QFM.js | - | 233 bytes |
chunk-DEIM3ABM.js | - | 221 bytes |
chunk-QEGOSNHD.js | - | 217 bytes |
chunk-NLFHMHDN.js | - | 202 bytes |
chunk-PO4QYSZG.js | - | 130 bytes |
styles.css | styles | 96 bytes |
| Initial total | 5.50 MB
Lazy chunk files | Names | Raw size
chunk-FPAK4VYJ.js | GraphicsLayerView3D | 503.77 kB |
chunk-SA33J72D.js | FeaturePipelineWorker | 486.68 kB |
chunk-HTXXLWRH.js | editingTools | 347.22 kB |
chunk-VGBXL5IR.js | zipjs-wrapper | 261.96 kB |
chunk-C6QTVOF3.js | - | 242.15 kB |
chunk-3J7UAUOV.js | libtess-asm | 212.25 kB |
chunk-A5UECCLP.js | - | 203.28 kB |
chunk-QNBTGLJQ.js | - | 203.24 kB |
chunk-EFFLTRHO.js | arcadeUtils | 200.56 kB |
chunk-3YZDHMVM.js | - | 184.00 kB |
chunk-XIPBJMHU.js | ImageryTileLayer | 160.85 kB |
chunk-ZJDEDZJH.js | ImageryLayer | 154.04 kB |
chunk-TERLLYWV.js | RouteLayer | 144.02 kB |
chunk-4TCNGLPI.js | - | 135.42 kB |
chunk-SQWJOVTC.js | - | 127.36 kB |
...and 491 more lazy chunks files. Use "--verbose" to show all the files.
Application bundle generation complete. [1.584 seconds]
▲ [WARNING] The glob pattern import("./**/*.entry.js*") did not match any files [empty-glob]
node_modules/@stencil/core/internal/client/index.js:82:2:
82 │ `./${bundleId}.entry.js${BUILD4.hotModuleReplacement && hmrVersi...
╵ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
29 04 2025 17:17:39.948:INFO [Chrome 135.0.0.0 (Mac OS 10.15.7)]: Connected on socket QfCGrwYaDLDWznAIAAAB with id 67857799
Chrome 135.0.0.0 (Mac OS 10.15.7): Executed 1 of 1 SUCCESS (0.001 secs / 0.004 secs)
TOTAL: 1 SUCCESS
Chrome 135.0.0.0 (Mac OS 10.15.7): Executed 1 of 1 SUCCESS (0.012 secs / 0.001 secs)
TOTAL: 1 SUCCESS
The production code also runs the same function that imports/uses the large dependency and does not exhibit this issue during npm start
/npx ng serve
. Example output of that:
<user>@<machine> karma-esbuild % npm start
> karma-esbuild@0.0.0 start
> ng serve
Component HMR has been enabled.
If you encounter application reload issues, you can manually reload the page to bypass HMR and/or disable this feature with the `--no-hmr` command line option.
Please consider reporting any issues you encounter here: https://github.com/angular/angular-cli/issues
Initial chunk files | Names | Raw size
polyfills.js | polyfills | 90.20 kB |
main.js | main | 47.45 kB |
styles.css | styles | 96 bytes |
| Initial total | 137.74 kB
Application bundle generation complete. [1.821 seconds]
Watch mode enabled. Watching for file changes...
NOTE: Raw file sizes do not reflect development server per-request transformations.
➜ Local: http://localhost:4200/
➜ press h + enter to show help
Exception or Error
Your Environment
<user>@<machine> karma-esbuild % npx ng version
_ _ ____ _ ___
/ \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _|
/ △ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | |
/ ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | |
/_/ \_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___|
|___/
Angular CLI: 19.2.9
Node: 20.11.1
Package Manager: npm 10.2.4
OS: darwin arm64
Angular: 19.2.8
... common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, router
Package Version
---------------------------------------------------------
@angular-devkit/architect 0.1902.9
@angular-devkit/build-angular 19.2.9
@angular-devkit/core 19.2.9
@angular-devkit/schematics 19.2.9
@angular/cli 19.2.9
@schematics/angular 19.2.9
rxjs 7.8.2
typescript 5.7.3
zone.js 0.15.0
Anything else relevant?
Thanks so much for your help!