Files
agent-company 3145acc423 docs: fix SMOKE_TEST.md triage route reference (/triage -> /)
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>
2026-03-29 03:04:07 +00:00

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.dev to 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

  1. Open https://gitea-mobile.testing.leeworks.dev in a browser
  2. Navigate to the Settings page (/settings)
  3. Enter a valid Gitea API token
  4. Submit the form
  5. Expected: Token is saved, page confirms success
  6. Navigate back to the Issues tab
  7. Expected: Issues load from the Gitea API using the saved token

Step 5: Core Functionality -- Issues

  1. Navigate to the Issues tab (/issues)
  2. Expected: Cross-org issues load and display with titles, labels, and timestamps
  3. Tap on an issue to expand details
  4. Expected: Issue body renders correctly
  5. Use the filter dropdown to filter by repo or label
  6. Expected: List updates via HTMX without full page reload

Step 6: Core Functionality -- Pull Requests

  1. Navigate to the PRs tab (/pulls)
  2. Expected: Pull requests load with review status icons
  3. Tap on a PR to see details
  4. Expected: PR diff summary or review status displays correctly

Step 7: Core Functionality -- Dashboard / Triage Queue

  1. Navigate to the Dashboard/Triage tab (/)
  2. Expected: Unassigned issues and PRs awaiting review appear sorted by priority

Step 8: Create Issue (Write Operation)

  1. Navigate to the new issue form
  2. Fill in title: [smoke-test] Automated verification
  3. Fill in body: This issue was created during smoke testing. Safe to close.
  4. Submit the form
  5. Expected: Issue is created successfully in Gitea
  6. Verify in Gitea web UI that the issue exists
  7. Close and delete the test issue after verification

Step 9: Apply Label (Write Operation)

  1. On any test issue, attempt to apply a label
  2. Expected: Label is applied via the Gitea API and reflected in the UI

Step 10: PWA / iPhone Safari

  1. Open https://gitea-mobile.testing.leeworks.dev on iPhone Safari
  2. Expected: App loads with mobile-optimized layout, no horizontal scroll
  3. Tap "Add to Home Screen" from the Safari share menu
  4. Expected: App icon appears on the home screen (apple-touch-icon)
  5. Launch from the home screen
  6. Expected: App opens in standalone mode (no Safari browser chrome)
  7. Verify bottom navigation does not overlap with iPhone home indicator
  8. Toggle device dark mode in Settings
  9. Expected: App switches between dark and light themes via prefers-color-scheme
  10. 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