fix(as-S6): the operator's rulings — sentence tagline, no side stripe, matte dot, stripe on ::before
Operator, 2026-09-28: "go with your recommendations".
- Tagline: 'held for review · wipes in {ttl}h unless kept', mono, muted,
12px, sentence case ("ephemeral" goes, as agreed with booth-dev).
- 'Needs you' rows lose the 3px side stripe; the '? N OPEN' stamp says it.
The flagged filmstrip frame keeps its bottom stripe.
- The brand dot is matte (glow = live power; a live bench keeps its glow).
- Wipe now and the armed bulk delete carry the hazard stripe on a 3px
::before, so the button's own background is honestly what sits under its
text; the stripe renders as before.
Contract: as_antislop S6. Falsifiers: antislop.toml 49/49 proved (S1-S4, S6);
all 12 tables 329/329 proved on this tree.
This commit is contained in:
@@ -154,3 +154,21 @@ def test_doc_headings_step_by_size(browser, live):
|
||||
for lo, hi, name in ((body, h3, "h3:body"), (h3, h2, "h2:h3"), (h2, h1, "h1:h2")):
|
||||
assert hi / lo >= 1.18, f"{name} is {hi / lo:.2f} ({hi}px over {lo}px)"
|
||||
page.close()
|
||||
|
||||
|
||||
|
||||
# ---- S6: the hazard stripe on a pseudo-element -----------------------------------
|
||||
|
||||
def test_the_hazard_stripe_is_a_pseudo_element(browser, live):
|
||||
base, root = live
|
||||
(root / "w").mkdir()
|
||||
(root / "w" / "a.txt").write_text("x")
|
||||
page = browser.new_page(viewport={"width": 1280, "height": 800})
|
||||
page.goto(f"{base}/b/w/", wait_until="load")
|
||||
got = page.locator(".wipe-lg button").evaluate("""b => {
|
||||
const own = getComputedStyle(b), pre = getComputedStyle(b, '::before');
|
||||
return {own: own.backgroundImage, pre: pre.backgroundImage, h: pre.height, content: pre.content};
|
||||
}""")
|
||||
assert got["own"] == "none", f"the button paints its own stripe: {got['own'][:80]}"
|
||||
assert "repeating-linear-gradient" in got["pre"] and got["h"] == "3px" and got["content"] != "none", got
|
||||
page.close()
|
||||
|
||||
Reference in New Issue
Block a user