Fibretrace Monet docs/QC test script/Test cases

FibreTrace QC Test Script — Test Cases (condensed)

Source: .local/qc-test-script/fibretrace-qc-test-script.docx (v1.0, received from Malcolm 2026-08-19). Plain-text extraction: extracted.txt (line numbers cited in analysis.md refer to that file). 50 cases across 6 sections + sign-off. Sections run in order: FT Admin creates the data every other persona depends on. Results are recorded per release in the companion CSV (fibretrace-qc-test-script.csv). Every screen also gets the four cross-cutting checks: on-screen text/terminology, error messages, presence + destination of contextual CTAs, and KPI values reconciling with the underlying lists.

Key rules under test

  1. 1 CU (Claim Unit / credit unit) = 1 kg. CU = quantity × net weight × blend %.
  2. Blend % must come from the admin product-category configuration, never a hard-coded value.
  3. A company is a Fibre Producer only if registered as a producer on a programme. An SDU or EWR assignment alone is a feature gate, not a persona.
  4. Verification / scan IDs and blockchain GUIDs are obfuscated by default; they unmask only when linked to a claim.
  5. Reservations default to an 18-month expiry and may carry negative entries (capacity release).
  6. Reservations, nominations and claims must reconcile: reserved ≥ nominated ≥ claimed.

Test environment checklist

  • One programme with capacity, one program owner, one Tier 0 participant, one Tier 1 manufacturer, one Tier 4 producer.
  • At least one facility + scanner per manufacturer, one SDU and one EWR source per producer.
  • A company with the Insights module on and one with it off.
  • A brand-new empty account per persona to test first-login empty states.

Test cases

