
Playwright Stealth Verify
Playwright, Puppeteer, Selenium, or raw CDP sessions can each leave fingerprint tells that a site might notice, and this skill gives you a way to measure them instead of guessing. It wraps the liarjs library around a Page you already have, so the check runs against your real launch flags, plugins, and proxy. Checks cover `navigator.webdriver`, a leftover HeadlessChrome token in the UA, patched APIs that no longer report `[native code]`, and whether WebGL and WebGPU agree on the GPU. The worker-versus-main-thread check is the one people tend to miss, since partial overrides often patch the main thread and leave workers telling a different story. It's a good fit for a test assertion on a score threshold, and you can run `--offline` if the harness can't reach outside the test network.
- skills.sh installs
- 119K
- GitHub stars
- 5
- last updated
- Oct 26, 2026
Install
$ npx -y skills add liarjsdev/liarjs-skills --skill playwright-stealth-verify --agent claude-codeInstalls into .claude/skills of the current project.
Files
Verify an automation harness against itself
A test browser that quietly looks wrong is a test suite that quietly gets challenged. liarjs
answers one question about a harness: does its JavaScript story agree with itself and with what the
network layer saw? It measures; it does not modify the browser and ships no evasions or profiles.
Node 22 or newer. Zero runtime dependencies, so it adds nothing to an existing Playwright or Puppeteer install.
Against a Page you already have
checkPage works with any object exposing evaluate(expression: string). Playwright and Puppeteer
Page objects both qualify, so the harness under test is the harness being measured, with its real
launch flags, real plugins and real proxy in place.
import { checkPage } from 'liarjs';
const result = await checkPage(page);
expect(result.score).toBeGreaterThanOrEqual(85);
// Or assert on specific ids rather than a single number:
const critical = result.checks.filter((c) => c.status === 'bad');
expect(critical, JSON.stringify(critical, null, 2)).toHaveLength(0);
Sponsors
Details
- Repository
- github.com/liarjsdev/liarjs-skills
- Categories
- Backend & APIs, Testing & QA, Code Review & Quality, Automation & Workflows
- First seen
- Oct 26, 2026