@angular/build 21.0.0-next.8 → 21.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/package.json +9 -9
  2. package/src/builders/application/index.js +39 -0
  3. package/src/builders/application/index.js.map +1 -1
  4. package/src/builders/dev-server/options.d.ts +3 -0
  5. package/src/builders/dev-server/options.js +2 -1
  6. package/src/builders/dev-server/options.js.map +1 -1
  7. package/src/builders/dev-server/schema.d.ts +9 -0
  8. package/src/builders/dev-server/schema.json +7 -0
  9. package/src/builders/dev-server/vite/index.js +12 -5
  10. package/src/builders/dev-server/vite/index.js.map +1 -1
  11. package/src/builders/dev-server/vite/server.js +1 -4
  12. package/src/builders/dev-server/vite/server.js.map +1 -1
  13. package/src/builders/extract-i18n/builder.js +1 -3
  14. package/src/builders/extract-i18n/builder.js.map +1 -1
  15. package/src/builders/karma/progress-reporter.js +2 -0
  16. package/src/builders/karma/progress-reporter.js.map +1 -1
  17. package/src/builders/unit-test/builder.js +0 -1
  18. package/src/builders/unit-test/builder.js.map +1 -1
  19. package/src/builders/unit-test/options.d.ts +5 -3
  20. package/src/builders/unit-test/options.js +23 -15
  21. package/src/builders/unit-test/options.js.map +1 -1
  22. package/src/builders/unit-test/runners/karma/executor.js +25 -6
  23. package/src/builders/unit-test/runners/karma/executor.js.map +1 -1
  24. package/src/builders/unit-test/runners/vitest/browser-provider.d.ts +3 -2
  25. package/src/builders/unit-test/runners/vitest/browser-provider.js +65 -16
  26. package/src/builders/unit-test/runners/vitest/browser-provider.js.map +1 -1
  27. package/src/builders/unit-test/runners/vitest/build-options.js +24 -1
  28. package/src/builders/unit-test/runners/vitest/build-options.js.map +1 -1
  29. package/src/builders/unit-test/runners/vitest/configuration.d.ts +15 -0
  30. package/src/builders/unit-test/runners/vitest/configuration.js +57 -0
  31. package/src/builders/unit-test/runners/vitest/configuration.js.map +1 -0
  32. package/src/builders/unit-test/runners/vitest/executor.js +35 -18
  33. package/src/builders/unit-test/runners/vitest/executor.js.map +1 -1
  34. package/src/builders/unit-test/runners/vitest/index.js +7 -2
  35. package/src/builders/unit-test/runners/vitest/index.js.map +1 -1
  36. package/src/builders/unit-test/runners/vitest/plugins.js +15 -6
  37. package/src/builders/unit-test/runners/vitest/plugins.js.map +1 -1
  38. package/src/builders/unit-test/schema.d.ts +26 -6
  39. package/src/builders/unit-test/schema.js.map +1 -1
  40. package/src/builders/unit-test/schema.json +12 -6
  41. package/src/builders/unit-test/test-discovery.js +6 -3
  42. package/src/builders/unit-test/test-discovery.js.map +1 -1
  43. package/src/tools/angular/compilation/angular-compilation.js +1 -5
  44. package/src/tools/angular/compilation/angular-compilation.js.map +1 -1
  45. package/src/tools/angular/compilation/jit-compilation.js +34 -2
  46. package/src/tools/angular/compilation/jit-compilation.js.map +1 -1
  47. package/src/tools/esbuild/application-code-bundle.js +1 -1
  48. package/src/tools/esbuild/application-code-bundle.js.map +1 -1
  49. package/src/tools/esbuild/i18n-inliner-worker.js +34 -2
  50. package/src/tools/esbuild/i18n-inliner-worker.js.map +1 -1
  51. package/src/tools/esbuild/i18n-locale-plugin.js +33 -15
  52. package/src/tools/esbuild/i18n-locale-plugin.js.map +1 -1
  53. package/src/tools/esbuild/javascript-transformer-worker.js +2 -2
  54. package/src/tools/esbuild/javascript-transformer-worker.js.map +1 -1
  55. package/src/tools/esbuild/javascript-transformer.js.map +1 -1
  56. package/src/tools/vite/middlewares/ssr-middleware.js +41 -5
  57. package/src/tools/vite/middlewares/ssr-middleware.js.map +1 -1
  58. package/src/tools/vite/plugins/angular-memory-plugin.js +34 -2
  59. package/src/tools/vite/plugins/angular-memory-plugin.js.map +1 -1
  60. package/src/tools/vite/plugins/index.d.ts +0 -1
  61. package/src/tools/vite/plugins/index.js +1 -3
  62. package/src/tools/vite/plugins/index.js.map +1 -1
  63. package/src/tools/vite/plugins/setup-middlewares-plugin.js +34 -2
  64. package/src/tools/vite/plugins/setup-middlewares-plugin.js.map +1 -1
  65. package/src/tools/vite/plugins/ssr-transform-plugin.js +34 -2
  66. package/src/tools/vite/plugins/ssr-transform-plugin.js.map +1 -1
  67. package/src/utils/environment-options.d.ts +1 -0
  68. package/src/utils/environment-options.js +6 -1
  69. package/src/utils/environment-options.js.map +1 -1
  70. package/src/utils/index-file/augment-index-html.js +34 -2
  71. package/src/utils/index-file/augment-index-html.js.map +1 -1
  72. package/src/utils/index-file/html-rewriting-stream.js +34 -2
  73. package/src/utils/index-file/html-rewriting-stream.js.map +1 -1
  74. package/src/utils/load-proxy-config.js +7 -21
  75. package/src/utils/load-proxy-config.js.map +1 -1
  76. package/src/utils/load-translations.js +1 -2
  77. package/src/utils/load-translations.js.map +1 -1
  78. package/src/utils/normalize-cache.js +1 -1
  79. package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.js +2 -13
  80. package/src/utils/server-rendering/esm-in-memory-loader/loader-hooks.js.map +1 -1
  81. package/src/utils/server-rendering/launch-server.js +36 -2
  82. package/src/utils/server-rendering/launch-server.js.map +1 -1
  83. package/src/utils/server-rendering/prerender.js +2 -25
  84. package/src/utils/server-rendering/prerender.js.map +1 -1
  85. package/src/utils/server-rendering/render-worker.js +42 -1
  86. package/src/utils/server-rendering/render-worker.js.map +1 -1
  87. package/src/utils/server-rendering/routes-extractor-worker.js +36 -0
  88. package/src/utils/server-rendering/routes-extractor-worker.js.map +1 -1
  89. package/src/utils/server-rendering/utils.d.ts +10 -0
  90. package/src/utils/server-rendering/utils.js +25 -0
  91. package/src/utils/server-rendering/utils.js.map +1 -1
  92. package/src/utils/service-worker.js +3 -6
  93. package/src/utils/service-worker.js.map +1 -1
  94. package/src/utils/supported-browsers.js +1 -1
  95. package/src/tools/vite/plugins/i18n-locale-plugin.d.ts +0 -14
  96. package/src/tools/vite/plugins/i18n-locale-plugin.js +0 -55
  97. package/src/tools/vite/plugins/i18n-locale-plugin.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["options.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AAgCH,4CA6FC;AAED,wDAEC;AA/HD,yDAAwF;AACxF,qCAAoD;AACpD,0DAA6B;AAC7B,iEAAoE;AACpE,mEAAmE;AACnE,yCAAwC;AAKxC,KAAK,UAAU,MAAM,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,MAAM,kBAAE,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAS,CAAC,IAAI,CAAC,CAAC;QAEtC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAC9B,SAAgC;IAEhC,OAAO,SAAS,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9B,OAAO,KAAK,KAAK,QAAQ;QACvB,CAAC,CAAE,CAAC,KAAK,EAAE,EAAE,CAAuC;QACpD,CAAC,CAAE,KAA2C,CACjD,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,gBAAgB,CACpC,OAAuB,EACvB,WAAmB,EACnB,OAA+B;IAE/B,mEAAmE;IACnE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC5C,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACtE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,IAAA,sCAAmB,EAAC,aAAa,EAAE,eAAe,CAAC,CAAC;IAE/F,iFAAiF;IACjF,MAAM,YAAY,GAAG,IAAA,uCAAqB,EAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IAC3E,YAAY,CAAC,IAAI,GAAG,mBAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAE9D,oGAAoG;IACpG,MAAM,oBAAoB,GAAG,OAAO,CAAC,WAAW,IAAI,eAAe,CAAC;IACpE,MAAM,WAAW,GAAG,IAAA,kCAAsB,EAAC,oBAAoB,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAEvF,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IAE1F,IAAI,EAAE,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,eAAe,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAEtE,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAChC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,gBAAgB,GAAG,mBAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAC5D,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,mBAAmB,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,gBAAgB,GAAG,mBAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;QACtE,IAAI,MAAM,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACnC,yEAAyE;YACzE,QAAQ,GAAG,mBAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAA,WAAK,GAAE,CAAC;IACrC,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QAC1C,OAAO,CAAC,MAAM,CAAC,IAAI,CACjB,+EAA+E,CAChF,CAAC;QACF,KAAK,GAAG,IAAI,CAAC;IACf,CAAC;IAED,OAAO;QACL,gCAAgC;QAChC,aAAa;QACb,WAAW;QACX,iBAAiB;QACjB,YAAY;QACZ,yCAAyC;QACzC,WAAW;QACX,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC;QAC5C,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM;QACN,UAAU,EAAE,MAAM,IAAI,QAAQ;QAC9B,QAAQ,EAAE;YACR,OAAO,EAAE,OAAO,CAAC,QAAQ;YACzB,OAAO,EAAE,OAAO,CAAC,eAAe;YAChC,OAAO,EAAE,OAAO,CAAC,eAAe;YAChC,SAAS,EAAE,uBAAuB,CAAC,OAAO,CAAC,iBAAiB,CAAC;YAC7D,UAAU,EAAE,OAAO,CAAC,kBAAkB;YACtC,8FAA8F;YAC9F,sDAAsD;YACtD,UAAU,EAAE,OAAO,CAAC,kBAKnB;SACF;QACD,QAAQ;QACR,aAAa,EAAE,QAAQ;QACvB,SAAS,EAAE,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC;QACrD,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,QAAQ;QACR,eAAe,EAAE,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS;QAChE,KAAK;QACL,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;QAC7B,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,KAAK;QACvB,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,mBAAI,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC;QACvF,UAAU,EAAE,OAAO,CAAC,UAAU;YAC5B,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,mBAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YAC5E,CAAC,CAAC,EAAE;QACN,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,YAAY,EACV,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY;KAC3F,CAAC;AACJ,CAAC;AAED,SAAgB,sBAAsB,CAAC,YAAsB,EAAE;IAC7D,OAAO,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvF,CAAC"}
