summaryrefslogtreecommitdiffstats
path: root/remote/test/puppeteer/packages/ng-schematics/tools/smoke.mjs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--remote/test/puppeteer/packages/ng-schematics/tools/smoke.mjs72
1 files changed, 72 insertions, 0 deletions
diff --git a/remote/test/puppeteer/packages/ng-schematics/tools/smoke.mjs b/remote/test/puppeteer/packages/ng-schematics/tools/smoke.mjs
new file mode 100644
index 0000000000..8ae9907266
--- /dev/null
+++ b/remote/test/puppeteer/packages/ng-schematics/tools/smoke.mjs
@@ -0,0 +1,72 @@
+/**
+ * @license
+ * Copyright 2023 Google Inc.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import {ok} from 'node:assert';
+import {execSync} from 'node:child_process';
+import {parseArgs} from 'node:util';
+
+import {AngularProjectMulti, AngularProjectSingle} from './projects.mjs';
+
+const {values: args} = parseArgs({
+ options: {
+ testRunner: {
+ type: 'string',
+ short: 't',
+ default: undefined,
+ },
+ name: {
+ type: 'string',
+ short: 'n',
+ default: undefined,
+ },
+ },
+});
+
+if (process.env.CI) {
+ // Need to install in CI
+ execSync('npm install -g @angular/cli@latest @angular-devkit/schematics-cli');
+ const runners = ['node', 'jest', 'jasmine', 'mocha'];
+ const groups = [];
+
+ for (const runner of runners) {
+ groups.push([
+ new AngularProjectSingle(runner),
+ new AngularProjectMulti(runner),
+ ]);
+ }
+
+ const angularProjects = await Promise.allSettled(
+ groups.flat().map(async project => {
+ return await project.create();
+ })
+ );
+ ok(
+ angularProjects.every(project => {
+ return project.status === 'fulfilled';
+ }),
+ 'Building of 1 or more projects failed!'
+ );
+
+ for await (const runnerGroup of groups) {
+ const smokeResults = await Promise.allSettled(
+ runnerGroup.map(async project => {
+ return await project.runSmoke();
+ })
+ );
+ ok(
+ smokeResults.every(project => {
+ return project.status === 'fulfilled';
+ }),
+ `Smoke test for ${runnerGroup[0].runner} failed!`
+ );
+ }
+} else {
+ const single = new AngularProjectSingle(args.testRunner, args.name);
+ const multi = new AngularProjectMulti(args.testRunner, args.name);
+
+ await Promise.all([single.create(), multi.create()]);
+ await Promise.all([single.runSmoke(), multi.runSmoke()]);
+}