aboutsummaryrefslogtreecommitdiff
path: root/tests/gallery-probes/probe.mjs
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-07-18 11:35:51 -0500
committerCraig Jennings <c@cjennings.net>2026-07-18 11:35:51 -0500
commit2ad81d10fc0daf7f56ae2b7e00063893f35203d4 (patch)
tree3e5546b612de1208d1fea2e9a1762d96ebd1cdd8 /tests/gallery-probes/probe.mjs
parentefd2e551dd727153463d22bd91d5cbe5484e7c3f (diff)
downloadarchsetup-2ad81d10fc0daf7f56ae2b7e00063893f35203d4.tar.gz
archsetup-2ad81d10fc0daf7f56ae2b7e00063893f35203d4.zip
feat(gallery): bring the 12 waybar-bound builders to the extraction bar
Each builder now carries a contract comment in the splitFlap shape (opts, handle, where its CSS lives). I prefixed every batch-owned class with dupre- so page chrome can't collide with instrument internals. The audit's C1 moves to 14/111, the .txt collision is gone, and .on clears as its owners' batches land. jewels also gets a real handle. Its state lived only in classList/--jc, so nothing could read or drive the lamps (a dead end for the waybar port). I moved state into the builder, made the DOM a paint of it, and added get/set. lampRow and outputWell consume the shared lamp class, so they map their state fragments to the prefixed names internally. Their opts APIs are unchanged. audit-extraction.mjs is the report-only grader for the bar (contract comments, page-styled internals, page reach-ins). It gates nothing until the sweep reaches 100%.
Diffstat (limited to 'tests/gallery-probes/probe.mjs')
-rw-r--r--tests/gallery-probes/probe.mjs19
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/gallery-probes/probe.mjs b/tests/gallery-probes/probe.mjs
index d9ba22f..4892188 100644
--- a/tests/gallery-probes/probe.mjs
+++ b/tests/gallery-probes/probe.mjs
@@ -1109,6 +1109,25 @@ try {
})()`);
ok('N20 chips are miniature flap cells: board colour, ink letter, real face', n20g === 'ok', n20g);
+ // N24 jewels — the handle reads and drives lamp state. Waybar-bound: a
+ // consumer must be able to set a jewel without synthesizing clicks.
+ const jw = await evl(`(() => {
+ const h = document.getElementById('card-N24').dupre;
+ if (!h.get || !h.set) return 'no get/set on handle';
+ const init = h.get().join(',');
+ if (init !== '0,1,2,-1') return 'initial ' + init;
+ h.set(3, 1);
+ if (h.get()[3] !== 1) return 'set(3,1) not reflected: ' + h.get().join(',');
+ const el = document.querySelectorAll('#card-N24 .dupre-jewel')[3];
+ if (!el) return 'no .dupre-jewel elements';
+ if (el.classList.contains('dupre-dim')) return 'jewel 3 still dark after set(3,1)';
+ h.set(3, -1);
+ if (!el.classList.contains('dupre-dim')) return 'set(3,-1) did not dark';
+ if (h.get()[3] !== -1) return 'get after dark: ' + h.get().join(',');
+ return 'ok';
+ })()`);
+ ok('N24 jewels handle exposes get/set', jw === 'ok', jw);
+
// Under prefers-reduced-motion the board paints once and RESTS — the dwell
// chain must stay gated off, or the panel self-advances every 2s forever.
await send('Emulation.setEmulatedMedia', { features: [{ name: 'prefers-reduced-motion', value: 'reduce' }] });