NS10 slice: Cover colors, chrome, and viewport regressions in E2E #68

Closed
opened 2026-06-21 14:50:34 +00:00 by tmk241 · 1 comment
Owner

OBJECTIVE: Add browser-terminal E2E scenarios that prove visual terminal correctness: line-number gutter, cursor marker, status chrome, ANSI color roles, color capability degradation, narrow viewport fit, and no diagonal/skewed output.

AUTHORITY: Parent #65; NS9 parent #57; REQUIREMENTS.md req: ui/001-002, coding/001, testing/001-004; KEYMAP.md visual/editor surface; recent chrome/skew regressions.

AGENT AUTHORITY:

  • Delivery authority: local-commit
  • Tracker authority: this issue may be commented and closed when acceptance passes; comment/update parent #65.
  • Handoff state: committed clean, tracker commented/closed.

PARENT: #65 NS10 via explicit parent link and parent checklist.

SCOPE: E2E screenshots/semantic assertions for editor chrome and color capability modes; integration with NS9 color surfaces as they land.

BOUNDARIES:

  • Do not implement the entire NS9 colorscheme here. This slice tests current/landed visual behavior.
  • Avoid brittle pixel-only assertions; pair screenshots with semantic terminal/ANSI assertions.
  • No runtime theme config.

REGRESSION CLASS: catches visible presentation regressions: diagonal skew, missing line-number gutter, missing cursor/status chrome, broken ANSI/color degradation, and viewport overflow.

EVIDENCE ARTIFACTS: viewport screenshots, semantic width reports, ANSI role/capability transcript, visible-control transcript, and artifact path report.

REQUIREMENT IMPACT: protects existing ui/coding/testing requirement authority and NS9 color-scheme proof; update authority only if new color/chrome invariants become durable requirements.

ACCEPTANCE:

  • E2E fails if rendered output is diagonally skewed from bare LF in raw mode.
  • E2E fails if gutter, cursor marker, status bar/chrome, or selected/current-line distinction disappears.
  • E2E captures screenshots for narrow and medium viewports and asserts no visible line exceeds viewport width in semantic transcript.
  • E2E covers truecolor plus at least one degraded/mono or simulated color capability mode and verifies legibility/state roles remain distinguishable where applicable.
  • Artifacts make color/chrome failures diagnosable without requiring a human to infer from raw ANSI dumps alone.

VERIFICATION:

  • zig build terminal-e2e
  • zig build test
  • zig build v1-smoke
  • redgate lint /opt/repositories/mim/REQUIREMENTS.md && redgate health /opt/repositories/mim/REQUIREMENTS.md

BLOCKERS: depends on terminal harness #69. Full newed parity checks may wait for NS9 slices but base chrome/skew coverage can start immediately after the harness.

SLICE_CONTRACT:
objective: Add E2E coverage for terminal chrome, colors, viewport fit, and skew regressions.
authority: #65, #57, REQUIREMENTS.md ui/coding/testing rows.
acceptance: browser-terminal tests fail on missing gutter/cursor/status, broken color roles/degradation, overwide lines, or diagonal skew.
verification: terminal-e2e plus canonical gates.
non_goals: implement full colorscheme, runtime theme config, pixel-only tests.
blockers: terminal harness exists.

OBJECTIVE: Add browser-terminal E2E scenarios that prove visual terminal correctness: line-number gutter, cursor marker, status chrome, ANSI color roles, color capability degradation, narrow viewport fit, and no diagonal/skewed output. AUTHORITY: Parent #65; NS9 parent #57; REQUIREMENTS.md req: ui/001-002, coding/001, testing/001-004; KEYMAP.md visual/editor surface; recent chrome/skew regressions. AGENT AUTHORITY: - Delivery authority: local-commit - Tracker authority: this issue may be commented and closed when acceptance passes; comment/update parent #65. - Handoff state: committed clean, tracker commented/closed. PARENT: #65 NS10 via explicit parent link and parent checklist. SCOPE: E2E screenshots/semantic assertions for editor chrome and color capability modes; integration with NS9 color surfaces as they land. BOUNDARIES: - Do not implement the entire NS9 colorscheme here. This slice tests current/landed visual behavior. - Avoid brittle pixel-only assertions; pair screenshots with semantic terminal/ANSI assertions. - No runtime theme config. REGRESSION CLASS: catches visible presentation regressions: diagonal skew, missing line-number gutter, missing cursor/status chrome, broken ANSI/color degradation, and viewport overflow. EVIDENCE ARTIFACTS: viewport screenshots, semantic width reports, ANSI role/capability transcript, visible-control transcript, and artifact path report. REQUIREMENT IMPACT: protects existing ui/coding/testing requirement authority and NS9 color-scheme proof; update authority only if new color/chrome invariants become durable requirements. ACCEPTANCE: - E2E fails if rendered output is diagonally skewed from bare LF in raw mode. - E2E fails if gutter, cursor marker, status bar/chrome, or selected/current-line distinction disappears. - E2E captures screenshots for narrow and medium viewports and asserts no visible line exceeds viewport width in semantic transcript. - E2E covers truecolor plus at least one degraded/mono or simulated color capability mode and verifies legibility/state roles remain distinguishable where applicable. - Artifacts make color/chrome failures diagnosable without requiring a human to infer from raw ANSI dumps alone. VERIFICATION: - `zig build terminal-e2e` - `zig build test` - `zig build v1-smoke` - `redgate lint /opt/repositories/mim/REQUIREMENTS.md && redgate health /opt/repositories/mim/REQUIREMENTS.md` BLOCKERS: depends on terminal harness #69. Full newed parity checks may wait for NS9 slices but base chrome/skew coverage can start immediately after the harness. SLICE_CONTRACT: objective: Add E2E coverage for terminal chrome, colors, viewport fit, and skew regressions. authority: #65, #57, REQUIREMENTS.md ui/coding/testing rows. acceptance: browser-terminal tests fail on missing gutter/cursor/status, broken color roles/degradation, overwide lines, or diagonal skew. verification: terminal-e2e plus canonical gates. non_goals: implement full colorscheme, runtime theme config, pixel-only tests. blockers: terminal harness exists.
tmk241 added the slice label 2026-06-21 14:50:34 +00:00
Author
Owner

