Deterministic Web QA

Catch regressions before users do with readable YAML hunts and Playwright precision.

Prowl is a CLI-first E2E testing tool that pairs YAML test definitions with Playwright execution. QA engineers and developers get deterministic flow coverage, visual regression detection, and rich debugging artifacts — all from the terminal.

$ npm install -g prowl-tools

Why end-to-end testing has to be first-class

Fast shipping only works when critical user flows are always verified. Prowl turns that discipline into a lightweight daily habit.

Regressions hide in user flows, not units

Unit tests pass while checkout breaks. Prowl validates real user journeys across routes, forms, and state transitions so regressions surface before users hit them.

Release speed demands repeatable QA

Manual checklists drift as teams ship faster. Prowl gives QA engineers and developers a shared, automated path to verify critical flows on every commit.

Test discipline should be easy to adopt

Teams adopting E2E testing need a low-friction starting point. Readable YAML hunts and a single CLI command make it practical to add flow coverage from day one.

How it works

Go from install to your first useful test in under five minutes.

Step 01

Install and initialize

Install the CLI globally and bootstrap your first hunt in one command.

$ npm install -g prowl-tools
$ prowl init

Step 02

Describe real user flows in YAML

Capture login, onboarding, checkout, and other critical journeys with human-readable steps.

name: checkout-flow
steps:
  - navigate: "/cart"
  - click: "Checkout"

Step 03

Run locally and in CI

Execute hunts from terminal, then wire the same commands into your pull request pipeline.

$ prowl run critical-flows --json

Step 04

Debug with artifacts

Use screenshots, traces, and logs to resolve issues quickly without reproducing flaky states manually.

PASS critical-flows
artifacts: ./prowl-artifacts/latest
login.hunt.yaml
name: login-flowsteps:  - navigate: "/login"  - fill:      "Email": "{{TEST_EMAIL}}"  - fill:      "Password": "{{TEST_PASSWORD}}"  - click: "Sign In"  - assert:      visible: "Dashboard"
Terminal
  ● Running hunt: login-flow    ✓ navigate "/login" (120ms)    ✓ fill "Email" (85ms)    ✓ fill "Password" (62ms)    ✓ click "Sign In" (340ms)    ✓ assert visible "Dashboard" (15ms)  PASS login-flow (622ms) 5/5 steps

Built for AI-assisted development

AI agents can analyze pages, generate hunts, and execute tests through the CLI or a native MCP server — deterministic results, structured output, no browser reasoning required.

Three-command pipeline

analyze → generate → run

login.hunt.yaml

name: login
steps:
  - navigate: "/login"
  - fill: "Email" "{{TEST_EMAIL}}"
  - fill: "Password" "{{TEST_PASSWORD}}"
  - click: "Sign in"
  - assert: visible "Dashboard"

terminal output

$ prowl analyze https://app.com/login --json
  | prowl generate --intent "test login" --stdout

$ prowl run login --json
PASS login (622ms) 5/5 steps
exitCode: 0
  • +Deterministic execution — same YAML hunt, same result every time
  • +Structured JSON output and exit codes for agent branching
  • +No browser reasoning — Prowl handles all Playwright interaction
  • +Simple CLI interface — works standalone or as part of a larger agent toolchain

Native MCP server

prowl mcp

Run prowl mcp to expose Prowl to any MCP-capable agent — Claude Desktop, Cursor, OpenClaw — as a small set of named tools. The agent triggers runs and reads structured results; it never needs shell access to your repo.

mcp client config

{
  "mcpServers": {
    "prowl": {
      "command": "prowl",
      "args": ["mcp"]
    }
  }
}

exposed tools

  • list_huntsHunt names in run order
  • run_huntRun one hunt, get the full result
  • run_suiteRun all hunts, auto-log failures as bugs
  • list_projectsRegistered projects in the registry
  • +No shell access — agents call a fixed set of tools, never arbitrary commands
  • +Guardrails apply — allowedDomains, forbiddenSelectors, and maxSteps gate every run
  • +Auto bug-logging — run_suite logs failures as deduplicated tickets in your backlog
  • +Multi-project — one server drives many repos via a project registry

Page analysis

prowl analyze <url> --json extracts interactive elements, selectors, and form structure. Agents get a structured page map without browser interaction.

AI hunt generation

prowl generate turns a page analysis and natural language intent into a valid, runnable YAML hunt file.

Structured execution

Every run returns machine-readable JSON with pass/fail, step timings, and artifact paths. Exit codes let agents branch without parsing.

Library API

Import prowl-tools as a Node module. Run hunts programmatically and get typed results — no shell exec needed.

Built for web testing

YAML-first

Write tests in readable YAML. No JavaScript required. 26 step types cover navigation, forms, assertions, conditionals, mocking, and more.

