← All projects
2026 · Alpha · private repository

TestCraft AI

Structured test cases generated from natural-language requirements.

Try it ↓Private repository

What it is

TestCraft AI is a B2B SaaS for QA teams who spend hours turning requirement documents into test cases. Upload a requirement as PDF, DOCX or text and get structured test cases, ready to edit and export.

What it does

  • Each test case has preconditions, step-by-step procedure and expected results.
  • Coverage includes happy path, edge cases, negative cases and boundary conditions.
  • Configurable: how many cases per requirement, priority tagging and generation depth.
  • Inline editing, and CSV export with standard columns (ID, title, preconditions, steps, expected result, priority) for tools like Polarion, Xray, TestRail and Zephyr.
  • A traceability matrix per project shows which test cases cover which requirement, with the generation audit trail (provider, model, timestamp), also exportable as CSV.
  • The LLM layer is provider-agnostic: Anthropic Claude by default, OpenAI swappable through an environment variable.

How it is built

FastAPI backend (SQLAlchemy async, Alembic, Pydantic v2) on PostgreSQL, a Next.js 15 front end with TypeScript, Tailwind and TanStack Query, and Supabase for authentication and storage.

Status

Alpha, in active development. Not production-ready.

Not done yet

  • Stripe billing, direct Jira Xray / Polarion / Azure DevOps integrations, team roles, custom prompt templates, batch generation, a REST API and SSO are on the roadmap.

Stack

  • Python
  • React
  • Docker
  • LLM

Try it

Runs in your browser on sample data.

16 test cases
TC-001Happy pathHigh

User can register with an email address and a password

Preconditions
The system is available and test data is prepared
Steps
  1. Open the screen where this requirement applies
  2. Perform the action: register with an email address and a password
  3. Submit
Expected result
The action completes successfully and the result is visible to the user
TC-002NegativeHigh

Duplicate email is rejected

Preconditions
A record with the same email already exists
Steps
  1. Open the screen where this requirement applies
  2. Enter the existing email
  3. Submit
Expected result
An error states that this email is already in use and no second record is created
TC-003NegativeMedium

Invalid email "user@" is rejected

Preconditions
The form is empty
Steps
  1. Open the screen where this requirement applies
  2. Enter "user@" in the email field
  3. Submit
Expected result
An error states that the email address is not valid
TC-004NegativeMedium

Invalid email "user.example.com" is rejected

Preconditions
The form is empty
Steps
  1. Open the screen where this requirement applies
  2. Enter "user.example.com" in the email field
  3. Submit
Expected result
An error states that the email address is not valid
TC-005NegativeMedium

Invalid email "user @example.com" is rejected

Preconditions
The form is empty
Steps
  1. Open the screen where this requirement applies
  2. Enter "user @example.com" in the email field
  3. Submit
Expected result
An error states that the email address is not valid
TC-006BoundaryHigh

Password with 7 characters is rejected

Preconditions
The form is empty
Steps
  1. Open the screen where this requirement applies
  2. Enter "Aa1xxxx" in the password field
  3. Submit
Expected result
An error states that the password needs at least 8 characters
TC-007BoundaryMedium

Password with exactly 8 characters is accepted

Preconditions
The form is empty
Steps
  1. Open the screen where this requirement applies
  2. Enter "Aa1xxxxx" in the password field
  3. Submit
Expected result
The password is accepted
TC-008NegativeHigh

Password without a number is rejected

Preconditions
The form is empty
Steps
  1. Open the screen where this requirement applies
  2. Enter a long password that has no number
  3. Submit
Expected result
An error states that the password must contain a number
TC-009BoundaryHigh

Age = 17 is rejected

Preconditions
The form is empty
Steps
  1. Open the screen where this requirement applies
  2. Enter 17 in the age field
  3. Submit
Expected result
An error states that the age must be between 18 and 99
TC-010BoundaryMedium

Age = 18 is accepted

Preconditions
The form is empty
Steps
  1. Open the screen where this requirement applies
  2. Enter 18 in the age field
  3. Submit
Expected result
The age is accepted
TC-011BoundaryMedium

Age = 99 is accepted

Preconditions
The form is empty
Steps
  1. Open the screen where this requirement applies
  2. Enter 99 in the age field
  3. Submit
Expected result
The age is accepted
TC-012BoundaryHigh

Age = 100 is rejected

Preconditions
The form is empty
Steps
  1. Open the screen where this requirement applies
  2. Enter 100 in the age field
  3. Submit
Expected result
An error states that the age must be between 18 and 99
TC-013BoundaryMedium

Value still works 23 hour(s) after it was issued

Preconditions
The value has just been issued
Steps
  1. Wait 23 hour(s) (or move the clock forward)
  2. Use the value
Expected result
The action is accepted
TC-014BoundaryHigh

Value is refused 25 hour(s) after it was issued

Preconditions
The value has just been issued
Steps
  1. Wait 25 hour(s) (or move the clock forward)
  2. Use the value
Expected result
The action is refused and the user can request a new one
TC-015EdgeLow

Leading and trailing spaces in text fields are handled

Preconditions
The form is empty
Steps
  1. Open the screen where this requirement applies
  2. Enter valid values surrounded by spaces
  3. Submit
Expected result
The spaces are trimmed or a clear error is shown
TC-016EdgeMedium

Submitting twice quickly does not create duplicates

Preconditions
The form is filled with valid data
Steps
  1. Press Submit twice within one second
Expected result
Only one record is created

This preview applies fixed rules in your browser. The real TestCraft AI reads PDF, DOCX or text with an LLM and covers much more ground.