---
source_url: "https://betterqa.co/flows-ai-automation-recorder/"
title: "Flows: AI automation recorder with self-healing tests"
mirrored_at: 2026-08-25T03:01:43.294Z
host: betterqa.co
cited_in_42a: true
mirror_canonical: "https://index.42a.ai/betterqa.co/flows-ai-automation-recorder/index"
---

> **Original source:** https://betterqa.co/flows-ai-automation-recorder/

BetterQA Tools / Recording

## Record once,  
_test everywhere_

Flows captures your browser actions and converts them into production-ready test scripts. Playwright, Cypress, Puppeteer. AI-powered selectors that survive UI changes.

Click

button\[data-testid="submit"\]

Type

input\[name="email"\]

Speed 10x

Formats 5+

Selectors AI

PRIMARY

Playwright

TypeScript or JavaScript with async/await. Full Page Object Model generation.

1await page.goto('https://app.example.com');

2await page.fill('\[data-testid="email"\]', email);

3await page.click('button:has-text("Submit")');

POPULAR

Cypress

Modern E2E with built-in assertions and automatic waiting. cy.\* commands.

1cy.visit('https://app.example.com');

2cy.get('\[data-testid="email"\]').type(email);

3cy.contains('Submit').click();

LEGACY

Puppeteer

Headless Chrome automation. Direct CDP access for advanced scenarios.

1await page.goto('https://app.example.com');

2await page.type('input\[name="email"\]', email);

3await page.click('button\[type="submit"\]');

### AI-Powered Selectors

Intelligent selector generation using data attributes, ARIA roles, and text content. Creates stable locators that survive UI changes without breaking your tests.

#app > div:nth-child(3) > button

button\[data-testid="submit"\]

button:has-text("Submit")

### Smart Wait Handling

Automatically detects network requests, animations, and loading states. Generates appropriate waits without hardcoded timeouts that flake.

### Built-in Assertions

Auto-generates visibility, text content, and state assertions. Add custom assertions with a single click.

### Edit Before Export

Review and modify recorded steps. Add variables, loops, and conditions directly in the UI before exporting.

### MCP Server Integration

Connect Flows to AI agents via Model Context Protocol. Let Claude or other LLMs control browser automation directly.

01

#### EXPLORE

Playwright crawls the site, discovers forms, buttons, and navigation

02

#### DESIGN

AI architects a test suite from the element catalog

03

#### CREATE

Step groups, elements, and flows persisted automatically

04

#### EXECUTE

Suite runs with setup and teardown before and after each test

05

#### HEAL

Self-healing selectors fix themselves at runtime, zero maintenance

Claude Code

Claude IS the designer. Explore-only mode returns the element catalog, and Claude designs the suite directly. No external API key needed.

Cursor / Windsurf

Connect via MCP, call flows\_generate\_from\_prompt with a URL and requirements. Works with any MCP-compatible editor.

Full Auto

Set a Google, OpenRouter, or OpenAI API key. The AI explores, designs, and creates without human input.

> We automated with AI - every test passed, nothing worked. That's why we build tools that keep humans in the loop.

\- BetterQA Engineering

Now on npm

The Flows MCP server is now publicly available. Install it globally and connect to Claude Desktop or Claude Code:

`npm install -g @betterqa/flows-mcp`

View on [npm registry](https://npmjs.com/package/@betterqa/flows-mcp)

#### Claude Code

Add to your MCP config:

```
{
  "mcpServers": {
    "flows": {
      "command": "npx",
      "args": ["@betterqa/flows-mcp"]
    }
  }
}
```

#### Claude Desktop

Add to claude\_desktop\_config.json:

```
{
  "mcpServers": {
    "flows": {
      "command": "npx",
      "args": ["-y", "@betterqa/flows-mcp"]
    }
  }
}
```