3145acc423
The triage queue is served at / (the dashboard), not a separate /triage route. Update Step 7 and the expected results summary table to reference the correct route, consistent with ROADMAP.md and handlers.go. Closes leeworks-agents/gitea-mobile#157 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
5.1 KiB
5.1 KiB
Post-Deployment Smoke Test Runbook
Smoke test procedure for verifying gitea-mobile after deployment to the Talos cluster.
Pre-conditions
Before running the smoke test, confirm:
- FluxCD has reconciled the latest manifests:
flux get kustomizations -n flux-system - The gitea-mobile pod is Running:
kubectl get pods -n gitea-mobile - The IngressRoute is active:
kubectl get ingressroute -n gitea-mobile - DNS resolves
gitea-mobile.testing.leeworks.devto the cluster ingress
Step 1: Pod Health
# Verify the pod is running and ready
kubectl get pods -n gitea-mobile
# Expected: STATUS=Running, READY=1/1
# Check pod logs for startup errors
kubectl logs -n gitea-mobile deployment/gitea-mobile --tail=20
# Expected: JSON log line with "server starting" message
Step 2: Health Endpoint
# Hit the health check endpoint from inside the cluster
kubectl exec -n gitea-mobile deployment/gitea-mobile -- wget -qO- http://localhost:8080/health
# Expected: HTTP 200
# Hit the health check endpoint from outside the cluster
curl -s -o /dev/null -w "%{http_code}" https://gitea-mobile.testing.leeworks.dev/health
# Expected: 200
Step 3: TLS and Ingress
# Verify TLS certificate is valid
curl -vI https://gitea-mobile.testing.leeworks.dev 2>&1 | grep "SSL certificate"
# Expected: valid certificate from Let's Encrypt or cluster CA
# Verify the app responds with HTML
curl -s https://gitea-mobile.testing.leeworks.dev | head -5
# Expected: HTML document with <html> tag
Step 4: Authentication Flow
- Open
https://gitea-mobile.testing.leeworks.devin a browser - Navigate to the Settings page (
/settings) - Enter a valid Gitea API token
- Submit the form
- Expected: Token is saved, page confirms success
- Navigate back to the Issues tab
- Expected: Issues load from the Gitea API using the saved token
Step 5: Core Functionality -- Issues
- Navigate to the Issues tab (
/issues) - Expected: Cross-org issues load and display with titles, labels, and timestamps
- Tap on an issue to expand details
- Expected: Issue body renders correctly
- Use the filter dropdown to filter by repo or label
- Expected: List updates via HTMX without full page reload
Step 6: Core Functionality -- Pull Requests
- Navigate to the PRs tab (
/pulls) - Expected: Pull requests load with review status icons
- Tap on a PR to see details
- Expected: PR diff summary or review status displays correctly
Step 7: Core Functionality -- Dashboard / Triage Queue
- Navigate to the Dashboard/Triage tab (
/) - Expected: Unassigned issues and PRs awaiting review appear sorted by priority
Step 8: Create Issue (Write Operation)
- Navigate to the new issue form
- Fill in title:
[smoke-test] Automated verification - Fill in body:
This issue was created during smoke testing. Safe to close. - Submit the form
- Expected: Issue is created successfully in Gitea
- Verify in Gitea web UI that the issue exists
- Close and delete the test issue after verification
Step 9: Apply Label (Write Operation)
- On any test issue, attempt to apply a label
- Expected: Label is applied via the Gitea API and reflected in the UI
Step 10: PWA / iPhone Safari
- Open
https://gitea-mobile.testing.leeworks.devon iPhone Safari - Expected: App loads with mobile-optimized layout, no horizontal scroll
- Tap "Add to Home Screen" from the Safari share menu
- Expected: App icon appears on the home screen (apple-touch-icon)
- Launch from the home screen
- Expected: App opens in standalone mode (no Safari browser chrome)
- Verify bottom navigation does not overlap with iPhone home indicator
- Toggle device dark mode in Settings
- Expected: App switches between dark and light themes via
prefers-color-scheme - See issue #93 for the full PWA validation checklist
Expected Results Summary
| Step | Check | Expected |
|---|---|---|
| 1 | Pod status | Running, Ready 1/1 |
| 2 | /health |
HTTP 200 |
| 3 | TLS | Valid cert, HTML response |
| 4 | Auth | Token saved, API calls work |
| 5 | Issues | List loads, filter works |
| 6 | PRs | List loads with review status |
| 7 | Dashboard/Triage | Queue displays correctly at / |
| 8 | Create issue | Issue created in Gitea |
| 9 | Apply label | Label applied via API |
| 10 | PWA | Standalone mode, safe areas, dark mode |
Rollback Procedure
If the deployment is broken or the app is not functioning:
# Roll back to the previous deployment revision
kubectl rollout undo deployment/gitea-mobile -n gitea-mobile
# Verify the rollback
kubectl rollout status deployment/gitea-mobile -n gitea-mobile
# Expected: "deployment successfully rolled out"
# Check that the previous image tag is running
kubectl get deployment gitea-mobile -n gitea-mobile -o jsonpath='{.spec.template.spec.containers[0].image}'
If FluxCD keeps reconciling back to the broken version, suspend reconciliation temporarily:
# Suspend Flux reconciliation
flux suspend kustomization gitea-mobile -n flux-system
# After fixing the issue, resume
flux resume kustomization gitea-mobile -n flux-system