Skip to content

This is an internal working record, not an everyday instruction. It was written while the system was being rebuilt, for whoever maintains it. If you are here to do today's work, use the everyday documents instead: Procedures · Processes · Runbooks · The working day, step by step

Legacy Browser Test Cases

This document is the execution checklist for the test session that owns Legacy incident confirmation. It is not a description of the test implementation itself, and it uses only Local Legacy and Local DB. No separate E2E DB is created.

Execution Boundary

  • Runtime: http://127.0.0.1:8080
  • DB: confirm Local first with SELECT @@hostname, @@port, DATABASE().
  • No Production DB writes, no provider (QBO, Telegram, Email) calls, no import or migration is run.
  • Write tests use only uniquely marked fixtures, and active residue must be 0 at the end.
  • A result is recorded as one of PASS, FAIL, BLOCKED, NOT_RUN, NOT_APPLICABLE.
  • An HTTP 200, a screen that loads, or a registered test does not make a business flow PASS.

Execution Order

P0-1. Core field-work buttons

node scripts/smoke/field_process_ui_smoke.js --base-url=http://127.0.0.1:8080

All eleven of the following must pass with real browser interaction and DB readback/cleanup:

  1. Displaying the wrong-login error
  2. Office Planning Board date entry and search
  3. Jay loader assignment and readback
  4. Anahi loader assignment and readback
  5. Domestic Pickup create, screen display, cancel
  6. Driver API user assignment and readback
  7. Loader search, Start, Undo
  8. Yard Instruction Claim, Complete, Yard position readback
  9. Yard Dispatch edit save and cancel
  10. Driver remark edit save
  11. Warehouse Label search

Verdict: every step OK, fixture active residue 0, no browser page errors or 5xx.

P0-2. Per-role menus and internal lookup buttons

node scripts/smoke/p2_client2_menu_runtime_smoke.js --client=1
node scripts/smoke/p2_client2_menu_runtime_smoke.js --client=2

Log in with a temporary account for each active role and confirm navigation and read/refresh behaviour across every menu shown. Any DEFAULT_MENU_ID or temporary account the test changed must always be restored or deleted. Because it calls no external provider, this test is not blocked by whether the tenant has Email, QBO or Telegram enabled.

P0-3. Shared list CRUD entry points

node scripts/smoke/kj-view-browser-smoke.js

Confirm the search and the Create/Edit/Delete entry points of every routed, enabled KJView. A screen with no rows cannot exercise Edit/Delete is recorded as no-row, an inactive feature as disabled, and an unregistered screen as NOT_RUN. Confirming an entry point is not evidence of a successful save, so a screen where the save actually matters runs a separate P1 case.

P0-4. Full menu health sweep

CTC_BASE_URL=http://127.0.0.1:8080 \
  node scripts/browser/gates/gate-legacy-visible-menu-health-no-write.js

Sweep the menus visible to an administrator, read-only. A single HTTP 5xx, page error, login redirect, or fatal/SQL error message is a FAIL. This result does not substitute for a successful CRUD.

P1. Detail CRUD And Recovery

Run the following in order once all of P0 is finished.

  1. Scale: check-in, reweigh/update, check-out, void/delete, cleanup
  2. Appointment/Inbound: create, edit, recovery from duplicate/invalid input, cleanup
  3. Booking/Commercial/Allocation: create, edit, cancel/delete or restore, cleanup
  4. Customer PO/Company/Equipment/Rate: real save and delete readback
  5. Driver Delivery: start, field save, arrival, complete, checkout
  6. Billing: run only local transaction save/readback and mark the provider result NOT_RUN

The combined runner is:

CTC_BASE_URL=http://127.0.0.1:8080 node scripts/run_full_runtime_test.js

The combined runner exists to collect status from several independent suites. It continues with the rest when some suites fail, and it neither hides an individual FAIL in the final summary nor turns it into an overall PASS.

Currently Known Follow-Up Targets

In the 2026-09-20 Local run the following are still FAIL, and the next test session prioritises classifying them.

Area Current failure boundary Next verdict
Three Client 2 recovery cases The required baseline fixture / Role-2 user is missing BLOCKED if the fixture is genuinely missing; add fixture creation/cleanup if the script should own it
Scale safety Failed to fetch while waiting for the check-in response Check the real request URL, the response and the screen error
Client 2 Scale The created order row is not found on the screen Check the list refresh, filter and UUID path
Field CRUD Yard transload unavailable Check fixture state and the Yard owner condition
Client 2 extended Required shipper/consignee reference and atomic-save response fail Separate tenant reference fixture from product validation
Menu cache Identical impersonation cache key Check the test expectation against the real cache owner

Runner problems that are already fixed are not recorded as incidents again: undefined path variables, the wrong UAT directory, and excessive module blocking in a menu test that does not call any provider.

Second Browser Check

Separately from the automated suites, check the same screens in a fresh ego-browser TaskSpace.

  • Enter the screen through the menu.
  • Confirm that the Create/Edit/Delete or Cancel buttons and the required inputs are actually visible.
  • Where the automated suite proved a save with a fixture, confirm the screen display of the same marker.
  • Additional writes are not required; modal open/cancel checks are recorded read-only.
  • If only one of the automated suite and the browser check was run, leave the other as NOT_RUN.

Result Record Format

Environment: Local 127.0.0.1:8080 / DB host:port:name
Role, screen:
Action: create | edit | delete/cancel | read
Result: PASS | FAIL | BLOCKED | NOT_RUN | NOT_APPLICABLE
DB readback:
cleanup:
artifact:
remaining gap:

Source: docs/runbooks/LEGACY_BROWSER_TEST_CASES.md — ctc repository · This page is an English translation of the source document. Identifiers, file paths and code symbols are unchanged.