For teams shipping on GitHub

Prove your TypeScript, JavaScript, Python, Rust tests catch bugs, on every pull request

Start freeNo card required

Open a pull request, get what your tests would miss

Heimdl changes the riskiest lines of your pull request, runs your tests against every change, and leaves what slipped through on the pull request, with the tests that catch it

  1. Install the GitHub app

    Pick your repositories, Heimdl gets your tests running, nothing is billed until they do

  2. Open a pull request

    Heimdl changes the riskiest lines of your pull request, one at a time on a copy, and runs your tests against each

  3. Read one report

    Every gap, what it puts at risk and the test that catches it, on the pull request and at one link

Heimdlbot

Tests passed, but 2 changed lines are not really checked

fixBrokenRequestVersion.ts:37survivedHighContract4 changes, every test passed
fixBrokenRequestVersion.ts:44uncoveredLowAvailabilityContract8 changes, no test runs this line

12 other changes caught

1 suggested test covers lines 37 and 44✓Fails on 4 changes across both lines✓Passes on your code
Languages
  • TypeScript
  • JavaScript
  • Python
  • Rust

Gaps are changes your tests do not notice

Coverage says a line ran, not that a test checked it, Heimdl measures whether a test noticed

Missed, your tests ran the line

Survived

A test ran the changed line and missed the change

Missed, no test runs the line

Uncovered

The change sat on a line your tests never run

Your suite noticed

Caught

A test failed on the change, your suite did its job

We drop the noise and write the test for what matters

Heimdl ranks every gap by severity and impact, folds the minor ones away, and writes a validated test for the ones that matter, so a pull request gets a few useful comments, not a wall

_merge.ts:38survived
  value1.constructor === Object  value1.constructor !== Object
Tests ran this line and passed
_merge.test.tsvalidated test
test('_merge rejects when value1 is not a plain object', () => {
  const result = _merge([1, 2], { a: 1 });
  assert.deepStrictEqual(result, { issue: true });
});
✓Fails on the change✓Passes on their code

Only what is worth your time, ranked by what it puts at risk

Every change gets one classification, every gap one impact and one severity

CLASSIFICATION

Is it worth reporting?

survived

The code changed, every test still passed

Reported, the one thing to act on

IMPACT

What does it put at risk?

Secrets

A key lands in a log, a forged signature gets accepted

Ranked ahead of lower risk gaps

SEVERITY

How much did your suite notice?

High

A mistake here could expose data, money or access, and your tests would not catch it

Measured by running your suite

Keep your reviewer, add the proof

The AI reviewers on the pull requests above, and what the tests still missed

ReviewerMissedChanges

Missed, the share of changes no test caught, across all tested pull requests

Reviewers read your change, Heimdl runs your tests against it, keep both. One page per reviewer

One price for your whole team

Unlimited seats on every plan, you pay for repositories, not people

Free

$0

Start with one repository, no card required

  • 1 repository
  • 1 audit scan
  • 20 pull requests a month
Start free

Team

Recommended
$90/month
Save 17% yearly

Up to 3 repositories

  • 3 repositories
  • Every pull request checked
See pricing

Company

$300/month
Save 17% yearly

Up to 10 repositories, add more any time

  • 10 repositories
  • $30 a month per repository above 10
  • Every pull request checked
See pricing
Everything on every plan

Questions

Does this replace code review?

No, a reviewer reads your change, Heimdl runs your tests against it, keep both

Do you keep my code?

Not for long, the copy of your repository is deleted when each check ends, and code quoted in findings after 30 days

Will it slow down my pull requests?

No, it runs beside your other checks, not in front of them, and posts when done

Can I trust a suggested test?

Every suggested test fails on the change and passes on your code before you see it, and nothing is merged for you

What about code no test runs at all?

Heimdl reports it as uncovered, and suggests tests for the riskiest of those lines too, checked the same way

What does a clean run mean?

Every change Heimdl made to your changed lines was caught, for those lines only

What is it built on?

Heimdl's own forks of Stryker for TypeScript and JavaScript, Cosmic Ray for Python, cargo-mutants for Rust, the product is choosing what to change and what is worth reporting