Skip to main content

Browser Automation

Beta Feature

Web Intelligence is in beta. It works well for simple sites and localhost apps. Complex SPAs, cross-origin iframes, OAuth flows, and sites with anti-bot measures may not record or replay correctly. Stability will improve over time.

Rostyman ships an embedded Chromium test runner alongside the API client and database client. You can drive real browsers, assert against the DOM, scan for performance / security / accessibility issues, and verify a database mutation in the same test — without leaving the app.

Opening the browser tab

  • Click the Browser sidebar entry, or open a new tab and pick Browser
  • The first time you open it, a blank Chromium WebContentsView mounts to the right of the address bar
  • Type a URL and press Enter — Rostyman captures every network request, console message, and storage interaction from that point onward

Three-phase analysis

Hit the Analyze button (the Sparkles icon next to the address bar) and Rostyman runs three scans against the current page and scores each 0–100:

PhaseWhat it checks
PerformancePage load timing, transferred bytes, render-blocking resources, large layout shifts
SecurityMixed content, CSP presence, cookie flags, exposed token-shaped strings in requests
Accessibilityaxe-core WCAG audit — color contrast, missing alt text, ARIA validity, landmark roles

Results persist to the database so you can compare runs over time on the same URL.

Test recorder + runner

Click Record to capture a session. Every click, keystroke, navigation, scroll, hover, and key combination becomes a step in the test. Stop recording and you've got a runnable test scaffold.

Each test step can be one of 44 types, including:

  • navigate, click, type, hover, scroll, drag, dragAndDrop, wait, waitForSelector
  • tap, swipe, longPress, pinch (touch events)
  • pressKey, keyDown, keyUp, uploadFile, selectOption
  • assert, assertText, assertVisible, assertURL, assertScreenshot
  • assertAccessibility (WCAG mid-test, scope/severity/rules filters)
  • assertDB, assertApiCall, assertWCAGViolations, assertConsoleError
  • withinFrame, switchTab, closeTab, newTab
  • screenshot, setViewport, setCookie, clearStorage, setLocalStorage
  • mockNetwork, setNetworkThrottle, setGeolocation, setPermission
  • evalJs, setUserAgent, setDateMock, clipboardAssert

Test isolation modes

Each test can declare an isolation mode that controls how state carries across runs:

  • fresh — new browser context per test (cookies, localStorage, sessionStorage all empty)
  • inherit — share the parent project's context
  • session — reuse the saved session for this test (cookies + storage restored from snapshot)

beforeAll, afterAll, beforeEach, afterEach lifecycle hooks at the project, group, and test level run in the expected order. Bleed detection warns you when a test leaves persistent state behind.

Visual regression

assertScreenshot takes a PNG snapshot and pixel-diffs against a baseline. The first run captures the baseline; subsequent runs fail when the diff exceeds the threshold. Diffs are stored in the test result so you can inspect them in the Run History panel.

Selector playground

Press Ctrl+Shift+S to open the live CSS selector playground. Type any selector and Rostyman highlights every matching element in the page in real time. Great for building robust selectors when the DOM changes between runs.

assertDB — the killer feature

Browser tests can include assertDB steps that run a SQL query against any database connection you've configured in the Database tab and fail the test based on the result. Bind a connection at the project, group, or test level.

This is the only browser test runner that can verify a UI action against the actual database state without external glue code.

Test management

  • Tags + filter: add tags like smoke, auth, pricing to any test and filter the run list by tag
  • Flaky quarantine: tests that fail intermittently get a [Q] badge and are excluded from default runs
  • Run history: every run is stored with status, duration, and an inline screenshot of the final state
  • Viewport matrix: run the same test against multiple viewport sizes (desktop, tablet, mobile) in one pass
  • Network mocking: redirect any request URL to a data-URL response for deterministic tests

Timeline

After a run completes, click Timeline to see a lane-by-lane view of what changed per step:

  • DOM snapshot — page HTML at that step
  • Cookies — cookie additions, modifications, and deletions
  • Local Storage — key/value changes
  • Session Storage — key/value changes

Hover any thumbnail to preview the page state at that moment. Copy the full state, a single section, or individual values from any step with one click.

Network panel

The Network tab captures every HTTP request the page makes during a run:

  • Filter by type: XHR, Fetch, Script, Stylesheet, Image, Font, and more
  • Copy any request as cURL, as a fetch() call, or copy just the response body
  • Search by URL or status code

Console panel

The Console tab shows all console.log, warn, and error output from the page:

  • Filter by log level (log, info, warn, error)
  • Search by keyword
  • Copy all entries in one click
  • Chromium internal messages are filtered out automatically

The Cookies & Storage tab in the right panel of the browser tab lets you inspect, add, edit, and delete cookies, localStorage entries, and sessionStorage entries for the current origin. Values can be edited in-place. Save the full state as a session snapshot and restore it from any test via session isolation mode.

Export and import (cross-tool interop)

Click Export in any test to open the format picker — Rostyman generates runnable code in Playwright (.spec.ts), Cypress (.cy.js), Puppeteer (.js), WebdriverIO (.js), Selenium Python (.py), or Selenium JavaScript (.js). The preview swaps live as you change format; Copy and Save-to-file both work.

Click Import to read the same six formats. Paste source or pick a file — extension + content auto-detect the format. Lines that don't translate become editable unknown placeholder steps and the dialog surfaces a "Recognised N of M" summary plus the first few unrecognised lines, so nothing is silently dropped.

Cross-module integration

A browser test plugs into every other module:

  • Workflow — the Browser Test node runs a saved test inline. The summary { status, durationMs, passed, failed, total, firstFailure } is stored in a workflow variable for downstream branching.
  • Schedulerbrowser_test is a first-class target type alongside request / collection / folder, with the same cron/interval scheduling and run history.
  • MCP — the run_browser_test tool lets an AI agent trigger a test and read back per-step pass/fail.
  • Bulk run — Run-all-in-workspace, Run-all-in-project, Run-ungrouped, and per-row Run buttons; the progress strip shows {done}/{total} • {passed} • {failed} with a mid-batch Stop.

Headless CLI

Run any browser test from a terminal using rostyman-test:

rostyman-test run <testId>
rostyman-test run <testId> --format=junit --out=./results
rostyman-test run <testId> --format=json,junit --out=./results

Reports are written into the --out directory (default ./rostyman-results) as results-latest.json and junit-latest.xml.

Exit code 1 on any test failure — plug directly into CI pipelines (GitHub Actions, Jenkins, GitLab CI). The test ID is shown in the browser test panel header.

AI test generation

Click Generate Tests on any URL to have the AI analyse the page flow and write a full test suite automatically. The AI visits the page, maps the interactive elements, and produces step-by-step tests covering the main user journeys. You can edit and extend the generated tests before saving.

Per-step performance trends are tracked across runs — open any step's detail to see whether it is getting slower over time.

See also

  • AI Console — diagnose AI-driven test generation calls
  • Databases — connect a DB so assertDB can use it
  • Scheduler — schedule browser tests like any other target