Skip to content

test(e2e): stabilize isolated suites on Obsidian 1.14.4 - #415

Merged
chhoumann merged 9 commits into
masterfrom
test/e2e-hardening
Oct 12, 2026
Merged

chhoumann merged 9 commits into
masterfrom
test/e2e-hardening

Conversation

@chhoumann

@chhoumann chhoumann commented Oct 12, 2026 •

Copy link
Copy Markdown
Owner

Summary

Use Obsidian 1.14.4 by default on Linux and retain selectable 1.13.7. Resolve fixture feeds locally, restore exact workspace and core-plugin state, detect extra windows, and wait for request and UI completion before input.

Playback advancement checks retain a bounded observation window, so a rewind cannot pass by catching up later. Held fixture responses also complete when the connection closes.

Verification

Current head 441eef3 includes merge commit 4b8eed3 from master 3d7cc6e.

  • V-415 found that the earlier helper missed a rewind. The same real-Obsidian mutation passes the old helper and fails the corrected Playback stops when browsing away from the player #355 check with only 0.245224 seconds of advance against the required 1 second. Source was restored before the full suites.
  • Obsidian 1.13.7 passed 77/77, complete command exit 0. The final 1.14.4 command passed 76/77, exit 1. J-PLAY-11 timed out waiting for a persisted checkpoint before restart; tracked as test(e2e): intermittent J-PLAY-11 playback checkpoint timeout #421. Playback stops when browsing away from the player #355, fix: make podcast name lookups exact and safe #413's journeys and the new Media Session checks passed on both builds. No further fix round was attempted.
  • The first 1.14.4 attempt's parent driver received SIGTERM. Detached Vitest finished 77/77, and the instance was stopped explicitly. That interruption prompted the one complete command retry reported above. No individual-test retries were configured.
  • npm run lint, npm run format:check, npm run typecheck, npm run build, npm run test, and npm run docs:build passed. The application suite passed 1,714 tests in 99 files; Svelte reported zero errors and warnings. Master's additional npm run test:tooling passed all 10 tests. All owned instances are stopped.

Current report, commands and proof limits. Logs, mutation proof and failure capture.

Earlier evidence predates the V-415 assertion correction. 878381b passed two 75-test suites (report); b431ed0 passed the five-plus-two 73-test series (report) and independent runtime proof. The screenshots below are from that earlier bundle.

The approximate three-hour timebox was exceeded to about six hours before this review round, with this review and validation adding more time. The reports retain failed and interrupted runs, review deviations and evidence limits. The final run is not fully green; #421 remains open for follow-up.

Release impact

None. Tests and tooling only. No plugin data, API, URI, dependency or version changes in the PR diff.

Docs at release

None. Developer runtime instructions and verification recipes were updated.

Settings feed result

Paused local fixture

Fixes #406
Refs #421

Note

Stabilize isolated E2E suites on Obsidian 1.14.4

  • Isolated E2E instances now launch on Linux against the user-installed Obsidian 1.14.4 executable, with configurable overrides via PODNOTES_OBSIDIAN_APP/CLI env vars (obsidian-e2e.config.mjs).
  • The fixture server replaces nip.io DNS and response delays with a fixed podnotes.test host, Chromium host-resolver rules injected into every launch, and explicitly released held responses (journey/fixtures.ts, scripts/e2e-instance.mjs).
  • Journey snapshots and rollback now capture and restore internal plugin state and core-plugins.json, close leaked extra BrowserWindows, and fail the suite on leaks or wrong resolver setup (journey/library.ts, harness.ts).
  • Many tests drop fixed sleeps in favor of waiting for concrete conditions: held requests, cache timestamps, rendered episodes, and settled loading indicators.
  • Behavioral Change: fixture consumers must call the returned release function instead of delayFeed; instances started outside the E2E commands cannot resolve the fixture host, and runner operations no longer auto-reap other instances (see podNotesRunnerDependencies in scripts/e2e-instance.mjs).

Macroscope summarized ba837a8.

@chhoumann chhoumann linked an issue Oct 12, 2026 that may be closed by this pull request
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

Deploying podnotes with  Cloudflare Pages  Cloudflare Pages

Latest commit: ba837a8
Status: ✅  Deploy successful!
Preview URL: https://259bf99e.podnotes.pages.dev
Branch Preview URL: https://test-e2e-hardening.podnotes.pages.dev

View logs

@chhoumann
chhoumann merged commit ab4b07c into master Oct 12, 2026
14 checks passed
@chhoumann
chhoumann deleted the test/e2e-hardening branch October 12, 2026 21:49
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.

E2E harness leaks core plugin state and can use the wrong CLI

1 participant