100 lines
4.2 KiB
Markdown
100 lines
4.2 KiB
Markdown
---
|
||
id: "07-e2e-docs-verification"
|
||
title: "Prove and document repository secrets"
|
||
status: done
|
||
wave: 5
|
||
depends_on: ["04-runtime-environment-propagation", "06-repository-binding-settings"]
|
||
plan: "plan.md"
|
||
spec: "../../specs/workspaces/requirements/repository-secrets.md"
|
||
---
|
||
|
||
# Task 07: Prove and Document Repository Secrets
|
||
|
||
## Acceptance
|
||
|
||
- Desktop E2E proves Global/Workspace filtering, repository binding persistence, conflict failure,
|
||
deleted-ref failure, and local runtime/terminal injection without exposing plaintext in UI.
|
||
- `mobile-repository-secrets.spec.ts` proves the complete phone settings flow and no overflow.
|
||
- Container E2E proves Docker propagation and SSH approved-key forwarding plus the negative unrelated
|
||
env case.
|
||
- Public docs accurately describe scope, inheritance, conflicts, snapshots/reset, terminal exposure,
|
||
and SSH behavior.
|
||
- Broad backend/frontend/i18n checks pass and plan/task results record exact commands.
|
||
|
||
## Files likely touched
|
||
|
||
- `apps/web/e2e/tests/settings/repository-secrets.spec.ts`
|
||
- `apps/web/e2e/tests/settings/mobile-repository-secrets.spec.ts`
|
||
- `apps/web/e2e/tests/docker/repository-secrets.spec.ts`
|
||
- `apps/web/e2e/tests/ssh/repository-secrets.spec.ts`
|
||
- E2E API client/page helpers as needed
|
||
- `docs/public/agents-and-profiles.md`
|
||
- `docs/public/executors.md`
|
||
- `docs/public/authentication.md`
|
||
- `docs/public/security.md`
|
||
- This plan and task file result/status sections
|
||
|
||
## Inputs
|
||
|
||
- Completed backend/runtime Tasks 01–04.
|
||
- Completed frontend Tasks 05–06.
|
||
- E2E skill conventions and `apps/web/e2e/README.md` project routing.
|
||
|
||
## Dependencies
|
||
|
||
Tasks 04 and 06.
|
||
|
||
## TDD/E2E sequence
|
||
|
||
1. Add desktop and mobile browser scenarios against the real per-worker backend.
|
||
2. Add focused Docker and SSH container scenarios using their dedicated fixtures.
|
||
3. Fix only feature-owned testability gaps such as stable test IDs; do not duplicate backend policy
|
||
in Playwright helpers.
|
||
4. Update public docs from verified behavior, then run broad checks and record results.
|
||
|
||
## Verification
|
||
|
||
```bash
|
||
make -C apps/backend test
|
||
make -C apps/backend lint
|
||
cd apps && pnpm --filter @kandev/web test -- --run
|
||
cd apps/web && pnpm run typecheck
|
||
cd apps && pnpm --filter @kandev/web lint
|
||
cd apps && pnpm run i18n:check && pnpm run i18n:ratchet
|
||
cd apps/web && pnpm e2e:run tests/settings/repository-secrets.spec.ts
|
||
cd apps/web && pnpm e2e:run --project mobile-chrome tests/settings/mobile-repository-secrets.spec.ts
|
||
cd apps/web && KANDEV_E2E_CONTAINERS=1 pnpm e2e --project=containers tests/docker/repository-secrets.spec.ts tests/ssh/repository-secrets.spec.ts
|
||
```
|
||
|
||
## Risks
|
||
|
||
- E2E diagnostics and assertions must never print secret plaintext.
|
||
- Container tests require Docker and belong only to the `containers` project; contributors without
|
||
Docker still need deterministic unit coverage for the transport matrix.
|
||
- Public docs must distinguish user-global from instance-global when authentication is enabled.
|
||
|
||
## Output contract
|
||
|
||
Report each desktop/mobile/runtime scenario, exact command results, any Docker availability limit,
|
||
documentation updated, files changed, and residual risks. Mark the spec shipped and plan/tasks done
|
||
only when implementation and required verification genuinely pass.
|
||
|
||
## Result
|
||
|
||
Added desktop, mobile, Docker, and SSH repository-secret E2E coverage plus public documentation for
|
||
scope, inheritance, fail-closed conflicts, snapshots, and SSH forwarding. Successful verification:
|
||
|
||
- `make -C apps/backend test` — passed.
|
||
- `make -C apps/backend lint` — passed with 0 issues.
|
||
- Full web Vitest — 1,089 files passed; 8,309 tests passed and 4 skipped.
|
||
- Focused web tests — 6 files and 41 tests passed; typecheck and lint passed.
|
||
- `pnpm run i18n:pseudo`, `i18n:check`, and `i18n:ratchet` — passed.
|
||
- `pnpm run build:vite` — passed.
|
||
- Chromium repository-secret E2E — 3 passed; mobile-chrome — 1 passed.
|
||
- Containers Docker repository-secret E2E — 1 passed; SSH repository-secret E2E — 1 passed.
|
||
- Public-doc validation — 58 tests passed and 41 published pages validated.
|
||
|
||
Fresh desktop and mobile PR assets were generated from synthetic data, visually inspected, and
|
||
compressed. The env-gated PostgreSQL tests remain available but were skipped because this workspace
|
||
has no `KANDEV_TEST_POSTGRES_DSN`.
|