Browser Automation
Type ID: core.browserAutomation · Kind: Action · Ports: 1 in, 1 out
Launches a Chromium browser with Playwright, optionally performs a form login (with TOTP support), then runs an ordered list of steps - navigate, fill, click, wait, and extract - returning the collected data.
Credentials
None
Properties
| Property | Key | Type | Required | Default | Possible values | Applies when |
|---|---|---|---|---|---|---|
| URL | url | string | Yes | '' | Start URL (or metrics URL) | Always |
| Timeout (ms) | timeoutMs | number | No | 30000 | Default page timeout in milliseconds | Always |
| Include HTML | includeHtml | boolean | No | false | Include page HTML in output (can be large) | Always |
| Auth Type | auth.type | options | No | none | none - None; form - Form Login | Always |
| Login URL | auth.loginUrl | string | No | '' | URL of the login page | auth.type = form |
| Username Selector | auth.usernameSelector | string | No | #email | CSS selector for the username field | auth.type = form |
| Password Selector | auth.passwordSelector | string | No | #password | CSS selector for the password field | auth.type = form |
| Submit Selector | auth.submitSelector | string | No | button[type=submit] | CSS selector for the submit button | auth.type = form |
| OTP Selector (optional) | auth.otpSelector | string | No | '' | Selector for the OTP input, if the site asks for one | auth.type = form |
| OTP Submit Selector (optional) | auth.otpSubmitSelector | string | No | '' | Selector to submit the OTP | auth.type = form |
| Use TOTP (Authenticator) Automatically | auth.useTotp | boolean | No | false | Generate the OTP from a TOTP secret in credentials | auth.type = form |
| Steps | steps | array | No | [] | Ordered automation steps (see below) | Always |
Steps (nested fields)
Each array entry is a step object with a type and type-specific fields.
| Field | Key | Type | Default | Possible values | Applies when |
|---|---|---|---|---|---|
| Type | type | options | goto | goto - Go To; fill - Fill; click - Click; waitForSelector - Wait For Selector; waitForTimeout - Wait For Timeout; extract - Extract | Always |
| URL | url | string | '' | Target URL | type = goto |
| Wait Until | waitUntil | options | networkidle | load - Load; domcontentloaded - DOM Loaded; networkidle - Network Idle | type = goto |
| Selector | selector | string | '' | CSS selector | type = fill, click, waitForSelector |
| Value | value | string | '' | Value to fill | type = fill |
| Timeout (ms) | timeoutMs | number | 15000 | Wait timeout in milliseconds | type = waitForSelector, waitForTimeout |
| Selectors | selectors | array | [] | Extraction rules (see below) | type = extract |
Extract selectors (nested rule fields)
Each entry is a selectorRule object:
| Field | Key | Type | Default | Possible values | Applies when |
|---|---|---|---|---|---|
| Key | key | string | metric | Output key for the extracted value | Always |
| CSS Selector | selector | string | [data-testid=metric] | CSS selector to read from | Always |
| Type | type | options | text | text - Text; texts - Texts; attr - Attribute; attrs - Attributes | Always |
| Attribute Name | attrName | string | href | Attribute to read | type = attr, attrs |
Notes
- The browser launches non-headless.
gotosteps without their ownurlfall back to the top-levelurl. - Form login: if the OTP field appears and
useTotpisfalse, execution throws; ifuseTotpistruewithout atotpSecretin credentials, it also throws. If the OTP field never appears within 8s, login continues without it. - Output is a single item
{ url, finalUrl, title, extracted, html?, timings }. Errors are caught and returned as{ error: true, message, timings }rather than thrown; the page and browser are always closed afterward.