ID Persona Route What it tests Expected result (condensed)
A-01 FT Admin /admin/programs Create a fibre programme: name, fibre type, status active, start/end dates, default blend % Programme listed as Active; creation toast; on re-open every field persisted, no blank blend %
A-02 FT Admin /admin/programs Assign a reservation (capacity) to the Tier 0 retailer: amount in CU, start date, expiry Reservation row shows CU + expiry; expiry defaults to 18 months when blank; value echoed on retailer’s /claim-position Program Capacity card as Total Amount Reserved
A-03 FT Admin /admin/reservation-requests Approve one reservation request, reject another with a reason Approval creates a positive-CU reservation history entry and leaves pending; rejection shows reason; requesting company sees updated capacity
A-04 FT Admin /admin/reservation-requests Negative adjustment (capacity release): add a reservation history entry with negative CU Negative value accepted and saved; Total Amount Reserved decreases; no validation error blocking the minus sign
A-05 FT Admin /admin/companies Add a Tier 1 manufacturer: type, 3-letter company code, country; register on programme Company saved with unique code; Programme column shows registration + role Manufacturer; role derived from registration tables, not activity
A-06 FT Admin /admin/companies Add a Tier 4 fibre producer and register it against the programme as producer Role Fibre Producer for that programme only; Producer sidebar (Production / SDU / EWR) appears only after registration, not from an SDU assignment alone
A-07 FT Admin /admin/companies Add a Tier 0 retailer/brand as programme participant Participant listed under programme; Traceability Workflow menu (Link your POs / Ready to Claim / Verification Records) available at first login
A-08 FT Admin /admin/companies Enable optional modules (incl. Insights): toggle on, save, reload Toggle persists; Insights appears under Program Configuration for that company only; other companies unchanged
A-09 FT Admin /admin/companies Create a program owner: flag company, invite owner user, add programme credentials (certificates, documents, claim wording) Owner user receives invite and lands on /owner; uploads visible on /owner/certificates and /owner/documents and referenced in participant evidence
A-10 FT Admin /admin/signup-requests Approve a self-service signup (assign company + role); reject a second Approved user logs in with correct persona menu; rejected user sees rejection state on /signup/status; no anonymous access
A-11 FT Admin /admin/facilities, /admin/scanners Register facility for the Tier 1 company; create scanner and assign to it Scanner shows facility + owning company; appears in the Tier 1 user’s /scanners list only
A-12 FT Admin /admin/licensing Add/edit a facility licence line (cost, period) Licence cost stored and surfaced on the customer’s facility record / billing view; no NaN or blank currency
A-13 FT Admin /admin/overrides Add a rate/quantity override for a programme or company, then raise a nomination New nomination uses the override values (blend %, rate) rather than defaults
A-14 FT Admin /admin/claim-verifications Repair verification-to-claim links: add one verification to a claim, remove one Claim CU total recalculates; connection status flips Inert ↔ Linked; claim company name appears on the verification
A-15 FT Admin /admin/settings Toggle ‘Obfuscate verification IDs’ off then on Default is ON; when ON, scan/verification IDs and blockchain GUIDs masked everywhere except records linked to a claim
O-01 Program Owner /owner Owner KPI strip after login All metrics in credit units (CU); unlinked demand and over-commitment highlighted red when commitments exceed programme capacity
O-02 Program Owner /owner/certificates, /owner/documents Upload certificate with expiry; upload programme document assigned to programme Items listed with expiry dates; expired items flagged; assigned items appear in participant verification records
O-03 Program Owner /owner/program-uptake, /owner/program-record Review uptake by participant and programme record items Volumes reconcile with admin reservations and participant claims (same CU totals)
P-01 Tier 4 Producer sidebar (menu gating) Producer menu only for registered producers: log in as registered producer, then as SDU-assigned-only company Registered producer sees Production (SDU / EWR / Manual); SDU-only company does NOT see Production or SDU Device Status
P-02 Tier 4 Producer /sdu SDU device status and feed: check states (feeding, idle, paused, fault) Each SDU shows current status, facility, last activity; labels match device state; no unknown/blank status
P-03 Tier 4 Producer /fibre-creation Create fibre via SDU: start and end an SDU-fed production run Production record created with SDU reference, facility, weight, pigment/FTID; volume totals update on producer dashboard
P-04 Tier 4 Producer /fibre-creation Create fibre via EWR: record an EWR-based production entry Record saved with EWR source; appears in production list distinguishable from SDU runs
P-05 Tier 4 Producer /fibre-creation Manual production entry (date, facility, weight, programme) Accepted with weight/date validation; Manual source labelled; admin sees it under /admin/fibre-production
P-06 Tier 4 Producer /fibre-creation Production limits: attempt entry exceeding the producer’s programme allocation Clear blocking error naming the limit; no partial record written
M-01 Tier 1 Manufacturer /facilities, /facilities/add Add a new facility with address/country; review licence cost shown Facility saved; licence cost/fee displayed with currency; facility selectable when requesting a scanner
M-02 Tier 1 Manufacturer /scanners Request a scanner for the new facility; admin assigns; reload Scanner listed against the correct facility; unassigned facilities show an empty state with a request CTA
M-03 Tier 1 Manufacturer /verifications (Scan History) Perform/simulate scans on the assigned scanner; open Scan History Each scan row shows date, facility, scanner, volume; scan/verification ID obfuscated; connection status = Inert with tooltip explaining it is not yet linked
M-04 Tier 1 Manufacturer /partners Invite a partner by 3-letter company code (test lower case, e.g. ‘tar’) Code match case-insensitive; invalid code gives clear ‘company not found’; accepted invite makes partner selectable on nominations
M-05 Tier 1 Manufacturer /link-to-po Link scans to a PO / nomination: select shared nomination line, attach scans, propose the claim Only scans from own (or shared) facilities selectable; linked CU total shown, cannot silently exceed the PO line; proposal moves line to Ready to Claim for the retailer
M-06 Tier 1 Manufacturer /link-to-po Cross-company facility guard: link a scan from a facility not belonging to the PO partner Blocked with explicit message, not a generic 500; legitimately shared scans must succeed
M-07 Tier 1 Manufacturer / (dashboard) Manufacturer KPIs after linking Counts for scans, linked CU, open nominations match the underlying lists; empty states when nothing to action
R-01 Tier 0 Retailer/Brand /purchase-orders Create a nomination (PO) manually: multiple lines with HS codes, categories, qty, net weight; assign to Tier 1; share Blend % pulled from admin/product-category config (not hard-coded); CU per line = qty × net weight × blend, 1 CU = 1 kg; multi-line totals sum; status draft → shared
R-02 Tier 0 Retailer/Brand /purchase-orders Import POs from CSV/file; review import summary Valid rows imported with categories mapped; invalid rows reported per-row with reason; nothing silently dropped
R-03 Tier 0 Retailer/Brand /claim-position Program capacity and reservation history Only Total Amount Reserved as headline; Reservation History (incl. negative releases + expiry dates) on same page; red ‘Over limit’ warning when PO-raised CU exceeds the reservation
R-04 Tier 0 Retailer/Brand /claim-position Request more reservation with a CU estimate Request appears in /admin/reservation-requests; once approved, capacity and over-limit warning update
R-05 Tier 0 Retailer/Brand Add reservation modal CU estimator via product lines (qty, weight, blend) Estimated CU recalculates live and carries into the request; zero/blank inputs do not produce NaN
R-06 Tier 0 Retailer/Brand /ready-to-claim Review manufacturer proposals; inspect a line where manufacturer qty differs from PO Variance vs PO highlighted; lines whose claiming CU exceeds the reservation flagged; ‘deselect to fit’ reduces selection to remaining capacity
R-07 Tier 0 Retailer/Brand /ready-to-claim Bulk approval: select multiple lines, approve; repeat with insufficient credits Success creates claims for every selected line; shortfall shows clear blocking message naming it; no partial/duplicate claims
R-08 Tier 0 Retailer/Brand Activate/claim modal Claim the entire remaining volume of a nomination PO status closes off (fully claimed/closed); obfuscated summary of PO lines + scans shown in modal before confirming
R-09 Tier 0 Retailer/Brand Partial shipment Claim part of a nomination line Remaining CU correct, line stays claimable; status shows partially claimed
R-10 Tier 0 Retailer/Brand /claims Verification record content: expand a claim row; use ‘Add certificate’ Linked evidence, consignment, supply chain map, Program Scope & Methods render; certificate attaches and persists; no dead ‘view more details’ link
R-11 Tier 0 Retailer/Brand /claims Add extra verifications from own scans and scans shared with the company Only permitted verifications listed; claim CU total updates; verification IDs unmask once linked and show the claiming company name
R-12 Tier 0 Retailer/Brand / (dashboard) Tier 0 KPIs and at-a-glance widget, with data and with a fresh/empty account KPI CU totals reconcile with /claim-position and /claims; capacity modal breaks down nominated vs not-yet-nominated CU; empty account shows dashed ‘Create a nomination’ placeholder, not a broken card
R-13 Tier 0 Retailer/Brand /insights Insights module (Walmart only in test data): filters Year/Quarter/Month/All, compare toggle, chart CSV export, ‘Export all data’ Charts redraw per filter; forecast line only with enough points; CSV row counts + totals match on-screen KPIs; module hidden for companies without the flag
X-01 Cross-cutting cross-page Verification matches scans: compare one claim’s verification list to Scan History and the manufacturer’s linked scans Same scan count and identical CU total in all three places; no scan on two claims
X-02 Cross-cutting all pages Terminology sweep: walk the whole menu per persona Consistent wording: Nominations (not Purchase Order), Verification Records (not Claims), Traceability Workflow, Scan History, Scanner Records, Claim Unit (CU) / credit units, ‘Claim’ (never ‘Activate’)
X-03 Cross-cutting all forms Error/validation messages: submit each key form empty, zero, over-limit, duplicate Field-level messages human-readable and specific; no raw database/trigger text, no silent failure, no unhandled console error
X-04 Cross-cutting open actions Contextual CTAs for states: partner not connected, items blocked from claiming, no reservation, no scanner Each state offers the right CTA (Invite partner / go to Ready to Claim / request reservation / request scanner) landing on the correct page
X-05 Cross-cutting cross-persona Persona isolation: open another persona’s routes directly (e.g. /admin, /owner, /sdu) Access denied or redirect; no other company’s data visible in lists, exports or IDs
X-06 Cross-cutting new account First-login experience: brand-new company of each persona Every landing page shows an intentional empty state with a next-step CTA — no unexplained zero-value KPI grid, no legacy screens

Sign-off areas

FT Admin · Program Owner · Tier 4 Producer · Tier 1 Manufacturer · Tier 0 Retailer · Cross-cutting — each with Tester / Date / Pass-Fail / Notes columns.