fix: close performance evidence and budget gates
This commit is contained in:
@@ -3,6 +3,7 @@ import { writeFile } from 'node:fs/promises';
|
||||
import type { CDPSession, Page } from '@playwright/test';
|
||||
import { expect, test } from '../helpers/serve-dist';
|
||||
import { authorizedPerformanceUrl } from '../helpers/test-build-auth';
|
||||
import { loadAuthenticatedReferenceRun, validateObservedReferenceEnvironment } from './reference-run';
|
||||
import {
|
||||
calculateCls,
|
||||
calculateLabTbt,
|
||||
@@ -79,9 +80,10 @@ const dispatchWheelBurst = async (page: Page, cdp: CDPSession, at: (offset: numb
|
||||
}
|
||||
};
|
||||
|
||||
test('drive-trace.v1 runs on current Chromium as explicitly non-reference evidence', async ({ page, distUrl }, testInfo) => {
|
||||
test('drive-trace.v1 runs on current Chromium with fail-closed reference authentication', async ({ browser, page, distUrl }, testInfo) => {
|
||||
test.setTimeout(75_000);
|
||||
const profile = profileForProject(testInfo.project.name);
|
||||
const referenceRun = await loadAuthenticatedReferenceRun(profile.name);
|
||||
await page.setViewportSize(profile.viewport);
|
||||
const cdp = await page.context().newCDPSession(page);
|
||||
await cdp.send('Network.enable');
|
||||
@@ -94,6 +96,7 @@ test('drive-trace.v1 runs on current Chromium as explicitly non-reference eviden
|
||||
});
|
||||
await page.emulateMedia({ reducedMotion: 'no-preference' });
|
||||
await page.goto('about:blank');
|
||||
const startedFromAboutBlank = page.url() === 'about:blank';
|
||||
const loadStarted = nodePerformance.now();
|
||||
await page.goto(authorizedPerformanceUrl(distUrl, profile.tier), { waitUntil: 'load', timeout: 10_000 });
|
||||
const loadDuration = nodePerformance.now() - loadStarted;
|
||||
@@ -101,6 +104,21 @@ test('drive-trace.v1 runs on current Chromium as explicitly non-reference eviden
|
||||
await expect.poll(() => page.evaluate(() => window.__PORTFOLIO_PERFORMANCE__?.snapshot().lcp.length ?? 0), { timeout: 10_000 }).toBeGreaterThan(0);
|
||||
await expect(page.locator('.journey-world')).toHaveAttribute('data-scene-state', 'running', { timeout: 5_000 });
|
||||
await expect(page.locator('.journey-hud__quality')).toHaveText(profile.tier === 'high' ? 'High' : 'Low');
|
||||
if (referenceRun !== null) {
|
||||
const observed = await page.evaluate(() => ({
|
||||
viewport: { width: innerWidth, height: innerHeight },
|
||||
visible: document.visibilityState === 'visible',
|
||||
reducedMotion: matchMedia('(prefers-reduced-motion: reduce)').matches ? 'reduce' as const : 'no-preference' as const,
|
||||
saveData: Boolean((navigator as Navigator & { connection?: { saveData?: boolean } }).connection?.saveData),
|
||||
pageZoom: visualViewport?.scale ?? 1,
|
||||
}));
|
||||
validateObservedReferenceEnvironment(referenceRun, {
|
||||
...observed,
|
||||
browserName: 'Chromium',
|
||||
browserVersion: browser.version(),
|
||||
startedFromAboutBlank,
|
||||
});
|
||||
}
|
||||
|
||||
const warmupRafs = await page.evaluate(() => new Promise<number[]>((resolve) => {
|
||||
const samples: number[] = [];
|
||||
@@ -194,8 +212,9 @@ test('drive-trace.v1 runs on current Chromium as explicitly non-reference eviden
|
||||
|
||||
const report = {
|
||||
schema: 'drive-trace.v1',
|
||||
evidenceKind: 'current-chromium-developer-machine-non-reference',
|
||||
gatingReferenceResult: false,
|
||||
evidenceKind: referenceRun === null ? 'current-chromium-developer-machine-non-reference' : 'authenticated-physical-reference',
|
||||
gatingReferenceResult: referenceRun !== null,
|
||||
...(referenceRun === null ? {} : { referenceRun: { runId: referenceRun.runId, runIndex: referenceRun.runIndex, attestationDigest: referenceRun.attestationDigest } }),
|
||||
profile: profile.name,
|
||||
tier: profile.tier,
|
||||
browser: testInfo.project.name,
|
||||
@@ -203,7 +222,7 @@ test('drive-trace.v1 runs on current Chromium as explicitly non-reference eviden
|
||||
budgetResults,
|
||||
referenceBudgetsPass: validReferenceCadence && Object.values(budgetResults).every(Boolean),
|
||||
validReferenceCadence,
|
||||
pendingPhysicalReferenceRuns: 5,
|
||||
pendingPhysicalReferenceRuns: referenceRun === null ? 5 : 0,
|
||||
};
|
||||
await writeFile(testInfo.outputPath('drive-trace.v1.json'), `${JSON.stringify(report, null, 2)}\n`);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user