I've been building a tool called Malleon because I got tired of e2e tests that don't reflect what users actually do. And I have long been obsessed with using real user sessions for load testing. Having worked with tools like Tsung and Gatling for load testing, I often wished I could just replay yesterday's traffic x2 or x5 instead of using synthetic sessions. Malleon started as an attempt to bridge those two worlds.
The basic idea is: instead of writing tests from scratch, record real user sessions and turn them into replayable tests.
The SDK records things like: - DOM interactions - network requests - console output - timing between actions
The replay isn't a video. It reconstructs and replays the actual browser interactions against your app.
So a real user session becomes a reproducible test case.
Typical flow looks like: - drop a small JS SDK into your app - users interact with the site normally - sessions get recorded - you browse replays and find something interesting (bug, error, weird behavior) - turn that session into a test and run it in CI
The test runner is self-hosted. You pull the Docker image and run it wherever you want. It drives a browser (headless or headful) and replays the interaction sequence.
Some things that turned out to be surprisingly tricky while building this: - replaying interactions when the DOM has changed since recording - handling viewport/layout differences - making network replay transparent to the app - keeping timing realistic without making tests slow
The system also collects logs, errors, and request timings so sessions are searchable and you can track network performance, see p90/p95/p99 stats, all that good stuff.
Links: - Malleon: https://malleon.io - Replay SDK: https://www.npmjs.com/package/@malleon/replay - Replay CLI: https://www.npmjs.com/package/@malleon/replay-cli - Docs: https://github.com/malleonio/malleon-documentation
Free tier available.
Curious if anyone else has run into the "our tests don't reflect what users actually do (or how they scale)" problem.