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
Open the screen where this requirement applies
Perform the action: register with an email address and a password
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
Open the screen where this requirement applies
Enter the existing email
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
Open the screen where this requirement applies
Enter "user@" in the email field
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
Open the screen where this requirement applies
Enter "user.example.com" in the email field
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
Open the screen where this requirement applies
Enter "user @example.com" in the email field
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
Open the screen where this requirement applies
Enter "Aa1xxxx" in the password field
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
Open the screen where this requirement applies
Enter "Aa1xxxxx" in the password field
Submit
Expected result
The password is accepted
TC-008NegativeHigh
Password without a number is rejected
Preconditions
The form is empty
Steps
Open the screen where this requirement applies
Enter a long password that has no number
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
Open the screen where this requirement applies
Enter 17 in the age field
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
Open the screen where this requirement applies
Enter 18 in the age field
Submit
Expected result
The age is accepted
TC-011BoundaryMedium
Age = 99 is accepted
Preconditions
The form is empty
Steps
Open the screen where this requirement applies
Enter 99 in the age field
Submit
Expected result
The age is accepted
TC-012BoundaryHigh
Age = 100 is rejected
Preconditions
The form is empty
Steps
Open the screen where this requirement applies
Enter 100 in the age field
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
Wait 23 hour(s) (or move the clock forward)
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
Wait 25 hour(s) (or move the clock forward)
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
Open the screen where this requirement applies
Enter valid values surrounded by spaces
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
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.