diff --git a/config/scripts/mobile-web-app-html-preview-render.test.mjs b/config/scripts/mobile-web-app-html-preview-render.test.mjs index b1d34290b4b..bf020318560 100644 --- a/config/scripts/mobile-web-app-html-preview-render.test.mjs +++ b/config/scripts/mobile-web-app-html-preview-render.test.mjs @@ -21,14 +21,20 @@ import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises' import { createServer } from 'node:http' import { join } from 'node:path' import { fileURLToPath } from 'node:url' -import { afterAll, beforeAll, describe, expect, it } from 'vitest' +import { afterAll, beforeAll, describe, expect, it, vi } from 'vitest' import * as esbuild from 'esbuild' import { PNG } from 'pngjs' import { chromium, webkit } from 'playwright-core' import { lucideBarrelPlugin } from './build-mobile-web-app-bundle.mjs' import { mobileWebAppDependenciesPresent } from './mobile-web-app-bundle-dependencies.mjs' import { createBundleServer, readShellCsp } from './mobile-web-app-render-harness.mjs' -import { describePreviewFrame, untilAborted } from './mobile-web-app-preview-frame-diagnosis.mjs' +import { createCspReportSink, reportedDirectives } from './mobile-web-app-preview-csp-reports.mjs' +import { + previewFrame, + settleAfterMount, + waitForLoadedFrame, + waitForRecordedNavigation +} from './mobile-web-app-preview-frame-readiness.mjs' const mobileDir = fileURLToPath(new URL('../../mobile', import.meta.url)) @@ -136,11 +142,15 @@ let nonceCounter = 0 /** The inline script every arm carries, so "it did not run" is about the fence and not the fixture. */ const ARTIFACT_SCRIPT = `` const bundles = mobileWebAppDependenciesPresent() @@ -159,6 +169,8 @@ const browsers = {} let sealedServer = null let openServer = null const origins = {} +/** Every refusal the sealed server's policy was told about, by the arm that caused it. */ +const cspReports = createCspReportSink() beforeAll(async () => { shippedCsp = await readShellCsp() @@ -224,7 +236,12 @@ beforeAll(async () => { '
' + '