{
  "config": {
    "configFile": "/app/playwright.config.ts",
    "rootDir": "/app/tests",
    "forbidOnly": false,
    "fullyParallel": false,
    "globalSetup": null,
    "globalTeardown": null,
    "globalTimeout": 0,
    "grep": {},
    "grepInvert": null,
    "maxFailures": 0,
    "metadata": {
      "actualWorkers": 1
    },
    "preserveOutput": "always",
    "reporter": [
      [
        "html",
        {
          "outputFolder": "/workspace/artifacts/a4a48ec/www/reports/html",
          "open": "never"
        }
      ],
      [
        "json",
        {
          "outputFile": "/workspace/artifacts/a4a48ec/www/reports/results.json"
        }
      ],
      [
        "list",
        null
      ]
    ],
    "reportSlowTests": {
      "max": 5,
      "threshold": 15000
    },
    "quiet": false,
    "projects": [
      {
        "outputDir": "/workspace/artifacts/a4a48ec/www/test-output",
        "repeatEach": 1,
        "retries": 2,
        "id": "chromium",
        "name": "chromium",
        "testDir": "/app/tests",
        "testIgnore": [],
        "testMatch": [
          "**/*.spec.ts"
        ],
        "timeout": 30000
      }
    ],
    "shard": null,
    "updateSnapshots": "missing",
    "version": "1.40.0",
    "workers": 16,
    "webServer": null
  },
  "suites": [
    {
      "title": "www.spec.ts",
      "file": "www.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "www.elect.info",
          "file": "www.spec.ts",
          "line": 3,
          "column": 6,
          "specs": [
            {
              "title": "homepage loads",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "chromium",
                  "projectName": "chromium",
                  "results": [
                    {
                      "workerIndex": 0,
                      "status": "timedOut",
                      "duration": 29999,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/www.spec.ts",
                            "column": 16,
                            "line": 5
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n  \u001b[2m- navigating to \"http://10.1.85.205/\", waiting until \"load\"\u001b[22m\n\n\n  3 | test.describe('www.elect.info', () => {\n  4 |   test('homepage loads', async ({ page }) => {\n> 5 |     await page.goto('/');\n    |                ^\n  6 |     await expect(page).toHaveTitle(/elect\\.info/i);\n  7 |     await page.screenshot({ path: '/app/test-output/www-homepage.png' });\n  8 |   });\n\n    at /app/tests/www.spec.ts:5:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-18T18:55:29.318Z",
                      "attachments": []
                    },
                    {
                      "workerIndex": 1,
                      "status": "timedOut",
                      "duration": 30000,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/www.spec.ts",
                            "column": 16,
                            "line": 5
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n  \u001b[2m- navigating to \"http://10.1.85.205/\", waiting until \"load\"\u001b[22m\n\n\n  3 | test.describe('www.elect.info', () => {\n  4 |   test('homepage loads', async ({ page }) => {\n> 5 |     await page.goto('/');\n    |                ^\n  6 |     await expect(page).toHaveTitle(/elect\\.info/i);\n  7 |     await page.screenshot({ path: '/app/test-output/www-homepage.png' });\n  8 |   });\n\n    at /app/tests/www.spec.ts:5:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-18T18:56:05.069Z",
                      "attachments": [
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a4a48ec/www/test-output/www-www-elect-info-homepage-loads-chromium-retry1/video.webm"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a4a48ec/www/test-output/www-www-elect-info-homepage-loads-chromium-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 2,
                      "status": "timedOut",
                      "duration": 29999,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/www.spec.ts",
                            "column": 16,
                            "line": 5
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n  \u001b[2m- navigating to \"http://10.1.85.205/\", waiting until \"load\"\u001b[22m\n\n\n  3 | test.describe('www.elect.info', () => {\n  4 |   test('homepage loads', async ({ page }) => {\n> 5 |     await page.goto('/');\n    |                ^\n  6 |     await expect(page).toHaveTitle(/elect\\.info/i);\n  7 |     await page.screenshot({ path: '/app/test-output/www-homepage.png' });\n  8 |   });\n\n    at /app/tests/www.spec.ts:5:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-05-18T18:56:42.946Z",
                      "attachments": []
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "deafffc36c2914997cb3-b099e5eb9536abfe3842",
              "file": "www.spec.ts",
              "line": 4,
              "column": 7
            },
            {
              "title": "about page loads",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "chromium",
                  "projectName": "chromium",
                  "results": [
                    {
                      "workerIndex": 3,
                      "status": "timedOut",
                      "duration": 29999,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/www.spec.ts",
                            "column": 16,
                            "line": 11
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n  \u001b[2m- navigating to \"http://10.1.85.205/about.html\", waiting until \"load\"\u001b[22m\n\n\n   9 |\n  10 |   test('about page loads', async ({ page }) => {\n> 11 |     await page.goto('/about.html');\n     |                ^\n  12 |     await expect(page.locator('body')).toBeVisible();\n  13 |   });\n  14 |\n\n    at /app/tests/www.spec.ts:11:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-18T18:57:18.397Z",
                      "attachments": []
                    },
                    {
                      "workerIndex": 4,
                      "status": "timedOut",
                      "duration": 30000,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/www.spec.ts",
                            "column": 16,
                            "line": 11
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n  \u001b[2m- navigating to \"http://10.1.85.205/about.html\", waiting until \"load\"\u001b[22m\n\n\n   9 |\n  10 |   test('about page loads', async ({ page }) => {\n> 11 |     await page.goto('/about.html');\n     |                ^\n  12 |     await expect(page.locator('body')).toBeVisible();\n  13 |   });\n  14 |\n\n    at /app/tests/www.spec.ts:11:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-18T18:57:53.798Z",
                      "attachments": [
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a4a48ec/www/test-output/www-www-elect-info-about-page-loads-chromium-retry1/video.webm"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a4a48ec/www/test-output/www-www-elect-info-about-page-loads-chromium-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 5,
                      "status": "timedOut",
                      "duration": 30000,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/www.spec.ts",
                            "column": 16,
                            "line": 11
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n  \u001b[2m- navigating to \"http://10.1.85.205/about.html\", waiting until \"load\"\u001b[22m\n\n\n   9 |\n  10 |   test('about page loads', async ({ page }) => {\n> 11 |     await page.goto('/about.html');\n     |                ^\n  12 |     await expect(page.locator('body')).toBeVisible();\n  13 |   });\n  14 |\n\n    at /app/tests/www.spec.ts:11:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-05-18T18:58:31.778Z",
                      "attachments": []
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "deafffc36c2914997cb3-dfa799971deeabda745f",
              "file": "www.spec.ts",
              "line": 10,
              "column": 7
            },
            {
              "title": "CSS assets load",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "chromium",
                  "projectName": "chromium",
                  "results": [
                    {
                      "workerIndex": 6,
                      "status": "timedOut",
                      "duration": 29999,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/www.spec.ts",
                            "column": 33,
                            "line": 16
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n  \u001b[2m- navigating to \"http://10.1.85.205/css/webflow.css\", waiting until \"load\"\u001b[22m\n\n\n  14 |\n  15 |   test('CSS assets load', async ({ page }) => {\n> 16 |     const response = await page.goto('/css/webflow.css');\n     |                                 ^\n  17 |     expect(response?.status()).toBe(200);\n  18 |   });\n  19 |\n\n    at /app/tests/www.spec.ts:16:33"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-18T18:59:07.236Z",
                      "attachments": []
                    },
                    {
                      "workerIndex": 7,
                      "status": "timedOut",
                      "duration": 29999,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/www.spec.ts",
                            "column": 33,
                            "line": 16
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n  \u001b[2m- navigating to \"http://10.1.85.205/css/webflow.css\", waiting until \"load\"\u001b[22m\n\n\n  14 |\n  15 |   test('CSS assets load', async ({ page }) => {\n> 16 |     const response = await page.goto('/css/webflow.css');\n     |                                 ^\n  17 |     expect(response?.status()).toBe(200);\n  18 |   });\n  19 |\n\n    at /app/tests/www.spec.ts:16:33"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-18T18:59:42.666Z",
                      "attachments": [
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a4a48ec/www/test-output/www-www-elect-info-CSS-assets-load-chromium-retry1/video.webm"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a4a48ec/www/test-output/www-www-elect-info-CSS-assets-load-chromium-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 8,
                      "status": "timedOut",
                      "duration": 30000,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/www.spec.ts",
                            "column": 33,
                            "line": 16
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n  \u001b[2m- navigating to \"http://10.1.85.205/css/webflow.css\", waiting until \"load\"\u001b[22m\n\n\n  14 |\n  15 |   test('CSS assets load', async ({ page }) => {\n> 16 |     const response = await page.goto('/css/webflow.css');\n     |                                 ^\n  17 |     expect(response?.status()).toBe(200);\n  18 |   });\n  19 |\n\n    at /app/tests/www.spec.ts:16:33"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-05-18T19:00:20.591Z",
                      "attachments": []
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "deafffc36c2914997cb3-58b4d2f94c997a1b92dd",
              "file": "www.spec.ts",
              "line": 15,
              "column": 7
            },
            {
              "title": "404 page works",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "chromium",
                  "projectName": "chromium",
                  "results": [
                    {
                      "workerIndex": 9,
                      "status": "timedOut",
                      "duration": 30000,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/www.spec.ts",
                            "column": 33,
                            "line": 21
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n  \u001b[2m- navigating to \"http://10.1.85.205/nonexistent-page\", waiting until \"load\"\u001b[22m\n\n\n  19 |\n  20 |   test('404 page works', async ({ page }) => {\n> 21 |     const response = await page.goto('/nonexistent-page');\n     |                                 ^\n  22 |     expect(response?.status()).toBe(404);\n  23 |   });\n  24 | });\n\n    at /app/tests/www.spec.ts:21:33"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-18T19:00:56.010Z",
                      "attachments": []
                    },
                    {
                      "workerIndex": 10,
                      "status": "timedOut",
                      "duration": 29999,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/www.spec.ts",
                            "column": 33,
                            "line": 21
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n  \u001b[2m- navigating to \"http://10.1.85.205/nonexistent-page\", waiting until \"load\"\u001b[22m\n\n\n  19 |\n  20 |   test('404 page works', async ({ page }) => {\n> 21 |     const response = await page.goto('/nonexistent-page');\n     |                                 ^\n  22 |     expect(response?.status()).toBe(404);\n  23 |   });\n  24 | });\n\n    at /app/tests/www.spec.ts:21:33"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-18T19:01:31.485Z",
                      "attachments": [
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a4a48ec/www/test-output/www-www-elect-info-404-page-works-chromium-retry1/video.webm"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a4a48ec/www/test-output/www-www-elect-info-404-page-works-chromium-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 11,
                      "status": "timedOut",
                      "duration": 29999,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/www.spec.ts",
                            "column": 33,
                            "line": 21
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n  \u001b[2m- navigating to \"http://10.1.85.205/nonexistent-page\", waiting until \"load\"\u001b[22m\n\n\n  19 |\n  20 |   test('404 page works', async ({ page }) => {\n> 21 |     const response = await page.goto('/nonexistent-page');\n     |                                 ^\n  22 |     expect(response?.status()).toBe(404);\n  23 |   });\n  24 | });\n\n    at /app/tests/www.spec.ts:21:33"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-05-18T19:02:09.431Z",
                      "attachments": []
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "deafffc36c2914997cb3-630288c943a7013ec232",
              "file": "www.spec.ts",
              "line": 20,
              "column": 7
            }
          ]
        }
      ]
    }
  ],
  "errors": [],
  "stats": {
    "startTime": "2026-05-18T18:55:29.069Z",
    "duration": 435566.774,
    "expected": 0,
    "skipped": 0,
    "unexpected": 4,
    "flaky": 0
  }
}