Skip to main content

Alpha → Production QA Matrix (2026-05-12)

Scope

This matrix covers QA for promoting alpha → production for the API and service web app.

Commit window on alpha (not on main): 2026-03-16 → 2026-05-12

Primary feature groups:

  • Dynamic dashboards (API + Dashboard V2 UI)
  • Super-admin leads inbox and public lead capture
  • MFA, refresh-token lifecycle, and auth hardening
  • Stripe billing checkout, webhooks, and super-admin billing UI
  • Tier / feature-flag gating (Starter, Growth, Pro)
  • Trucking dispatch scheduler (timing alerts, resource day view, timeline DnD)
  • Tags, self-serve onboarding, tutorial progress, settings tenant isolation
  • Jobs: rates, leg create/show, leg audit on reports

Release report (dev + deploy detail): Alpha → Production Release Report (2026-05-12)

Not in scope: feature/tenant-roles-permissions (not on alpha). Mobile native/OTA unless separately released.

Environments

  • API branch: alpha → promote to main via PR #180 (refresh before merge)
  • Service branch: alpha → promote to main via PR #177 (refresh before merge)
  • API version (alpha): 2.10.13 (prod main currently 2.10.14 until next promote bump)
  • Service version (alpha): 2.31.0 (prod main currently 2.28.21)
  • App type: Trucking primary; service/repair secondary; super-admin backoffice
  • Test tenants: one Starter-tier tenant, one Growth-tier tenant, one super-admin user; optional VIP tenant with grandfatherFullAccess if testing bypass

Pre-Test Setup

  1. Deploy or use the latest alpha API and service builds (paired hosts).
  2. Prepare users: tenant admin, standard user, driver (mobile if testing API contract), super admin.
  3. Configure Stripe test keys and webhook endpoint pointing at alpha API.
  4. Configure Turnstile for public lead forms on alpha (or confirm test bypass behavior).
  5. Have at least one trucking job with legs, rates, and dispatch timing alert candidates.
  6. Have one incomplete lead in super-admin inbox and one public lead submission path ready.
  7. For Dashboard V2: confirm tenant planTier and dashboards.* feature flags for on/off cases.
  8. Refresh open alpha→main PRs so they include the 2026-05-12 beta→alpha merge before production sign-off.

Matrix

IDAreaScenarioStepsExpected Result
Q1AuthLogin and session refreshSign in on service; use app normally; trigger token refresh (wait or reload)Session remains valid; no unexpected logout loops
Q2AuthMFA challenge on loginSign in as user with MFA enabledMFA challenge appears; successful verify completes login
Q3AuthMFA recoveryUse forgot-password / MFA recovery path per product flowUser can recover access with clear errors on invalid input
Q4AuthRefresh token versioning edge caseSign in on two browsers; sign out one; refresh the otherBehavior matches policy; no silent auth corruption
Q5Tier gatingStarter tenant blocked featuresAs Starter admin, open dashboards, route optimization, or tier-gated settingsGated UI hidden or upgrade messaging shown; API returns consistent errors if forced
Q6Tier gatingGrowth tenant unlocked featuresAs Growth admin, repeat Q5 scenarios allowed for tierAllowed features work; caps (e.g. saved reports) enforced per tier
Q7Dashboard V2Create and save dashboardOpen Dashboard V2; add widgets; save layoutLayout persists on reload; widgets load data
Q8Dashboard V2Role / visibilityView dashboard as admin vs non-admin rolesWidget visibility respects role settings
Q9Dashboard V2Tier flag offTenant with dashboards disabled in flags/tierSafe empty state or redirect; no broken API errors
Q10DispatchTiming alertsOpen dispatch with timing review / attention legAlert state renders; workflow not incorrectly blocked
Q11DispatchResource day viewSwitch to resource day view; scroll time gridSticky headers and events readable; no layout break
Q12DispatchTimeline drag (optimistic)Drag event on timeline where supportedUI updates optimistically; server state syncs or rolls back cleanly
Q13JobsJob show ratesOpen job; edit ratesRates save; dashboard/job views stay consistent
Q14JobsLeg createCreate leg from job show flowLeg created; appears in job and dispatch contexts
Q15JobsLeg audit on reportOpen report path with leg auditAudit data visible; leg updates do not corrupt report
Q16SettingsUser tenant isolationAs tenant A admin, attempt to access tenant B user via settings/APIAccess denied or 404; no cross-tenant data leak
Q17TagsCreate and assign tagsCreate tag; assign to job/customerTag persists; list/filter works
Q18Super adminLeads inboxOpen leads list; filter and open detailList loads; detail matches record
Q19Super adminLead note and statusAdd note; change status and assigneeUpdates persist and appear for other super admins
Q20Super adminCreate customer from leadConvert lead to customerCustomer created; lead state updated appropriately
Q21Public leadsSubmit lead formSubmit valid public lead with Turnstile201/success; lead appears in admin pipeline
Q22Public leadsRate limit / bot protectionSubmit repeatedly from same IPRate limit or Turnstile blocks abuse with clear response
Q23BillingTenant billing summaryTenant admin opens billing in settingsSummary loads or safe empty state
Q24BillingCheckout sessionStart checkout from billing UIRedirect to Stripe test checkout without broken navigation
Q25BillingWebhook syncComplete or simulate subscription event; refresh billingCustomer billing state updates; no duplicate webhook processing
Q26BillingSuper-admin billing viewSuper admin opens customer billing tabBilling data renders for Stripe-backed test customer
Q27OnboardingSelf-serve signupComplete self-serve onboarding on alphaTenant/user created; can sign in
Q28OnboardingTutorial progressComplete or skip tutorial steps; reloadtutorialProgress persists on user
Q29OnboardingCSV import (if enabled)Upload valid CSV via onboarding pathImport succeeds or shows row-level errors
Q30Search / approvalsScoped searchSearch jobs/approvals as tenant userResults scoped to tenant only
Q31ChatThread and read stateOpen messages; send message; return to listSend works; unread state updates
Q32ReportsSaved report tier capCreate reports up to tier limitAt cap, enforcement blocks or warns per enforcementMode
Q33Mobile APILegs mobile dashboard (if mobile tested)Driver opens mobile dashboard for legsTriptych sections (active/today/upcoming) render without client errors
Q34RegressionCore job workflowCreate job → assign → complete leg pathEnd-to-end trucking flow still works
Q35RegressionManifest / invoiceOpen manifest and invoice flows touched by releaseNo regression in display or edit

