Files
magnus919_agent-skills/playwright/tests/fixtures/sample-report.json
T
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
ac1beb117d feat(skill): add Playwright skill (E2E testing + scraping + headless browsing) (#264)
Add ONE tool skill for Playwright: SKILL.md covering E2E test authoring,
selector robustness, network interception/mocking, parallel workers, CI
integration, scraping/headless patterns, accessibility snapshot checks, and
headed debugging; scripts/pwrun (agent-first smoke harness with --json,
fixture-tested); templates/ test-suite scaffold; eight dated references; a
schema-valid evals/evals.json (6 cases); a human-facing README; reverse
routing from qa-methodology and frontend-engineering; top-level README index
entry; and regenerated catalogs (llms.txt, marketplace, codex).

Closes #244.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-03 17:59:38 -04:00

270 lines
8.7 KiB
JSON

{
"config": {
"configFile": "playwright.config.ts",
"rootDir": "/repo/shop-frontend",
"forbidOnly": false,
"fullyParallel": true,
"globalTimeout": 0,
"maxFailures": 0,
"preserveOutput": "always",
"projects": [
{
"outputDir": "test-results",
"repeatEach": 1,
"retries": 2,
"id": "project-chromium",
"name": "chromium",
"testDir": "e2e",
"testMatch": ["**/*.spec.ts"]
},
{
"outputDir": "test-results",
"repeatEach": 1,
"retries": 2,
"id": "project-mobile",
"name": "mobile-chromium",
"testDir": "e2e",
"testMatch": ["**/*.spec.ts"]
}
],
"reporter": [["list"], ["json", { "outputFile": "test-results.json" }]],
"reportSlowTests": { "max": 5, "threshold": 60000 },
"shard": null,
"updateSnapshots": "missing",
"version": "1.49.1",
"workers": 4,
"webServer": {
"command": "npm run dev",
"url": "http://localhost:3000",
"reuseExistingServer": true,
"timeout": 120000
}
},
"errors": [],
"stats": {
"startTime": "2026-08-03T09:30:00.000Z",
"duration": 18240,
"expected": 5,
"unexpected": 1,
"flaky": 0,
"skipped": 1
},
"suites": [
{
"title": "",
"file": "",
"line": 0,
"column": 0,
"specs": [],
"suites": [
{
"title": "checkout flow",
"file": "/repo/shop-frontend/e2e/checkout.spec.ts",
"line": 1,
"column": 1,
"specs": [
{
"title": "adds an item to the cart",
"ok": true,
"tags": [],
"tests": [
{
"timeout": 30000,
"annotations": [],
"expectedStatus": "passed",
"projectId": "project-chromium",
"projectName": "chromium",
"results": [
{
"workerIndex": 0,
"status": "passed",
"duration": 812,
"error": null,
"stdout": [],
"stderr": [],
"retry": 0,
"startTime": "2026-08-03T09:30:01.120Z",
"attachments": [],
"steps": []
}
],
"status": "expected"
}
],
"id": "spec-cart-add"
},
{
"title": "completes the purchase with a saved card",
"ok": false,
"tags": [],
"tests": [
{
"timeout": 30000,
"annotations": [],
"expectedStatus": "passed",
"projectId": "project-chromium",
"projectName": "chromium",
"results": [
{
"workerIndex": 0,
"status": "failed",
"duration": 30000,
"error": {
"message": "Timeout 30000ms exceeded.\n=========================== logs ===========================\nwaiting for locator('button:has-text(\"Place order\")')\n locator resolved to 0 elements\n locator resolved to 0 elements\n locator resolved to 0 elements"
},
"stdout": [],
"stderr": [],
"retry": 0,
"startTime": "2026-08-03T09:30:02.000Z",
"attachments": [],
"steps": []
},
{
"workerIndex": 1,
"status": "failed",
"duration": 30000,
"error": {
"message": "Timeout 30000ms exceeded.\n=========================== logs ===========================\nwaiting for locator('button:has-text(\"Place order\")')\n locator resolved to 0 elements"
},
"stdout": [],
"stderr": [],
"retry": 1,
"startTime": "2026-08-03T09:30:33.000Z",
"attachments": [],
"steps": []
},
{
"workerIndex": 2,
"status": "failed",
"duration": 30000,
"error": {
"message": "Timeout 30000ms exceeded.\n=========================== logs ===========================\nwaiting for locator('button:has-text(\"Place order\")')\n locator resolved to 0 elements\n page.on('dialog') or dialogs opened by user actions"
},
"stdout": [],
"stderr": [],
"retry": 2,
"startTime": "2026-08-03T09:31:04.000Z",
"attachments": [],
"steps": []
}
],
"status": "unexpected"
}
],
"id": "spec-checkout-purchase"
},
{
"title": "applies a promo code",
"ok": true,
"tags": [],
"tests": [
{
"timeout": 30000,
"annotations": [],
"expectedStatus": "passed",
"projectId": "project-chromium",
"projectName": "chromium",
"results": [
{
"workerIndex": 1,
"status": "passed",
"duration": 934,
"error": null,
"stdout": [],
"stderr": [],
"retry": 0,
"startTime": "2026-08-03T09:30:03.000Z",
"attachments": [],
"steps": []
}
],
"status": "expected"
}
],
"id": "spec-promo"
},
{
"title": "shows an empty cart message",
"ok": true,
"tags": [],
"tests": [
{
"timeout": 30000,
"annotations": [],
"expectedStatus": "passed",
"projectId": "project-chromium",
"projectName": "chromium",
"results": [
{
"workerIndex": 0,
"status": "passed",
"duration": 421,
"error": null,
"stdout": [],
"stderr": [],
"retry": 0,
"startTime": "2026-08-03T09:30:04.000Z",
"attachments": [],
"steps": []
}
],
"status": "expected"
}
],
"id": "spec-empty-cart"
},
{
"title": "validates cart totals",
"ok": true,
"tags": [],
"tests": [
{
"timeout": 30000,
"annotations": [],
"expectedStatus": "passed",
"projectId": "project-mobile",
"projectName": "mobile-chromium",
"results": [
{
"workerIndex": 3,
"status": "passed",
"duration": 1102,
"error": null,
"stdout": [],
"stderr": [],
"retry": 0,
"startTime": "2026-08-03T09:30:05.000Z",
"attachments": [],
"steps": []
}
],
"status": "expected"
}
],
"id": "spec-totals"
},
{
"title": "runs checkout on a phone viewport",
"ok": false,
"tags": ["@mobile"],
"tests": [
{
"timeout": 30000,
"annotations": [],
"expectedStatus": "passed",
"projectId": "project-mobile",
"projectName": "mobile-chromium",
"results": [],
"status": "skipped"
}
],
"id": "spec-checkout-mobile"
}
],
"suites": []
}
]
}
]
}