Skip to content
Back to skills

Playwright Knowledge Patch

ASecurity

Playwright

  • 24 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 27, 2026
developmentjavascriptgojavabashnoderailstestingdebuggingbackend

Works with

  • cursor
  • vscode
  • cli
  • mcp

Security analysis

A100/100

Pro scans all 6 files and shows the line behind each finding

Scanned September 5, 2026

npx -y skills add Nevaberry/nevaberry-plugins --skill playwright-knowledge-patch --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Playwright Knowledge Patch?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Playwright Knowledge Patch
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nevaberry-playwright-knowledge-patch/badge)](https://www.skillsdirectory.com/skills/nevaberry-playwright-knowledge-patch)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: playwright-knowledge-patch
description: Playwright
version: "1.61.0"
license: MIT
metadata:
  author: Nevaberry
---


# Playwright Knowledge Patch

Use this skill for Playwright browser automation, component tests, the test runner, MCP, or test-agent workflows.

## Reference index

| Reference | Topics |
| --- | --- |
| [Browser automation](references/browser-automation.md) | Screencasts, bound sessions, cancellation, storage and passkeys, screenshots, locators, diagnostics, protocol metadata, and resource disposal |
| [Component testing](references/component-testing.md) | Story gallery, mounting by story id, typed props, update, and unmount |
| [Test runner and debugging](references/test-runner-and-debugging.md) | Removed support, CLI debugging, traces, retry scheduling, video, reporters, runner data, recordings, artifacts, and platforms |
| [MCP server](references/mcp-server.md) | Entry points, snapshot interaction, profiles, initialization, capabilities, configuration, guardrails, HTTP, and embedding |
| [Test agents](references/test-agents.md) | Initialization, planner/generator/healer roles, seed tests, plans, generated artifacts, and regeneration |

## Breaking removals and compatibility changes

- WebKit no longer supports macOS 14.
- `@playwright/experimental-ct-svelte` has been removed.
- Ubuntu 26.04 is supported.
- The supplied MCP container image supports headless Chromium only.
- Regenerate bundled test-agent definitions after every Playwright upgrade so
  their instructions and tools remain synchronized with the installed version.

## Cancel operations independently

Most operations and web-first assertions accept an `AbortSignal`. The normal
timeout remains active when a signal is supplied; set `timeout: 0` when the
signal alone should bound the operation.

```ts
const controller = new AbortController();
setTimeout(() => controller.abort(), 1_000);

await page.getByRole('button', { name: 'Submit' }).click({
  signal: controller.signal,
});
await expect(page.getByText('Done')).toBeVisible({
  signal: controller.signal,
});
```

Actions also accept `scroll: 'auto' | 'none'`. Use `'none'` when Playwright
must not scroll the target into view.

## Use story-based component tests

Define concrete component scenarios as stories and let the served gallery
render them on demand. `mount(storyId)` returns a locator scoped to the story's
root; use that locator for assertions and interactions, and call its
`update(props)` or `unmount()` methods for lifecycle tests.

```ts
test('click should expand', async ({ mount }) => {
  const component = await mount('components/Expandable/Stateful');
  await component.getByRole('button').click();
  await expect(component.getByTestId('expanded')).toHaveValue('true');
});
```

Supply the story type as a type argument when props should be checked. See
[Component testing](references/component-testing.md) for the workflow.

## Persist and exercise passkeys

Each browser context exposes a cross-browser `credentials` virtual
authenticator. Seed a backend-provisioned credential, install the authenticator,
then exercise the page's normal WebAuthn ceremony without a hardware key.

```ts
await context.credentials.create('example.com', {
  id: credentialId,
  userHandle,
  privateKey,
  publicKey,
});
await context.credentials.install();
await page.goto('https://example.com/login');
```

Use `credentials.get()` to retrieve an app-created credential for reuse. Add
`credentials` to storage state when passkeys must seed later contexts.

## Work with storage directly

`page.localStorage` and `page.sessionStorage` expose the current origin's Web
Storage without evaluating page code.

```ts
await page.localStorage.setItem('token', 'abc');
const token = await page.localStorage.getItem('token');
const sessionItems = await page.sessionStorage.items();
```

Use `browserContext.setStorageState()` to replace a live context's state. It
first clears cookies, local-storage origins, and IndexedDB origins, then applies
the replacement state.

## Record and annotate screencasts

Use `page.screencast` for explicit recording control, JPEG frame delivery, or
presentation overlays.

```ts
await page.screencast.start({
  path: 'video.webm',
  onFrame: ({ data, timestamp }) => consumeFrame(data, timestamp),
  size: { width: 800, height: 600 },
  quality: 90,
});

await using actions = await page.screencast.showActions({ cursor });
await page.screencast.showChapter('Checkout');
await page.screencast.stop();
```

`size` is an aspect-ratio-preserving maximum; without it, the viewport is
scaled within 800x800. A screencast already started by tracing or video can
override that size. Quality ranges from 0 through 100. See
[Browser automation](references/browser-automation.md) for overlays and the
regular test `video.show` annotations.

## Share a launched browser

Bind a launched browser when multiple Playwright, CLI, or MCP clients must use
one session.

```ts
const { endpoint } = await browser.bind('review-session', {
  workspaceDir: process.cwd(),
  host: 'localhost',
  port: 0,
});
const attached = await chromium.connect(endpoint);
browser.unbind();
```

Without `host` and `port`, binding uses a named pipe; with them, it exposes a
WebSocket endpoint. `browser.unbind()` stops accepting new clients.

## Generate WebP visual artifacts

End a visual snapshot name in `.webp` to select WebP. Standalone page and
locator screenshots accept `type: 'webp'`; quality 100 is lossless and is the
default, while lower values enable lossy compression.

```ts
await expect(page).toHaveScreenshot('homepage.webp');
await page.screenshot({ path: 'homepage.webp', quality: 50 });
```

## Inspect locators and page accessibility

- `page.ariaSnapshot()` snapshots the whole page, like a body locator.
- Locator ARIA snapshots accept `depth` and `mode`.
- `locator.normalize()` rewrites a locator toward recommended test-id and
  ARIA-role forms.
- `page.pickLocator()` lets a person select an element interactively;
  `page.cancelPickLocator()` cancels the picker.

## Use disposable resources

JavaScript resources such as pages, routes, and init scripts support
`await using`; scope exit closes the page or removes the installed resource.

```ts
await using page = await context.newPage();
{
  await using route = await page.route('**/*', route => route.continue());
  await using script = await page.addInitScript('console.log("ready")');
  await page.goto('https://example.com');
}
```

Evaluation methods accept functions as argument values. Page and context
`addInitScript()` methods also accept functions as init-script arguments.

## Debug from the command line

Start a test with the command-controlled debugger, attach to the bound session,
then issue debugger commands:

```bash
npx playwright test --debug=cli
playwright-cli attach
step-over
```

Inspect a saved trace without the GUI:

```bash
npx playwright trace open trace.zip
actions
action <id>
snapshot <id> --name before
snapshot <id> --name after
close
```

Use `tracing.start({ live: true })` for real-time trace updates. For flaky
tests, retain every attempt's trace when any attempt fails with
`'retain-on-failure-and-retries'`.

## Configure retries, videos, and soft polls

Set `testConfig.retryStrategy` to `'isolated'` to defer retries until the end
and run them serially in one worker. The default `'immediate'` schedules each
retry when a worker becomes available.

Video mode accepts `'on-all-retries'`, `'retain-on-first-failure'`, and
`'retain-on-failure-and-retries'`. Use `expect.soft.poll()` when a polling
failure should be collected without immediately stopping the test.

## Launch the MCP server

The MCP server requires Node.js 18 or newer. It is bundled with Playwright and
can be launched from the main package:

```bash
npx playwright mcp
npx playwright cli
```

For automation, take a structured accessibility snapshot and pass an element's
exact `ref` to the interaction tool. Use screenshots for visual verification,
not action targeting. Read [MCP server](references/mcp-server.md) before
enabling remote access, file access, origin rules, or secrets.

## Generate built-in test agents

Generate definitions for the consuming client loop:

```bash
npx playwright init-agents --loop=vscode
```

The planner explores the application and writes a plan under `specs/`; the
generator validates selectors and assertions and writes tests under `tests/`;
the healer replays failures, repairs tests within guardrails, and reruns them.
Use a seed test to provide ready application state, fixtures, setup, project
dependencies, and the preferred generated-test style. See
[Test agents](references/test-agents.md) for the artifact and audit-link flow.

Files in this skill

  • SKILL.md6.3 KB
  • references/assertions-locators.md1.6 KB
  • references/breaking-changes.md1.2 KB
  • references/browser-cli.md2.1 KB
  • references/page-context-apis.md2.5 KB
  • references/test-runner.md2.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.