API Verification Checklist

  • Health check passes on alpha after deploy.
  • GET/POST dashboard routes under /api/v1/dashboards with tenant scoping.
  • Admin leads routes: list, get, notes, status, assignee, create customer from lead.
  • POST public leads with Turnstile and rate limiting.
  • Billing: summary, checkout-session, portal; webhook handler updates customer.billing.
  • MFA challenge and refresh endpoints; refreshTokenVersion increments on login/refresh.
  • Legs getById / update return 404 for cross-tenant IDs (not 403).
  • Legs mobileDashboard response shape (triptych) for mobile consumers.
  • Feature flag resolution per planTier and grandfatherFullAccess.
  • API starts without Tag duplicate model error (post PR #185 fix).
  • Stripe env vars present in production before merge.

Service Verification Checklist

  • Login, MFA challenge, forgot password, and session flows on alpha service host.
  • Dashboard V2 builder CRUD and widget data loading.
  • Dispatch scheduler: timing alerts, resource day view, timeline interactions.
  • Job show: rates, leg create, tags UI.
  • Settings → Users: no cross-tenant leakage.
  • Super-admin: customers, leads inbox, billing tabs.
  • Billing UI navigation from tenant settings.
  • Tier-gated menu items and routes hidden or blocked appropriately.
  • Hosted app-link / association files if testing deep links from email.

Mobile Verification Checklist

(Only if mobile build is promoted with or soon after this API release.)

  • Driver login and session against alpha API.
  • Legs mobile dashboard sections match API contract.
  • Push/token behavior unchanged for auth changes.

Regression Checklist

  • Existing login/logout for web users without MFA.
  • Existing job create/edit/complete for trucking tenants.
  • Existing manifest and invoice flows.
  • Existing chat threads and notifications.
  • Manually billed tenants (no Stripe) still see safe billing empty states.
  • Super-admin routes block non-super-admin users.
  • Search and approval flows remain tenant-scoped.

Exit Criteria

  • All P0 flows in the release report pass on alpha (auth, MFA, tier gates, Dashboard V2, dispatch, jobs, settings isolation, leads, billing, onboarding, tags).
  • No blocker: API startup failure, auth outage, cross-tenant data leak, or Stripe webhook misconfiguration.
  • Promote PRs updated to include 2026-05-12 alpha tip.
  • API merged to main and health-checked before or simultaneous with service merge.
  • Production smoke: login, one job flow, Dashboard V2 or gated fallback, one billing read path.
  • Known risks documented: refresh-token churn, mobile/API contract skew if mobile not released, seat-cap mode in production env.

Metadata