letsrunit logo

Stop guessing. Start testing.

Ad-hoc testing leaves you guessing. Repeatable tests show what broke and why.

Tests as readable steps

Each test describes what a user does and what they expect to see. The format is called Gherkin. It reads like instructions, not code.

login.feature
Scenario: User logs in
When I set field "Email" to "user@example.com"
And I set field "Password" to "password123"
And I click button "Login"
Then I'm on page "/dashboard"
And I see that the page contains text "Welcome"

The test expresses intent. Playwright runs underneath, but the logic is clear without reading code.

Test generation

Create a baseline of your current app through exploration, then turn development checks into repeatable end-to-end tests that verify new work and guard against regressions.

Explore your app to get suggested scenarios. Or describe what to test in plain language and generate tests from a user's point of view.

After that, tests become part of your normal development flow. Whether you are building features yourself or using AI agents, each check becomes a repeatable scenario that keeps verifying behavior as your app evolves.

Sign up for GitHub

Enter an email in the hero field and click "Sign up for GitHub" to create an account.

Failure explanations

When a test fails, the page from the failing run is analyzed against the page from a previous successful run. This makes it possible to explain why the test failed in plain language and how to solve it.

Run tests in the terminal

Generated tests run with Cucumber. Install the package, use the step definitions we provide, and run the tests like any other Cucumber suite.

$ npx cucumber-js

......F-.

Failures:

1) Scenario: Visitor sees the homepage greeting # features/homepage.feature:3
Last passed: commit d498a33, 1 commit ago
✔ Before
✔ Given I'm on the homepage
✖ Then the page contains text "Hello world"
URL: /
Locator: text=/Hello world/i
Error: element(s) not found
- And I should be on page "/"
✔ After

2 scenarios (1 failed, 1 passed)
5 steps (1 failed, 1 skipped, 3 passed)
0m07.028s (executing steps: 0m06.698s)

$ npx letsrunit explain

features/homepage.feature :: Visitor sees the homepage greeting
✔ Given I'm on the homepage
✖ Then the page contains text "Hello world"
- Then I should be on page "/"

Possible regression
The page heading text was changed from "Hello world" to "Hllo world", so the expected greeting is missing.
💡 Fix the homepage text to read exactly "Hello world".

The tests integrate into existing CI without special setup. This is not a new test ecosystem. It's standard Gherkin running on standard tooling.

Standard tooling

Cucumber executes the scenarios. No custom runners or proprietary apps.

CI ready

Run in GitHub Actions, Jenkins, or any CI. The tests are files in your repo.

Run tracking

Each test run is stored locally with its artifacts, including HTML and screenshots.