mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-10-06 15:02:20 +02:00
static/style.css is 51,425 lines in one file. Hundreds of selectors are declared more than once and !important is used throughout, so the rendered result is a function of source order. Extracting a block into its own file changes that order, and nothing in the suite would notice - which makes a 51k-line split unfalsifiable and "looks fine to me" the only available evidence. This moves no CSS. It captures getComputedStyle over a fixed inventory of 676 elements across three pages, four viewports, both themes and the three density modes - 16,224 element snapshots - hashes them, and compares against tests/css_snapshot/baseline.json. A capture takes about 21 seconds. The bench page synthesises one element per selector from an evidence-driven list: every selector declared more than once in style.css that can be expressed as a static compound chain, plus a curated set per feature area. Redeclared selectors are the ones a reorder can flip. The bench loads whatever stylesheets index.html ships, so it keeps measuring the real set once the file is split. tests/test_css_computed_style_snapshot.py also carries a self-test that swaps two conflicting .attach-strip declarations and asserts the digest moves, so the harness cannot silently stop watching. The second half is the asset-manifest check specs/frontend.md asks for, scoped to stylesheets: every stylesheet referenced by shipped HTML and by the sw.js precache exists, and index.html and sw.js agree on the ?v= string. They hardcode it independently today, so a split that updates one and not the other ships an offline cache nobody notices until a plane.
21 lines
897 B
HTML
21 lines
897 B
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>CSS snapshot bench</title>
|
|
<!-- Replaced at capture time by whatever <link rel="stylesheet"> tags
|
|
static/index.html ships, in shell order, so the bench keeps measuring
|
|
the real stylesheet set after style.css is split. This fallback is only
|
|
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). -->
|
|
<link rel="stylesheet" href="/static/style.css">
|
|
</head>
|
|
<body>
|
|
<!-- Intentionally empty. tests/css_snapshot/capture.mjs mounts one subtree
|
|
per bench selector from tests/css_snapshot/inventory.json, measures the
|
|
leaf, and removes it again - so adding coverage is a one-line inventory
|
|
change and this file never drifts from the selector list. -->
|
|
</body>
|
|
</html>
|