Skip to content
The AI-powered QA workspace

The spec goes in.
The proof comes out.

QAMind reads your requirement docs and browser recordings, drafts structured test cases, writes Playwright & Selenium scripts, tracks every run — and files the bugs when something breaks. One workspace for the whole testing lifecycle.

Playwright & Selenium 5 script languages Chrome recorder v2.5.1 Jira · GitHub · Slack

qamind — design test casesAI · 5 TOKENS
password-reset-prd.docxparsed

Users can request a reset link by email.

Links expire after 30 minutes.

Expired or reused tokens must show an error.

Unknown emails get a generic response.

Waiting for input

A simulation of the real Design Test Cases flow — upload a PRD, PDF, spreadsheet or screenshot and QAMind drafts structured, editable cases into your suite.

The loop

One requirement.
The whole lifecycle.

Follow a single line of a PRD through QAMind — from words in a document to a filed bug and a coverage report. This is the actual shape of the product.

qamind — stage 1 / 6REQUIREMENTS

▤ password-reset-prd.docx · 214 KB

4.2 Password reset

Users can request a reset link by email.

REQ-002 Links expire after 30 minutes.

Expired or reused tokens must show an error.

text extracted — ready to generate

TC-042HighDraftApproved ✓

Link expires at the 30-minute boundary

1 · Request reset for a valid account

2 · Wait until minute 29 — open link

3 · Wait until minute 31 — open link again

Expected: first link opens the form; second shows “link expired”.

↳ linked to REQ-002

reset-link-expiry.spec.ts · Playwright · TS

test('reset link expires at 30 min', async ({ page }) => {
  await page.goto(BASE_URL + '/auth/reset');
  await requestResetLink(page, user.email);
  await clock.fastForward('31:00');
  await expect(page.getByText(
    'link expired')).toBeVisible();
});
Run #58 · Auth suite1 FAILED
TC-041Valid reset — password updated1.9s
TC-042Link expires at 30-min boundary3.4s
TC-043Reused token rejected1.2s
TC-044Unknown email — generic response

✗ expected “link expired” — got form at 00:31:07

BUG FILED
BUG-118CriticalOpen

Reset link accepted after 30-minute expiry

↳ from TC-042 · Run #58

↳ error output attached as evidence

↳ assignee: unassigned → your call

Traceability — Auth module

REQ-001User authentication5 cases
REQ-002Password reset4 cases
REQ-003Session management3 cases
REQ-004Profile update0 cases

⚠ REQ-004 has no coverage — surfaced before the run

.xlsx.csv.pdf.docx

in hand: a 214 KB Word doc, read & parsed

REQUIREMENTS

Start from what you already have.

Upload the PRD as a PDF, Word doc, spreadsheet or even a screenshot — QAMind extracts the text and reads it. No spec handy? Record the flow in Chrome instead and start from real clicks.

password-reset-prd.docxREQ-002

stage 1 / 6REQUIREMENTS

▤ password-reset-prd.docx · 214 KB

4.2 Password reset

Users can request a reset link by email.

REQ-002 Links expire after 30 minutes.

Expired or reused tokens must show an error.

text extracted — ready to generate

DESIGN

AI drafts the cases. You stay editor-in-chief.

Structured test cases land as editable rows — title, steps, expected result, priority, requirement ID. Nothing is final until you approve it: every case moves Draft → Ready → Approved.

REQ-002TC-042 · approved

stage 2 / 6DESIGN
TC-042HighDraftApproved ✓

Link expires at the 30-minute boundary

1 · Request reset for a valid account

2 · Wait until minute 29 — open link

3 · Wait until minute 31 — open link again

Expected: first link opens the form; second shows “link expired”.

↳ linked to REQ-002

AUTOMATE

Approved cases become runnable code.

One click turns an approved case into a Playwright or Selenium script — TypeScript, JavaScript, Python, Java or C#. Ground it in a browser recording and the selectors come from real interactions.

TC-042reset-link-expiry.spec.ts

stage 3 / 6AUTOMATE

reset-link-expiry.spec.ts · Playwright · TS