Playwright precision

Full Playwright selector engine under the hood. data-testid, ARIA roles, text matching, CSS — use whatever works.

Safety guardrails

Forbidden selectors, allowed domains, and max step limits prevent tests from going off the rails.

Rich artifacts

Every run generates screenshots, console logs, network data, and Playwright traces. Debug failures instantly.

Visual regression

Compare screenshots against baselines to catch unintended visual changes. Pixel-level diff images show exactly what shifted.

Network mocking

Intercept API requests and return custom responses. Test error states, loading states, and empty states without touching your backend.

Conditional logic

Handle cookie banners, optional modals, and dynamic UI with if/repeat steps. Real-world flows need real-world control flow.

CI & agent ready

JSON output, JUnit XML reports, structured exit codes, parallel execution, and a native MCP server. Plugs into any CI pipeline or AI agent workflow.

Get started in seconds

Four commands. Zero config files. You're testing in under a minute.

1

Install the CLI

npm install -g prowl-tools

Or with Homebrew:

brew tap prowl-tools/tap && brew install prowl

2

Install browser engine

npx playwright install chromium

3

Initialize your project

prowl init

4

Run your first hunt

prowl run homepage

Community Hub

Don't start from scratch

The Prowl Hub is a growing library of community-contributed hunt templates. Browse real-world flows, copy the YAML, and adapt it to your app — then give back the hunts your team builds along the way.

Ready-made hunts

Battle-tested templates for common flows — login, checkout, search, form validation. Copy a hunt, swap in your selectors, and run.

Plain copy-paste YAML

Every template is readable YAML with no setup. Drop it into your .prowl/ directory and you have coverage in minutes.

Contribute back

Built a useful hunt? Share it with the community through a pull request to the hub so the next team starts even faster.

The Prowl Suite

More than a CLI

Prowl is a growing suite of testing tools from Genkei Labs. The CLI is the core — these build on it.

Prowl Hub

A growing library of community-contributed hunt templates — browse real-world flows, copy the YAML, and adapt it to your app.

Browse the Hub

Prowl Infra

A catalog of infrastructure test playbooks — validate cloud and Terraform environments before you ship.

Explore Prowl Infra

Prowl Code Review

Automated, agent-assisted review for your pull requests — catching regressions before they merge.

Coming soon

FAQ

Answers for teams adopting end-to-end testing as part of daily delivery.

Is this only for QA engineers?

No. Prowl is designed for QA, product engineers, and teams new to end-to-end testing who need a simple CLI path to reliable flow coverage.

Do I need to know Playwright APIs?

No. You write hunts in YAML while Prowl handles browser automation and artifacts under the hood.

Can we run this in CI?

Yes. Prowl is built for CI execution with deterministic exit codes and artifact outputs suitable for pipelines and pull requests.

Can AI agents use Prowl?

Yes, two ways. Agents can drive the structured CLI directly — prowl analyze extracts page structure as JSON, prowl generate turns that into a runnable hunt from a natural language intent, and prowl run --json returns structured results with exit codes. Or run prowl mcp to expose Prowl as a native MCP server, so any MCP-capable agent calls it as named tools. You can also import Prowl as a Node library.

Does Prowl have an MCP server?

Yes. Run prowl mcp to start an MCP server (stdio) that exposes Prowl to any MCP-capable agent — Claude Desktop, Cursor, OpenClaw — as a fixed set of named tools: list_hunts, run_hunt, run_suite, and list_projects. The agent triggers runs and reads structured results without shell access, and your guardrails (allowedDomains, forbiddenSelectors, maxSteps) apply to every run. run_suite also auto-logs failures as deduplicated bug tickets in your backlog, and a project registry lets one server drive multiple repos.

Why not rely on manual testing only?

Manual checks miss regressions in large apps. Prowl gives repeatable coverage of critical user journeys on every release.

What is visual regression testing?

Visual regression compares screenshots against saved baselines to detect unintended visual changes. Prowl's assertScreenshot step does pixel-level comparison with a configurable threshold. On first run it saves the baseline automatically. Run prowl update-baselines to accept new screenshots as baselines.

Can Prowl generate tests automatically?

Yes. Run prowl analyze <url> --json to extract page elements, then pipe the output to prowl generate --intent 'describe the test' to produce a valid hunt file. The generated YAML is validated against Prowl's schema before output.

Does Prowl support network mocking?

Yes. The mockRoute step intercepts requests matching a URL pattern and returns a custom response — inline JSON or from a file. Use unmockRoute to remove the mock. This lets you test error, loading, and empty states without backend changes.

Start catching regressions today

Deterministic E2E coverage from install to first test in minutes.

YAML hunts, Playwright reliability, and rich artifacts — add flow coverage to your workflow without the complexity.

Prowl mascot