Manual Test Runbook — E7: TicketPlatform Adapters
Owner: Sagar | Time: ~5 min (Part A offline) · +10 min per platform (Part B live) | Cloud: none · $0
Promotes E7 (
apps/ticket-platform/) from 🟦 Code Complete → 🟩 Shipped. Part A is 100% offline (typecheck + jest + dry-run CLI). Part B is an optional live upsert drill per platform you have an account for.
Prerequisites
- Local tooling: Node ≥ 20, npm
- (Part B only) A token/PAT for the platform under test (GitHub / Jira / Linear / ADO)
- Working directory:
apps/ticket-platform
Steps
Part A — typecheck + unit suite + dry-run CLI (offline, ~5 min)
- Install + typecheck:
Expected: clean (no TS errors).
- Run the unit suite:
Expected: 6 suites / 26 tests pass. Coverage: the shared marker upsert (create-when-absent / update-when-marker-matches / no-match-other-key) + each adapter's HTTP request mapping (GitHub REST, Jira v2 JQL+create, Linear GraphQL, ADO WIQL+JSON-Patch) + the factory's env resolution and missing-credential errors.
- Dry-run CLI (creates nothing):
npm run build
printf '## Drift on payments-prod\n\nstorage changed.\n' > /tmp/e7-body.md
node dist/index.js --platform dry-run \
--title "[drift] payments-prod" --body-file /tmp/e7-body.md \
--labels snowops,drift --dedupe-key stack=payments-prod
echo "exit: $?"
Expected: prints the body, exit: 0. Then confirm the arg guards:
node dist/index.js --platform github --body x → --title is required, exit 1.
Part B — live upsert drill (optional, per platform, ~10 min, $0)
Run against a throwaway repo/project/team. The point is to prove idempotency: the second run updates the same ticket, it does not open a duplicate.
- Export the platform's credentials (see
README.mdtable), then run twice with the same--dedupe-key. Example for GitHub:
export GITHUB_REPOSITORY=you/sandbox GITHUB_TOKEN=ghp_...
node dist/index.js --platform github --label snowops \
--title "[e7-drill] demo" --body-file /tmp/e7-body.md \
--labels snowops --dedupe-key drill=e7
# run the exact same command again:
node dist/index.js --platform github --label snowops \
--title "[e7-drill] demo" --body-file /tmp/e7-body.md \
--labels snowops --dedupe-key drill=e7
Expected: first run logs opened … → <url>; second run logs updated … → <url>
pointing at the same ticket. Confirm in the platform UI that only one open
ticket exists. Repeat for jira / linear / ado as accounts allow.
- Close/delete the drill ticket(s).
Sign-Off
| Field | Value |
|---|---|
| Part A (typecheck + 26 tests + dry-run CLI) | ☐ PASS |
| Part B — github | ☐ PASS / ☐ skipped |
| Part B — jira | ☐ PASS / ☐ skipped |
| Part B — linear | ☐ PASS / ☐ skipped |
| Part B — ado | ☐ PASS / ☐ skipped |
| Tester | |
| Date | |
| Result | ☐ PASS |