test('reset link expires at 30 min', async ({ page }) => {
  await page.goto(BASE_URL + '/auth/reset');
  await requestResetLink(page, user.email);
  await clock.fastForward('31:00');
  await expect(page.getByText(
    'link expired')).toBeVisible();
});

EXECUTE

Run it. Every result is kept.

Execute through the local Playwright runner on your own machine. Each run logs per-case pass, fail or skip with duration and full error output — searchable history, not a disappearing terminal.

spec.tsrun #58 · 1 failed

stage 4 / 6EXECUTE
Run #58 · Auth suite1 FAILED
TC-041Valid reset — password updated1.9s
TC-042Link expires at 30-min boundary3.4s
TC-043Reused token rejected1.2s
TC-044Unknown email — generic response

✗ expected “link expired” — got form at 00:31:07

DEFECTS

Failures become bugs in one click.

“Record as Bug” files a tracked defect straight from the failed result — linked to the test case and the exact run that caught it. Severity, status, assignee: the whole trail in one place.

run #58BUG-118 · critical

stage 5 / 6DEFECTS
BUG FILED
BUG-118CriticalOpen

Reset link accepted after 30-minute expiry

↳ from TC-042 · Run #58

↳ error output attached as evidence

↳ assignee: unassigned → your call

CLOSURE

The paper trail writes itself.

The traceability matrix assembles from requirement IDs and shows coverage gaps before anyone asks. Export executive summaries, execution reports and bug lists to Excel, CSV, PDF or Word.

REQ → TC → RUN → BUGtraceability matrix

stage 6 / 6CLOSURE

Traceability — Auth module

REQ-001User authentication5 cases
REQ-002Password reset4 cases
REQ-003Session management3 cases
REQ-004Profile update0 cases

⚠ REQ-004 has no coverage — surfaced before the run

.xlsx.csv.pdf.docx

Chrome recorder

Try it here — you are the test.

This little login page is live. Click around, type something, sign in — the recorder logs your real actions exactly like the QAMind Chrome extension does. Then convert your session into a test case.

Free / Chrome / v2.5.1 — records clicks, inputs, navigation and assertions from real sessions, captures each action exactly once with a verified Playwright locator, and imports everything into your workspace. A compact on-page panel shows the latest step and stays out of your way.

acme-store.test/loginSANDBOX

Sign in to Acme

QA Recorder00:00
00:00acme-store.test/login

… waiting for you. Try the form ☝

Automate scripts

Your stack. Your language.

Approved test cases compile to automation code in the framework your team already runs. Pick a combination — the script rewrites itself.

Run scripts on your own machine through the local Playwright runner, copy them to your repo, or download the file — .spec.ts, .py, .java, .cs.

login-invalid.spec.tsPLAYWRIGHT · TYPESCRIPT
1import { test, expect } from '@playwright/test';
2 
3test('login rejects wrong password', async ({ page }) => {
4 await page.goto(BASE_URL + '/login');
5 await page.fill('#email', user.email);
6 await page.fill('#password', 'wrong-password');
7 await page.click('button#sign-in');
8 await expect(page.locator('.error'))
9 .toHaveText('Invalid credentials');
10});
✓ generated from TC-051▸ Run locally · ⧉ Copy · ↓ Download

The workspace

Generation is the headline.
This is the rest of the job.

Everything after the test exists too — QAMind keeps runs, defects, coverage and reporting in the same workspace. Hover around.

94%

Analytics that admit things

Pass-rate trends, execution time, coverage by project — and a flaky-test leaderboard that names the tests wasting your time.

checkout-timeout.spec
session-refresh.spec
search-filters.spec

Flaky tests, named & shamed

Slow, inconsistent cases surface automatically from run history — fix the test or fix the app, but stop re-running and hoping.

REQ → TC → RUN → BUGcoverage assembles itself

Traceability without the spreadsheet

Tag cases with requirement IDs and the matrix builds itself — gaps show up before the release meeting, not during it.

TC-042 failed · run #58→ BUG-118
CriticalOpenevidence attached

One-click defect filing

“Record as Bug” turns a failed result into a tracked defect — severity, status, assignee, and the exact run that caught it.

scoperisksexit criteria

Test plans in minutes

Draft a structured plan — objectives, in/out of scope, risk table, pass criteria — then edit inline and export to Excel or PDF.

