Creating UI Tests in the UI
The platform offers three ways to create UI tests: the Super Wizard (guided), the Advanced Editor (manual), and direct YAML editing.
Super Wizard (Recommended)
The wizard walks you through 4 steps to create a working UI test without writing code.
Step 1: What to Test
- Navigate to UI Tests in the sidebar
- Click New Test
- Enter a test name and optional description
- Provide the target:
- Manual mode — paste the target URL directly
- Project mode — select Project, Environment, and Target from dropdowns
- Choose a template to start from:
- Login Flow — pre-builds login steps (navigate, type username/password, click submit)
- Shopping Cart — add-to-cart and checkout flow
- Page Navigation — multi-page navigation with validations
- Custom — start with an empty step list
- If the target has credentials configured, the Credential Selector appears — pick a credential tag or use the default
Step 2: Discover Page
The wizard crawls the target site to find interactive elements.
Option A: Auto-crawl
- Set crawl depth (1–5 pages deep) and max pages (5–50)
- The wizard pre-selects the engine for you — a green Recommended chip appears next to whichever of Playwright / HtmlUnit fits the target's tech stack (see Engine recommendation below). Click the other toggle if you want to override.
- If the site requires login, fill in the auth hint fields (username/password selectors)
- Click Discover Pages
- Results show an accordion per page with elements grouped by type (Buttons, Inputs, Links, Forms)
- Star elements you want to use in your test by clicking the checkbox
- Use Star All Interactive to bulk-select all buttons and inputs
- Use the Search Elements dialog to filter across all pages
Option B: Visual Element Picker
- Click Pick Elements Visually
- A browser session opens showing the live page
- Click on any element in the screenshot
- The right panel shows the element's CSS selector, tag, text, and attributes
- Click Add as... to create a step for that element (e.g., Click, Type, Validate)
Tip: You can skip this step entirely and build steps manually in Step 3.
Step 3: Build Steps
Construct the test steps using your starred elements and the action palette.
Left sidebar:
- Available Elements — starred elements from Step 2, grouped by page
- Pick from Page — launch the Visual Picker to add more elements
- Add Login Steps — auto-generates a login sequence using the environment's credentials
Main area:
- Click an action from the Action Palette (organized by category: Navigation, Interaction, Wait, Validation, Advanced)
- Each step appears as a card with fields for the action's parameters
- Drag to reorder steps
- Use up/down arrows to move steps
- Duplicate or delete steps from the menu
Available actions: NAVIGATE_TO, CLICK, SEND_KEYS, CLEAR, VALIDATE_TEXT, WAIT_FOR_ELEMENT, TAKE_SCREENSHOT, and more. See Actions Reference for the full list.
Step 4: Review & Run
- Review the test summary: name, target, step count, estimated duration
- Expand YAML Preview to see the generated YAML
- Set metadata: tags, group name, feature
- Select browsers: Chrome, Firefox, Edge (multi-select for matrix runs)
- Click Save or Save & Run
Engine recommendation
When you enter Step 2 (Discover), the wizard asks the backend which crawler engine fits the target's tech stack and pre-selects the answer. A green Recommended chip appears next to the toggle that won; the toggles are still clickable if you want to override.
Selection logic (in priority order):
- Linked application tech — if the target's
appTagmatches an application on the project whoseapplication_techis a known SPA framework (REACT,ANGULAR,VUE,NEXT,SVELTE,VITE), the recommender returns Playwright, HIGH confidence. Zero-cost lookup, no network call. - One-shot HTTP probe — the backend fetches the target URL once and scans the response:
| Signal in response | Recommendation | Confidence |
|---|---|---|
__NEXT_DATA__ script, ng-version= attribute, data-reactroot, window.__NUXT__ | Playwright | HIGH |
<meta name="generator" content="WordPress / Hugo / Jekyll / Docusaurus | HtmlUnit | HIGH |
X-Powered-By: PHP/… or X-Powered-By: WordPress | HtmlUnit | HIGH |
Empty mount div (<div id="root"></div>, id="app", id="__next") | Playwright | MEDIUM |
| Substantial HTML (>2 KB, forms + many links, no SPA markers) | HtmlUnit | MEDIUM |
| Anything else | Playwright | LOW (no chip shown — it's the safe default already) |
Why this design: wrong "HtmlUnit" misses elements on SPAs (bad); wrong "Playwright" is just slower on static sites (acceptable). The recommender biases toward Playwright when any signal is ambiguous. LOW-confidence results are not surfaced as a chip — they would only add noise.
API: GET /api/crawl/recommend-engine?targetId=X or GET /api/crawl/recommend-engine?url=Y. Response shape: { engine, confidence, reason }. See Crawl API.
Advanced Editor
For power users who want full control:
- From the UI Tests list, click Edit on any test (or create a new one)
- Choose a view mode:
- Visual — step builder with action palette and step cards
- Split — side-by-side visual builder and YAML editor
- YAML — full-screen code editor (CodeMirror with YAML syntax highlighting)
- Changes in visual mode automatically sync to YAML and vice versa
- Use Crawl & Discover to find page elements at any time
- Use Templates to insert pre-built step sequences (login, checkout, etc.)
- Click Save
Running a UI Test
- Click the Run button (play icon) on any test in the list
- Choose a run mode:
- Rerun Last — same target and settings as the previous run
- From Project — select environment and target from the project
- Manual URL — enter a target URL directly
- Select browser(s) — Chrome, Firefox, Edge (each runs as a separate job).
The browser list applies to the WebDriver engine; if the test's
driverisPLAYWRIGHT, the matrix is Chromium / Firefox / WebKit instead. A test's driver is set when the test is created and isn't switched per run. - Select credentials from the environment (or use default)
- Enter an optional run tag for filtering results later
- Click Run
Cross-engine (run the same test on WebDriver and Playwright together) is at the suite level, not the single-test level. To get that matrix, group the test into a suite and pass
drivers: ["WEBDRIVER", "PLAYWRIGHT"]on the suite run — see Suites. The cross-engine compatibility score (Patent #8) only computes when both engines run the same logical test.
Results show on the UI Test Results page with:
- Per-step pass/fail status
- Screenshots (captured on failure)
- Execution timing per step
Test Suites
Group multiple tests for batch execution:
Creating a Suite
- Navigate to UI Tests → Suites tab
- Click New Suite
- Enter suite name, description, and select a project
- Click Add Tests — search and select tests from the project
- For each test, optionally assign a specific target (overrides the default)
- Toggle Reuse Browser to keep the same browser session across tests
- Reorder tests with up/down arrows
- Enable/disable individual tests without removing them
- Click Save
Executing a Suite
- Click Run on any suite
- Select the environment
- Review the test-to-target mapping (the dialog shows which targets each test will run against)
- Select credentials (optional)
- Click Execute Suite
- Results show per-test pass/fail with drill-down to individual step results
Visual Element Picker
The Visual Element Picker lets you select page elements by clicking on a live screenshot — no CSS selector knowledge needed.
- Available from the Wizard (Step 2) or the Advanced Editor
- Opens a dialog with the page screenshot on the left and element details on the right
- Click anywhere on the page to select an element
- The right panel shows: tag, ID, CSS selector, XPath, text content
- Choose an action: Click, Type, Validate Text, etc.
- The step is added to your test automatically
- Use the navigation bar at the top to browse to different pages
- Click Refresh to update the screenshot after navigation