{
  "summary": {
    "project": "visaready",
    "env": "sit",
    "runId": "20260711162058",
    "baseUrl": "https://visaready-sit.winds-os.com",
    "total": 58,
    "passed": 58,
    "failed": 0,
    "byArea": {
      "auth": {
        "total": 8,
        "passed": 8
      },
      "masters": {
        "total": 3,
        "passed": 3
      },
      "validation": {
        "total": 6,
        "passed": 6
      },
      "scoring": {
        "total": 9,
        "passed": 9
      },
      "crud": {
        "total": 5,
        "passed": 5
      },
      "documents": {
        "total": 4,
        "passed": 4
      },
      "payment": {
        "total": 7,
        "passed": 7
      },
      "rbac": {
        "total": 3,
        "passed": 3
      },
      "integrations": {
        "total": 2,
        "passed": 2
      },
      "profile": {
        "total": 3,
        "passed": 3
      },
      "ui": {
        "total": 8,
        "passed": 8
      }
    }
  },
  "results": [
    {
      "id": "TC-A01",
      "title": "OTP request succeeds for a new email with a resend timer",
      "area": "auth",
      "srs_ref": "VR-4.2",
      "kind": "api",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/auth/request-otp",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 42
    },
    {
      "id": "TC-A02",
      "title": "Correct OTP signs the user in and creates a customer account",
      "area": "auth",
      "srs_ref": "VR-4.2",
      "kind": "api",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/auth/request-otp",
          "ok": true
        },
        {
          "name": "POST /api/auth/verify-otp",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 39
    },
    {
      "id": "TC-A03",
      "title": "Wrong OTP is rejected",
      "area": "auth",
      "srs_ref": "VR-4.2",
      "kind": "api",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/auth/request-otp",
          "ok": true
        },
        {
          "name": "POST /api/auth/verify-otp",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 25
    },
    {
      "id": "TC-A04",
      "title": "OTP verify without a prior request is rejected as expired",
      "area": "auth",
      "srs_ref": "VR-4.2",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/auth/verify-otp",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 9
    },
    {
      "id": "TC-A05",
      "title": "Empty identifier is rejected with a helpful message",
      "area": "auth",
      "srs_ref": "VR-4.2",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/auth/request-otp",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 6
    },
    {
      "id": "TC-A06",
      "title": "Session token identifies the signed-in customer on /auth/me",
      "area": "auth",
      "srs_ref": "VR-4.2",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "GET /api/auth/me",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 27
    },
    {
      "id": "TC-A07",
      "title": "Protected APIs refuse anonymous access",
      "area": "auth",
      "srs_ref": "VR-4.2",
      "kind": "api",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "GET /api/application",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 3
    },
    {
      "id": "TC-A08",
      "title": "Mobile-number OTP login is enabled",
      "area": "auth",
      "srs_ref": "VR-4.2",
      "kind": "api",
      "priority": "P3",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/auth/request-otp",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 9
    },
    {
      "id": "TC-M01",
      "title": "Country master is seeded and searchable",
      "area": "masters",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "GET /api/country?page=1&limit=100",
          "ok": true
        },
        {
          "name": "GET /api/country?q=India",
          "ok": true
        },
        {
          "name": "GET /api/country?q=France",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 32
    },
    {
      "id": "TC-M02",
      "title": "Plans master is seeded (Lite / Starter / Advance …)",
      "area": "masters",
      "srs_ref": "VR-4.15",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "GET /api/plan?page=1&limit=50",
          "ok": true
        },
        {
          "name": "GET /api/plan?q=Starter",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 19
    },
    {
      "id": "TC-M03",
      "title": "Document checklist master is seeded",
      "area": "masters",
      "srs_ref": "VR-4.14",
      "kind": "api",
      "priority": "P3",
      "ok": true,
      "steps": [
        {
          "name": "GET /api/doc_requirement?page=1&limit=100",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 8
    },
    {
      "id": "TC-V01",
      "title": "Passport number format is enforced (8–9 uppercase alphanumerics)",
      "area": "validation",
      "srs_ref": "VR-4.7",
      "kind": "api",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/application",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 6
    },
    {
      "id": "TC-V02",
      "title": "PIN code must be 6 digits",
      "area": "validation",
      "srs_ref": "VR-4.9",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/application",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 4
    },
    {
      "id": "TC-V03",
      "title": "Travel end date cannot be before the start date (cross-field)",
      "area": "validation",
      "srs_ref": "VR-4.8",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/application",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 3
    },
    {
      "id": "TC-V04",
      "title": "Required fields are enforced on application create",
      "area": "validation",
      "srs_ref": "VR-4.9",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/application",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 15
    },
    {
      "id": "TC-V05",
      "title": "GSTIN format is validated when provided",
      "area": "validation",
      "srs_ref": "VR-4.9",
      "kind": "api",
      "priority": "P3",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/application",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 6
    },
    {
      "id": "TC-V06",
      "title": "Passport expiry must be after the issue date (cross-field)",
      "area": "validation",
      "srs_ref": "VR-4.7",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/application",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 4
    },
    {
      "id": "TC-S01",
      "title": "Customer can create a complete application (draft)",
      "area": "scoring",
      "srs_ref": "VR-4.7",
      "kind": "api",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/application",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 21
    },
    {
      "id": "TC-S02",
      "title": "VisaScore Lite — strong profile scores High (≥85)",
      "area": "scoring",
      "srs_ref": "VR-4.13",
      "kind": "api",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/flows/generate_lite_score/run",
          "ok": true
        },
        {
          "name": "GET /api/application/14",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 48
    },
    {
      "id": "TC-S03",
      "title": "Scoring is blocked until the return declaration is confirmed",
      "area": "scoring",
      "srs_ref": "VR-4.12",
      "kind": "api",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/application",
          "ok": true
        },
        {
          "name": "POST /api/flows/generate_lite_score/run",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 21
    },
    {
      "id": "TC-S04",
      "title": "VisaScore Lite — weak profile lands in the Low band (≤30)",
      "area": "scoring",
      "srs_ref": "VR-4.13",
      "kind": "api",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/application",
          "ok": true
        },
        {
          "name": "POST /api/flows/generate_lite_score/run",
          "ok": true
        },
        {
          "name": "GET /api/application/16",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 76
    },
    {
      "id": "TC-S05",
      "title": "Final VisaScore — full lifecycle to Strong Readiness with VisaMatrix report",
      "area": "scoring",
      "srs_ref": "VR-4.16",
      "kind": "api",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/application/14/transition",
          "ok": true
        },
        {
          "name": "POST /api/application/14/transition",
          "ok": true
        },
        {
          "name": "POST /api/flows/generate_final_score/run",
          "ok": true
        },
        {
          "name": "GET /api/application/14",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 172
    },
    {
      "id": "TC-S06",
      "title": "One free score regeneration is allowed",
      "area": "scoring",
      "srs_ref": "VR-5.3",
      "kind": "api",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/flows/regenerate_score/run",
          "ok": true
        },
        {
          "name": "GET /api/application/14",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 79
    },
    {
      "id": "TC-S07",
      "title": "A second regeneration is refused (2 scores total)",
      "area": "scoring",
      "srs_ref": "VR-5.3",
      "kind": "api",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/flows/regenerate_score/run",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 11
    },
    {
      "id": "TC-S08",
      "title": "Every final score writes a VisaMatrix report record",
      "area": "scoring",
      "srs_ref": "VR-4.16",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "GET /api/visa_report?page=1&limit=50",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 11
    },
    {
      "id": "TC-S09",
      "title": "Lifecycle-button path also produces the Lite score (transition + async flow)",
      "area": "scoring",
      "srs_ref": "VR-4.13",
      "kind": "api",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/application",
          "ok": true
        },
        {
          "name": "POST /api/application/17/transition",
          "ok": true
        },
        {
          "name": "GET /api/application/17",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 107
    },
    {
      "id": "TC-C01",
      "title": "Applications are searchable by title",
      "area": "crud",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "GET /api/application?q=QA%20Strong%2020260711162058",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 17
    },
    {
      "id": "TC-C02",
      "title": "List pagination respects the limit",
      "area": "crud",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "GET /api/application?page=1&limit=2",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 20
    },
    {
      "id": "TC-C03",
      "title": "Application fields can be updated (PATCH)",
      "area": "crud",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "PATCH /api/application/14",
          "ok": true
        },
        {
          "name": "GET /api/application/14",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 48
    },
    {
      "id": "TC-C04",
      "title": "Deleting an application removes it from lists (soft delete)",
      "area": "crud",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/application",
          "ok": true
        },
        {
          "name": "DELETE /api/application/18",
          "ok": true
        },
        {
          "name": "GET /api/application?q=QAScratch20260711162058",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 66
    },
    {
      "id": "TC-C05",
      "title": "Fetching a non-existent application returns 404",
      "area": "crud",
      "kind": "api",
      "priority": "P3",
      "ok": true,
      "steps": [
        {
          "name": "GET /api/application/999999",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 9
    },
    {
      "id": "TC-D01",
      "title": "Customer can attach a document to their application",
      "area": "documents",
      "srs_ref": "VR-4.14",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/document",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 29
    },
    {
      "id": "TC-D02",
      "title": "Document can be verified (uploaded → verified)",
      "area": "documents",
      "srs_ref": "VR-4.14",
      "kind": "api",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/document/8/transition",
          "ok": true
        },
        {
          "name": "GET /api/document/8",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 34
    },
    {
      "id": "TC-D03",
      "title": "Admin can flag a document",
      "area": "documents",
      "srs_ref": "VR-4.14",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/document",
          "ok": true
        },
        {
          "name": "PATCH /api/document/9",
          "ok": true
        },
        {
          "name": "POST /api/document/9/transition",
          "ok": true
        },
        {
          "name": "GET /api/document/9",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 61
    },
    {
      "id": "TC-D04",
      "title": "Customer cannot flag documents (admin-only transition)",
      "area": "documents",
      "srs_ref": "VR-4.14",
      "kind": "api",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/document",
          "ok": true
        },
        {
          "name": "POST /api/document/10/transition",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 20
    },
    {
      "id": "TC-P01",
      "title": "Admin can register an agency",
      "area": "payment",
      "srs_ref": "VR-4.5",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/agency",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 13
    },
    {
      "id": "TC-P02",
      "title": "Admin approves the agency (KYC → active)",
      "area": "payment",
      "srs_ref": "VR-4.5",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/agency/6/transition",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 14
    },
    {
      "id": "TC-P03",
      "title": "Admin issues a promo code allocated to the agency",
      "area": "payment",
      "srs_ref": "VR-4.15",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/promo_code",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 10
    },
    {
      "id": "TC-P04",
      "title": "Valid promo waives the fee and issues an invoice",
      "area": "payment",
      "srs_ref": "VR-4.15",
      "kind": "api",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/payment",
          "ok": true
        },
        {
          "name": "POST /api/flows/apply_promo/run",
          "ok": true
        },
        {
          "name": "GET /api/payment/8",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 91
    },
    {
      "id": "TC-P05",
      "title": "Unknown promo code is rejected with guidance",
      "area": "payment",
      "srs_ref": "VR-4.15",
      "kind": "api",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/payment",
          "ok": true
        },
        {
          "name": "POST /api/flows/apply_promo/run",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 18
    },
    {
      "id": "TC-P06",
      "title": "Applying promo without a code tells the user to enter one",
      "area": "payment",
      "srs_ref": "VR-4.15",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/payment",
          "ok": true
        },
        {
          "name": "POST /api/flows/apply_promo/run",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 15
    },
    {
      "id": "TC-P07",
      "title": "Successful payment triggers automatic invoice issuance",
      "area": "payment",
      "srs_ref": "VR-4.15",
      "kind": "api",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/payment/10/transition",
          "ok": true
        },
        {
          "name": "GET /api/payment/10",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 1036
    },
    {
      "id": "TC-R01",
      "title": "Customer cannot approve agencies (admin-only lifecycle)",
      "area": "rbac",
      "srs_ref": "VR-4.5",
      "kind": "api",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/agency",
          "ok": true
        },
        {
          "name": "POST /api/agency/7/transition",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 34
    },
    {
      "id": "TC-R02",
      "title": "Flows cannot be triggered anonymously",
      "area": "rbac",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/flows/generate_final_score/run",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 3
    },
    {
      "id": "TC-R03",
      "title": "SIT header-auth backdoor works for admin (must be OFF outside SIT)",
      "area": "rbac",
      "kind": "api",
      "priority": "P3",
      "ok": true,
      "steps": [
        {
          "name": "GET /api/auth/me",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 1
    },
    {
      "id": "TC-I01",
      "title": "Signed-in users can upload files (storage slot → R2)",
      "area": "integrations",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/upload",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 217
    },
    {
      "id": "TC-I02",
      "title": "Anonymous users cannot upload files",
      "area": "integrations",
      "kind": "api",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/upload",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 6
    },
    {
      "id": "TC-F01",
      "title": "Customer can create their applicant profile",
      "area": "profile",
      "srs_ref": "VR-4.6",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/applicant_profile",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 18
    },
    {
      "id": "TC-F02",
      "title": "Duplicate profile email is rejected cleanly (unique)",
      "area": "profile",
      "srs_ref": "VR-4.6",
      "kind": "api",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/applicant_profile",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 8
    },
    {
      "id": "TC-F03",
      "title": "First name must be at least 2 characters",
      "area": "profile",
      "srs_ref": "VR-4.6",
      "kind": "api",
      "priority": "P3",
      "ok": true,
      "steps": [
        {
          "name": "POST /api/applicant_profile",
          "ok": true
        }
      ],
      "evidence": [],
      "durationMs": 5
    },
    {
      "id": "TC-U01",
      "title": "Email OTP login lands on the personalised dashboard",
      "area": "ui",
      "srs_ref": "VR-4.2",
      "kind": "ui",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "goto: \"/\"",
          "ok": true
        },
        {
          "name": "fill: {\"placeholder\": \"you@example.com\", \"value\": \"qa.20260711162058@visaready.test\"}",
          "ok": true
        },
        {
          "name": "tap: \"Send code\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Enter the 4-digit code\"",
          "ok": true
        },
        {
          "name": "fill: {\"nth\": 0, \"value\": \"1234\"}",
          "ok": true
        },
        {
          "name": "tap: \"Verify & sign in\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Hi there\"",
          "ok": true
        },
        {
          "name": "screenshot: \"home\"",
          "ok": true
        }
      ],
      "error": null,
      "evidence": [
        "TC-U01-home.png"
      ],
      "console": [],
      "durationMs": 3111
    },
    {
      "id": "TC-U02",
      "title": "Wrong OTP shows an inline error",
      "area": "ui",
      "srs_ref": "VR-4.2",
      "kind": "ui",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "goto: \"/\"",
          "ok": true
        },
        {
          "name": "fill: {\"placeholder\": \"you@example.com\", \"value\": \"qa.ui2.20260711162058@visaready.test\"}",
          "ok": true
        },
        {
          "name": "tap: \"Send code\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Enter the 4-digit code\"",
          "ok": true
        },
        {
          "name": "fill: {\"nth\": 0, \"value\": \"9999\"}",
          "ok": true
        },
        {
          "name": "tap: \"Verify & sign in\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Incorrect code\"",
          "ok": true
        },
        {
          "name": "screenshot: \"wrong-otp\"",
          "ok": true
        }
      ],
      "error": null,
      "evidence": [
        "TC-U02-wrong-otp.png"
      ],
      "console": [
        "error: Failed to load resource: the server responded with a status of 401 (Unauthorized)"
      ],
      "durationMs": 2905
    },
    {
      "id": "TC-U03",
      "title": "Dashboard shows score card, journeys, recent apps and explore links",
      "area": "ui",
      "srs_ref": "VR-2.2",
      "kind": "ui",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "goto: \"/\"",
          "ok": true
        },
        {
          "name": "fill: {\"placeholder\": \"you@example.com\", \"value\": \"qa.20260711162058@visaready.test\"}",
          "ok": true
        },
        {
          "name": "tap: \"Send code\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Enter the 4-digit code\"",
          "ok": true
        },
        {
          "name": "fill: {\"nth\": 0, \"value\": \"1234\"}",
          "ok": true
        },
        {
          "name": "tap: \"Verify & sign in\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Hi there\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Visa Readiness\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Get started\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Visa Application (6 Steps + Score)\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Start New Application\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Explore\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Indicative (Lite) result\"",
          "ok": true
        },
        {
          "name": "screenshot: \"dashboard\"",
          "ok": true
        }
      ],
      "error": null,
      "evidence": [
        "TC-U03-dashboard.png"
      ],
      "console": [],
      "durationMs": 2866
    },
    {
      "id": "TC-U04",
      "title": "Profile tab opens the applicant profile form",
      "area": "ui",
      "srs_ref": "VR-4.6",
      "kind": "ui",
      "priority": "P2",
      "ok": true,
      "steps": [
        {
          "name": "goto: \"/\"",
          "ok": true
        },
        {
          "name": "fill: {\"placeholder\": \"you@example.com\", \"value\": \"qa.20260711162058@visaready.test\"}",
          "ok": true
        },
        {
          "name": "tap: \"Send code\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Enter the 4-digit code\"",
          "ok": true
        },
        {
          "name": "fill: {\"nth\": 0, \"value\": \"1234\"}",
          "ok": true
        },
        {
          "name": "tap: \"Verify & sign in\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Hi there\"",
          "ok": true
        },
        {
          "name": "tap: \"Profile\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Passport Number\"",
          "ok": true
        },
        {
          "name": "screenshot: \"profile\"",
          "ok": true
        }
      ],
      "error": null,
      "evidence": [
        "TC-U04-profile.png"
      ],
      "console": [],
      "durationMs": 3487
    },
    {
      "id": "TC-U05",
      "title": "Customer does not see admin/agent-only navigation",
      "area": "ui",
      "kind": "ui",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "goto: \"/\"",
          "ok": true
        },
        {
          "name": "fill: {\"placeholder\": \"you@example.com\", \"value\": \"qa.20260711162058@visaready.test\"}",
          "ok": true
        },
        {
          "name": "tap: \"Send code\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Enter the 4-digit code\"",
          "ok": true
        },
        {
          "name": "fill: {\"nth\": 0, \"value\": \"1234\"}",
          "ok": true
        },
        {
          "name": "tap: \"Verify & sign in\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Hi there\"",
          "ok": true
        },
        {
          "name": "expect_not_text: \"Leads\"",
          "ok": true
        },
        {
          "name": "expect_not_text: \"Administration\"",
          "ok": true
        }
      ],
      "error": null,
      "evidence": [],
      "console": [],
      "durationMs": 5724
    },
    {
      "id": "TC-U06",
      "title": "Guided journey opens at Step 1 with the passport form",
      "area": "ui",
      "srs_ref": "VR-2.2",
      "kind": "ui",
      "priority": "P1",
      "ok": true,
      "steps": [
        {
          "name": "goto: \"/\"",
          "ok": true
        },
        {
          "name": "fill: {\"placeholder\": \"you@example.com\", \"value\": \"qa.20260711162058@visaready.test\"}",
          "ok": true
        },
        {
          "name": "tap: \"Send code\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Enter the 4-digit code\"",
          "ok": true
        },
        {
          "name": "fill: {\"nth\": 0, \"value\": \"1234\"}",
          "ok": true
        },
        {
          "name": "tap: \"Verify & sign in\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Hi there\"",
          "ok": true
        },
        {
          "name": "tap: \"Visa Application (6 Steps + Score)\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Step 1 of 7\"",
          "ok": true
        },
        {
          "name": "fill: {\"placeholder\": \"Passport Number\", \"value\": \"M7654321\"}",
          "ok": true
        },
        {
          "name": "screenshot: \"wizard-step1\"",
          "ok": true
        }
      ],
      "error": null,
      "evidence": [
        "TC-U06-wizard-step1.png"
      ],
      "console": [],
      "durationMs": 3402
    },
    {
      "id": "TC-U07",
      "title": "Explore links include the Terms & Consent page",
      "area": "ui",
      "srs_ref": "VR-4.4",
      "kind": "ui",
      "priority": "P3",
      "ok": true,
      "steps": [
        {
          "name": "goto: \"/\"",
          "ok": true
        },
        {
          "name": "fill: {\"placeholder\": \"you@example.com\", \"value\": \"qa.20260711162058@visaready.test\"}",
          "ok": true
        },
        {
          "name": "tap: \"Send code\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Enter the 4-digit code\"",
          "ok": true
        },
        {
          "name": "fill: {\"nth\": 0, \"value\": \"1234\"}",
          "ok": true
        },
        {
          "name": "tap: \"Verify & sign in\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Hi there\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Terms of Use, Consent & Disclaimer\"",
          "ok": true
        }
      ],
      "error": null,
      "evidence": [],
      "console": [],
      "durationMs": 2576
    },
    {
      "id": "TC-U08",
      "title": "Library tab renders without errors",
      "area": "ui",
      "kind": "ui",
      "priority": "P3",
      "ok": true,
      "steps": [
        {
          "name": "goto: \"/\"",
          "ok": true
        },
        {
          "name": "fill: {\"placeholder\": \"you@example.com\", \"value\": \"qa.20260711162058@visaready.test\"}",
          "ok": true
        },
        {
          "name": "tap: \"Send code\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Enter the 4-digit code\"",
          "ok": true
        },
        {
          "name": "fill: {\"nth\": 0, \"value\": \"1234\"}",
          "ok": true
        },
        {
          "name": "tap: \"Verify & sign in\"",
          "ok": true
        },
        {
          "name": "expect_text: \"Hi there\"",
          "ok": true
        },
        {
          "name": "tap: \"Library\"",
          "ok": true
        },
        {
          "name": "wait: 1500",
          "ok": true
        },
        {
          "name": "screenshot: \"library\"",
          "ok": true
        }
      ],
      "error": null,
      "evidence": [
        "TC-U08-library.png"
      ],
      "console": [],
      "durationMs": 4818
    }
  ]
}