Repository navigation
Conversation
…not there yet Without ./snapraid, loadAppConfig logs "Failed to save default config: ENOENT" and the defaults are not saved: the directory is made only later, by the log manager. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y3rdfbWb1xDUdPRng7TX9Z
On the first start without login nothing had made SNAPRAID_BASE_PATH yet when loadAppConfig saved the defaults (only loadSessionSecret and the log manager mkdir it), so the save failed with ENOENT and config.json appeared only on the next start. saveAppConfig now makes the directory with mkdir's default mode, as the log manager does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y3rdfbWb1xDUdPRng7TX9Z
expectFinished matched any "<label>" finished successfully. Each job gets its own toast and they stay for 5 s (Feedback.tsx), so when the second restore of "deleted and encrypted files are restored" finished within 5 s of the first, the locator found both toasts: strict mode violation. The UI is right to keep both, one result per job; expectFinished now closes the toast it waited for, so the next call of the same command finds only its own. Reproduced with the toast duration raised to 20 s: fails on master, passes with this change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y3rdfbWb1xDUdPRng7TX9Z
The dashboard keeps the last status in localStorage (__root.tsx, persisted with a 1 s throttle) and the default staleTime is 10 s, so opening it again within 10 s shows the kept status without asking SnapRAID. When the first visit's status got persisted before the test went on to /schedules (more than 1 s between them, as under load), the last visit showed "Disk not available" from 4 s earlier and never sent a status request: "All good" timed out. The disk is put back behind the app's back, so the test refreshes the status, as a user would. Reproduced by waiting 1.5 s after the first health check: fails 3/3 on master, passes with this change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y3rdfbWb1xDUdPRng7TX9Z
Owner
Author
TDD-Review: keine belegten FindingsJeder Verdacht wurde mit einem Test geprüft; keiner wurde rot, deshalb gibt es keine Fixes. Nicht belegt (Tests grün):
Checks: Server Generated by Claude Code |
Owner
Author
|
TDD-Review abgeschlossen: keine belegten Findings (Details im vorigen Kommentar). CI grün: backend, frontend, install, e2e local/binary/image je 2/2. Merge per Squash. Generated by Claude Code |
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.
Three fixes and one finding.
First start without a data directory: "Failed to save default config: ENOENT"
Without login nothing had created
SNAPRAID_BASE_PATHwhenloadAppConfigsaved the defaults. OnlyloadSessionSecretand the log manager runmkdir, and the log manager runs after the config is loaded. So the save failed andconfig.jsonappeared only on the second start.saveAppConfignow creates the directory with mkdir's default mode, the same way the log manager does.apps/server/src/__tests__/config.test.ts): a child process withSNAPRAID_BASE_PATHset to a directory that does not exist yet. It checks that no error is logged, thatconfig.jsonis saved and that the directory mode is0777 & ~umask. It fails on master and passes with the fix.Created default config at …/snapraid/config.json.snapraid/andsnapraid/logsare both 755.Flaky "deleted and encrypted files are restored…"
Each job gets its own toast, and toasts stay for 5 s (
Feedback.tsx). The UI is right to keep both results. When the second restore finished within 5 s of the first,expectFinishedfound two toasts and failed with a strict mode violation.expectFinishednow closes the toast it waited for. The close is a dispatched click because an open wizard's overlay covers the toasts (replace.spec.ts).replace.spec.tspasses too.Flaky "a disk that is not mounted pauses the scheduled sync"
The dashboard keeps the status in localStorage (
__root.tsx, written with a 1 s throttle), and the defaultstaleTimeis 10 s. If the first visit's status was saved before the test moved on to/schedules, the last visit to/reused that 4 s old "Disk not available" status. It sent no status request (the trace shows only one), so "All good" never appeared. Under load the gap is more than 1 s. The disk comes back without the app knowing, so the test now presses Refresh, as a user would. There are no added timeouts or retries.test:image/scripts/image-test.sh: nothing to fixThe script has been at
e2e/scripts/image-test.shsince #26 and was never missing.e2e/package.jsonruns frome2e/, sobash scripts/image-test.shresolves to it.E2E_IMAGE=snapraid-ui:e2e bun run test:image --listlists all 34 tests. CI builds the image itself and runsbun run testwithE2E_IMAGEset.Checks
bun install --frozen-lockfilebun testgives 234 pass and 2 skip,tscis clean--repeat-each=10(default workers, which is 1 in the config) pass 20 of 20 on both the local and the binary target, with and without CPU load.Generated by Claude Code