Files
redis-gui-foundation/docs/qa/acceptance-matrix.md
Senior Frontend Engineer 4839165657 feat(desktop): harden connection session lifecycle
- add a visible connection session summary for ready/testing/demo/retry states
- prevent stale live connection tests from overwriting a newer active DB selection
- include the missing frontend helpers already referenced by App.tsx so the branch builds cleanly

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-31 09:32:47 +00:00

11 KiB

Redis GUI V1 Acceptance Matrix

Date: 2026-03-31 Owner: QA Engineer

Evidence Collected On 2026-03-31

  • cargo test -p redis-core passes in this session with 20 tests green.
  • pnpm --filter @redis-gui/desktop test passes in this session with 12 files and 47 tests green.
  • pnpm run desktop:build passes and emits apps/desktop/dist/.
  • pnpm run desktop:dev starts Vite on http://127.0.0.1:1420/, and the served HTML points to the desktop shell entrypoint.
  • pnpm run desktop:tauri:build now completes Linux .deb and .rpm artifact generation under target/release/bundle/.
  • pnpm run desktop:tauri:build:all still fails later in the AppImage stage because linuxdeploy aborts in the current environment.
  • dpkg-deb -I target/release/bundle/deb/Redis GUI Foundation_0.1.0_amd64.deb confirms Debian package metadata and runtime dependencies on libwebkit2gtk-4.1-0 and libgtk-3-0.
  • Direct launch of target/release/desktop-shell in this heartbeat fails before window creation with Failed to initialize GTK, because the current session has no DISPLAY, WAYLAND_DISPLAY, or xvfb-run.
  • ./scripts/redis-fixture/start.sh, seed.sh, and stop.sh pass in this session, and the seeded fixture exposes 7 smoke:* keys with expected string, TTL, hash, list, set, zset, and stream evidence.
  • ./scripts/redis-fixture/seed.sh also fails correctly when the fixture container is absent, with an explicit instruction to run start.sh first.
  • The repository still contains no Dockerfile, docker-compose.yml, compose.yaml, or equivalent compose asset; Docker-backed verification currently depends on the documented fixture scripts plus a reachable local Docker daemon.
  • The repository now contains a Rust workspace, a React workspace UI baseline, Tauri commands for connection testing and command execution, and shared frontend scope documentation.
  • Browser dev mode still uses demo data for shell review, while Tauri desktop mode can now exercise live connection-test, key browse, value read/write, and command-execution bridges.
  • The checked-out desktop shell now also exposes a visible string-only Add key flow through create_redis_value, but PM phase notes still treat that capability as next-phase inventory rather than a required current-baseline acceptance item.
  • Browser dev mode now also keeps mock string-save and TTL changes visible for the current session, reducing shell-review drift between action banners and visible UI state without changing the live acceptance boundary.
  • The active connection area now shows an explicit session summary for ready, testing, demo fallback, and retry-needed states, and live test completion no longer rewrites the current active DB if the operator already switched to another connection while the probe was running.
  • The desktop DB switcher now exposes a default db0 through db15 range and keeps an active out-of-range DB visible in the selector.
  • A repeatable local Redis fixture and smoke runbook now exist in scripts/redis-fixture/ and docs/qa/local-desktop-smoke.md.
  • docs/frontend-workspace-baseline.md and docs/redis-gui-v1-product-requirements.md now both exist in-repo.

Matrix

