Testing and Troubleshooting
The order you check things in matters more than most of the individual checks. A green result from a shallow test and a green result from real usage are not the same claim, and a check that only ever asserts the absence of a leak can stay green while the feature it’s supposed to protect is completely broken. This group is about telling the difference before you ship a fix, not after.
Verifying stealth without a false pass
- How to test bot detection without a false pass - what each public suite proves, and why a passing verdict can hide a broken feature.
- Can You Run Playwright Without Being Detected? - what removing browser-level tells clears, and the three signals it does not fix.
- Is Playwright Headless Detectable? - classic headless leaks its user agent, WebGL, window metrics and fonts; why output parity beats per-tell patching.
- Does Playwright Trigger reCAPTCHA More Often? - how reCAPTCHA scores fingerprint, IP, session age and behaviour, and which inputs an engine can move.
When you get blocked or detected
- Playwright detected as a bot on one site: a checklist - a checklist that checks the free fixes first, before buying a better proxy on day one.
- Why Does My Playwright Script Get Blocked? - a four-layer diagnostic across fingerprint, IP reputation, rate and quota, and behaviour.
- Why am I blocked with a clean fingerprint? - you pass CreepJS, BotD and sannysoft and still get blocked; how to isolate which of four layers is failing.
- Why Playwright Works Locally but Fails in the Cloud - the same script fails on CI because the exit IP moved from residential to datacenter, not because your code changed.
Launch, process and preference problems
- Slow browser launch: a per-request timeout is not a budget - one launch in six was randomly slow; the fix is a total step budget, not a shorter per-request timeout.
- Playwright TargetClosedError: the causes and the fixes - usually not a timeout; three specific Firefox and Juggler causes, their symptoms, and how to tell them apart.
- Firefox preferences that silently do nothing - a preference you set can be silently ignored with no error; the reasons in order, and how to confirm which one you hit.
Canvas, screenshots and fingerprint noise
- Canvas fingerprint changes every run: use a seed - canvas, WebGL and audio hashes change each run; pass a fixed seed to make readbacks byte-identical.
- Playwright screenshot returns noise: readback fix - why page.screenshot() returned a noise PNG, and the principal-split canvas readback fix that made captures clean.
Table of contents
- How to test bot detection without a false pass
- Playwright detected as a bot: the checklist to fix it
- Firefox preferences that silently do nothing
- Slow browser launch: a per-request timeout is not a budget
- Playwright screenshot returns noise: readback fix
- Canvas fingerprint changes every run: use a seed
- Playwright TargetClosedError: the causes and the fixes
- Why am I blocked with a clean fingerprint?
- Why Does My Playwright Script Get Blocked?
- Is Playwright headless detectable? What sites check
- Can You Run Playwright Without Being Detected?
- Why Playwright Works Locally but Fails in the Cloud
- Does Playwright Trigger reCAPTCHA More Often?