{
  "config": {
    "configFile": "/app/playwright.config.ts",
    "rootDir": "/app/tests",
    "forbidOnly": true,
    "fullyParallel": true,
    "globalSetup": null,
    "globalTeardown": null,
    "globalTimeout": 0,
    "grep": {},
    "grepInvert": null,
    "maxFailures": 0,
    "metadata": {
      "actualWorkers": 2
    },
    "preserveOutput": "always",
    "projects": [
      {
        "outputDir": "/app/artifacts/test-results",
        "repeatEach": 1,
        "retries": 1,
        "metadata": {
          "actualWorkers": 2
        },
        "id": "api-no-auth",
        "name": "api-no-auth",
        "testDir": "/app/tests",
        "testIgnore": [],
        "testMatch": [
          "/tests\\/api\\/.*\\.spec\\.ts/",
          "/tests\\/smoke\\/public-health\\.spec\\.ts/"
        ],
        "timeout": 60000
      },
      {
        "outputDir": "/app/artifacts/test-results",
        "repeatEach": 1,
        "retries": 1,
        "metadata": {
          "actualWorkers": 2
        },
        "id": "auth-bootstrap",
        "name": "auth-bootstrap",
        "testDir": "/app/tests",
        "testIgnore": [],
        "testMatch": [
          "/tests\\/setup\\/auth-bootstrap\\.spec\\.ts/"
        ],
        "timeout": 60000
      },
      {
        "outputDir": "/app/artifacts/test-results",
        "repeatEach": 1,
        "retries": 1,
        "metadata": {
          "actualWorkers": 2
        },
        "id": "chromium-hrd",
        "name": "chromium-hrd",
        "testDir": "/app/tests",
        "testIgnore": [
          "/tests\\/setup\\/auth-bootstrap\\.spec\\.ts/",
          "/tests\\/api\\/.*\\.spec\\.ts/",
          "/tests\\/smoke\\/public-health\\.spec\\.ts/"
        ],
        "testMatch": [
          "**/*.@(spec|test).?(c|m)[jt]s?(x)"
        ],
        "timeout": 60000
      },
      {
        "outputDir": "/app/artifacts/test-results",
        "repeatEach": 1,
        "retries": 1,
        "metadata": {
          "actualWorkers": 2
        },
        "id": "chromium-superadmin",
        "name": "chromium-superadmin",
        "testDir": "/app/tests",
        "testIgnore": [
          "/tests\\/setup\\/auth-bootstrap\\.spec\\.ts/",
          "/tests\\/api\\/.*\\.spec\\.ts/",
          "/tests\\/smoke\\/public-health\\.spec\\.ts/"
        ],
        "testMatch": [
          "**/*.@(spec|test).?(c|m)[jt]s?(x)"
        ],
        "timeout": 60000
      },
      {
        "outputDir": "/app/artifacts/test-results",
        "repeatEach": 1,
        "retries": 1,
        "metadata": {
          "actualWorkers": 2
        },
        "id": "mobile-chromium-hrd",
        "name": "mobile-chromium-hrd",
        "testDir": "/app/tests",
        "testIgnore": [
          "/tests\\/setup\\/auth-bootstrap\\.spec\\.ts/",
          "/tests\\/api\\/.*\\.spec\\.ts/",
          "/tests\\/smoke\\/public-health\\.spec\\.ts/"
        ],
        "testMatch": [
          "**/*.@(spec|test).?(c|m)[jt]s?(x)"
        ],
        "timeout": 60000
      }
    ],
    "quiet": false,
    "reporter": [
      [
        "list",
        null
      ],
      [
        "html",
        {
          "outputFolder": "/app/artifacts/playwright-report",
          "open": "never"
        }
      ],
      [
        "json",
        {
          "outputFile": "/app/artifacts/results.json"
        }
      ]
    ],
    "reportSlowTests": {
      "max": 5,
      "threshold": 300000
    },
    "shard": null,
    "tags": [],
    "updateSnapshots": "missing",
    "updateSourceMethod": "patch",
    "version": "1.60.0",
    "workers": 2,
    "webServer": null
  },
  "suites": [
    {
      "title": "api/service-contracts.spec.ts",
      "file": "api/service-contracts.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "@regression API contracts",
          "file": "api/service-contracts.spec.ts",
          "line": 17,
          "column": 6,
          "specs": [
            {
              "title": "cv-analysis menolak request tanpa token",
              "ok": true,
              "tags": [
                "regression"
              ],
              "tests": [
                {
                  "timeout": 60000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "api-no-auth",
                  "projectName": "api-no-auth",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 89,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-07-30T09:07:41.110Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e18faa8142392f37b56f-ecad03434addf678350e",
              "file": "api/service-contracts.spec.ts",
              "line": 18,
              "column": 7
            },
            {
              "title": "cv-analysis menerima format auth header jika token QA diatur",
              "ok": true,
              "tags": [
                "regression"
              ],
              "tests": [
                {
                  "timeout": 60000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "api-no-auth",
                  "projectName": "api-no-auth",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 83,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-07-30T09:07:41.104Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e18faa8142392f37b56f-a647e1c4565a7057f638",
              "file": "api/service-contracts.spec.ts",
              "line": 33,
              "column": 7
            },
            {
              "title": "cv-clustering preflight menolak atau merespons terstruktur",
              "ok": true,
              "tags": [
                "regression"
              ],
              "tests": [
                {
                  "timeout": 60000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "api-no-auth",
                  "projectName": "api-no-auth",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 49,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-07-30T09:07:41.269Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e18faa8142392f37b56f-ce37e5861b333df85947",
              "file": "api/service-contracts.spec.ts",
              "line": 54,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "api/service-health.spec.ts",
      "file": "api/service-health.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "@smoke @prod-safe service health checks",
          "file": "api/service-health.spec.ts",
          "line": 16,
          "column": 6,
          "specs": [
            {
              "title": "app utama merespons sehat",
              "ok": true,
              "tags": [
                "smoke",
                "prod-safe"
              ],
              "tests": [
                {
                  "timeout": 60000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "api-no-auth",
                  "projectName": "api-no-auth",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 526,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-07-30T09:07:41.278Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "3da8e9acce94077979dc-aad5772b50762ae53fad",
              "file": "api/service-health.spec.ts",
              "line": 17,
              "column": 7
            },
            {
              "title": "service cv-analysis merespons sehat",
              "ok": true,
              "tags": [
                "smoke",
                "prod-safe"
              ],
              "tests": [
                {
                  "timeout": 60000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "api-no-auth",
                  "projectName": "api-no-auth",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 16,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-07-30T09:07:41.344Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "3da8e9acce94077979dc-76908468a47c217f5bb7",
              "file": "api/service-health.spec.ts",
              "line": 23,
              "column": 7
            },
            {
              "title": "service cv-clustering merespons sehat",
              "ok": true,
              "tags": [
                "smoke",
                "prod-safe"
              ],
              "tests": [
                {
                  "timeout": 60000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "api-no-auth",
                  "projectName": "api-no-auth",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 15,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-07-30T09:07:41.389Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "3da8e9acce94077979dc-eb8e3573227824d6958a",
              "file": "api/service-health.spec.ts",
              "line": 29,
              "column": 7
            }
          ]
        }
      ]
    }
  ],
  "errors": [],
  "stats": {
    "startTime": "2026-07-30T09:07:39.869Z",
    "duration": 1984.138,
    "expected": 6,
    "skipped": 0,
    "unexpected": 0,
    "flaky": 0
  }
}