@@ -39,8 +39,13 @@ var __importStar = (this && this.__importStar) || (function () {
39
39
  return result;
40
40
  };
41
41
  })();
42
+ var __importDefault = (this && this.__importDefault) || function (mod) {
43
+ return (mod && mod.__esModule) ? mod : { "default": mod };
44
+ };
42
45
  Object.defineProperty(exports, "__esModule", { value: true });
43
46
  exports.KarmaExecutor = void 0;
47
+ const promises_1 = __importDefault(require("node:fs/promises"));
48
+ const node_path_1 = __importDefault(require("node:path"));
44
49
  class KarmaExecutor {
45
50
  context;
46
51
  options;
@@ -59,14 +64,28 @@ class KarmaExecutor {
59
64
  if (unitTestOptions.setupFiles.length) {
60
65
  context.logger.warn('The "karma" test runner does not support the "setupFiles" option. The option will be ignored.');
61
66
  }
62
- if (unitTestOptions.coverage?.all) {
63
- context.logger.warn('The "karma" test runner does not support the "coverageAll" option. The option will be ignored.');
64
- }
65
67
  if (unitTestOptions.coverage?.include) {
66
68
  context.logger.warn('The "karma" test runner does not support the "coverageInclude" option. The option will be ignored.');
67
69
  }
68
70
  const buildTargetOptions = (await context.validateOptions(await context.getTargetOptions(unitTestOptions.buildTarget), await context.getBuilderNameForTarget(unitTestOptions.buildTarget)));
71
+ let karmaConfig;
72
+ if (typeof unitTestOptions.runnerConfig === 'string') {
73
+ karmaConfig = unitTestOptions.runnerConfig;
74
+ context.logger.info(`Using Karma configuration file: ${karmaConfig}`);
75
+ }
76
+ else if (unitTestOptions.runnerConfig) {
77
+ const potentialPath = node_path_1.default.join(unitTestOptions.projectRoot, 'karma.conf.js');
78
+ try {
79
+ await promises_1.default.access(potentialPath);
80
+ karmaConfig = potentialPath;
81
+ context.logger.info(`Using Karma configuration file: ${karmaConfig}`);
82
+ }
83
+ catch {
84
+ context.logger.info('No Karma configuration file found. Using default configuration.');
85
+ }
86
+ }
69
87
  const karmaOptions = {
88
+ karmaConfig,
70
89
  tsConfig: unitTestOptions.tsConfig ?? buildTargetOptions.tsConfig,
71
90
  polyfills: buildTargetOptions.polyfills,
72
91
  assets: buildTargetOptions.assets,
@@ -85,8 +104,8 @@ class KarmaExecutor {
85
104
  poll: buildTargetOptions.poll,
86
105
  preserveSymlinks: buildTargetOptions.preserveSymlinks,
87
106
  browsers: unitTestOptions.browsers?.join(','),
88
- codeCoverage: !!unitTestOptions.coverage,
89
- codeCoverageExclude: unitTestOptions.coverage?.exclude,
107
+ codeCoverage: unitTestOptions.coverage.enabled,
108
+ codeCoverageExclude: unitTestOptions.coverage.exclude,
90
109
  fileReplacements: buildTargetOptions.fileReplacements,
91
110
  reporters: unitTestOptions.reporters?.map((reporter) => {
92
111
  // Karma only supports string reporters.
@@ -114,7 +133,7 @@ class KarmaExecutor {
114
133
  options.client.args.push('--grep', filter);
115
134
  }
116
135
  // Add coverage options
117
- if (unitTestOptions.coverage) {
136
+ if (unitTestOptions.coverage.enabled) {
118
137
  const { thresholds, watermarks } = unitTestOptions.coverage;
119
138
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
120
139
  const coverageReporter = (options.coverageReporter ??= {});
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["executor.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQH,MAAa,aAAa;IAEd;IACA;IAFV,YACU,OAAuB,EACvB,OAAyC;QADzC,YAAO,GAAP,OAAO,CAAgB;QACvB,YAAO,GAAP,OAAO,CAAkC;IAChD,CAAC;IAEJ,KAAK,CAAC,CAAC,OAAO;QACZ,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAEnD,IAAI,eAAe,CAAC,eAAe,EAAE,CAAC;YACpC,OAAO,CAAC,MAAM,CAAC,IAAI,CACjB,oGAAoG,CACrG,CAAC;QACJ,CAAC;QAED,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC;YAC1B,OAAO,CAAC,MAAM,CAAC,IAAI,CACjB,0FAA0F,CAC3F,CAAC;QACJ,CAAC;QAED,IAAI,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACtC,OAAO,CAAC,MAAM,CAAC,IAAI,CACjB,+FAA+F,CAChG,CAAC;QACJ,CAAC;QAED,IAAI,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;YAClC,OAAO,CAAC,MAAM,CAAC,IAAI,CACjB,gGAAgG,CACjG,CAAC;QACJ,CAAC;QAED,IAAI,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;YACtC,OAAO,CAAC,MAAM,CAAC,IAAI,CACjB,oGAAoG,CACrG,CAAC;QACJ,CAAC;QAED,MAAM,kBAAkB,GAAG,CAAC,MAAM,OAAO,CAAC,eAAe,CACvD,MAAM,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC,WAAW,CAAC,EAC3D,MAAM,OAAO,CAAC,uBAAuB,CAAC,eAAe,CAAC,WAAW,CAAC,CACnE,CAAiD,CAAC;QAEnD,MAAM,YAAY,GAAwB;YACxC,QAAQ,EAAE,eAAe,CAAC,QAAQ,IAAI,kBAAkB,CAAC,QAAQ;YACjE,SAAS,EAAE,kBAAkB,CAAC,SAAS;YACvC,MAAM,EAAE,kBAAkB,CAAC,MAAM;YACjC,OAAO,EAAE,kBAAkB,CAAC,OAAO;YACnC,MAAM,EAAE,kBAAkB,CAAC,MAAM;YACjC,mBAAmB,EAAE,kBAAkB,CAAC,mBAAmB;YAC3D,wBAAwB,EAAE,kBAAkB,CAAC,wBAAwB;YACrE,oBAAoB,EAAE,kBAAkB,CAAC,oBAAoB;YAC7D,MAAM,EAAE,kBAAkB,CAAC,MAAM;YACjC,MAAM,EAAE,kBAAkB,CAAC,MAAM;YACjC,OAAO,EAAE,eAAe,CAAC,OAAO;YAChC,OAAO,EAAE,eAAe,CAAC,OAAO;YAChC,SAAS,EAAE,kBAAkB,CAAC,SAAS;YACvC,QAAQ,EAAE,eAAe,CAAC,aAAa,IAAI,kBAAkB,CAAC,QAAQ;YACtE,KAAK,EAAE,eAAe,CAAC,KAAK;YAC5B,IAAI,EAAE,kBAAkB,CAAC,IAAI;YAC7B,gBAAgB,EAAE,kBAAkB,CAAC,gBAAgB;YACrD,QAAQ,EAAE,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC;YAC7C,YAAY,EAAE,CAAC,CAAC,eAAe,CAAC,QAAQ;YACxC,mBAAmB,EAAE,eAAe,CAAC,QAAQ,EAAE,OAAO;YACtD,gBAAgB,EAAE,kBAAkB,CAAC,gBAAgB;YACrD,SAAS,EAAE,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACrD,wCAAwC;gBACxC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxC,OAAO,CAAC,MAAM,CAAC,IAAI,CACjB,6DAA6D,QAAQ,CAAC,CAAC,CAAC,0CAA0C,CACnH,CAAC;gBACJ,CAAC;gBAED,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC,CAAC;YACF,iBAAiB,EAAE,kBAAkB,CAAC,iBAAiB;YACvD,GAAG,EAAE,kBAAkB,CAAC,GAAG;SAC5B,CAAC;QAEF,MAAM,gBAAgB,GAAG;YACvB,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE;gBACxB,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;oBAC3B,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;oBACpC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;wBAC/C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CACtB,uDAAuD;4BACrD,gEAAgE,CACnE,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,MAAM,GAAG,IAAI,MAAM,GAAG,CAAC;oBACzB,CAAC;oBAED,OAAO,CAAC,MAAM,KAAK,EAAE,CAAC;oBACtB,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;oBAC3B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAC7C,CAAC;gBAED,uBAAuB;gBACvB,IAAI,eAAe,CAAC,QAAQ,EAAE,CAAC;oBAC7B,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,QAAQ,CAAC;oBAC5D,8DAA8D;oBAC9D,MAAM,gBAAgB,GAAG,CAAE,OAAe,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC;oBAEpE,IAAI,UAAU,EAAE,CAAC;wBACf,gBAAgB,CAAC,KAAK,GAAG,UAAU,CAAC,OAAO;4BACzC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE;4BACtB,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;oBAC7B,CAAC;oBAED,IAAI,UAAU,EAAE,CAAC;wBACf,gBAAgB,CAAC,UAAU,GAAG,UAAU,CAAC;oBAC3C,CAAC;gBACH,CAAC;gBAED,OAAO,OAAO,CAAC;YACjB,CAAC;SACsC,CAAC;QAE1C,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,gBAAgB,GAAC,CAAC;QAEnD,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,6CAA6C;IAC/C,CAAC;CACF;AA/HD,sCA+HC"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["executor.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGH,gEAAkC;AAClC,0DAA6B;AAM7B,MAAa,aAAa;IAEd;IACA;IAFV,YACU,OAAuB,EACvB,OAAyC;QADzC,YAAO,GAAP,OAAO,CAAgB;QACvB,YAAO,GAAP,OAAO,CAAkC;IAChD,CAAC;IAEJ,KAAK,CAAC,CAAC,OAAO;QACZ,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAEnD,IAAI,eAAe,CAAC,eAAe,EAAE,CAAC;YACpC,OAAO,CAAC,MAAM,CAAC,IAAI,CACjB,oGAAoG,CACrG,CAAC;QACJ,CAAC;QAED,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC;YAC1B,OAAO,CAAC,MAAM,CAAC,IAAI,CACjB,0FAA0F,CAC3F,CAAC;QACJ,CAAC;QAED,IAAI,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACtC,OAAO,CAAC,MAAM,CAAC,IAAI,CACjB,+FAA+F,CAChG,CAAC;QACJ,CAAC;QAED,IAAI,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;YACtC,OAAO,CAAC,MAAM,CAAC,IAAI,CACjB,oGAAoG,CACrG,CAAC;QACJ,CAAC;QAED,MAAM,kBAAkB,GAAG,CAAC,MAAM,OAAO,CAAC,eAAe,CACvD,MAAM,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC,WAAW,CAAC,EAC3D,MAAM,OAAO,CAAC,uBAAuB,CAAC,eAAe,CAAC,WAAW,CAAC,CACnE,CAAiD,CAAC;QAEnD,IAAI,WAA+B,CAAC;QACpC,IAAI,OAAO,eAAe,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YACrD,WAAW,GAAG,eAAe,CAAC,YAAY,CAAC;YAC3C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,WAAW,EAAE,CAAC,CAAC;QACxE,CAAC;aAAM,IAAI,eAAe,CAAC,YAAY,EAAE,CAAC;YACxC,MAAM,aAAa,GAAG,mBAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAC9E,IAAI,CAAC;gBACH,MAAM,kBAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBAC/B,WAAW,GAAG,aAAa,CAAC;gBAC5B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,WAAW,EAAE,CAAC,CAAC;YACxE,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAwB;YACxC,WAAW;YACX,QAAQ,EAAE,eAAe,CAAC,QAAQ,IAAI,kBAAkB,CAAC,QAAQ;YACjE,SAAS,EAAE,kBAAkB,CAAC,SAAS;YACvC,MAAM,EAAE,kBAAkB,CAAC,MAAM;YACjC,OAAO,EAAE,kBAAkB,CAAC,OAAO;YACnC,MAAM,EAAE,kBAAkB,CAAC,MAAM;YACjC,mBAAmB,EAAE,kBAAkB,CAAC,mBAAmB;YAC3D,wBAAwB,EAAE,kBAAkB,CAAC,wBAAwB;YACrE,oBAAoB,EAAE,kBAAkB,CAAC,oBAAoB;YAC7D,MAAM,EAAE,kBAAkB,CAAC,MAAM;YACjC,MAAM,EAAE,kBAAkB,CAAC,MAAM;YACjC,OAAO,EAAE,eAAe,CAAC,OAAO;YAChC,OAAO,EAAE,eAAe,CAAC,OAAO;YAChC,SAAS,EAAE,kBAAkB,CAAC,SAAS;YACvC,QAAQ,EAAE,eAAe,CAAC,aAAa,IAAI,kBAAkB,CAAC,QAAQ;YACtE,KAAK,EAAE,eAAe,CAAC,KAAK;YAC5B,IAAI,EAAE,kBAAkB,CAAC,IAAI;YAC7B,gBAAgB,EAAE,kBAAkB,CAAC,gBAAgB;YACrD,QAAQ,EAAE,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC;YAC7C,YAAY,EAAE,eAAe,CAAC,QAAQ,CAAC,OAAO;YAC9C,mBAAmB,EAAE,eAAe,CAAC,QAAQ,CAAC,OAAO;YACrD,gBAAgB,EAAE,kBAAkB,CAAC,gBAAgB;YACrD,SAAS,EAAE,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACrD,wCAAwC;gBACxC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxC,OAAO,CAAC,MAAM,CAAC,IAAI,CACjB,6DAA6D,QAAQ,CAAC,CAAC,CAAC,0CAA0C,CACnH,CAAC;gBACJ,CAAC;gBAED,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC,CAAC;YACF,iBAAiB,EAAE,kBAAkB,CAAC,iBAAiB;YACvD,GAAG,EAAE,kBAAkB,CAAC,GAAG;SAC5B,CAAC;QAEF,MAAM,gBAAgB,GAAG;YACvB,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE;gBACxB,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;oBAC3B,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;oBACpC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;wBAC/C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CACtB,uDAAuD;4BACrD,gEAAgE,CACnE,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,MAAM,GAAG,IAAI,MAAM,GAAG,CAAC;oBACzB,CAAC;oBAED,OAAO,CAAC,MAAM,KAAK,EAAE,CAAC;oBACtB,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;oBAC3B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAC7C,CAAC;gBAED,uBAAuB;gBACvB,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACrC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,QAAQ,CAAC;oBAC5D,8DAA8D;oBAC9D,MAAM,gBAAgB,GAAG,CAAE,OAAe,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC;oBAEpE,IAAI,UAAU,EAAE,CAAC;wBACf,gBAAgB,CAAC,KAAK,GAAG,UAAU,CAAC,OAAO;4BACzC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE;4BACtB,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;oBAC7B,CAAC;oBAED,IAAI,UAAU,EAAE,CAAC;wBACf,gBAAgB,CAAC,UAAU,GAAG,UAAU,CAAC;oBAC3C,CAAC;gBACH,CAAC;gBAED,OAAO,OAAO,CAAC;YACjB,CAAC;SACsC,CAAC;QAE1C,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,gBAAgB,GAAC,CAAC;QAEnD,KAAK,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,6CAA6C;IAC/C,CAAC;CACF;AAzID,sCAyIC"}
@@ -5,11 +5,12 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
+ import type { BrowserConfigOptions } from 'vitest/node';
8
9
  export interface BrowserConfiguration {
9
- browser?: import('vitest/node').BrowserConfigOptions;
10
+ browser?: BrowserConfigOptions;
10
11
  errors?: string[];
11
12
  }
12
13
  export declare function setupBrowserConfiguration(browsers: string[] | undefined, debug: boolean, projectSourceRoot: string, viewport: {
13
14
  width: number;
14
15
  height: number;
15
- } | undefined): BrowserConfiguration;
16
+ } | undefined): Promise<BrowserConfiguration>;
@@ -6,9 +6,43 @@
6
6
  * Use of this source code is governed by an MIT-style license that can be
7
7
  * found in the LICENSE file at https://angular.dev/license
8
8
  */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
9
42
  Object.defineProperty(exports, "__esModule", { value: true });
10
43
  exports.setupBrowserConfiguration = setupBrowserConfiguration;
11
44
  const node_module_1 = require("node:module");
45
+ const error_1 = require("../../../../utils/error");
12
46
  function findBrowserProvider(projectResolver) {
13
47
  // One of these must be installed in the project to use browser testing
14
48
  const vitestBuiltinProviders = ['playwright', 'webdriverio'];
@@ -28,31 +62,46 @@ function normalizeBrowserName(browserName) {
28
62
  const normalized = browserName.toLowerCase();
29
63
  return normalized.replace(/headless$/, '');
30
64
  }
31
- function setupBrowserConfiguration(browsers, debug, projectSourceRoot, viewport) {
65
+ async function setupBrowserConfiguration(browsers, debug, projectSourceRoot, viewport) {
32
66
  if (browsers === undefined) {
33
67
  return {};
34
68
  }
35
69
  const projectResolver = (0, node_module_1.createRequire)(projectSourceRoot + '/').resolve;
36
70
  let errors;
37
- try {
38
- projectResolver('@vitest/browser');
39
- }
40
- catch {
41
- errors ??= [];
42
- errors.push('The "browsers" option requires the "@vitest/browser" package to be installed within the project.' +
43
- ' Please install this package and rerun the test command.');
44
- }
45
- const provider = findBrowserProvider(projectResolver);
46
- if (!provider) {
71
+ const providerName = findBrowserProvider(projectResolver);
72
+ if (!providerName) {
47
73
  errors ??= [];
48
74
  errors.push('The "browsers" option requires either "playwright" or "webdriverio" to be installed within the project.' +
49
75
  ' Please install one of these packages and rerun the test command.');
50
76
  }
51
- // Vitest current requires the playwright browser provider to use the inspect-brk option used by "debug"
52
- if (debug && provider !== 'playwright') {
53
- errors ??= [];
54
- errors.push('Debugging browser mode tests currently requires the use of "playwright".' +
55
- ' Please install this package and rerun the test command.');
77
+ let provider;
78
+ if (providerName) {
79
+ const providerPackage = `@vitest/browser-${providerName}`;
80
+ try {
81
+ const providerModule = await Promise.resolve(`${projectResolver(providerPackage)}`).then(s => __importStar(require(s)));
82
+ // Validate that the imported module has the expected structure
83
+ const providerFactory = providerModule[providerName];
84
+ if (typeof providerFactory === 'function') {
85
+ provider = providerFactory();
86
+ }
87
+ else {
88
+ errors ??= [];
89
+ errors.push(`The "${providerPackage}" package does not have a valid browser provider export.`);
90
+ }
91
+ }
92
+ catch (e) {
93
+ (0, error_1.assertIsError)(e);
94
+ errors ??= [];
95
+ // Check for a module not found error to provide a more specific message
96
+ if (e.code === 'ERR_MODULE_NOT_FOUND') {
97
+ errors.push(`The "browsers" option with "${providerName}" requires the "${providerPackage}" package.` +
98
+ ' Please install this package and rerun the test command.');
99
+ }
100
+ else {
101
+ // Handle other potential errors during import
102
+ errors.push(`An error occurred while loading the "${providerPackage}" browser provider:\n ${e.message}`);
103
+ }
104
+ }
56
105
  }
57
106
  if (errors) {
58
107
  return { errors };
@@ -1 +1 @@
1
- {"version":3,"file":"browser-provider.js","sourceRoot":"","sources":["browser-provider.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAmCH,8DA4DC;AA7FD,6CAA4C;AAO5C,SAAS,mBAAmB,CAC1B,eAAsC;IAEtC,uEAAuE;IACvE,MAAM,sBAAsB,GAAG,CAAC,YAAY,EAAE,aAAa,CAAU,CAAC;IAEtE,KAAK,MAAM,YAAY,IAAI,sBAAsB,EAAE,CAAC;QAClD,IAAI,CAAC;YACH,eAAe,CAAC,YAAY,CAAC,CAAC;YAE9B,OAAO,YAAY,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,oBAAoB,CAAC,WAAmB;IAC/C,sGAAsG;IACtG,qEAAqE;IACrE,oDAAoD;IACpD,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAE7C,OAAO,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,yBAAyB,CACvC,QAA8B,EAC9B,KAAc,EACd,iBAAyB,EACzB,QAAuD;IAEvD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,eAAe,GAAG,IAAA,2BAAa,EAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC;IACvE,IAAI,MAA4B,CAAC;IAEjC,IAAI,CAAC;QACH,eAAe,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,KAAK,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CACT,kGAAkG;YAChG,0DAA0D,CAC7D,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACtD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,KAAK,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CACT,yGAAyG;YACvG,mEAAmE,CACtE,CAAC;IACJ,CAAC;IAED,wGAAwG;IACxG,IAAI,KAAK,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QACvC,MAAM,KAAK,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CACT,0EAA0E;YACxE,0DAA0D,CAC7D,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAE1F,MAAM,OAAO,GAAG;QACd,OAAO,EAAE,IAAI;QACb,QAAQ;QACR,QAAQ;QACR,EAAE,EAAE,CAAC,QAAQ;QACb,QAAQ;QACR,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACxC,OAAO,EAAE,oBAAoB,CAAC,WAAW,CAAC;SAC3C,CAAC,CAAC;KACiD,CAAC;IAEvD,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"browser-provider.js","sourceRoot":"","sources":["browser-provider.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,20 @@ const path_1 = require("../../../../utils/path");
16
16
  const schema_1 = require("../../../application/schema");
17
17
  const options_1 = require("../../options");
18
18
  const test_discovery_1 = require("../../test-discovery");
19
+ /**
20
+ * A list of Angular related packages that should be marked as external.
21
+ * This allows Vite to pre-bundle them, improving performance.
22
+ */
23
+ const ANGULAR_PACKAGES_TO_EXTERNALIZE = [
24
+ '@angular/core',
25
+ '@angular/common',
26
+ '@angular/platform-browser',
27
+ '@angular/compiler',
28
+ '@angular/router',
29
+ '@angular/forms',
30
+ '@angular/animations',
31
+ 'rxjs',
32
+ ];
19
33
  function createTestBedInitVirtualFile(providersFile, projectSourceRoot, polyfills = []) {
20
34
  const usesZoneJS = polyfills.includes('zone.js');
21
35
  let providersImport = 'const providers = [];';
@@ -70,6 +84,15 @@ async function getVitestBuildOptions(options, baseBuildOptions) {
70
84
  removeTestExtension: true,
71
85
  });
72
86
  entryPoints.set('init-testbed', 'angular:test-bed-init');
87
+ const externalDependencies = new Set(['vitest']);
88
+ if (!options.browsers?.length) {
89
+ // Only add for non-browser setups.
90
+ // Comprehensive browser prebundling will be handled separately.
91
+ ANGULAR_PACKAGES_TO_EXTERNALIZE.forEach((dep) => externalDependencies.add(dep));
92
+ }
93
+ if (baseBuildOptions.externalDependencies) {
94
+ baseBuildOptions.externalDependencies.forEach((dep) => externalDependencies.add(dep));
95
+ }
73
96
  const buildOptions = {
74
97
  ...baseBuildOptions,
75
98
  watch,
@@ -88,7 +111,7 @@ async function getVitestBuildOptions(options, baseBuildOptions) {
88
111
  outputHashing: adjustOutputHashing(baseBuildOptions.outputHashing),
89
112
  optimization: false,
90
113
  entryPoints,
91
- externalDependencies: ['vitest', '@vitest/browser/context'],
114
+ externalDependencies: [...externalDependencies],
92
115
  };
93
116
  buildOptions.polyfills = (0, options_1.injectTestingPolyfills)(buildOptions.polyfills);
94
117
  const testBedInitContents = createTestBedInitVirtualFile(providersFile, projectSourceRoot, buildOptions.polyfills);
@@ -1 +1 @@
1
- {"version":3,"file":"build-options.js","sourceRoot":"","sources":["build-options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-options.js","sourceRoot":"","sources":["build-options.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.dev/license
7
+ */
8
+ /**
9
+ * Finds the Vitest configuration file in the given search directories.
10
+ *
11
+ * @param searchDirs An array of directories to search for the configuration file.
12
+ * @returns The path to the configuration file, or `false` if no file is found.
13
+ * Returning `false` is used to disable Vitest's default configuration file search.
14
+ */
15
+ export declare function findVitestBaseConfig(searchDirs: string[]): Promise<string | false>;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.dev/license
8
+ */
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.findVitestBaseConfig = findVitestBaseConfig;
14
+ /**
15
+ * @fileoverview
16
+ * This file contains utility functions for finding the Vitest base configuration file.
17
+ */
18
+ const promises_1 = require("node:fs/promises");
19
+ const node_path_1 = __importDefault(require("node:path"));
20
+ /**
21
+ * A list of potential Vitest configuration filenames.
22
+ * The order of the files is important as the first one found will be used.
23
+ */
24
+ const POTENTIAL_CONFIGS = [
25
+ 'vitest-base.config.ts',
26
+ 'vitest-base.config.mts',
27
+ 'vitest-base.config.cts',
28
+ 'vitest-base.config.js',
29
+ 'vitest-base.config.mjs',
30
+ 'vitest-base.config.cjs',
31
+ ];
32
+ /**
33
+ * Finds the Vitest configuration file in the given search directories.
34
+ *
35
+ * @param searchDirs An array of directories to search for the configuration file.
36
+ * @returns The path to the configuration file, or `false` if no file is found.
37
+ * Returning `false` is used to disable Vitest's default configuration file search.
38
+ */
39
+ async function findVitestBaseConfig(searchDirs) {
40
+ const uniqueDirs = new Set(searchDirs);
41
+ for (const dir of uniqueDirs) {
42
+ try {
43
+ const entries = await (0, promises_1.readdir)(dir, { withFileTypes: true });
44
+ const files = new Set(entries.filter((e) => e.isFile()).map((e) => e.name));
45
+ for (const potential of POTENTIAL_CONFIGS) {
46
+ if (files.has(potential)) {
47
+ return node_path_1.default.join(dir, potential);
48
+ }
49
+ }
50
+ }
51
+ catch {
52
+ // Ignore directories that cannot be read
53
+ }
54
+ }
55
+ return false;
56
+ }
57
+ //# sourceMappingURL=configuration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration.js","sourceRoot":"","sources":["configuration.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AA8BH,oDAkBC;AA9CD;;;GAGG;AAEH,+CAA2C;AAC3C,0DAA6B;AAE7B;;;GAGG;AACH,MAAM,iBAAiB,GAAG;IACxB,uBAAuB;IACvB,wBAAwB;IACxB,wBAAwB;IACxB,uBAAuB;IACvB,wBAAwB;IACxB,wBAAwB;CACzB,CAAC;AAEF;;;;;;GAMG;AACI,KAAK,UAAU,oBAAoB,CAAC,UAAoB;IAC7D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,kBAAO,EAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5D,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAE5E,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE,CAAC;gBAC1C,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACzB,OAAO,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;QAC3C,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -46,11 +46,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
46
46
  exports.VitestExecutor = void 0;
47
47
  const node_assert_1 = __importDefault(require("node:assert"));
48
48
  const node_path_1 = __importDefault(require("node:path"));
49
+ const picomatch_1 = require("picomatch");
49
50
  const error_1 = require("../../../../utils/error");
50
- const load_esm_1 = require("../../../../utils/load-esm");
51
51
  const path_1 = require("../../../../utils/path");
52
52
  const results_1 = require("../../../application/results");
53
53
  const browser_provider_1 = require("./browser-provider");
54
+ const configuration_1 = require("./configuration");
54
55
  const plugins_1 = require("./plugins");
55
56
  class VitestExecutor {
56
57
  vitest;
@@ -136,10 +137,12 @@ class VitestExecutor {
136
137
  return testSetupFiles;
137
138
  }
138
139
  async initializeVitest() {
139
- const { coverage, reporters, outputFile, workspaceRoot, browsers, debug, watch, browserViewport, } = this.options;
140
+ const { coverage, reporters, outputFile, workspaceRoot, browsers, debug, watch, browserViewport, ui, } = this.options;
140
141
  let vitestNodeModule;
142
+ let vitestCoverageModule;
141
143
  try {
142
- vitestNodeModule = await (0, load_esm_1.loadEsmModule)('vitest/node');
144
+ vitestCoverageModule = await Promise.resolve().then(() => __importStar(require('vitest/coverage')));
145
+ vitestNodeModule = await Promise.resolve().then(() => __importStar(require('vitest/node')));
143
146
  }
144
147
  catch (error) {
145
148
  (0, error_1.assertIsError)(error);
@@ -149,8 +152,23 @@ class VitestExecutor {
149
152
  throw new Error('The `vitest` package was not found. Please install the package and rerun the test command.');
150
153
  }
151
154
  const { startVitest } = vitestNodeModule;
155
+ // Augment BaseCoverageProvider to include logic to support the built virtual files.
156
+ // Temporary workaround to avoid the direct filesystem checks in the base provider that
157
+ // were introduced in v4. Also ensures that all built virtual files are available.
158
+ const builtVirtualFiles = this.buildResultFiles;
159
+ vitestCoverageModule.BaseCoverageProvider.prototype.isIncluded = function (filename) {
160
+ const relativeFilename = node_path_1.default.relative(workspaceRoot, filename);
161
+ if (!this.options.include || builtVirtualFiles.has(relativeFilename)) {
162
+ return !(0, picomatch_1.isMatch)(relativeFilename, this.options.exclude);
163
+ }
164
+ else {
165
+ return (0, picomatch_1.isMatch)(relativeFilename, this.options.include, {
166
+ ignore: this.options.exclude,
167
+ });
168
+ }
169
+ };
152
170
  // Setup vitest browser options if configured
153
- const browserOptions = (0, browser_provider_1.setupBrowserConfiguration)(browsers, debug, this.options.projectSourceRoot, browserViewport);
171
+ const browserOptions = await (0, browser_provider_1.setupBrowserConfiguration)(browsers, debug, this.options.projectSourceRoot, browserViewport);
154
172
  if (browserOptions.errors?.length) {
155
173
  throw new Error(browserOptions.errors.join('\n'));
156
174
  }
@@ -172,20 +190,25 @@ class VitestExecutor {
172
190
  fileParallelism: false,
173
191
  }
174
192
  : {};
193
+ const runnerConfig = this.options.runnerConfig;
175
194
  return startVitest('test', undefined, {
176
- // Disable configuration file resolution/loading
177
- config: false,
195
+ config: runnerConfig === true
196
+ ? await (0, configuration_1.findVitestBaseConfig)([this.options.projectRoot, this.options.workspaceRoot])
197
+ : runnerConfig,
178
198
  root: workspaceRoot,
179
199
  project: ['base', this.projectName],
180
200
  name: 'base',
181
201
  include: [],
182
202
  testNamePattern: this.options.filter,
183
- reporters: reporters ?? ['default'],
184
- outputFile,
185
203
  watch,
186
- coverage: await generateCoverageOption(coverage, this.projectName),
187
- ...debugOptions,
204
+ ui,
188
205
  }, {
206
+ test: {
207
+ coverage: await generateCoverageOption(coverage, this.projectName),
208
+ outputFile,
209
+ ...debugOptions,
210
+ ...(reporters ? { reporters } : {}),
211
+ },
189
212
  server: {
190
213
  // Disable the actual file watcher. The boolean watch option above should still
191
214
  // be enabled as it controls other internal behavior related to rerunning tests.
@@ -197,22 +220,16 @@ class VitestExecutor {
197
220
  }
198
221
  exports.VitestExecutor = VitestExecutor;
199
222
  async function generateCoverageOption(coverage, projectName) {
200
- if (!coverage) {
201
- return {
202
- enabled: false,
203
- };
204
- }
205
223
  let defaultExcludes = [];
206
224
  if (coverage.exclude) {
207
225
  try {
208
- const vitestConfig = await (0, load_esm_1.loadEsmModule)('vitest/config');
226
+ const vitestConfig = await Promise.resolve().then(() => __importStar(require('vitest/config')));
209
227
  defaultExcludes = vitestConfig.coverageConfigDefaults.exclude;
210
228
  }
211
229
  catch { }
212
230
  }
213
231
  return {
214
- enabled: true,
215
- all: coverage.all,
232
+ enabled: coverage.enabled,
216
233
  excludeAfterRemap: true,
217
234
  include: coverage.include,
218
235
  reportsDirectory: (0, path_1.toPosixPath)(node_path_1.default.join('coverage', projectName)),
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["executor.ts"],"names":[],"mappings":"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"}
@@ -23,14 +23,13 @@ const VitestTestRunner = {
23
23
  const checker = new dependency_checker_1.DependencyChecker(options.projectSourceRoot);
24
24
  checker.check('vitest');
25
25
  if (options.browsers?.length) {
26
- checker.check('@vitest/browser');
27
26
  checker.checkAny(['playwright', 'webdriverio'], 'The "browsers" option requires either "playwright" or "webdriverio" to be installed.');
28
27
  }
29
28
  else {
30
29
  // JSDOM is used when no browsers are specified
31
30
  checker.check('jsdom');
32
31
  }
33
- if (options.coverage) {
32
+ if (options.coverage.enabled) {
34
33
  checker.check('@vitest/coverage-v8');
35
34
  }
36
35
  checker.report();
@@ -41,6 +40,12 @@ const VitestTestRunner = {
41
40
  async createExecutor(context, options, testEntryPointMappings) {
42
41
  const projectName = context.target?.project;
43
42
  (0, node_assert_1.default)(projectName, 'The builder requires a target.');
43
+ if (typeof options.runnerConfig === 'string') {
44
+ context.logger.info(`Using Vitest configuration file: ${options.runnerConfig}`);
45
+ }
46
+ else if (options.runnerConfig) {
47
+ context.logger.info('Automatically searching for and using Vitest configuration file.');
48
+ }
44
49
  return new executor_1.VitestExecutor(projectName, options, testEntryPointMappings);
45
50
  },
46
51
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AAEH,8DAAiC;AAEjC,8DAA0D;AAC1D,mDAAwD;AACxD,yCAA4C;AAE5C;;GAEG;AACH,MAAM,gBAAgB,GAAe;IACnC,IAAI,EAAE,QAAQ;IAEd,oBAAoB,CAAC,OAAO;QAC1B,MAAM,OAAO,GAAG,IAAI,sCAAiB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAExB,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACjC,OAAO,CAAC,QAAQ,CACd,CAAC,YAAY,EAAE,aAAa,CAAC,EAC7B,sFAAsF,CACvF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,+CAA+C;YAC/C,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,CAAC,MAAM,EAAE,CAAC;IACnB,CAAC;IAED,eAAe,CAAC,OAAO,EAAE,gBAAgB;QACvC,OAAO,IAAA,qCAAqB,EAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,sBAAsB;QAC3D,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;QAC5C,IAAA,qBAAM,EAAC,WAAW,EAAE,gCAAgC,CAAC,CAAC;QAEtD,OAAO,IAAI,yBAAc,CAAC,WAAW,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC;IAC1E,CAAC;CACF,CAAC;AAEF,kBAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AAEH,8DAAiC;AAEjC,8DAA0D;AAC1D,mDAAwD;AACxD,yCAA4C;AAE5C;;GAEG;AACH,MAAM,gBAAgB,GAAe;IACnC,IAAI,EAAE,QAAQ;IAEd,oBAAoB,CAAC,OAAO;QAC1B,MAAM,OAAO,GAAG,IAAI,sCAAiB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAExB,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC7B,OAAO,CAAC,QAAQ,CACd,CAAC,YAAY,EAAE,aAAa,CAAC,EAC7B,sFAAsF,CACvF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,+CAA+C;YAC/C,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,CAAC,MAAM,EAAE,CAAC;IACnB,CAAC;IAED,eAAe,CAAC,OAAO,EAAE,gBAAgB;QACvC,OAAO,IAAA,qCAAqB,EAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,sBAAsB;QAC3D,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;QAC5C,IAAA,qBAAM,EAAC,WAAW,EAAE,gCAAgC,CAAC,CAAC;QAEtD,IAAI,OAAO,OAAO,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YAC7C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QAClF,CAAC;aAAM,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YAChC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAC1F,CAAC;QAED,OAAO,IAAI,yBAAc,CAAC,WAAW,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC;IAC1E,CAAC;CACF,CAAC;AAEF,kBAAe,gBAAgB,CAAC"}
@@ -33,12 +33,11 @@ function createVitestPlugins(options, testSetupFiles, browserOptions, pluginOpti
33
33
  root: workspaceRoot,
34
34
  globals: true,
35
35
  setupFiles: testSetupFiles,
36
- // Use `jsdom` if no browsers are explicitly configured.
37
- // `node` is effectively no "environment" and the default.
38
- environment: browserOptions.browser ? 'node' : 'jsdom',
39
- browser: browserOptions.browser,
40
36
  include: options.include,
41
37
  ...(options.exclude ? { exclude: options.exclude } : {}),
38
+ browser: browserOptions.browser,
39
+ // Use `jsdom` if no browsers are explicitly configured.
40
+ ...(browserOptions.browser ? {} : { environment: 'jsdom' }),
42
41
  },
43
42
  plugins: [
44
43
  {
@@ -92,14 +91,24 @@ function createVitestPlugins(options, testSetupFiles, browserOptions, pluginOpti
92
91
  const code = outputFile.origin === 'memory'
93
92
  ? Buffer.from(outputFile.contents).toString('utf-8')
94
93
  : await (0, promises_1.readFile)(outputFile.inputPath, 'utf-8');
95
- const map = sourceMapFile
94
+ const sourceMapText = sourceMapFile
96
95
  ? sourceMapFile.origin === 'memory'
97
96
  ? Buffer.from(sourceMapFile.contents).toString('utf-8')
98
97
  : await (0, promises_1.readFile)(sourceMapFile.inputPath, 'utf-8')
99
98
  : undefined;
99
+ // Vitest will include files in the coverage report if the sourcemap contains no sources.
100
+ // For builder-internal generated code chunks, which are typically helper functions,
101
+ // a virtual source is added to the sourcemap to prevent them from being incorrectly
102
+ // included in the final coverage report.
103
+ const map = sourceMapText ? JSON.parse(sourceMapText) : undefined;
104
+ if (map) {
105
+ if (!map.sources?.length && !map.sourcesContent?.length && !map.mappings) {
106
+ map.sources = ['virtual:builder'];
107
+ }
108
+ }
100
109
  return {
101
110
  code,
102
- map: map ? JSON.parse(map) : undefined,
111
+ map,
103
112
  };
104
113
  }
105
114
  },