Automated tests verify that the code does what it was programmed to do. Manual validation verifies that the code does what the user needs it to do in the real environment.
Both are required. Neither replaces the other.
During the Control Beacon build, every phase ended with specific manual test criteria.
After Phase 1: sign up, log in, verify SSO works across the hub and all applications, verify role enforcement.
After Phase 2: verify trial access, verify entitlement gating redirects correctly, verify role-based UI.
After Phase 3: complete a full purchase flow end-to-end from Paddle checkout through webhook through entitlement creation through app access.
After Phase 4: the full lifecycle - signup, trial, expiry, upgrade, payment, access, cancel, revoke, data deletion.
These are not edge cases. They are the core user workflows tested against the real production environment.
AI-generated code that passes unit tests can still break at the integration points - where authentication meets provisioning, where payment webhooks meet entitlement creation, where session management meets multi-app SSO.
A manual test case has three parts:
- Starting state,
- Action,
- Expected outcome.
Here is an example from the Control Beacon billing flow:
- Starting state: Trial user, 14 days elapsed, no payment method on file, logged into the hub.
- Action: Navigate to /billing. Select the Pro plan. Complete Paddle checkout with a test card. Wait for the success state.
- Expected outcome: Hub billing page refreshes automatically, plan status shows "Pro", all apps show as accessible, Paddle subscription created in sandbox dashboard, webhook received and logged in Central API.
That is one test case. It covers five systems - the billing page, Paddle checkout, the webhook handler, the Central API, and the entitlement layer - and it is the kind of test that only exists when a human walks through it in the real environment.
No unit test covers the chain between them.
The launch checklist in the Control Beacon framework has nine steps, and "automated tests pass" is only the first one.
The remaining eight involve testing each app individually, confirming performance, confirming UI quality on mobile, verifying pricing consistency across marketing and billing pages, testing the full end-to-end lifecycle, and verifying DNS and SSL.
Automated tests catch regressions. Manual validation catches the failures that no test was written for - because they only exist at the intersection of multiple systems.