Request a consultationContact

[ Demonstration ]

A launch-readiness review: sample findings and retests

A sample of the written review we deliver in a QA and launch-readiness engagement, run on an application we built for this purpose with invented data. Some defects were planted on purpose to show the method, and the report says which.

Prepared by Wagenberg Technology Group LLC. Review date: 17 October 2026. Copyright Wagenberg Technology Group LLC, all rights reserved.

1. Summary

v0.9 pre-QA (baseline)v1.0 (after fixes, final retest)
Automated checks run7575
Passed4875
Failed270
API and permission tests (node:test)30 of 35 passed35 of 35 passed
Browser tests by role at 1440 px and 390 px (Playwright)18 of 40 passed40 of 40 passed
Scripted exploratory probes flagged14 of 41 observations0 of 41 observations

Defects logged: 8 (1 Critical, 1 High, 4 Medium, 2 Low). All 8 were fixed and retested in v1.0. One fix (D-03) was incomplete on the first retest; the retest caught it and it is logged separately as D-08. Four observations remain open for the owner to decide on (section 8).

The first version of the suite had 70 checks (48 passed, 22 failed on v0.9). Five regression checks were added after the exploratory pass found D-06 and D-07, and the baseline was rerun with the full 75-check suite so that before and after numbers compare like with like. Both runs are kept in evidence/ (see evidence/RUN_LOG.md).

2. Scope and boundaries

What was tested

What was not tested

3. Severity rubric

SeverityCriteria (any one is enough)Release guidance
CriticalA user can perform an action or see data their role does not allow; records can be lost or corrupted; a core workflow is blocked for all users with no workaround.Should be fixed before release.
HighAn accountability or compliance control the business relies on (for example the audit trail) is wrong or missing; a core workflow fails for a whole role or case with no reasonable workaround.Fix before release unless the owner accepts the risk in writing.
MediumA feature works incorrectly, or cannot be used, for some users, devices or inputs, and a workaround exists; an accessibility failure that stops some users completing a task without help; bad data can be saved.Fix before or soon after release; owner decides.
LowCosmetic issues, console noise, or confusing messages with no effect on data, permissions or task completion.Schedule normally.

Severity describes impact in this application. It is a judgment applied with the written criteria above, not a score from a standard.

4. Test matrix by role

Expected behaviour per role and the checks that cover it. "403" means the server refuses the call even if the user bypasses the screen.

CapabilityRequesterManagerAdminChecks
Sign in, sign out, session ends server-sideAllowedAllowedAllowedAPI-02, API-06, E2E-01, E2E-02
Inactive account signs inn/an/an/a (refused for any role)API-04
View requestsOwn only; others' by id return 404AllAll, read onlyAPI-07, API-08, E2E-03
Create a requestAllowedAllowedForm hiddenAPI-09, E2E-04, E2E-11
Approve or reject403Allowed, not on own requests, once only403API-10, API-16 to API-20, API-22, API-23, E2E-06, E2E-08, E2E-09, E2E-11, E2E-15
Read audit trail403AllowedAllowedAPI-03, API-11, API-16, API-18, E2E-08, E2E-09, E2E-12
Manage users (list, add, change role, deactivate)403403Allowed; cannot deactivate or demote selfAPI-11, API-21, API-24 to API-27, E2E-10, E2E-12
Input validationTitle, description, priority, content type, JSON, body sizeDecision value, rejection noteName, email, role, duplicatesAPI-12.1 to API-12.6, API-13, API-14, API-17, API-22, API-24, E2E-05
No sideways scrolling of the page1440 and 390 px1440 and 390 px1440 and 390 pxE2E-13 (each role, each width)
Every visible form control labelled1440 and 390 px1440 and 390 px1440 and 390 pxE2E-14 (each role, each width)
Keyboard: Tab order on sign-in, Enter submits, decision buttons usable by keyboard, visible focusYesYesYesE2E-01, E2E-08, exploratory focus and Tab-stop probes
HTML in titles shown as text, not runYesYesYesAPI-15, E2E-07
Security headers, unknown routes, wrong methodsAllAllAllAPI-28, API-29

