Skip to main content

Automated Test Generation

Supported frameworks

Code quality score

Before you push any code, TestForge calculates a local quality score (no extra LLM call) across 5 dimensions: Score ≥ 70: good quality, push with confidence. Score < 60: Regenerate button is highlighted.

Regenerate with corrections

Click Regenerate to run a new generation. TestForge automatically collects all quality warnings from the previous result and sends them to the LLM as a CORRECTIONS REQUIRED section. You don’t need to describe the issues manually.

Cucumber: feature files from Gherkin

When you select a Cucumber framework:
  1. Feature files are derived directly from the gherkinScenario fields of your manual tests — zero extra LLM call.
  2. Step definitions are generated by the LLM from those scenarios.
For Cucumber, generate manual tests first. If no Gherkin scenarios are available, TestForge cannot proceed.

Push to Azure Repos

Once the code is generated (and the quality score reviewed), push it straight to a repository of your project.
  1. Pick a repository — TestForge lists the project’s repositories and, on selection, loads that repository’s real branches.
  2. Base branch — a selector over the repository’s branches, preselected on its default branch. No free-text input, no assumed main.
  3. Target branch — in both direct commit and Pull Request modes, pick an existing branch or choose “New branch…”. The default is a new branch named testforge/generated-tests/us-{id}, automatically uniquified (-2, -3…) if the name is already taken. An indicator tells you whether the target will be created or exists — the push will update this branch (files already present on the branch are edited, not duplicated).
  4. Confirm — the confirmation restates the real target (“create X from Y” / “update X”). Nothing is written remotely before you confirm.
  5. On success, the commit SHA or the Pull Request link is displayed.
Failure ≠ dead end. ADO errors are decoded into actionable messages with one-click remedies: retry with a suffixed branch name (branch conflict), reload the branch list (branch not found), or open the repository’s existing active Pull Request. Your generated files are kept, and retrying never re-runs the LLM generation.
On an empty repository (or when the base branch cannot be resolved), the Pull Request mode is disabled with an explanation.

Getting started with your generated code

After generation, TestForge displays a “How to use this code” panel with the exact steps for your framework. Here is the full reference for all 8 frameworks.

Playwright TypeScript \

Project structure

Playwright Python \

Project structure

Playwright .NET (C#) \

Project structure

Selenium Java \

Add to your pom.xml:
Project structure

Cypress JavaScript \

Project structure

Cucumber JavaScript \

Project structure

Cucumber Java \

Add to your pom.xml:
Project structure

Cucumber Python \

Project structure
The inline “How to use this code” accordion in the QA Hub links directly to each section above. Keep this page up to date whenever framework versions are bumped.