Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/davidG97/qa-flow/llms.txt

Use this file to discover all available pages before exploring further.

Every step in a QA Flow test is represented by a node. Nodes are dragged from the palette onto the canvas, configured through a field panel, and wired together with edges to define execution order. This page documents every node type available in QA Flow, including its ID, label, purpose, and all configurable fields.

Trigger Nodes

Trigger nodes mark the entry point of a test flow. Every flow must start with exactly one trigger.
Category: trigger | Label: InicioThe Start node is the anchor of every flow. It defines the base URL, names the test, assigns tags for filtering, and optionally configures full device emulation for the browser context that Playwright will open.Basic fields:
FieldTypeRequiredDescription
testNametextHuman-readable name for the test (e.g. My login test)
tagstagsComma-separated tags for filtering (e.g. @smoke, @regression)
baseUrltextThe root URL all relative paths resolve against (e.g. https://example.com)
Emulation group (advanced):
FieldTypeDefaultDescription
deviceselect(none)Emulate a named device: Pixel 5, Pixel 7, iPhone 12–14 Pro Max, iPad Mini, iPad Pro 11, Galaxy S9+, Galaxy Tab S4
viewportWidthnumber1280Viewport width in pixels
viewportHeightnumber720Viewport height in pixels
deviceScaleFactornumber1Device pixel ratio
isMobilebooleanfalseTreat the context as a mobile browser
hasTouchbooleanfalseEnable touch event support
localeselect(default)Browser locale: en-US, en-GB, es-ES, es-MX, es-CO, pt-BR, fr-FR, de-DE, it-IT, ja-JP, ko-KR, zh-CN
timezoneIdselect(default)IANA timezone: America/New_York, America/Los_Angeles, America/Bogota, Europe/London, Asia/Tokyo, and more
geoLatitudetextGPS latitude for geolocation emulation
geoLongitudetextGPS longitude for geolocation emulation
geoAccuracynumberGeolocation accuracy in metres
colorSchemeselect(default)Preferred color scheme: light, dark, or no-preference
reducedMotionselect(default)Reduced motion preference: reduce or no-preference
forcedColorsselect(default)Forced colors mode: active or none
offlinebooleanfalseSimulate an offline network state
javaScriptEnabledbooleantrueToggle JavaScript execution in the browser context
userAgenttextareaOverride the browser’s User-Agent string
permissionstagsBrowser permissions to grant (e.g. geolocation, notifications, camera)

Action Nodes

Action nodes drive the browser — they navigate, interact with elements, and read data from the page. Use them to simulate everything a real user would do.
Category: action | Label: Hacer ClickClicks a DOM element identified by a selector. Supports left, right, and middle mouse buttons with configurable click count and delay.
FieldTypeRequiredDefaultDescription
selectortextCSS/XPath selector (e.g. #id, .class, button[type="submit"])
buttonselectleftMouse button: left, right, or middle
clickCountnumber1Number of clicks to perform
delaynumber0Milliseconds between mousedown and mouseup
forcebooleanfalseSkip actionability checks and force the click
timeoutnumber30000Maximum wait time in milliseconds
Category: action | Label: Marcar/Desmarcar CheckboxChecks or unchecks a checkbox or radio input element.
FieldTypeRequiredDefaultDescription
selectortextSelector targeting the checkbox (e.g. input[type="checkbox"])
actionselectcheckcheck to mark, uncheck to clear
forcebooleanfalseSkip actionability checks
timeoutnumber30000Timeout in milliseconds
Category: action | Label: Escribir TextoTypes text into a focused input field, optionally clearing it first. Each character fires individual keyboard events, which is useful for inputs that react to keydown/keyup events.
FieldTypeRequiredDefaultDescription
selectortextTarget input selector (e.g. input[name="email"])
texttextThe text to type
clearFirstbooleantrueClear the field before typing
delaynumber0Milliseconds between each keypress
Category: action | Label: Rellenar CampoFills an input field instantly by setting its value directly — faster than type and suitable for most form inputs that don’t depend on keyboard event sequences.
FieldTypeRequiredDefaultDescription
selectortextTarget input selector
valuetextThe value to insert
Category: action | Label: Seleccionar OpciónSelects an option from a <select> dropdown element by value, visible label, or index.
FieldTypeRequiredDefaultDescription
selectortextSelector for the <select> element (e.g. select#country)
valuetextThe option to select
selectByselectvalueSelection strategy: value (option value attribute), label (visible text), index
Category: action | Label: HoverMoves the mouse over an element, triggering mouseover and mouseenter events. Useful for revealing dropdown menus or tooltips.
FieldTypeRequiredDescription
selectortextTarget element selector (e.g. .menu-item)
Category: action | Label: EsperarPauses execution for a fixed time, until an element is visible or hidden, or until the network is idle.
FieldTypeRequiredDefaultDescription
waitTypeselecttimeStrategy: time (fixed ms), selector (element visible), hidden (element hidden), networkidle
valuetextMilliseconds (for time) or a selector string (for element strategies)
timeoutnumber30000Maximum wait time in milliseconds
Category: action | Label: Captura de PantallaCaptures a screenshot and saves it to disk. Can capture the full page or a specific element.
FieldTypeRequiredDefaultDescription
nametextOutput filename without extension (e.g. login-capture)
fullPagebooleanfalseCapture the full scrollable page height
selectortextRestrict capture to this element (hidden when fullPage is true)
Category: action | Label: Doble ClickPerforms a double-click on an element. Supports mouse button selection and delay configuration.
FieldTypeRequiredDefaultDescription
selectortextTarget element selector
buttonselectleftMouse button: left, right, middle
delaynumber0Milliseconds between the two clicks
forcebooleanfalseSkip actionability checks
timeoutnumber30000Timeout in milliseconds
Category: action | Label: Limpiar CampoClears the contents of an input or textarea element.
FieldTypeRequiredDefaultDescription
selectortextTarget input selector (e.g. input#email)
forcebooleanfalseSkip actionability checks
timeoutnumber30000Timeout in milliseconds
Category: action | Label: Quitar FocoRemoves focus from an element by dispatching a blur event. Useful for triggering validation that fires on blur.
FieldTypeRequiredDefaultDescription
selectortextTarget element selector
timeoutnumber30000Timeout in milliseconds
Category: action | Label: Dar FocoFocuses an element by dispatching a focus event, without simulating any user input.
FieldTypeRequiredDefaultDescription
selectortextTarget element selector
timeoutnumber30000Timeout in milliseconds
Category: action | Label: Presionar TeclaPresses a keyboard key or combination on a focused element. Choose from a preset list or supply a custom key string.
FieldTypeRequiredDefaultDescription
selectortextElement to focus before pressing (e.g. input#search)
keyselectEnterPreset key: Enter, Tab, Escape, Backspace, Delete, Arrow keys, Home, End, PageUp/Down, Ctrl+A/C/V/Z/S, F1/F5/F12
customKeytextCustom key combination overriding the preset (e.g. Shift+Control+a)
delaynumber0Delay in milliseconds
timeoutnumber30000Timeout in milliseconds
Category: action | Label: Escribir SecuencialmenteTypes text one character at a time, simulating a real human typing. Each character fires its own keyboard events with a configurable inter-key delay.
FieldTypeRequiredDefaultDescription
selectortextTarget input selector
texttextText to type character by character
delaynumber50Milliseconds between each character
timeoutnumber30000Timeout in milliseconds
Category: action | Label: Seleccionar TextoSelects all text inside an input or textarea element.
FieldTypeRequiredDefaultDescription
selectortextTarget input or textarea selector
forcebooleanfalseSkip actionability checks
timeoutnumber30000Timeout in milliseconds
Category: action | Label: Subir ArchivoSets the value of a file input element by providing the path to the file on the server.
FieldTypeRequiredDefaultDescription
selectortextSelector for the <input type="file"> element
filePathtextAbsolute path to the file to upload (e.g. /path/to/document.pdf)
timeoutnumber30000Timeout in milliseconds
Category: action | Label: Tap (Móvil)Performs a touch tap on an element. Use this in flows that emulate mobile devices with hasTouch enabled on the Start node.
FieldTypeRequiredDefaultDescription
selectortextTarget element selector (e.g. button.submit)
forcebooleanfalseSkip actionability checks
timeoutnumber30000Timeout in milliseconds
Category: action | Label: Arrastrar y SoltarDrags a source element and drops it onto a target element.
FieldTypeRequiredDefaultDescription
sourceSelectortextSelector for the element to drag
targetSelectortextSelector for the drop target
forcebooleanfalseSkip actionability checks
timeoutnumber30000Timeout in milliseconds
Category: action | Label: Hacer ScrollScrolls the page until the target element becomes visible in the viewport.
FieldTypeRequiredDefaultDescription
selectortextSelector for the element to scroll to
timeoutnumber30000Timeout in milliseconds
Category: action | Label: Disparar EventoProgrammatically dispatches a DOM event on an element. Useful for triggering behavior that native Playwright interactions cannot reach.
FieldTypeRequiredDefaultDescription
selectortextTarget element selector
eventTypeselectclickEvent to dispatch: click, dblclick, mousedown, mouseup, mouseover, mouseout, focus, blur, input, change, submit, keydown, keyup, keypress, dragstart, dragend, drop
timeoutnumber30000Timeout in milliseconds
Category: action | Label: Esperar ElementoWaits until an element reaches a specific DOM state before the flow continues.
FieldTypeRequiredDefaultDescription
selectortextSelector to watch
stateselectvisibleExpected state: visible, hidden, attached (in DOM), detached (removed from DOM)
timeoutnumber30000Timeout in milliseconds
Category: action | Label: Obtener AtributoReads an attribute value from a DOM element and optionally stores it in a named variable for use in subsequent nodes.
FieldTypeRequiredDefaultDescription
selectortextTarget element selector (e.g. a#link)
attributetextAttribute name to read (e.g. href, class, data-id)
variableNametextVariable name to store the result in
timeoutnumber30000Timeout in milliseconds
Category: action | Label: Obtener Valor de InputReads the current value of an input, textarea, or select element and optionally stores it in a variable.
FieldTypeRequiredDefaultDescription
selectortextTarget input selector (e.g. input#email)
variableNametextVariable name to store the result in
timeoutnumber30000Timeout in milliseconds
Category: action | Label: Obtener TextoReads the inner text content of an element and optionally stores it in a variable.
FieldTypeRequiredDefaultDescription
selectortextTarget element selector (e.g. span.message)
variableNametextVariable name to store the result in
timeoutnumber30000Timeout in milliseconds

Assertion Nodes

Assertion nodes verify your application’s state by wrapping Playwright’s expect() API. A failing assertion marks the test as failed and halts the flow at that point.
assertVisible (toBeVisible) — Verifies that an element is rendered and visible on the page.
FieldTypeDefaultDescription
selectortextElement to check (e.g. .success-message)
negatebooleanfalseWhen true, asserts the element is NOT visible
timeoutnumber5000Timeout in milliseconds

assertHidden (toBeHidden) — Verifies that an element is hidden or absent from the visible layout.
FieldTypeDefaultDescription
selectortextElement to check
timeoutnumber5000Timeout in milliseconds
assertAttached (toBeAttached) — Verifies that an element exists in the DOM, regardless of whether it is visible.
FieldTypeDefaultDescription
selectortextElement to check (e.g. #component)
attachedselecttruetrue = in DOM, false = not in DOM
timeoutnumber5000Timeout in milliseconds
assertChecked (toBeChecked) — Verifies whether a checkbox or radio input is checked or unchecked.
FieldTypeDefaultDescription
selectortextCheckbox or radio selector
checkedselecttruetrue = expects checked, false = expects unchecked
timeoutnumber5000Timeout in milliseconds
assertEnabled (toBeEnabled) — Verifies that an interactive element (button, input, etc.) is not disabled.assertDisabled (toBeDisabled) — Verifies that an element has the disabled attribute or state.Both nodes share the same field structure:
FieldTypeDefaultDescription
selectortextElement to check (e.g. button#submit)
timeoutnumber5000Timeout in milliseconds
assertEditable (toBeEditable) — Verifies whether an input is editable (not read-only and not disabled).
FieldTypeDefaultDescription
selectortextInput or textarea selector
editableselecttruetrue = editable, false = not editable
timeoutnumber5000Timeout in milliseconds
assertEmpty (toBeEmpty) — Verifies that an element has no child elements and no text content.
FieldTypeDefaultDescription
selectortextContainer selector (e.g. .item-list)
timeoutnumber5000Timeout in milliseconds
assertFocused (toBeFocused) — Verifies that an element currently has keyboard focus.
FieldTypeDefaultDescription
selectortextElement to check (e.g. input#email)
timeoutnumber5000Timeout in milliseconds
assertInViewport (toBeInViewport) — Verifies that an element is within the visible viewport area. An optional ratio sets the minimum fraction of the element that must be visible.
FieldTypeDefaultDescription
selectortextElement to check
rationumber0Minimum visible ratio from 0.0 to 1.0
timeoutnumber5000Timeout in milliseconds
assertText (toHaveText / toContainText) — Verifies the text content of an element, with options for exact match, substring, or regular expression.
FieldTypeDefaultDescription
selectortextElement to read (e.g. h1.title)
expectedTexttextThe text to match against
matchTypeselectcontainsexact (toHaveText), contains (toContainText), or regex
ignoreCasebooleanfalseCase-insensitive comparison
timeoutnumber5000Timeout in milliseconds
assertAttribute (toHaveAttribute) — Verifies the value of a DOM attribute on an element. If expectedValue is left empty, the assertion only checks that the attribute exists.
FieldTypeDefaultDescription
selectortextTarget element selector (e.g. a#link)
attributetextAttribute name to verify (e.g. href, class, data-id)
expectedValuetextExpected attribute value; leave empty to assert existence only
timeoutnumber5000Timeout in milliseconds
assertClass (toHaveClass / toContainClass) — Verifies the CSS class or classes applied to an element. Use contains to check that a class is present among others, or exact to match the full class list.
FieldTypeDefaultDescription
selectortextTarget element selector (e.g. div#card)
expectedClasstextOne or more space-separated class names to verify (e.g. active highlighted)
matchTypeselectcontainsexact (toHaveClass — full class list must match) or contains (toContainClass — class must be present)
timeoutnumber5000Timeout in milliseconds
assertCSS (toHaveCSS) — Verifies that a computed CSS property of an element has the expected value.
FieldTypeDefaultDescription
selectortextTarget element (e.g. .button)
cssPropertytextCSS property name (e.g. background-color, display, opacity)
expectedValuetextExpected computed value (e.g. rgb(255, 0, 0), block, 1)
timeoutnumber5000Timeout in milliseconds
assertId (toHaveId) — Verifies that the id attribute of an element matches an expected value.
FieldTypeDefaultDescription
selectortextElement to inspect
expectedIdtextExpected id attribute value (e.g. user-profile)
timeoutnumber5000Timeout in milliseconds
assertRole (toHaveRole) — Verifies the ARIA role of an element. Supports the full set of WAI-ARIA roles including button, checkbox, dialog, link, navigation, textbox, grid, and many more.
FieldTypeDefaultDescription
selectortextElement to check
expectedRoleselectbuttonExpected ARIA role (full list covers ~35 roles)
timeoutnumber5000Timeout in milliseconds
assertAccessibleName (toHaveAccessibleName) — Verifies the accessible name of an element as computed by the accessibility tree.assertAccessibleDescription (toHaveAccessibleDescription) — Verifies the accessible description of an element.Both follow the same structure:
FieldTypeDefaultDescription
selectortextElement to inspect
expectedName / expectedDescriptiontextExpected accessible name or description string
timeoutnumber5000Timeout in milliseconds
assertUrl (toHaveURL) — Verifies the current page URL.
FieldTypeDefaultDescription
expectedUrltextURL to match (e.g. /dashboard or https://...)
matchTypeselectcontainsexact, contains, or regex
timeoutnumber5000Timeout in milliseconds

assertTitle (toHaveTitle) — Verifies the <title> of the current page.
FieldTypeDefaultDescription
expectedTitletextTitle to match
matchTypeselectcontainsexact, contains, or regex
timeoutnumber5000Timeout in milliseconds
assertValue (toHaveValue) — Verifies the current value of an input, textarea, or select element.
FieldTypeDefaultDescription
selectortextInput to inspect
expectedValuetextExpected value string
timeoutnumber5000Timeout in milliseconds

assertValues (toHaveValues) — Verifies the selected values of a multi-select element.
FieldTypeDefaultDescription
selectortext<select multiple> selector
expectedValuestextComma-separated expected values (e.g. red,blue,green)
timeoutnumber5000Timeout in milliseconds
assertCount (toHaveCount) — Verifies the number of elements matching a selector, with flexible comparison operators.
FieldTypeDefaultDescription
selectortextSelector to count (e.g. .list-item)
expectedCountnumberThe count to compare against
comparisonselectequalequal, greaterThan, lessThan, greaterOrEqual, lessOrEqual
timeoutnumber5000Timeout in milliseconds
assertScreenshot (toHaveScreenshot) — Captures a screenshot and compares it pixel-by-pixel against a stored baseline image. Fails if the difference exceeds the configured threshold.
FieldTypeDefaultDescription
selectortextElement to capture (leave empty for full page)
screenshotNametextName for the baseline image (e.g. login-form)
maxDiffPixelsnumber0Maximum number of differing pixels allowed
maxDiffPixelRationumber0Maximum ratio of differing pixels (0.01.0)
timeoutnumber5000Timeout in milliseconds
On the first run, assertScreenshot creates the baseline image automatically. Subsequent runs compare against that baseline. Delete the baseline file to regenerate it after intentional UI changes.

Control Flow Nodes

Control flow nodes add branching and repetition to your test graph. They let you handle dynamic states and data-driven scenarios without writing code.
Category: control | Label: Condición (If)Evaluates a condition and routes execution down one of two output edges — the true branch or the false branch. This lets your flow adapt to variable page states such as the presence of a cookie banner or an optional modal.
FieldTypeDefaultDescription
conditionTypeselectelementExistsCondition to evaluate: elementExists, elementVisible, textContains, urlContains
selectortextElement selector or text/URL value to evaluate
Connect nodes to the true output for the path when the condition passes, and to the false output for when it does not.
Category: control | Label: Bucle (Loop)Repeats a connected sequence of nodes a fixed number of times, once per matched element, or once per item in a data array.
FieldTypeDefaultDescription
loopTypeselectcountLoop strategy: count (fixed iterations), elements (one pass per matching DOM element), data (one pass per data row)
valuetextNumber of iterations (for count) or a CSS selector (for elements)
Category: control | Label: Código JavaScriptExecutes arbitrary JavaScript inside the Playwright test context. The script has access to the page, context, and browser objects, enabling anything Playwright can do.
FieldTypeDefaultDescription
codetextareaJavaScript code to execute. Variables page, context, and browser are available.
descriptiontextHuman-readable summary of what this code does
awaitResultbooleantrueWhether to await the result of the code expression
// Example: read the page title and log it
const title = await page.title();
console.log('Page title:', title);
Code nodes execute with full access to the Playwright API. Only run trusted code — malicious scripts can access the file system or network from the test runner process.

Hook Nodes

Hook nodes mirror Playwright’s test lifecycle and let you define shared setup and teardown logic that runs before or after individual tests or entire test suites.
beforeAll — Runs once before all tests in the current group. Use it to set up shared state such as seeding a database or spinning up a mock server.afterAll — Runs once after all tests in the group complete, regardless of pass/fail. Use it to tear down anything created in beforeAll.Both nodes share the same fields:
FieldTypeDescription
hookNametextDescriptive name for the hook (e.g. Initial Setup)
descriptiontextareaWhat this hook does
beforeEach — Runs before every individual test in the group. Common uses: navigate to the starting URL, log in, or reset application state.afterEach — Runs after every individual test. Common uses: take a failure screenshot, log out, or clean up test data.Both nodes share the same fields:
FieldTypeDescription
hookNametextDescriptive name (e.g. Login before each test)
descriptiontextareaWhat this hook does

Build docs developers (and LLMs) love