Learn what Playwright can do in each of the various browsers it supports. By default, Scriptwriter loads Chromium and creates a Chrome Devtools Protocol (CDP) client for more repl fun!
- Ensure you have node 10.15.0 or higher.
- Install Playwright globally:
npm i -g playwright
(tested with 1.5.2). - Install Scriptwriter:
npm i -g scriptwriter
. - (some tools that manage multiple versions of node may require you to
npm link
playwright for scriptwriter's global-import to work). - Or clone this repo, install, and use
npm link
ornpm start
.
scriptwriter --no-headless
will launch the repl and Chromium.- Use
await
right away:await page.goto('https://github.com')
- The prompt will change on load:
github.com ~>
.help
lists the global commands.- Pressing
Tab
twice will display autocomplete help. - Save and load your repl sessions!
You can use cli flags to set the config scriptwriter --help
:
Usage
$ scriptwriter [--no-headless] [--device <name>] [--config <file>]
[--browser <browser>] [--no-js] [--no-csp]
Options
--no-headless, --no-h Run as headless=false
--device, -d Load a device profile from Playwright
--config, -c Pass a config file to Scriptwriter
--browser, -b Change browsers (default: chromium)
--no-js Disable JavaScript
--no-csp Bypass CSP
--aom, -a Launch with Accessibility Object Model (AOM) enabled
--user, -u Launch with a Persistent Context
Examples
$ scriptwriter
$ scriptwriter --no-headless
$ scriptwriter --device 'iPhone X'
$ scriptwriter --config ./config.js
$ scriptwriter -c ./config.json --no-h
$ scriptwriter --no-js --b firefox
You can also load a config from a file.
// iphonex.json
{
"launch": {
"headless": true,
"args": ["--some-blink-specific-tag-name"]
},
"context": {},
"device": "iPhone X"
}
scriptwriter --config iphonex.json
You can load your own commands. Scriptwriter exposes some helpful utility functions.
- director = node repl instance
- scriptwriter.code = prettier.format
- scriptwriter.color = kleur
- scriptwriter.error = pretty-error
- scriptwriter.escapes = ansi-escapes
- scriptwriter.importGlobal = import-global
Example:
// my-command.js
scriptwriter.completion = '.louder';
director.defineCommand('louder', {
help: `make something louder`,
async action(str) {
const { log, color } = scriptwriter;
log(color.red(`${str.toUpperCase()}!!`));
director.displayPrompt();
},
});
// in the scriptwriter repl
> .load my-command.js
> .louder test
TEST!!
On a mac, you may get the firewall popup.
- Open keychain access.
- In the top menu, choose
Keychain Access > Certificate Assistant > Create a Certificate
. - Name it
Playwright
. - Change the
Certificate Type
toCode Signing
. - Click
create
. - Right click your new certificate and choose
Get Info
. - Open
Trust
disclosure. - Change
When using this certificate:
toAlways Trust
. - Start Scriptwriter.
- When Chromium starts, right click the icon in the menu bar, choose
Options > Show in Finder
. - Right click Chromium and select
New Terminal Here
. - In the terminal type
pwd
and copy the path. - Use the following to assign the certificate:
sudo codesign -s Playwright -f <PATH_TO_CHROMIUM> --deep
.