diff --git a/.circleci/config.yml b/.circleci/config.yml index aed85c99ab70..2dbb2e260ea2 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -221,7 +221,7 @@ jobs: name: Execute CLI E2E Tests Subset with esbuild builder command: | mkdir /mnt/ramdisk/e2e-esbuild - node ./tests/legacy-cli/run_e2e --nb-shards=${CIRCLE_NODE_TOTAL} --shard=${CIRCLE_NODE_INDEX} <<# parameters.snapshots >>--ng-snapshots<> --esbuild --tmpdir=/mnt/ramdisk/e2e-esbuild --glob="{tests/basic/**,tests/build/prod-build.ts}" --ignore="tests/basic/{environment,rebuild,serve,scripts-array}.ts" + node ./tests/legacy-cli/run_e2e --nb-shards=${CIRCLE_NODE_TOTAL} --shard=${CIRCLE_NODE_INDEX} <<# parameters.snapshots >>--ng-snapshots<> --esbuild --tmpdir=/mnt/ramdisk/e2e-esbuild --glob="{tests/basic/**,tests/build/prod-build.ts,tests/commands/add/add-pwa.ts}" --ignore="tests/basic/{environment,rebuild,serve,scripts-array}.ts" - fail_fast test-browsers: diff --git a/packages/angular_devkit/build_angular/src/builders/browser-esbuild/experimental-warnings.ts b/packages/angular_devkit/build_angular/src/builders/browser-esbuild/experimental-warnings.ts index ae10d094a336..4fb4e5e12115 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser-esbuild/experimental-warnings.ts +++ b/packages/angular_devkit/build_angular/src/builders/browser-esbuild/experimental-warnings.ts @@ -24,10 +24,6 @@ const UNSUPPORTED_OPTIONS: Array = [ // 'i18nDuplicateTranslation', // 'i18nMissingTranslation', - // * Serviceworker support - 'ngswConfigPath', - 'serviceWorker', - // * Stylesheet preprocessor support 'inlineStyleLanguage', // The following option has no effect until preprocessors are supported diff --git a/packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts b/packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts index a33169741ca6..bf945de92ba8 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts @@ -17,6 +17,7 @@ import { assertIsError } from '../../utils/error'; import { FileInfo } from '../../utils/index-file/augment-index-html'; import { IndexHtmlGenerator } from '../../utils/index-file/index-html-generator'; import { generateEntryPoints } from '../../utils/package-chunk-sort'; +import { augmentAppWithServiceWorker } from '../../utils/service-worker'; import { getIndexInputFile, getIndexOutputFile } from '../../utils/webpack-browser-config'; import { resolveGlobalStyles } from '../../webpack/configs'; import { Schema as BrowserBuilderOptions, SourceMapClass } from '../browser/schema'; @@ -61,6 +62,7 @@ export async function execute( } const { + projectRoot, workspaceRoot, mainEntryPoint, polyfillsEntryPoint, @@ -249,6 +251,24 @@ export async function execute( outputFiles.map((file) => fs.writeFile(path.join(outputPath, file.path), file.contents)), ); + // Augment the application with service worker support + // TODO: This should eventually operate on the in-memory files prior to writing the output files + if (options.serviceWorker) { + try { + await augmentAppWithServiceWorker( + projectRoot, + workspaceRoot, + outputPath, + options.baseHref || '/', + options.ngswConfigPath, + ); + } catch (error) { + context.logger.error(error instanceof Error ? error.message : `${error}`); + + return { success: false }; + } + } + context.logger.info(`Complete. [${(Date.now() - startTime) / 1000} seconds]`); return { success: true };