{"_id":"@actboard/playwright-reporter","_rev":"6-4e4bba23e412a7e5d96d41b0e38e1a43","name":"@actboard/playwright-reporter","dist-tags":{"latest":"1.0.5"},"versions":{"1.0.0":{"name":"@actboard/playwright-reporter","version":"1.0.0","keywords":["playwright","reporter","testing","dashboard","actboard","e2e","test-history","flaky-tests"],"license":"MIT","_id":"@actboard/playwright-reporter@1.0.0","maintainers":[{"name":"atlasak","email":"adam@actboard.io"}],"homepage":"https://actboard.dev","bugs":{"url":"https://github.com/actboard/actboard/issues"},"dist":{"shasum":"35d1a1f3a4496dada4c6e41164cff418d56f1a0a","tarball":"https://registry.npmjs.org/@actboard/playwright-reporter/-/playwright-reporter-1.0.0.tgz","fileCount":6,"integrity":"sha512-4AKMIoU1z3udIuXHRSexxV2+wDjaxwH8tcVZj5a//A9J/iKj/zOD9tFR1VY5pQ3dldxZphhgNY5714KA+xZuuA==","signatures":[{"sig":"MEQCIE/HFFmMiVJMdr7q46EuBuJ1oxCMr9rxI++AyFpUvW16AiB0vU9RrTWfeTDTtchYpxhL+8yHNXhKRHPzGIjb3TB0rg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26125},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"}},"gitHead":"79cd675ac785ed8d77a0251835512ec5b17b2144","scripts":{"build":"tsc","build:watch":"tsc --watch","prepublishOnly":"tsc"},"_npmUser":{"name":"atlasak","email":"adam@actboard.io"},"repository":{"url":"git+https://github.com/actboard/actboard.git","type":"git","directory":"reporter"},"_npmVersion":"11.12.1","description":"Playwright reporter that streams test results to ActBoard — the self-hostable test history dashboard","directories":{},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.5","@types/node":"^20.0.0","@playwright/test":"^1.43.0"},"peerDependencies":{"@playwright/test":">=1.38.0"},"_npmOperationalInternal":{"tmp":"tmp/playwright-reporter_1.0.0_1778177774511_0.8967183419640126","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@actboard/playwright-reporter","version":"1.0.1","keywords":["playwright","reporter","testing","dashboard","actboard","e2e","test-history","flaky-tests"],"license":"MIT","_id":"@actboard/playwright-reporter@1.0.1","maintainers":[{"name":"atlasak","email":"adam@actboard.io"}],"homepage":"https://actboard.dev","bugs":{"url":"https://github.com/actboard/actboard/issues"},"dist":{"shasum":"eeedb796e64a851b5c25a2f1a68f63d95810b849","tarball":"https://registry.npmjs.org/@actboard/playwright-reporter/-/playwright-reporter-1.0.1.tgz","fileCount":6,"integrity":"sha512-odtwikIaWAO/aQWrrxUBABw/wqtU42jB7uGZBjjUwOqQBFWWKiz18FVdbh8q1FJVcMbvKHvR35rHwF3mVGI1CA==","signatures":[{"sig":"MEUCIHbOFkmYMO4yWtfQ/EmPG7NQMiMs8I2JgBaNTUnXXegYAiEA29vkOo22dNfBCi3XcQ3FYowqi1Z+AdfnYTi/3/+UbuI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27450},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"}},"gitHead":"79cd675ac785ed8d77a0251835512ec5b17b2144","scripts":{"build":"tsc","build:watch":"tsc --watch","prepublishOnly":"tsc"},"_npmUser":{"name":"atlasak","email":"adam@actboard.io"},"repository":{"url":"git+https://github.com/actboard/actboard.git","type":"git","directory":"reporter"},"_npmVersion":"11.12.1","description":"Playwright reporter that streams test results to ActBoard — the self-hostable test history dashboard","directories":{},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.5","@types/node":"^20.0.0","@playwright/test":"^1.43.0"},"peerDependencies":{"@playwright/test":">=1.38.0"},"_npmOperationalInternal":{"tmp":"tmp/playwright-reporter_1.0.1_1778178461365_0.524031145848668","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@actboard/playwright-reporter","version":"1.0.2","keywords":["playwright","reporter","testing","dashboard","actboard","e2e","test-history","flaky-tests"],"license":"MIT","_id":"@actboard/playwright-reporter@1.0.2","maintainers":[{"name":"atlasak","email":"adam@actboard.io"}],"homepage":"https://actboard.dev","bugs":{"url":"https://github.com/actboard/actboard/issues"},"dist":{"shasum":"a45c37e6a7a7a85ecd521ad034ece80152b4f685","tarball":"https://registry.npmjs.org/@actboard/playwright-reporter/-/playwright-reporter-1.0.2.tgz","fileCount":6,"integrity":"sha512-UkZH8WzXJp2Ki0PbJePrqDKyHVN3XZUEJpDsUjkXw924E0bHjM9JxIBxou0quaQHE4KK/Ifj1Fc3h2ZzFd8feQ==","signatures":[{"sig":"MEYCIQCq04MqobX8RU6Jlhj5HPtNzKzl6YuCcYDi4Kn57PrO/gIhAOEnkM+uAS8KzgI8PP9tEwtkH//twkQX7cdcV0//Gzfg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27495},"main":"dist/index.js","types":"dist/index.d.ts","socket":{"networkAccess":true},"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"}},"gitHead":"a3acc7befc72d4d698254dda0bb875e9002dd61b","scripts":{"build":"tsc","build:watch":"tsc --watch","prepublishOnly":"tsc"},"_npmUser":{"name":"atlasak","email":"adam@actboard.io"},"repository":{"url":"git+https://github.com/actboard/actboard.git","type":"git","directory":"reporter"},"_npmVersion":"11.12.1","description":"Playwright reporter that streams test results to ActBoard — the self-hostable test history dashboard","directories":{},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.5","@types/node":"^20.0.0","@playwright/test":"^1.43.0"},"peerDependencies":{"@playwright/test":">=1.38.0"},"_npmOperationalInternal":{"tmp":"tmp/playwright-reporter_1.0.2_1778180346134_0.48572836085307913","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@actboard/playwright-reporter","version":"1.0.3","keywords":["playwright","reporter","testing","dashboard","actboard","e2e","test-history","flaky-tests"],"license":"MIT","_id":"@actboard/playwright-reporter@1.0.3","maintainers":[{"name":"atlasak","email":"adam@actboard.io"}],"homepage":"https://actboard.dev","bugs":{"url":"https://github.com/actboard/actboard/issues"},"dist":{"shasum":"b0cba40de2f358be54ab04eff1dfbbd73e1c0aee","tarball":"https://registry.npmjs.org/@actboard/playwright-reporter/-/playwright-reporter-1.0.3.tgz","fileCount":6,"integrity":"sha512-FekOyoha56NZzHlIAeVsUEpk85E3khYcDuoYD5KS3h+Fw59B7Nzf1Edip42pSZKuerlt3QK3Nxh/PLHzlVHp5Q==","signatures":[{"sig":"MEUCIQCX5iD9Aj0VIhYlLSfzHPhu6YQtmi6g9D3/Y0wPhpLoUAIgZRX7sh6PTNmEBS82wLtSV3dPF89o4aP9em0+n41Nx/c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27495},"main":"dist/index.js","types":"dist/index.d.ts","socket":{"networkAccess":true},"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"}},"gitHead":"0027dafc332dc925a795ab6f4336a96f111dcfc8","scripts":{"build":"tsc","build:watch":"tsc --watch","prepublishOnly":"tsc"},"_npmUser":{"name":"atlasak","email":"adam@actboard.io"},"repository":{"url":"git+https://github.com/actboard/actboard.git","type":"git","directory":"reporter"},"_npmVersion":"11.12.1","description":"Playwright reporter that streams test results to ActBoard — the self-hostable test history dashboard","directories":{},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.5","@types/node":"^20.0.0","@playwright/test":"^1.43.0"},"peerDependencies":{"@playwright/test":">=1.38.0"},"_npmOperationalInternal":{"tmp":"tmp/playwright-reporter_1.0.3_1778181049722_0.5592318658980338","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@actboard/playwright-reporter","version":"1.0.4","keywords":["playwright","reporter","testing","dashboard","actboard","e2e","test-history","flaky-tests"],"license":"MIT","_id":"@actboard/playwright-reporter@1.0.4","maintainers":[{"name":"atlasak","email":"adam@actboard.io"}],"homepage":"https://actboard.io","bugs":{"url":"https://github.com/actboard/actboard/issues"},"dist":{"shasum":"650119d01d489c3ff42a228de3a13ee7e3e9da21","tarball":"https://registry.npmjs.org/@actboard/playwright-reporter/-/playwright-reporter-1.0.4.tgz","fileCount":6,"integrity":"sha512-OwqNuXQCnzUJ0IIKg6vHpnesNPVJs6nYDGPMNCKk9HVYiVsFlD1erRTCwrqgFgel9zhPGQ9g6w2f4ehlKNFfpg==","signatures":[{"sig":"MEUCIQDetrxWE+XCeO6gbcrAHPOjP7aJGRNphi9HoSGA6WSeBAIgaKyJOv8qkoIBKm0pCzvvdNzTa5dxArsxaugMrrSLbA0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27488},"main":"dist/index.js","types":"dist/index.d.ts","socket":{"networkAccess":true},"exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js"}},"gitHead":"01b8f1634491a669190d31e24be66e2019601cfa","scripts":{"build":"tsc","build:watch":"tsc --watch","prepublishOnly":"tsc"},"_npmUser":{"name":"atlasak","email":"adam@actboard.io"},"repository":{"url":"git+https://github.com/actboard/actboard.git","type":"git","directory":"reporter"},"_npmVersion":"11.12.1","description":"Playwright reporter that streams test results to ActBoard — the self-hostable test history dashboard","directories":{},"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.5","@types/node":"^20.0.0","@playwright/test":"^1.43.0"},"peerDependencies":{"@playwright/test":">=1.38.0"},"_npmOperationalInternal":{"tmp":"tmp/playwright-reporter_1.0.4_1778183756383_0.9381546533284164","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@actboard/playwright-reporter","version":"1.0.5","description":"Playwright reporter for full test history, pass-rate trends, and flaky test detection — powered by ActBoard","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"require":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"build":"tsc","build:watch":"tsc --watch","prepublishOnly":"tsc"},"keywords":["playwright","playwright-reporter","playwright-plugin","playwright-analytics","playwright-history","playwright-dashboard","playwright-results","playwright-ci","test-history","test-analytics","test-dashboard","test-reporting","test-trends","test-monitoring","test-observability","test-metrics","test-results","flaky-tests","flaky-test-detection","flakey-tests","pass-rate","ci-analytics","ci-monitoring","e2e","e2e-testing","e2e-reporter","testing","dashboard","self-hosted","self-hostable","github-actions","actboard","regression-tracking","test-suite-history","qa-dashboard","continuous-testing"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/actboard/actboard.git","directory":"reporter"},"homepage":"https://actboard.io","bugs":{"url":"https://github.com/actboard/actboard/issues"},"publishConfig":{"access":"public"},"socket":{"networkAccess":true},"peerDependencies":{"@playwright/test":">=1.38.0"},"devDependencies":{"@playwright/test":"^1.43.0","@types/node":"^20.0.0","typescript":"^5.4.5"},"gitHead":"1ae00120bdb3bad64aa78f4e54288c31c83b6884","_id":"@actboard/playwright-reporter@1.0.5","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-DrkXW4JNAf8T0AEISgEpKqVSfzLGkzqWGQ07W/fZRVyLSiOJhnA9q+0lkh9eZPWeLN6uCO9Z/BoeCmLh8w6cwA==","shasum":"d3148a4e29dade3c605896ba15aa5a3e7a32c243","tarball":"https://registry.npmjs.org/@actboard/playwright-reporter/-/playwright-reporter-1.0.5.tgz","fileCount":6,"unpackedSize":28120,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC1YVbFjW95zaYX1gzqw0b1JgS21jH6D3jtGoa+pyod9wIgaF36YsBbwMz8d/wHlV6L7ThxRkAT8fRzMZSOP1qn8ck="}]},"_npmUser":{"name":"atlasak","email":"adam@actboard.io"},"directories":{},"maintainers":[{"name":"atlasak","email":"adam@actboard.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/playwright-reporter_1.0.5_1778223184725_0.3705838506187369"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-07T18:16:14.417Z","modified":"2026-05-08T06:53:04.998Z","1.0.0":"2026-05-07T18:16:14.710Z","1.0.1":"2026-05-07T18:27:41.532Z","1.0.2":"2026-05-07T18:59:06.282Z","1.0.3":"2026-05-07T19:10:50.029Z","1.0.4":"2026-05-07T19:55:56.520Z","1.0.5":"2026-05-08T06:53:04.864Z"},"bugs":{"url":"https://github.com/actboard/actboard/issues"},"license":"MIT","homepage":"https://actboard.io","keywords":["playwright","playwright-reporter","playwright-plugin","playwright-analytics","playwright-history","playwright-dashboard","playwright-results","playwright-ci","test-history","test-analytics","test-dashboard","test-reporting","test-trends","test-monitoring","test-observability","test-metrics","test-results","flaky-tests","flaky-test-detection","flakey-tests","pass-rate","ci-analytics","ci-monitoring","e2e","e2e-testing","e2e-reporter","testing","dashboard","self-hosted","self-hostable","github-actions","actboard","regression-tracking","test-suite-history","qa-dashboard","continuous-testing"],"repository":{"type":"git","url":"git+https://github.com/actboard/actboard.git","directory":"reporter"},"description":"Playwright reporter for full test history, pass-rate trends, and flaky test detection — powered by ActBoard","maintainers":[{"name":"atlasak","email":"adam@actboard.io"}],"readme":"# @actboard/playwright-reporter\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@actboard/playwright-reporter\"><img src=\"https://img.shields.io/npm/v/@actboard/playwright-reporter?color=crimson&label=npm\" alt=\"npm version\" /></a>\n  <a href=\"https://www.npmjs.com/package/@actboard/playwright-reporter\"><img src=\"https://img.shields.io/npm/dm/@actboard/playwright-reporter?color=blue\" alt=\"downloads\" /></a>\n  <a href=\"https://www.npmjs.com/package/@playwright/test\"><img src=\"https://img.shields.io/npm/dependency-version/@actboard/playwright-reporter/peer/%40playwright%2Ftest?label=%40playwright%2Ftest\" alt=\"Playwright peer\" /></a>\n  <a href=\"https://opensource.org/licenses/MIT\"><img src=\"https://img.shields.io/badge/license-MIT-green\" alt=\"MIT license\" /></a>\n</p>\n\n<p align=\"center\">\n  A Playwright reporter that captures full test history, tracks pass-rate trends, and surfaces flaky tests — sending every run to your <a href=\"https://actboard.io\"><strong>ActBoard</strong></a> dashboard for deep analysis.\n</p>\n\n---\n\n### What you get\n\n- **Full test history** — every run stored, browsable, and searchable\n- **Pass rate trends** — see whether your suite is getting healthier over time\n- **Flaky test detection** — tests that flip between pass/fail are automatically flagged\n- **Branch & commit tracking** — compare runs across branches and deployments\n- **CI-ready** — works with GitHub Actions, GitLab CI, CircleCI, Jenkins, Azure DevOps, and more\n- **Self-hostable** — one Docker command, your data stays on your infra\n\n---\n\n## Installation\n\n```bash\nnpm install --save-dev @actboard/playwright-reporter\n# or\nyarn add -D @actboard/playwright-reporter\n# or\npnpm add -D @actboard/playwright-reporter\n```\n\n## Quick Start\n\n### 1. Start ActBoard\n\n**Cloud:** Sign up at [actboard.io](https://actboard.io) and get an API key.\n\n**Self-hosted (Docker):**\n```bash\ndocker run -p 3141:3141 -v actboard_data:/app/data actboard/server:latest\n# Then seed demo data:\ndocker exec actboard node scripts/seed.js\n```\n\n**Self-hosted (Node.js):**\n```bash\nnpx actboard-server           # starts on http://localhost:3141\nnpx actboard-server seed      # seed demo data\n```\n\n### 2. Configure the reporter\n\n```ts\n// playwright.config.ts\nimport { defineConfig } from '@playwright/test';\n\nexport default defineConfig({\n  reporter: [\n    ['list'],   // keep the terminal reporter\n    ['@actboard/playwright-reporter', {\n      serverUrl: 'http://localhost:3141',       // or https://actboard.io\n      apiKey:    process.env.ACTBOARD_API_KEY,\n      project:   'e2e-production',             // must match your project slug\n      branch:    process.env.GITHUB_REF_NAME  || 'local',\n      commitSha: process.env.GITHUB_SHA,\n      triggeredBy: process.env.CI ? 'ci' : 'local',\n    }],\n  ],\n});\n```\n\n### 3. Run your tests\n\n```bash\nACTBOARD_API_KEY=act_yourkey npx playwright test\n```\n\nResults appear in the ActBoard dashboard immediately after the run completes.\n\n---\n\n## Configuration Options\n\n| Option | Type | Required | Default | Description |\n|--------|------|----------|---------|-------------|\n| `apiKey` | `string` | ✓ | `ACTBOARD_API_KEY` env | Project API key from ActBoard dashboard |\n| `serverUrl` | `string` | | `http://localhost:3141` | ActBoard server URL |\n| `project` | `string` | | `ACTBOARD_PROJECT` env | Project slug (from Settings → Project) |\n| `branch` | `string` | | `GITHUB_REF_NAME` or `'local'` | Git branch name |\n| `commitSha` | `string` | | `GITHUB_SHA` | Full commit SHA |\n| `commitMessage` | `string` | | `CI_COMMIT_MESSAGE` | Short commit message |\n| `triggeredBy` | `string` | | `'ci'` / `'local'` | What triggered the run |\n| `browsers` | `string[]` | | auto-detected | Override browser list |\n| `metadata` | `object` | | `{}` | Extra key-value data attached to the run |\n| `timeout` | `number` | | `30000` | HTTP request timeout (ms) |\n| `verbose` | `boolean` | | `true` | Print ActBoard status to stdout |\n\n---\n\n## Environment Variables\n\nThe reporter reads these automatically — no code changes needed in CI:\n\n```bash\nACTBOARD_API_KEY=act_myproject_abc123          # required\nACTBOARD_SERVER_URL=https://actboard.io       # optional, default: localhost:3141\nACTBOARD_PROJECT=e2e-production                # optional, use if project not set in config\n```\n\n---\n\n## CI Integration Examples\n\n### GitHub Actions\n\n```yaml\n# .github/workflows/playwright.yml\nname: Playwright Tests\n\non: [push, pull_request]\n\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n\n      - uses: actions/setup-node@v4\n        with:\n          node-version: 20\n          cache: npm\n\n      - run: npm ci\n      - run: npx playwright install --with-deps\n\n      - name: Run Playwright Tests\n        env:\n          ACTBOARD_API_KEY: ${{ secrets.ACTBOARD_API_KEY }}\n          ACTBOARD_SERVER_URL: ${{ secrets.ACTBOARD_SERVER_URL }}\n        run: npx playwright test\n```\n\nAdd `ACTBOARD_API_KEY` and `ACTBOARD_SERVER_URL` to **Settings → Secrets and variables → Actions**.\n\n---\n\n### GitLab CI\n\n```yaml\n# .gitlab-ci.yml\nplaywright:\n  image: mcr.microsoft.com/playwright:v1.44.0-jammy\n  stage: test\n  variables:\n    ACTBOARD_API_KEY: $ACTBOARD_API_KEY\n    ACTBOARD_SERVER_URL: $ACTBOARD_SERVER_URL\n  script:\n    - npm ci\n    - npx playwright test\n  artifacts:\n    when: always\n    paths:\n      - playwright-report/\n    expire_in: 1 week\n```\n\n---\n\n### CircleCI\n\n```yaml\n# .circleci/config.yml\nversion: 2.1\n\njobs:\n  playwright:\n    docker:\n      - image: mcr.microsoft.com/playwright:v1.44.0-jammy\n    steps:\n      - checkout\n      - run: npm ci\n      - run:\n          name: Run Playwright Tests\n          command: npx playwright test\n          environment:\n            ACTBOARD_API_KEY: $ACTBOARD_API_KEY\n            ACTBOARD_SERVER_URL: $ACTBOARD_SERVER_URL\n```\n\n---\n\n### Jenkins\n\n```groovy\n// Jenkinsfile\npipeline {\n  agent any\n  environment {\n    ACTBOARD_API_KEY     = credentials('actboard-api-key')\n    ACTBOARD_SERVER_URL  = 'https://actboard.yourcompany.com'\n  }\n  stages {\n    stage('Test') {\n      steps {\n        sh 'npm ci'\n        sh 'npx playwright install --with-deps chromium'\n        sh 'npx playwright test'\n      }\n    }\n  }\n  post {\n    always {\n      publishHTML(target: [reportDir: 'playwright-report', reportFiles: 'index.html', reportName: 'Playwright Report'])\n    }\n  }\n}\n```\n\n---\n\n### Azure DevOps\n\n```yaml\n# azure-pipelines.yml\ntrigger:\n  - main\n\npool:\n  vmImage: ubuntu-latest\n\nvariables:\n  ACTBOARD_API_KEY: $(ACTBOARD_API_KEY)\n  ACTBOARD_SERVER_URL: $(ACTBOARD_SERVER_URL)\n\nsteps:\n  - task: NodeTool@0\n    inputs:\n      versionSpec: '20.x'\n\n  - script: npm ci\n    displayName: Install dependencies\n\n  - script: npx playwright install --with-deps\n    displayName: Install browsers\n\n  - script: npx playwright test\n    displayName: Run Playwright tests\n```\n\nAdd `ACTBOARD_API_KEY` and `ACTBOARD_SERVER_URL` as pipeline variables (mark as secret).\n\n---\n\n## How It Works\n\n1. The reporter hooks into Playwright's lifecycle via `onBegin` / `onTestEnd` / `onEnd`\n2. Results are buffered in memory during the run (zero impact on test performance)\n3. When `onEnd` fires, results are POSTed to `POST /api/runs` on your ActBoard server\n4. The server stores results in SQLite (self-host) or PostgreSQL (cloud) and finalizes the run record\n5. The dashboard immediately reflects the new run\n\nIf the server is unreachable, the reporter logs a warning and exits gracefully — your test run always completes regardless.\n\n---\n\n## Troubleshooting\n\n**Reporter not publishing results:**\n- Check `ACTBOARD_API_KEY` is set in your CI environment\n- Verify `serverUrl` is reachable from your CI runner (firewall / VPN?)\n- Run with `verbose: true` (default) and check stdout for error messages\n\n**`Invalid API key` error:**\n- Copy the key exactly from Settings → API Keys in the dashboard\n- Keys are shown only once when created — generate a new one if lost\n\n**Connection timeout:**\n- Increase `timeout` option (default: 30 seconds)\n- Check that your ActBoard server is healthy: `curl http://your-server/api/health`\n\n---\n\n## License\n\nMIT © [ActBoard](https://actboard.io)\n","readmeFilename":"README.md"}