In this post, we’ll go beyond Playwright’s built-in retries and explore how to implement custom retry logic based on:
• Error types
• Test metadata (like severity or tags)
• Dynamic thresholds (e.g., flaky test detection using error patterns)
Playwright lets you configure a retry count via retries in playwright.config.ts. This is great for quick fixes—but:
• It treats all failures equally (a timeout vs. a visual diff? same reaction).
• No understanding of test importance or severity.
• No room for intelligent decision making during the retry phase.
We’re going to fix that using a combination of:
• test.info()
• test.skip()
• Error pattern matching
• Conditional logic
Strategy Overview: Rethinking Retries
We’ll create a custom retry plugin that:
• Intercepts failed tests
• Analyzes test.info().errors
• Uses error types (e.g., timeout vs. network vs. assertion)
• Applies logic like:
“Retry only if it’s a network glitch and the test is not critical.”
1.**
Tagging Tests Based on Severity
**
2. Detecting Error Types After Failure
Retry only tests that failed due to network issues
Let’s Collaborate!
Are you doing something similar in your Playwright test strategy?
Have thoughts on improving flaky test handling?
Let’s connect on LinkedIn or drop a comment below!
Share This If You Hate Flaky Tests!
If this saved your time or your sanity, give it a ❤️ and a 🔁.
Top comments (0)