Repository navigation
Vibium for JAVA Selenium Framework #238
Replies: 1 comment 1 reply
|
Yes, though for us the payoff has come from somewhere other than writing tests. ContextWe run a large Java e-commerce app with a JUnit + Selenium 4 UI suite of a few thousand tests on Selenium Grid under Jenkins. Vibium went in mid-April 2026. Three and a half months later we have converted zero Selenium tests to Vibium and written zero new UI tests in it. It is still the most useful browser tool we picked up this year. The reason: in a mature Selenium suite the bottleneck isn't writing tests, it's explaining them. Selenium hands you a The pattern: replay, don't rewriteWe built one agent skill (Claude Code) that takes a failing test name and:
The translation is deliberately boring:
You don't port the test. You transpile it for one debugging session, then throw the transpilation away. The Selenium test stays the source of truth. Two things mattered more than the translation itself. First, a compare-to What it actually foundA failure whose cause wasn't in the code. A saved bill-of-materials test failed persistently, with a button that never enabled. Reading the source revealed nothing. The replay showed that before any test action the page already displayed an in-cart warning; the dialog then refused the edit with its own explanatory message, and the wait for it to close timed out. That timeout was the only thing Selenium had reported. Leftover cart state from a prior run. A real product bug hiding behind a flaky test. A checkout dialog test failed on 45% of first attempts, and the retry budget hid most of those as passes. Rather than lengthen the wait, we pointed Vibium at a standalone page with the real Bootstrap and our dialog markup, and fired the dismiss click at fixed offsets across nine timed trials:
Bootstrap's A "flaky" test that wasn't flaky. A made-to-length product configurator intermittently produced exactly half the expected line total. Everyone's read was a front-end reactivity race dropping a keystroke. Using Vibium we read the framework's live reactive state after each field entry, then hooked the page's own HTTP client to capture the outgoing request before submitting: state correct, payload correct, server correct. The cause was a test-data schema difference producing a unit price exactly half of what the test expected. Generalizable: a "flaky" value that is always wrong by the same exact factor is a data problem, not a timing problem, and reading the live payload settles it in minutes. Two things with nothing to do with tests. (a) A customer-reported checkout problem came with a console error attributed to our page. Loading that URL in a clean extension-free browser under Vibium with error hooks, and sitting on it, produced zero errors. The message belonged to a browser extension, whose content scripts Chrome attributes to the page. False lead closed. (b) Pre-deploy, we drive a candidate build and the live site with the same commands to measure a feature delta. On a product-reviews overhaul, review counts dropped on the candidate, and Vibium made "intentional dedup vs. data loss" answerable rather than arguable. Why the CLI shape is what makes this workHere is the telling part. The packaged replay workflow gets invoked a handful of times a month, but the raw CLI gets called hundreds of times, because an agent mid-hypothesis reaches for Reading live front-end framework state through A note on the "modern websites" argumentPlenty of teams are moving to Playwright on the premise that it handles modern front ends better. Worth describing what our front end actually is, because it's the case that premise tends to skip. A long-lived enterprise app is not Selenium has driven that mix without complaint. The UI failures we have actually diagnosed came down to fixture pollution, test data drift, and library-level timing behavior. The one genuinely framework-related failure was a real bug in our own code, which Selenium caught correctly. That is a very different thing from a driver that can't handle reactive components. The dialog race above is the sharpest example. It looked exactly like the sort of "modern page" problem teams switch tools over, and the cause was a Bootstrap transition guard silently discarding a call. No driver would have fixed that. Better observability did. We also got the capability most often cited as a reason to leave, without leaving: Selenium 4's own BiDi network interception let us mock a response and turn a data-starved test deterministic, on the same Grid, inside the existing suite. And BiDi is why Vibium composes with what we already run instead of competing with it. Both speak the same standard protocol, so Vibium can attach to an existing session on the same Grid our Selenium suite runs on, which we proved out end to end. That makes it a companion rather than a migration. For a team with a large existing Java suite, "add an instrument" is a far cheaper proposition than "replace the executor," and an open protocol plus open source is what makes that option exist at all. What I'd suggestKeep Selenium as the regression suite for now. It is your CI gate, and porting it buys nothing right now. Add Vibium as the diagnostic layer beside it, agent-driven, aimed at what Selenium can't answer: a flake nobody can explain, a test that only fails in CI, "it broke after this commit and the diff looks innocent," verifying a fix without paying for a suite run, and pre-deploy exploratory passes. After three and a half months: Vibium hasn't written us a single test for our regression suite and has paid for itself many times over anyway. I do have Vibium tests on a working branch that I will evaluate against Selenium counterparts once Grid support reaches a release (soon). Local runs are promising though and once Grid support is confirmed, I'll begin a full evaluation of comparing our most complicated Selenium tests to a ported Vibium version. The goal is to eventually write all new tests in Vibium. The beauty of open source software built against a standard (WebDriver BiDi) is that Selenium and Vibium can work side-by-side. This is way better than the idea of feeling forced to port an established test suite to a hot new tool just for the sake of adopting the new tool. We did the same exercise porting from JUnit 4 to JUnit 5. Legacy JUnit 4 tests ran side-by-side with JUnit 5. Today we are 100% on JUnit 6 (with the help of AI doing the heavy lifting). That means the vast majority of human effort was spent on being productive building and testing for new features rather than spending that time migrating from one technology to another without significant net gain for the operation. There's no real incentive I see in porting Selenium tests to a different technology whether Playwright or Vibium. There is great incentive to adopting Vibium into your tech stack on its own merits, especially when adopting AI in your Quality Engineering practice. Porting Selenium to Vibium is a lower priority effort that you do when you have the spare resources because you don't have to port over to benefit from using Vibium and that's the point. That could change once a Vibium native feature comes along that you find invaluable and goes unsatisfied by Selenium. Comfortably cross that bridge when you get to it. Most of the AI-tooling value in a mature QA/DevOps setup turns out to be observability and diagnosis rather than code generation, and a browser an agent can interrogate one command at a time fits that far better than one it has to program. |
Uh oh!
There was an error while loading. Please reload this page.
Hi, I just want to know, can this Vibium be useful for a Selenium Java automation framework, and how?
All reactions