Scope Happy Path Acceptance Failure Path Acceptance Required Evidence Current Status
Linux app smoke App installs or launches from a documented command, opens main window, connects to test Redis, exits cleanly Missing Redis, bad host, bad password, unsupported DB or network loss surface actionable error and app stays stable Launch steps, versioned artifact or dev command, screenshots, QA run log Partially blocked: documented fixture, package artifacts, and smoke path now exist, but this heartbeat had no GUI-capable display session, so real Tauri window launch-and-connect evidence is still pending
macOS app smoke Same as Linux, using signed or documented macOS artifact Same failure paths, plus first-run permission or gatekeeper guidance if relevant Build artifact name, install steps, screenshots, QA run log Blocked: no validated macOS build or artifact evidence
Windows app smoke Same as Linux, using installer or portable package Same failure paths, plus Windows-specific install and uninstall validation Build artifact name, install steps, screenshots, QA run log Blocked: no validated Windows build or artifact evidence
Desktop workspace shell Rail, browser, inspector, and command tray render together with active connection, build identity, runtime mode, a copyable QA snapshot, local smoke assist, visible inspector summary/key facts surfaces, and scoped mutation review for current-phase write actions Empty search state clears the inspector selection, search mode feedback and clear action stay visible and predictable, read-only non-string value state, inspector status/action guidance stays aligned to live vs demo vs missing cases, destructive confirmation, no-op write attempts are blocked before execution, and browser-mode demo fallback stays explicit while mock save and TTL actions update session-local UI state npm run desktop:dev or npm run desktop:build, docs/frontend-workspace-baseline.md, screenshots or copied QA snapshot text Pass for shell-level evidence; not a substitute for Redis feature acceptance
Connection management Create a validated draft profile, keep DB context visible, switch among a predictable default DB range, run the existing live connection-test bridge from Tauri desktop mode, and keep the active session state visibly scoped as ready, testing, demo fallback, or retry needed Invalid host, bad port, bad password, duplicate name, timeout, and unreachable server are handled with consistent operator-facing messaging, and a late-arriving test result must not silently replace a newer active connection/DB selection Tauri run log, screenshots, repeatable steps, Redis target Partially blocked: the shell now validates draft name/host/port/DB locally, exposes db0 through db15 while preserving active out-of-range DB context, maps backend error codes into shared notices, keeps session-state guidance visible, and calls the real connection-test command without reapplying stale DB scope after an operator switch, but profile persistence and full evidence capture are not complete
Key browsing Browse DBs and keys, paginate or virtualize large lists, view metadata Empty DB, deleted key during browse, permission error, and connection drop do not crash UI, and live failures reuse the shared error banner treatment Seed dataset, result screenshots, observed limits Partially blocked: desktop UI now calls the live browse bridge with SCAN pagination and metadata, but fixture-backed Tauri screenshots and measured limits are still pending
Search Search by key name or pattern and return matching set within documented limits; visible shell makes it clear whether the current input is treated as a contains search or a raw Redis pattern No matches, invalid pattern, empty DB state, and very large result sets are handled predictably, and operators can clear search back to browse state without ambiguity Seed dataset, search queries, measured behavior Partially blocked: desktop UI now maps search to live browse requests and exposes clearer search-state feedback, but fixture-backed evidence and measured limits are still pending
Value editing Open supported value types, review pending string replacement, confirm save, and refresh persisted value; inspector keeps current state and write semantics explicit while editing Concurrent modification, invalid payload, missing-key transitions, and permission error preserve user context, while no-op edits are blocked before execution and live failures reuse the shared operator notice layer Before/after values, screenshots, repeatable steps Partially blocked: string read/save/refresh is wired through the live desktop bridge, non-string types now render in structured read-only inspector panels, inspector guidance is clearer across live and fallback states, scoped review now clarifies current-vs-next value before save, and browser demo mode keeps session-local save state coherent, but fixture-backed live evidence and broader editing scope remain pending
TTL operations View TTL, review pending TTL change or removal, confirm the mutation, and verify the resulting expiration behavior Invalid TTL, already persistent/no-op TTL requests, already expired key, and permission error are handled safely with explicit guardrails and consistent banner feedback Seed dataset, timestamps, verification steps Partially blocked: desktop UI now exposes live TTL set and remove controls through the existing contract, blocks no-op TTL submissions, and keeps browser demo TTL state coherent, but seeded-fixture live validation evidence is still missing
Command console Execute safe Redis commands in Tauri desktop mode and show result or error output with explicit live/demo labeling Invalid command, long-running command, and blocked dangerous command are handled predictably, and backend failures reuse the shared operator notice mapping Command transcript, screenshots, allow or deny rules Partially blocked: the desktop UI now calls the real command execution bridge, but it is not yet validated against a shared live Redis fixture and dangerous mutations still stay blocked at shell level
Dangerous operation confirmation Delete, flush, overwrite, or destructive commands require explicit confirmation Cancel path does not mutate data; confirm path mutates only intended scope Confirmation UX screenshots, before/after data Blocked: feature not implemented
Installer and packaging Package metadata, icon, version, and uninstall behavior are correct on each target OS Corrupt install, upgrade, downgrade, and missing dependency behavior are documented or handled Artifact checklist, install logs, uninstall evidence Partially blocked: Linux .deb metadata and contents are inspectable and the standard .deb/.rpm build path is stable, but AppImage remains blocked and install or uninstall evidence is still absent

Current Acceptance Judgment

  • No Redis-backed Redis GUI V1 feature acceptance item can be marked passed on 2026-03-31.
  • Current repository state now supports shell-level frontend acceptance and partial backend feature review: the React workspace shell builds, live desktop bridges exist for connection test, browse, string create, value read/write, and command execution, draft-validation and empty-state behavior are explicit, and shared UI scope documentation is present in-repo.
  • The visible Add key surface should be tracked as implemented next-phase inventory only; its presence in the repository must not be treated as automatic current-baseline pass criteria or release scope expansion.
  • Rust source-level test evidence is current for redis-core, the desktop test baseline is current, the browser demo entrypoint is reproducible, Linux package artifacts exist for .deb and .rpm, Debian metadata is inspectable, and the fixture path is reproducible on both success and one key failure path, but live Redis screenshots or logs and installation evidence are still required.
  • QA can now independently execute the documented Linux baseline path, and the phase-level evidence loop is summarized in docs/qa/current-phase-evidence-loop.md, but feature acceptance and release sign-off remain blocked on a GUI-capable desktop session for end-to-end evidence, AppImage packaging, cross-platform evidence, and installer install or uninstall checks.