Test analytics & API monitoring · v1.0

Every failure
has a story. Discover it.

inverseStory turns automation reports into execution history you can question — pass rates, flaky tests, failure categories and trends across suites, branches and releases — and watches your APIs on a schedule while it's at it.

10x
faster RCA
94%
flake detection
5
report formats
inversestory.com/app
● live
Pass rate
94.2%
Executions / 7d
1,842
Flaky tests
37
Execution trend · 28d
passed · failed · flaky
Test results by day · last 28 dayspassedfailedflakyskipped
Flaky test detected

checkout › applies promo code after refresh failed 38% of its last 142 runs on main.

Reads reports from

Cucumber
JSON
Playwright
JSONJUnit XML
TestNG
XML
Pytest
JSON
JUnit
XML
Plotex Pulse · Live API Monitoring

Your API journeys, watched and explained.

Pulse runs your real API journeys on a schedule. When one breaks, it names the step that failed first, shows what changed since the previous run, and tells your team in Slack, Teams, PagerDuty or email.

Pulse Engine · Interactive Console
Flow: E-Commerce Checkout Journey
4/4 Steps Passed · 184ms total
STEP 01POST
Auth Token
/api/v1/auth/token
Pipes: {{token}}
STEP 02GET
User Profile
/api/v1/users/me
Pipes: {{user_id}}
STEP 03POST
Create Order
/api/v1/orders
Pipes: {{order_id}}
STEP 04GET
Verify State
/api/v1/pulse/verify
Pipes: status: 200
Conditions & loops

Journeys

Chain requests into a real journey — log in, create, pay, verify — with run-if conditions, repeat-until and for-each, inside limits that keep every run safe.

Values find their source

Dependencies

A request declares where its token or id comes from. Pulse fetches that first — once per run, or from a cache you control — so any request can run on its own.

OpenAPI · Postman · HAR · cURL

Import

Bring what you already have. Folders, auth and bodies come across, and the import says plainly what could not.

Required vs optional

Response Contracts

Point at a real response and mark the fields that must match and the ones allowed to drift. A drifting optional field marks the run Degraded, not failed.

Slack · Teams · PagerDuty · webhooks

Alerts

One alert per outage, naming the step that failed, with a link to the run and a note when it recovers. PagerDuty incidents resolve themselves.

Run-to-run comparison

What changed

Every run is compared with the one before: which check flipped, which step failed first, extra retries, real latency moves. Identical failures are grouped by cause.

API monitoring is on every plan, Free included — requests, schedules, checks and alerts. Multi-step journeys start on the Team plan.

No credit card required
·
Probes, schedules & alerts on Free
The problem

Test reports give you logs. Not understanding.

Modern engineering teams generate gigabytes of test data every week. Almost none of it becomes insight.

Reports without answers

A Playwright or Cucumber report tells you which tests failed in that run. It cannot tell you whether they failed last week, or when they started drifting.

Flake fatigue

Re-runs hide real failures. Engineers waste hours separating noise from signal, one run at a time.

No engineering memory

Each run lives in isolation. Nobody can answer 'has this failed before?' without grepping CI.

How it works

From raw report to engineering history in seconds.

STEP 01

Upload

Drop Playwright, Cucumber, JUnit, TestNG or Pytest output in the app, or POST it from CI with an API key.

STEP 02

Connect

Runs are stitched into a continuous history keyed by project, suite, branch and commit.

STEP 03

Aggregate

Every upload recomputes pass rates, durations, flake rates, day-scoped failure groups and category trends across the whole history.

STEP 04

Explore

Dashboards, heatmaps, suite and case drill-downs and day-scoped failure reports replace static HTML.

The dashboard

An engineering terminal, not a status page.

Density and clarity built for engineers who live in CI, logs and incident timelines.

Execution trend
Sample data · last 28 days
Test results by day · last 28 dayspassedfailedflakyskipped
Soon
AI failure analysis is on the roadmap — here is what it will look like.
AI insight
high

Auth flakiness traces to token clock skew

12 of the 27 flaky runs in auth-service share a sub-second 401 immediately after refresh. Likely 30s clock drift in the staging container.

root-causeauth-service
AI insight
high

checkout-web failure spike correlates with deploy 8821

Failure rate jumped from 1.8% → 12.4% within 6 minutes of release a3f12b9. 9 of 12 failures hit the same /promo endpoint.

regressioncheckout-web
Telemetry Matrix

See when your suites break before your customers do.

Continuous hour-by-hour run velocity and failure density across days, CI pipelines and staging deployments.

