Local read-only triage for flaky Playwright test reports and logs.
Project description
Playwright Flake Triage Toolkit
Local, read-only CLI for turning Playwright reports and CI logs into a short triage report: suspected cause, confidence, and practical next fixes.
The tool is intentionally simple: it runs locally, has no telemetry, requires no account, and does not mutate project files.
What it scans
- Playwright JSON reporter output (
.json) - JUnit XML reports (
.xml) - CI/test logs (
.log,.txt,.out,.err) - Files or whole directories
What it detects
- Timeout / wait condition instability
- Ambiguous or brittle selectors, including strict-mode violations
- Auth/session or expected page state mismatch
- Network/backend dependency flakes
- Browser/context/page lifecycle races
- Visual/snapshot instability
- Parallel/shared-state collisions
- Unclassified failures for manual grouping
Quick start
Install the CLI and run it against local Playwright reports or CI logs:
python3 -m pip install playwright-flake-triage
pw-flake-triage path/to/playwright-report.json path/to/ci.log --format markdown
Write JSON output for automation:
pw-flake-triage path/to/reports-or-logs --format json -o triage-report.json
The CLI uses only local files you pass to it. It does not contact Playwright, GitHub, CI providers, or any external service.
Clone / development install
git clone https://github.com/vasiliy0/playwright-flake-triage.git
cd playwright-flake-triage
python3 -m pip install -e .
pw-flake-triage examples --format markdown
Example output
# Playwright Flake Triage Report
Scanned files: **3**
Findings: **3**
## Summary by suspected cause
- **Auth/session or expected page state mismatch**: 2
- **Ambiguous or brittle selector**: 1
## Findings
### 1. Auth/session or expected page state mismatch
- Issue: Synthetic auth/session timeout symptom
- Source: https://github.com/example/repo/issues/123
- Suggested fixes:
- Verify the test starts with the intended storage state, user role, and seeded data.
Optional issue metadata for validation snippets
Plain text logs can include lightweight source metadata:
Issue: Synthetic auth/session timeout symptom
URL: https://github.com/example/repo/issues/123
Playwright TimeoutError: Timeout 30000ms exceeded.
logs: waiting for get_by_label("Keep me signed in")
The metadata is echoed in Markdown/JSON reports, which makes issue-derived regression fixtures easier to review without copying long third-party issue text.
Why this is useful
Flaky test cleanup usually starts with a pile of traces and CI logs. This v1 does not claim to prove root cause; it groups common failure smells so a developer can decide where to look first.
Safety / privacy
- Runs locally only; no network calls or telemetry.
- Does not call external services.
- Does not mutate test reports or project files.
- Be careful before sharing generated reports: logs may contain internal URLs, user data, or secrets.
Release status
- License: MIT.
- Distribution: GitHub source release and TestPyPI dry-run package.
- Current release notes:
docs/PUBLIC_RELEASE_NOTES_v0.1.0.md.
Docs
docs/PUBLIC_RELEASE_NOTES_v0.1.0.md— release notes.SECURITY.md— privacy/sensitive-log notes.CONTRIBUTING.md— contribution boundaries.
Roadmap
- Parse Playwright trace zip metadata when available.
- Add configurable custom rules.
- Group duplicate failures across retries/workers.
- Emit GitHub Actions step summary markdown.
- Add sample remediation PR checklist.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file playwright_flake_triage-0.1.3.tar.gz.
File metadata
- Download URL: playwright_flake_triage-0.1.3.tar.gz
- Upload date:
- Size: 10.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ffdcbaebb3bf472a48f36f1cca506f4d544d0ededbf81420a1bb15e5a7eabdea
|
|
| MD5 |
28d5f7edc8f1d85ed52dcd6cd13f994d
|
|
| BLAKE2b-256 |
c680f61bacf8485501bcee460a9178cb4c59b0e020e0830d1ae3fed699137873
|
Provenance
The following attestation bundles were made for playwright_flake_triage-0.1.3.tar.gz:
Publisher:
publish.yml on vasiliy0/playwright-flake-triage
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
playwright_flake_triage-0.1.3.tar.gz -
Subject digest:
ffdcbaebb3bf472a48f36f1cca506f4d544d0ededbf81420a1bb15e5a7eabdea - Sigstore transparency entry: 1511118059
- Sigstore integration time:
-
Permalink:
vasiliy0/playwright-flake-triage@6082b02e1a8173f01be62a9fec5ac06df9773026 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/vasiliy0
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6082b02e1a8173f01be62a9fec5ac06df9773026 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file playwright_flake_triage-0.1.3-py3-none-any.whl.
File metadata
- Download URL: playwright_flake_triage-0.1.3-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
244080d9e0b54fa84558eafa30e2256510f97a8ce0cc189094a2de5c893213c4
|
|
| MD5 |
8bac4971bcf9bbd082299328cde444e4
|
|
| BLAKE2b-256 |
688111c977aa73d49d58a87c5aa61c14e8d53425e6ededaafea36b6c731f1931
|
Provenance
The following attestation bundles were made for playwright_flake_triage-0.1.3-py3-none-any.whl:
Publisher:
publish.yml on vasiliy0/playwright-flake-triage
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
playwright_flake_triage-0.1.3-py3-none-any.whl -
Subject digest:
244080d9e0b54fa84558eafa30e2256510f97a8ce0cc189094a2de5c893213c4 - Sigstore transparency entry: 1511118164
- Sigstore integration time:
-
Permalink:
vasiliy0/playwright-flake-triage@6082b02e1a8173f01be62a9fec5ac06df9773026 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/vasiliy0
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6082b02e1a8173f01be62a9fec5ac06df9773026 -
Trigger Event:
workflow_dispatch
-
Statement type: