diff --git a/scripts/verify_background_research_cards.mjs b/scripts/verify_background_research_cards.mjs
index 16d580fba..158bc9b2e 100644
--- a/scripts/verify_background_research_cards.mjs
+++ b/scripts/verify_background_research_cards.mjs
@@ -1,10 +1,26 @@
/** Card layout and reconciliation against the served assets; no user mutations. */
import { chromium } from 'playwright';
+
+const ORIGIN = 'http://127.0.0.1:7011';
+
+/** The `` tags the app shell ships, in shell order. */
+async function shellStylesheets() {
+ const response = await fetch(`${ORIGIN}/static/index.html`);
+ if (!response.ok) throw new Error(`static/index.html returned ${response.status}`);
+ const links = (await response.text()).match(/]*rel=["']stylesheet["'][^>]*>/gi) || [];
+ if (!links.length) throw new Error('no stylesheet links found in static/index.html');
+ return links.join('');
+}
+
const browser = await chromium.launch({ headless: true });
try {
const page = await browser.newPage({ viewport: { width: 390, height: 844 } });
- await page.goto('http://127.0.0.1:7011/static/test-fixtures/browser-catalog.html');
- await page.setContent('
Existing conversation
');
+ await page.goto(`${ORIGIN}/static/test-fixtures/browser-catalog.html`);
+ // Read the shell's stylesheets out of index.html rather than naming one
+ // here. style.css is now a set of ordered fragments, and a hardcoded link
+ // to a file that has moved does not fail - it renders unstyled and the
+ // layout checks below pass against nothing.
+ await page.setContent(`${await shellStylesheets()}
Existing conversation
`);
const checks = await page.evaluate(async () => {
const { renderResearchCards } = await import('/static/js/backgroundToolJobs.js');
const box = document.querySelector('#chat-history');
diff --git a/tests/css_snapshot/bench.html b/tests/css_snapshot/bench.html
index a992f20ff..50e11d4cc 100644
--- a/tests/css_snapshot/bench.html
+++ b/tests/css_snapshot/bench.html
@@ -9,7 +9,27 @@
for opening the page by hand; it is deliberately unversioned so the
cache-bust string has one home (tests/test_static_stylesheet_manifest.py
pins the shipped ones). -->
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+