Repository navigation
ci: run the Obsidian E2E suite in CI - #227
Merged
Merged
Conversation
Add an E2E (Obsidian) job that installs a pinned, checksum-verified Obsidian 1.14.4 tarball, starts the obsidian-e2e instance headless under Xvfb, and runs tests/e2e. Failure artifacts and the app log are uploaded. - Bump obsidian-e2e to 0.15.0 (Vitest 5, Node 22.12+; both already met). - RUN-03 waited for the first .notice on screen, which could be a leftover from an earlier suite. It now waits for the duplicate-key one. - Move the Svelte rune-module guard out of esbuild.config.mjs into scripts/svelte-rune-guard.mjs and cover it with a unit test.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The live E2E suite (
tests/e2e/, 110 tests) only ran on maintainers' machines. CI now runs it on every PR and push tomaster.New
E2E (Obsidian)job inci.yml:obsidianmd/obsidian-releasesand checks its sha256 (from the release asset digest). 1.14.4 is pinned rather than the latest 1.14.5, which is two days old, to keep the 7-day release-age rule.xvfb/xauth, builds, then starts the obsidian-e2e instance headless (--obsidian-app/--obsidian-binpoint at the tarball). The runner already wraps Xvfb and passes--no-sandbox, and it seedsobsidian.jsonwith the CLI enabled.vitest --config vitest.e2e.config.mtswithHOMEat the instance's private home, uploads.obsidian-e2e-artifacts/and the app log on failure, and stops the instance.obsidian-e2e 0.14.0 to 0.15.0. 0.15.0 needs Vitest ^5 and Node >=22.12. The repo is already on Vitest 5.0.5,
enginesis^22.13.0 || ^24.0.0 || >=26, and CI uses Node 24, so this is a version bump only. obsidian-e2e is on theminimumReleaseAgeExcludelist. Its newyaml@2.9.1floor was already in the lockfile.Flaky RUN-03. In a full-suite run,
RUN-03: duplicate-key Notice is well-formedread the first.noticeon screen. That was sometimes a leftover from an earlier file (MetaEdit could not update 'count'…). It now waits for the duplicate-key notice. Alone, the file always passed.Rune guard test.
rejectSvelteRuneModulesmoves fromesbuild.config.mjstoscripts/svelte-rune-guard.mjs, unchanged. The newscripts/svelte-rune-guard.test.tsbundles.svelte.ts/.js/.mtsimports through esbuild and expects the build to fail, and checks that a plain.tsimport builds. With the guard's filter disabled, 3 of the 4 cases fail.Skipped wikilink test. It was skipped because of a real bug, not the transport. #226 fixes the bug and re-enables the test, so this PR leaves it alone.
Verification
DISPLAYunset, obsidian-e2e 0.15.0. 16 files passed, 109 passed, 1 skipped, in 1m57s.pnpm run lint,pnpm run build,pnpm run test(363 passed).E2E (Obsidian)check is the CI proof.No runtime or release impact.
Note
Low Risk
Changes are CI, test harness, and build-plugin organization; no plugin runtime or release behavior.
Overview
CI now runs the live Obsidian E2E suite on every PR/push via a new
E2E (Obsidian)job: pinned Obsidian 1.14.4 (SHA-256 verified), Xvfb, build,obsidian-e2estart/stop, Vitest with the instance’s privateHOME, and failure artifact upload. AGENTS.md notes this mirrors localpnpm run test:e2e.obsidian-e2eis bumped 0.14.0 → 0.15.0 (lockfile updated). The Svelte rune rejection esbuild plugin is extracted toscripts/svelte-rune-guard.mjs(behavior unchanged) with new unit tests that assert.svelte.ts/.js/.mtsimports fail the build.E2E flake fix:
RUN-03waits for a notice whose text includesalready has propertyinstead of the first.noticeon screen.Reviewed by Cursor Bugbot for commit 68dbccc. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add Obsidian E2E suite to CI with pinned Obsidian 1.14.4
ci.e2eGitHub Actions job runs the Vitest E2E suite headlessly under Xvfb on Ubuntu, against a SHA-256-verified Obsidian 1.14.4 downloadobsidian-e2edependency range from^0.14.0to^0.15.0in package.jsonrejectSvelteRuneModulesesbuild guard from esbuild.config.mjs into svelte-rune-guard.mjs and adds a Vitest suite covering.svelte.ts/.svelte.js/.svelte.mtsrejection.noticecontainingalready has property.github/workflows/ci.yml; verify the SHA-256 stays current on Obsidian updatesMacroscope summarized 68dbccc.