What edge cases am I missing on reset?
Token reuse, 30-min boundary, enumeration…

A QA brain on call

The GPT console chats over your uploaded PDFs and specs — organised by project, inside your workspace login.

Project setups for
PlaywrightSeleniumCypressMobilewrightJestPytestPostmanRestAssuredDetoxXCUITestEspressoRobot Framework

Integrations

Plays well with the tools
you already argue in.

Four connections are wired end-to-end today; the rest ship with the config UI in place while OAuth wiring rolls out. Every one is built to the same rule: results go where your team already looks.

Jira

wired

Project management

Sync failed test cases into Jira as tickets — severity, steps and run evidence attached — and import Jira projects back into your workspace.

GitHub Actions

wired

CI/CD & code

PR webhooks trigger test runs automatically, and results post back onto the pull request as comments — coverage status where the merge decision happens.

Slack

wired

Communication

Real-time run results, bug alerts and workspace invites pushed to the channels you choose. Point it at a webhook and the noise finds you.

Mattermost

wired

Communication

The same real-time run results and bug alerts as Slack, for teams on self-hosted Mattermost — webhook in, notifications out.

GitLab CI

rolling out

CI/CD & code

Trigger QAMind test executions from merge requests, so every MR carries its own verdict before review starts.

Bitbucket

rolling out

CI/CD & code

Automated testing checklists attached to pull requests — reviewers see what was covered without leaving the diff.

Azure DevOps

rolling out

CI/CD & code

Hook QAMind runs into Azure Pipelines so test generation and execution slot into the release flow you already operate.

Zephyr Scale

rolling out

Test management

Link QAMind test cases to Zephyr entries inside Jira, keeping both systems pointing at the same truth.

TestRail

rolling out

Test management

Synchronise test runs and metrics with TestRail — migrate gradually instead of betting the quarter on a cutover.

Cypress

rolling out

Automation

Upload Cypress recordings for analysis and fold their results into the same run history as everything else.

Playwright

rolling out

Automation

Sync E2E test definitions with your existing Playwright repo — generated and hand-written specs, one inventory.

Jenkins

rolling out

CI/CD & code

Hook test generation and execution into freestyle builds or declarative pipelines — QAMind as a stage, not a detour.

Pricing

Per workspace.
Never per seat.

Pricing scales with AI usage, not headcount. Viewing, editing, running and bug tracking never cost tokens.

How many AI actions does your team run a day?

Generating cases, scripts, or a GPT answer = 5 tokens each.

12
Standard covers you. 60 of 100 daily tokens — refills at midnight, every feature included.

Questions

Fair questions, straight answers.

Structured test cases (title, steps, expected result, priority, requirement link) from documents, screenshots or browser recordings — and executable Playwright or Selenium scripts in TypeScript, JavaScript, Python, Java or C#. Everything lands as an editable draft; nothing is final until you approve it.

By default, reasoning (test-case drafting) runs on OpenAI GPT-4.1-mini and code generation on Anthropic Claude — with automatic fallbacks. If your specs can't leave the building, there's a self-hosted mode that runs on local models instead.

A unit of AI usage. Each AI action — generating test cases, generating a script, a GPT console message — costs 5 tokens. The Standard plan refills 100 tokens daily at midnight; Premium is uncapped. Non-AI work (viewing, editing, running, bug tracking) is always free.

No — you can start from documents alone. The extension (free, v2.5.1) adds the recording path: it captures clicks, plaintext inputs, navigation and assertions from a real session — each action exactly once, with a Playwright locator verified as unique on the live page — which both generates test cases and grounds script selectors in reality.

Through the local Playwright runner — a small Node process on your machine that executes generated scripts and streams results back into the workspace. The browser opens sized to your screen, a step banner shows which step is running, and the element being acted on is highlighted live. Every run keeps per-case pass/fail/skip, duration and full error output.

One workspace, four roles — Owner, Admin, Editor, Viewer. Invite by email or share a workspace key. Pricing is per workspace, not per seat: Standard includes up to 4 members, Premium removes the cap.

The part where you try it

Ship proof, not promises.

Open a workspace, upload the messiest spec you have, and watch it become a test suite.

Free to start No per-seat fees Bugs found before users find them