Home

Awesome

playwright-chrome-recorder

This repo provides tools to export P Tests from Google Chrome DevTools' Recordings programmatically.

Prerequisites

In order to export JSON files from Chrome DevTools Recorder you will need to be on Chrome 101 or newer.

dblClick and rightclick require Chrome 103 or newer.

Installation

$ npm install -g playwright-chrome-recorder

Usage

Via CLI

To use the interactive CLI, run:

$ npx playwright-chrome-recorder

The CLI will prompt you to enter the path of the directory or file that you would like to modify as well as a path to write the generated playwright tests to.

If you prefer to enter paths via the CLI, you can run the following command to export individual recordings:

$ npx playwright-chrome-recorder <relative path to target test file>

or for folders containing multiple recordings:

$ npx playwright-chrome-recorder <relative path to target test folder>/*.json

By default the output will be written to a playwright folder in the current working directory.

If you prefer a different output directory, specify that via CLI:

$ npx playwright-chrome-recorder <relative path to target test folder>/*.json --output=folder-name

or via the interactive CLI prompts.

CLI Options

OptionDescription
-f, --forceBypass Git safety checks and force exporter to run
-d, --dryDry run (no changes are made to files)
-o, --outputOutput location of the files generated by the exporter
-p, --printPrint transformed files to stdout, useful for development

Via Import

import { playwrightStringifyChromeRecording } from 'playwright-chrome-recorder';

const stringifiedContent = await playwrightStringifyChromeRecording(
  recordingContent
);

return stringifiedContent;

Supported Chrome Recorder Step Types

Below are the step types that are currently supported:

TypeDescription
changebecomes page.locator("element").type("text")
clickbecomes page.locator("element").click();
click (right click)becomes page.locator("element").click({ button: 'right' });
doubleClickbecomes page.locator("element").dblclick();
hoverbecomes page.locator("element").hover();
keyDownbecomes page.keyboard.down("{key}")
keyUpnot exported at this time
navigatebecomes await page.goto("url")
setViewportbecomes await page.setViewportSize({ width, height })
scrollbecomes await page.mouse.wheel(x, y)

If a step type is not listed above, then a warning message should be displayed in the CLI.

License

This project is licensed under the terms of the MIT license.