diff --git a/packages/angular_devkit/build_angular/src/dev-server/deploy-url_spec.ts b/packages/angular_devkit/build_angular/src/dev-server/deploy-url_spec.ts deleted file mode 100644 index 125b8cd05a..0000000000 --- a/packages/angular_devkit/build_angular/src/dev-server/deploy-url_spec.ts +++ /dev/null @@ -1,39 +0,0 @@ -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -import { Architect, BuilderRun } from '@angular-devkit/architect'; -import { DevServerBuilderOutput } from '@angular-devkit/build-angular'; -import fetch from 'node-fetch'; // tslint:disable-line:no-implicit-dependencies -import { createArchitect, host } from '../test-utils'; - - -describe('Dev Server Deploy Url', () => { - const target = { project: 'app', target: 'serve' }; - let architect: Architect; - let runs: BuilderRun[] = []; - - beforeEach(async () => { - await host.initialize().toPromise(); - architect = (await createArchitect(host.root())).architect; - runs = []; - }); - afterEach(async () => { - await host.restore().toPromise(); - await Promise.all(runs.map(r => r.stop())); - }); - - it('works', async () => { - const run = await architect.scheduleTarget(target, { deployUrl: 'test/' }); - runs.push(run); - const output = await run.result as DevServerBuilderOutput; - expect(output.success).toBe(true); - expect(output.baseUrl).toBe('http://localhost:4200/test'); - - const response = await fetch(`${output.baseUrl}/polyfills.js`); - expect(await response.text()).toContain('window["webpackJsonp"]'); - }, 30000); -}); diff --git a/packages/angular_devkit/build_angular/src/dev-server/tests/behavior/build-deploy-url_spec.ts b/packages/angular_devkit/build_angular/src/dev-server/tests/behavior/build-deploy-url_spec.ts new file mode 100644 index 0000000000..16b52a7df1 --- /dev/null +++ b/packages/angular_devkit/build_angular/src/dev-server/tests/behavior/build-deploy-url_spec.ts @@ -0,0 +1,33 @@ +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +import { serveWebpackBrowser } from '../../index'; +import { executeOnceAndFetch } from '../execute-fetch'; +import { BASE_OPTIONS, DEV_SERVER_BUILDER_INFO, describeBuilder, setupBrowserTarget } from '../setup'; + +describeBuilder(serveWebpackBrowser, DEV_SERVER_BUILDER_INFO, (harness) => { + describe('Behavior: "browser builder deployUrl"', () => { + beforeEach(() => { + setupBrowserTarget(harness, { + deployUrl: 'test/', + }); + }); + + it('uses the deploy URL defined in the "browserTarget" options as the serve path', async () => { + harness.useTarget('serve', { + ...BASE_OPTIONS, + }); + + const { result, response } = await executeOnceAndFetch(harness, 'runtime.js'); + + expect(result?.success).toBeTrue(); + expect(result?.baseUrl).toMatch(/\/test$/); + expect(response?.url).toMatch(/\/test\/runtime.js$/); + expect(await response?.text()).toContain('window["webpackJsonp"]'); + }); + }); +}); diff --git a/packages/angular_devkit/build_angular/src/dev-server/tests/execute-fetch.ts b/packages/angular_devkit/build_angular/src/dev-server/tests/execute-fetch.ts index 8d8b9d8aa2..4525fb558c 100644 --- a/packages/angular_devkit/build_angular/src/dev-server/tests/execute-fetch.ts +++ b/packages/angular_devkit/build_angular/src/dev-server/tests/execute-fetch.ts @@ -26,7 +26,7 @@ export async function executeOnceAndFetch( mergeMap(async (executionResult) => { let response = undefined; if (executionResult.result?.success) { - const resolvedUrl = new URL(url, executionResult.result.baseUrl as string); + const resolvedUrl = new URL(url, `${executionResult.result.baseUrl}/`); response = await fetch(resolvedUrl, options?.request); }