Run Intensity · 24h × 7d Execution Pulse
Sample data · last 28 days
Inspected hourTue · 10:00–10:59 peakUTC · sample week
Runs
14
executions
Pass rate
94.0%
553 of 588 tests
Failing runs
1
had a failed/broken test
Avg test time
1m 58s
per run, summed
00
·
·
03
·
·
06
·
·
09
·
·
12
·
·
15
·
·
18
·
·
21
·
·
Mon
Tue
Wed
Thu
Fri
Sat
Sun
Runs/hour01–23–56–1011+
693 runs · 91 active hours94.0% tests passed
AI story timeline

Every failure becomes a narrative.

Deploys, API shifts, test failures and AI analysis stitched into a single timeline.

Soon
A design preview of planned work, not a screenshot of shipped software.
  1. T-08m
    deploy
    Deployment a3f12b9 to staging
  2. T-07m
    api
    /promo response time 110ms → 1240ms
  3. T-06m
    fail
    checkout-web · promo flow failed (×4)
  4. T-05m
    fail
    checkout-web · cart total mismatch (×8)
  5. T-04m
    ai
    AI: regression detected — likely cause /promo serializer
  6. T-02m
    fix
    Rollback to be12f08 queued
Report formats

Drop a report we parse. No CI changes.

Upload in the web app or POST from any pipeline with an API key. Supported formats parsed natively out of the box.

CucumberJSON
PlaywrightJSON · JUnit XML
TestNGXML
PytestJSON
JUnitXML
CI Pipeline Upload (1-step integration)
curl -X POST https://inversestory.com/api/v1/reports/upload \
  -H "Authorization: Bearer $INVERSE_API_KEY" \
  -F "file=@test-results.json"
Why inverseStory

Built for engineers. Loved by leaders.

10× faster root cause analysis

Skip log diving. Failure categories, stack signatures and day-scoped regression views group a run's failures the moment it lands.

Flake detection across history

Flake rates are computed across a test's continuous run history, separating transient network blips from genuine code regressions.

Zero data loss & 10-day recovery

Free accounts retain historical test telemetry, and deleted projects benefit from a 10-day soft-deletion recovery window before permanent purge.

One engineering truth everyone trusts

Engineering, QA and leadership inspect unified project metrics, pass rates and Pulse API health, ending discrepancies between local and CI runs.

On the roadmap

What we have committed to, and have not shipped.

Listed so you can see where the product is going. None of it is part of what you pay for today, and you will not be charged extra when it lands.

AI failure analysis

Soon

Plain-language summaries of what broke and why, written from the failure itself rather than the stack trace.

Root cause grouping

Soon

Failures that share a cause collapse into one problem instead of two hundred red tests.

Slack & webhooks for test runs

Soon

Test-run results where the team already is, and a POST to your own endpoint when a suite degrades. API Monitoring alerts already go there today.

Single sign-on (SAML)

Soon

Sign in through your identity provider, with access removed centrally when someone leaves.

Self-hosted deployment

Soon

Run the whole platform inside your own network, for teams whose test data cannot leave it.

Pricing

Simple, value-aligned pricing.

Team and Business start with a free trial — no card required. Starter is ready the moment you buy it.

FAQ

Questions, answered.

Which test frameworks do you support?

Cucumber (JSON), Playwright (JSON and JUnit XML), TestNG (XML), Pytest (JSON), and JUnit (XML) — 5 formats across 5 supported frameworks. If your framework or report flavour is not listed, tell us: our modular parser architecture allows adding new formats quickly.

Do I need to change my CI?

No. Upload reports via the web dropzone, or POST them from GitHub Actions, GitLab CI, CircleCI or Jenkins with a single curl call using your project API key.

Does inverseStory use AI today?

Not yet. AI failure analysis is on our roadmap and clearly badged everywhere on this site — no plan is sold with it, and nothing you buy today depends on it. What ships today is deterministic intelligence: historical flake rates, failure signatures, regression trends and day-scoped failure grouping computed across your full run history.

What is Plotex Pulse?

API testing and continuous monitoring built into the same hub as your test analytics. Compose REST and GraphQL requests or import them from OpenAPI, Postman, HAR or cURL; chain them into multi-step journeys with conditions and loops; schedule them by interval or cron with retries and jitter. When something breaks, Pulse names the failing step, compares the run with the previous one, and alerts Slack, Microsoft Teams, Discord, Google Chat, PagerDuty, a webhook or email — once per outage, with a recovery note. Secrets live in AES-256 Vaults. Requests, schedules and alerts are on every plan including Free; multi-step journeys are on Team and above.

Is my test data private?

Each organisation's data lives in its own database schema, credentials and Vault secrets are encrypted at rest with AES-256 GCM, and customer test data is never used to train machine learning models.

What happens when the trial ends?

Zero data loss. Nothing is deleted. Your account transitions automatically to the Free tier limits with full access to existing projects. Additionally, deleted projects benefit from a 10-day recovery retention grace period before permanent purge.

Your reports already have the answers.
inverseStory finds them.

Start free. Upload your first report and see the story behind your test suite in minutes.