Skip to content

test: retain verifier regression guards - #483

Merged
chhoumann merged 1 commit into
masterfrom
test/verifier-guards
Oct 14, 2026
Merged

chhoumann merged 1 commit into
masterfrom
test/verifier-guards

Conversation

@chhoumann

@chhoumann chhoumann commented Oct 14, 2026 •

Copy link
Copy Markdown
Owner

Summary

Several plausible regressions passed the existing suites. Add twelve permanent cases from the independent verifier probes. They guard player fullscreen and CSS ordering, media resets and native seeks, settings sync, table-cell capture, transcript preservation and Find reset, and redundant decoding during own saves. Only test files change.

Verification

  • npm run lint, npm run format:check, npm run typecheck, and npm run build pass.
  • npm run test passes 2,613 tests in 124 files. npm run test:tooling passes 13 tests. npm run docs:build passes all internal links and 112 legacy fragments.
  • npm run test:e2e from a fresh isolated vault passes 207 tests in 28 files on both Obsidian 1.14.4 and 1.13.7, each from a fresh vault.
  • The unchanged Media Session journey passed 20/20 runs with 0 failures under two continuous SHA-256 load workers. The workers and runner shared CPU affinity 0 and 1. No wait or assertion changed for that journey.

Node 22.23.2. Obsidian 1.14.4 and 1.13.7, each with its matching installer, on headless Linux. The runner used only this worktree's isolated vault, podnotes-test-verifier-guards. Fixtures use http://podnotes.test:<ephemeral-port> with the player, media-reset, table-capture, and transcript feeds, 60-second silent WAV media, and the committed WebVTT cues. The Media Session journey uses podnotes-e2e-silence.wav, a 600-second local WAV in its test sandbox.

Each mutant ran alone and failed the named assertion. Every production file was restored byte for byte and checked against origin/master. The green results use the restored production code.

Item Test name Mutant Red output Green
V-472 the fullscreen button belongs to the video stage and hides while that stage is fullscreen Hide on .pn-player:fullscreen instead of .pn-video:fullscreen Expected none, received flex Pass
V-472 mini-player component styles survive the shell stylesheet loading last in theme-light / theme-dark Remove button from MiniPlayer's .pn-iconbtn selector Opacity changes from 1 to 0.85; light text changes from rgb(34, 34, 34) to rgb(92, 92, 92) Both pass
V-475 resume / play preserves 12 seconds before a reset element reports emptied Replace holdsMedia() with the existence of session Both receive 0, expected at least 12 Both pass
V-475 switching after a pending native seek saves and queues the ended outgoing episode Reconcile only when playing the same episode Expected queue to include Outgoing, received [] Pass
V-468b blur keeps an external setting received after the focused edit was saved Apply the stale input value again on completion Expected Remote/{{title}}.md, received Local/{{title}}.md Pass
V-471 falls back to the note editor when the cell's replaceSelection is not a function Accept any cell object without checking its writer TypeError: cell.replaceSelection is not a function Pass
V-471 captures in the cell when the PodNotes leaf takes focus in the same evaluation Ignore the pending active leaf Expected destination editor, received note with a newly created episode note Pass
V-478b preserves the quoted feed and transcript URLs of a public source Redact every transcript source URL, including public URLs Expected https://show.test/transcripts/1.vtt, received podnotes-private-feed:Show Pass
V-478b switching episodes clears Find and shows every line of the incoming transcript Remove the finding and query reset Received three filtered lines and three marks instead of ten lines and no marks Pass
V-480 does not decode its own saved document again during a settings session Remove the equality shortcut in the data-file reader Expected zero decodes after startup, received six Pass

The coordinator can replay the exact mutation commands and inspect the raw failures in .obsidian-e2e-artifacts/test1/mutate.py, mutations.json, and *-red.log in this worktree. The loaded-run counts are in flake-watch.json. The full acceptance logs and decision trail are in the same directory. Both instances were stopped; the final dry runs report no PIDs.

Release impact

None. No production code, schema, API, URI, or migration changes.

Note

Add regression guard tests for capture, playback, transcript, and settings

  • Adds unit and e2e tests for timestamp capture fallbacks: when the Live Preview table cell cannot replace its selection, and when PodNotes focus precedes the active-editor state update in commands.test.ts and table-cell-capture.test.ts
  • Adds e2e playback coverage in playback-media-reset.test.ts: resume/play after a native media load reset preserves the paused position (12-15s window), and switching episodes after a pending native seek persists the outgoing episode at 12s as unfinished
  • Adds e2e journeys: video fullscreen enter/exit via the fullscreen control, mini-player style stability under stylesheet reordering in both themes, transcript episode-switch clearing the prior Find query, and settings external-update retention when a focused field is blurred
  • Adds unit tests for self-originated settings persistence without repeated decoding in main.persistence.test.ts and verbatim URL retention in transcript cue text in index.test.ts

Macroscope summarized 1a1dd08.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying podnotes with  Cloudflare Pages  Cloudflare Pages

Latest commit: 1a1dd08
Status: ✅  Deploy successful!
Preview URL: https://0e8a1faf.podnotes.pages.dev
Branch Preview URL: https://test-verifier-guards.podnotes.pages.dev

View logs

@chhoumann
chhoumann merged commit eafb24b into master Oct 14, 2026
18 checks passed
@chhoumann
chhoumann deleted the test/verifier-guards branch October 14, 2026 21:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant