> ## Documentation Index
> Fetch the complete documentation index at: https://docs.openqa.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> OpenQA — the open-source agentic testing harness for browser automation. Write tests in plain English. No selectors. CI-grade evidence on every run.

# OpenQA

**The open-source agentic testing harness for browser automation.**

Write your tests in plain English. Run `npx openqa init`. Done.

<Note>
  An **agent harness** (coined by [Martin Fowler](https://martinfowler.com/articles/harness-engineering.html) and described by [Anthropic](https://www.anthropic.com/engineering/managed-agents)) is the infrastructure that wraps an AI model — connecting it to tools, managing its context, and steering its behaviour. OpenQA is that harness, purpose-built for browser testing. Built for **agentic engineering** workflows — the same agent that builds your product can verify it.
</Note>

<CardGroup cols={2}>
  <Card title="No Selectors. Ever." icon="wand-magic-sparkles">
    The agent navigates by intent. No CSS selectors, no XPath, no brittle locators to maintain. Survives any UI refactor automatically.
  </Card>

  <Card title="CI-grade Evidence" icon="chart-bar">
    Full HTML report, trace viewer, and screenshot diffs on every run. Ship to production with proof, not hope.
  </Card>

  <Card title="No API Key Locally" icon="shield-check">
    Uses your existing `claude login` or `opencode auth login` session. API keys only needed for CI.
  </Card>

  <Card title="2-Minute Setup" icon="rocket">
    `npx openqa init` scaffolds a complete `.openqa/` harness into your existing project.
  </Card>
</CardGroup>

## All You Need to Write

A `.feature` file:

```gherkin theme={null}
Feature: TodoMVC Automation

  Scenario: Add todo item
    * Navigate to "https://demo.playwright.dev/todomvc/"
    * Add a new todo item "Buy groceries"
    * Should see "Buy groceries" in the todo list
```

Then run:

```bash theme={null}
npx openqa init   # one-time setup
cd .openqa
npm run test:headed
```

That's it. No step definitions. No selectors. No code.

## Quick Links

<CardGroup cols={2}>
  <Card title="Quickstart" icon="play" href="/quickstart">
    Set up in 2 minutes.
  </Card>

  <Card title="How It Works" icon="gears" href="/how-it-works">
    Architecture and design decisions.
  </Card>

  <Card title="GitHub" icon="github" href="https://github.com/openqa-labs/openqa">
    Source code and examples.
  </Card>

  <Card title="npm" icon="box" href="https://www.npmjs.com/package/openqa">
    Package on npm.
  </Card>
</CardGroup>