Implemented in 61a1f9b (Assert terminal E2E chrome roles).

What changed:

  • Terminal E2E scenarios now declare required ANSI/chrome roles; editor scenarios fail if cursor, status, current-line, or required selection roles disappear.
  • Raw PTY checks still fail on bare LF diagonal/skew output.
  • widths.tsv is generated per scenario and semantic transcript width is asserted against viewport width.
  • SVG screenshot artifacts now include role-color swatches for cursor/current-line/status/selection when those ANSI roles appear, making color/chrome failures diagnosable without raw ANSI decoding.
  • Mono/degraded scenarios verify stripped transcript legibility for editor chrome, while panel scenarios are scoped to panel text/focus instead of editor cursor roles.
  • tools/TERMINAL_E2E.md documents the new role markers, color swatches, widths.tsv, and manifest attrs_seen.

Verification:

  • zig build terminal-e2e
  • zig build test
  • zig build
  • zig build v1-smoke
  • redgate list /opt/repositories/mim/REQUIREMENTS.md && redgate lint /opt/repositories/mim/REQUIREMENTS.md && redgate health /opt/repositories/mim/REQUIREMENTS.md

Evidence examples from the latest run:

  • .zig-cache/terminal-e2e/raw-key-chrome-crlf/manifest.tsv records bare_lf=false and attrs_seen=current-line,cursor,status.
  • .zig-cache/terminal-e2e/raw-key-chrome-crlf/widths.tsv shows all semantic lines within the 48-column viewport.
  • .zig-cache/terminal-e2e/select-mode-colors/screenshot.svg includes cursor/current-line/selection/status swatches.
Implemented in `61a1f9b` (`Assert terminal E2E chrome roles`). What changed: - Terminal E2E scenarios now declare required ANSI/chrome roles; editor scenarios fail if cursor, status, current-line, or required selection roles disappear. - Raw PTY checks still fail on bare LF diagonal/skew output. - `widths.tsv` is generated per scenario and semantic transcript width is asserted against viewport width. - SVG screenshot artifacts now include role-color swatches for cursor/current-line/status/selection when those ANSI roles appear, making color/chrome failures diagnosable without raw ANSI decoding. - Mono/degraded scenarios verify stripped transcript legibility for editor chrome, while panel scenarios are scoped to panel text/focus instead of editor cursor roles. - `tools/TERMINAL_E2E.md` documents the new role markers, color swatches, `widths.tsv`, and manifest `attrs_seen`. Verification: - `zig build terminal-e2e` ✅ - `zig build test` ✅ - `zig build` ✅ - `zig build v1-smoke` ✅ - `redgate list /opt/repositories/mim/REQUIREMENTS.md && redgate lint /opt/repositories/mim/REQUIREMENTS.md && redgate health /opt/repositories/mim/REQUIREMENTS.md` ✅ Evidence examples from the latest run: - `.zig-cache/terminal-e2e/raw-key-chrome-crlf/manifest.tsv` records `bare_lf=false` and `attrs_seen=current-line,cursor,status`. - `.zig-cache/terminal-e2e/raw-key-chrome-crlf/widths.tsv` shows all semantic lines within the 48-column viewport. - `.zig-cache/terminal-e2e/select-mode-colors/screenshot.svg` includes cursor/current-line/selection/status swatches.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tmk241/mim#68