Self-hosted test management for Playwright.
Quarantine flaky or broken tests without changing your code. Playwright Manager lets you disable tests remotely via a dashboard—no PR required. When your CI runs, the fixture checks which tests are disabled and skips them automatically.
Beyond quarantine, you get:
- Health metrics — Track pass rates, flakiness, and health scores (0-100) per test
- Reporting — Aggregate test results across branches, commits, and CI runs
- Skip rules — Define patterns to skip tests on specific branches or environments
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Fixture │ │ Reporter │ │ Dashboard │
│ (before test) │────▶│ (after suite) │────▶│ (web UI) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
-
Fixture runs before each test. It calls the dashboard API to check if the test is disabled, then skips it if needed. Results are cached per worker (60s TTL).
-
Reporter runs after the test suite. It batches results and sends them to the dashboard along with CI metadata (branch, commit, job URL).
-
Dashboard stores results, calculates health metrics, and provides a UI for managing skip rules.
Deploy to Kubernetes with Helm:
helm install playwright-manager oci://ghcr.io/vigneshrajsb/charts/playwright-manager \
--set postgresql.auth.postgresPassword=<your-password>This deploys the dashboard with a PostgreSQL database. Access it via the service or configure an ingress.
Install the packages:
npm install -D @playwright-manager/fixture @playwright-manager/reporterUpdate playwright.config.ts:
import { defineConfig } from '@playwright/test';
export default defineConfig({
use: {
testManager: {
apiUrl: 'https://your-dashboard-url',
repository: 'your-org/your-repo',
},
},
reporter: [
['@playwright-manager/reporter', {
apiUrl: 'https://your-dashboard-url',
repository: 'your-org/your-repo',
}],
],
});Update your test files to import from the fixture:
import { test, expect } from '@playwright-manager/fixture';
test('my test', async ({ page }) => {
// ...
});Prevent accidental imports from @playwright/test instead of @playwright-manager/fixture. IDE autocomplete often suggests the wrong import—this rule catches it.
npm install -D @playwright-manager/eslint-pluginAdd to your ESLint config:
// eslint.config.mjs
import playwrightManager from '@playwright-manager/eslint-plugin';
export default [
...playwrightManager.configs.recommended,
];The rule auto-fixes imports, so running eslint --fix will correct any mistakes.
Run locally with Tilt:
tilt upDashboard runs at http://localhost:3031.
Or run directly:
pnpm devFound a bug or have a feature request? Open an issue at https://github.com/vigneshrajsb/playwright-manager/issues.