Files
Portfolio/scripts/verify-runtime-budgets.mjs

36 lines
1.0 KiB
JavaScript

#!/usr/bin/env node
import { spawn } from 'node:child_process';
import { access } from 'node:fs/promises';
import { resolve } from 'node:path';
const repositoryRoot = process.cwd();
const tracePath = resolve(repositoryRoot, 'test-results/runtime-budget-trace.v1.json');
const runNode = (args) => new Promise((resolveRun, rejectRun) => {
const child = spawn(process.execPath, args, {
cwd: repositoryRoot,
env: process.env,
stdio: 'inherit',
});
child.once('error', rejectRun);
child.once('exit', (code, signal) => {
if (code === 0) resolveRun();
else rejectRun(new Error(`Command failed${signal === null ? ` with exit code ${code}` : ` from signal ${signal}`}.`));
});
});
await runNode([
resolve(repositoryRoot, 'node_modules/@playwright/test/cli.js'),
'test',
'tests/performance/runtime-budget-trace.spec.ts',
'--project=runtime-budget-desktop',
'--workers=1',
]);
await access(tracePath);
await runNode([
resolve(repositoryRoot, 'scripts/check-bundle-budgets.mjs'),
'dist',
'--runtime-trace',
tracePath,
]);