Known gap in the matrix: the admin's inability to create a request is checked in the browser (form hidden, E2E-11) but there is no automated API test that an admin POST /api/requests returns 403. The server code restricts that route to requester and manager; adding the API test is recommended.

Each browser check (E2E-xx) runs twice, once per width, which is why 20 browser checks produce 40 results.

5. Defects

D-01 Requester and admin can approve or reject requests through the API

D-02 Rejections are not written to the audit trail

D-03 Page scrolls sideways on a 390 px phone; buttons cannot be tapped

D-04 The "Title" field on the new request form has no label

D-05 A title made only of spaces is accepted

D-06 Every page load logs a 401 error in the browser console

D-07 Double-clicking "Approve" shows an error after a successful approval

D-08 The first fix for D-03 was incomplete: hidden labels still widened the page

6. Fixes and retest results

IDSeverityOriginv0.9 baselinev1.0 retest 1 (23:01 UTC)v1.0 final (23:07 UTC)
D-01CriticalSeeded S1Fail (6 checks)PassPass
D-02HighSeeded S2Fail (2 checks)PassPass
D-03MediumSeeded S3Fail (6 checks)Partly fixed, see D-08Pass
D-04MediumSeeded S4Fail (6 checks)PassPass
D-05MediumSeeded S5Fail (3 checks)PassPass
D-06LowFound in QAFail (3 checks)PassPass
D-07LowFound in QAFail (1 check; masked by D-03 on mobile)PassPass
D-08MediumFound in retestNot applicableFail (2 checks)Pass
Totals48 of 75 passed73 of 75 passed75 of 75 passed

The 27 baseline failures add up by defect: 6 + 2 + 6 + 6 + 3 + 3 + 1 = 27. The full change set from v0.9 to v1.0 is in evidence/v0.9-to-v1.0.diff.

7. Corrections to the test tooling (disclosed)

These were problems in the checks, not in the application. They are listed so the numbers can be trusted.

  1. Mobile width check. The first draft compared page width with window.innerWidth. In Chromium mobile emulation that value grows with overflowing content, so the check passed on a page that was visibly too wide. It now compares with the configured device width. Fixed before any recorded baseline.
  2. Focus indicator probe. The first recorded v0.9 run (22-56-37) reported "no focus outline" on the Sign out button in all 6 contexts. The probe used programmatic focus, which does not trigger :focus-visible on buttons. Changed to real Tab key presses; the outline (solid 3px) is present in every build. Not logged as a defect.
  3. Overflow element probe. Revised twice while investigating D-08 so that it neither ignores nor falsely reports content inside scroll boxes. Its final behaviour was checked against both the retest 1 code (flags the escaping labels) and the final code (no flags).
  4. Suite growth. The suite grew from 70 to 75 checks after D-06 and D-07 were found. The 75-check suite was rerun on the unchanged v0.9 build to give the baseline in section 1.

8. Open observations (not fixed; owner to decide)

IDObservationHow it was foundSuggested severity
O-01At 390 px the Approve and Reject buttons sit in the last table column, off screen to the right inside the scroll box, with no visual cue that the table scrolls. A manager on a phone may not find them.Manual review of evidence/v1.0/2026-10-17T23-07-37-843Z/screenshots/explore-mobile-390-manager.pngLow to Medium (usability). Consider a stacked card layout on narrow screens.
O-02The temporary password for a new user is shown on the admin's screen.Code read-through of POST /api/users and the admin formProcess decision. Acceptable for a demo; a production build would normally send an invitation link instead.
O-03There is no limit on failed sign-in attempts (failures are audited, but not throttled).Code read-through; not load testedMedium for an internet-facing deployment.
O-04Sessions do not expire unless the user signs out or is deactivated.Code read-throughMedium for shared or public computers.

9. Limits of this review

10. Release decision

The client decides whether to release. This report gives evidence and a severity view; it does not approve or block a release. On this evidence, every logged defect has a passing retest in v1.0 and the open observations in section 8 are for the owner to accept, schedule or fix.

The application code and the raw test evidence are kept privately by Wagenberg Technology Group. For the service itself, see QA and launch readiness.

Talk it through

Request a consultation through the contact form on this website, or email thomas@wagenbergtech.com.