Description
Manual E2E QA pass following docs/testplans/15-github-integration.md (from T-16).
(1) Happy path (5 TC)
- Launch → Preferences → Sign in → web flow → callback →
@username displayed
- Open project with GitHub origin + active CI → badge pending with pulse
- CI completes → badge turns green within 15s
- Click badge → popover with jobs
- Click job → browser opens the correct GitHub Actions run URL
(2) Edge cases (7 TC)
- Non-GitHub origin → badge hidden
- Branch without PR → popover
"No PR", "Create PR on GitHub" deep link works
- Network offline → error banner + Retry
- Token revoked on github.com →
"Session expired" banner + Sign-in button restores flow
- SAML org without SSO auth →
"SSO authorization required" banner + deep link
- Rate limit (simulated
x-ratelimit-remaining: 0) → stale overlay + countdown
- Minimize window → polling pauses (verified via log stream)
(3) Accessibility (3 TC)
- VoiceOver reads each badge state label correctly
- Popover navigable via Tab / Shift-Tab; Esc closes
- Dynamic Type XL doesn't break layout in Preferences / Popover
(4) Security checklist (manual)
log stream --subsystem com.relay.github over full sign-in + polling cycle — zero lines with token, code_verifier, state value, Bearer header value
- Simulated crash — crash report does NOT contain token
- Keychain Access.app shows one item under
com.relay.github
GitHubOAuthConfig.clientID present in binary (OK — public identifier)
(5) Report
Test plan execution → PR description (one checkbox per TC). Skipped TCs with reasons. Found bugs filed as linked GitHub Issues.
Spec reference
See swarm-report/github-integration-decomposition.md#t-13.
Relationships
Acceptance criteria
Complexity
M
Suggested agent
developer-workflow:manual-tester
Module / Layer
Cross-cutting / QA
Description
Manual E2E QA pass following
docs/testplans/15-github-integration.md(from T-16).(1) Happy path (5 TC)
@usernamedisplayed(2) Edge cases (7 TC)
"No PR","Create PR on GitHub"deep link works"Session expired"banner + Sign-in button restores flow"SSO authorization required"banner + deep linkx-ratelimit-remaining: 0) → stale overlay + countdown(3) Accessibility (3 TC)
(4) Security checklist (manual)
log stream --subsystem com.relay.githubover full sign-in + polling cycle — zero lines withtoken,code_verifier,state value, Bearer header valuecom.relay.githubGitHubOAuthConfig.clientIDpresent in binary (OK — public identifier)(5) Report
Test plan execution → PR description (one checkbox per TC). Skipped TCs with reasons. Found bugs filed as linked GitHub Issues.
Spec reference
See
swarm-report/github-integration-decomposition.md#t-13.Relationships
Acceptance criteria
Complexity
M
Suggested agent
developer-workflow:manual-testerModule / Layer
Cross-cutting / QA