Repository navigation
End-to-end tests against real SnapRAID, snapraid-daemon and the Docker image - #26
Merged
Merged
Conversation
A play button on each schedule starts it once, right away, as at its time: the same steps, sync guard, disk checks, Docker pause and notifications. Also for disabled schedules, to try a routine before enabling it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JuXnquCPdbG5sBbDyin7yF
A mount path with a trailing slash gave /mnt/disk1//.snapraid.content. SnapRAID excludes its content files by comparing the path as written, so the file was synced like a data file and every diff showed it as changed. Found by the end-to-end test of the config editor. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JuXnquCPdbG5sBbDyin7yF
…r image e2e/ drives the UI with Playwright against SnapRAID 14.10, SnapRAID 15 and snapraid-daemon on throwaway arrays: sync with preview, bit rot found by scrub and repaired by fix -e, undelete, the nightly routine, a sync skipped for an unmounted disk, webhook notifications, the config editor, Docker pause and the daemon mode. E2E_IMAGE runs the same tests against the Docker image. CI runs both, the backend reads PORT for the tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JuXnquCPdbG5sBbDyin7yF
…ests The container writes as root and SnapRAID creates content and restored files readable only by their owner, so a test runner without root (CI) could not read them. In image mode the checks run with docker exec, and the container hands the test data back to the caller at the end. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JuXnquCPdbG5sBbDyin7yF
This was referenced Oct 9, 2026
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.
What
End-to-end tests (
e2e/, Playwright with Chromium): the UI is driven through the browser against real SnapRAID and snapraid-daemon on throwaway arrays.array.spec.tsschedules.spec.tsnotifications.spec.tsconfig.spec.tsdocker.spec.tsdocker events)daemon.spec.tsnpm run setupbuilds the pinned versions intoe2e/.tools: SnapRAID 14.10 (the image's version), SnapRAID 15, and snapraid-daemon atREVIEWED_DAEMON_VERSION./apiand/wsthe way nginx does.E2E_IMAGE=<image>runs the same 10 tests against the Docker image, started as indocker-compose.yml(data in/app/snapraid, disks at the same paths as on the host, Docker socket mounted).docker execinside the container.e2ematrix job withlocalandimage. Theimagejob builds the image fromdocker/Dockerfile. Tool builds are cached, and on failure traces and server logs are uploaded.Run now: a play button on each schedule runs it once immediately: same steps, sync guard, disk checks, Docker pause and notifications. It also works on disabled schedules. Backend:
POST /api/schedules/:id/run, returning 202, 404 if the schedule doesn't exist, 409 if a job is running.Bug found by the E2E test: adding a data disk with a trailing slash in its path produced
content /mnt/disk1//.snapraid.content. SnapRAID only excludes its content files when the path matches as written. So this file was synced as a data file, and every diff showed it as changed. Now usesjoin(), with a unit test.Other changes
PORT(default 8080, as in the image's supervisord).e2e/is added to.dockerignore.docs/development.md, Run now indocs/scheduling.md. The upstream release checklists also namee2e/scripts/setup-tools.sh.Verified
deno check,deno test(122 passed).mkdocs build --strict.e2e (image)), with the image built fromdocker/Dockerfile.🤖 Generated with Claude Code
https://claude.ai/code/session_01JuXnquCPdbG5sBbDyin7yF