A browser extension for CRO teams that validate A/B tests on client sites. It detects which A/B testing tool is running — Convert, VWO or Optimizely — and gives you a panel to inspect tests, force a variant and watch tracking events come in.
No configuration and no URL list: it works on any site running one of the three tools.
The extension is distributed as a zip and loaded with Chrome's Load unpacked, not through the Chrome Web Store. One-time setup, about three minutes.
Load unpacked requires Developer mode. Chrome keeps a reference to the folder path, so pick a permanent location before you install — moving or renaming the folder later breaks the extension.
-
Download and unzip
Grab
qa-widget-v1.3.10.zipfrom the download card and unzip it. You'll get a folder namedQA-widget-extensioncontainingmanifest.json. That name stays the same in every release — see updating for why that matters. -
Move it somewhere permanent
For example
~/Documents/QA-widget-extension/. Not your Downloads folder — that tends to get cleaned out, and Chrome needs the folder to stay put. -
Open the extensions page
Go to
chrome://extensions/in a new tab — oredge://extensions,brave://extensions,arc://extensionsin the other Chromium browsers. -
Turn on Developer mode
Use the toggle in the top-right corner of that page.
-
Click “Load unpacked”
The button appears on the left once Developer mode is on. In a Dutch Chrome it reads “Uitgepakt laden”.
-
Select the unzipped folder
Pick the folder that has
manifest.jsondirectly inside it — not its parent and not a subfolder. -
Allow it in incognito
On the extension's card, click Details and turn on Allow in Incognito. Chrome keeps extensions out of incognito windows unless you say otherwise, so without this step the widget simply won't appear there — and incognito is where you should be doing your QA.
-
Pin the icon
Click the puzzle-piece icon to the right of the address bar and pin Online Dialogue QA Widget. You'll need it to toggle the widget on and off.
Verify it works
Open any client site running Convert, VWO or Optimizely. A green round QA button should appear in the bottom-right corner within about two seconds.
Chrome remembers the path of the folder you loaded, and derives the extension's identity from it. So an update means replacing the folder's contents in place — never loading a second copy from a new location.
Updating to a new version
-
Download and unzip the new version
You get a
QA-widget-extensionfolder again — same name, new contents. -
Replace your existing folder
Overwrite the folder at the path you installed from, e.g.
~/Documents/QA-widget-extension/. Don't move it and don't rename it. -
Click reload in Chrome
Open
chrome://extensions/— oredge://extensions,brave://extensions,arc://extensionsin the other Chromium browsers — and click the reload icon (↻) on the extension's card. The version number on the card should now match the one you downloaded — that's your confirmation it worked.
Don't use Load unpacked a second time for an update. Chrome would treat the new folder as a separate extension: you'd end up with two entries in chrome://extensions/ and two QA buttons on every page.
What changed
The aside lists the two most recent releases, and the full changelog covers all 18. Worth a look before you update: a release occasionally changes behaviour you rely on, not just fixes.
Click the green QA button to open the panel. Drag the button or the panel header to move it — the position is remembered across pages and sessions, and the panel flips to below the button when there's no room above it.
Always QA in an incognito tab (⌘/Ctrl + Shift + N). That forces clean visitor cookies, so you see the same bucketing a real first-time visitor would get, and your QA traffic disappears when you close the window.
This only works if you turned on Allow in Incognito: that is step 7 of the installation.
Variants tab
Lists every test targeting the current page, with its variants. The variant you're currently bucketed into is highlighted; click another one and it turns yellow as pending. Hit Apply & reload to force it, or Reset to drop all overrides and go back to natural bucketing.
Reset goes further than the URL. Both Convert and Optimizely store a forced variant in their own visitor state, so removing the parameter alone would leave you stuck in that variant. Reset therefore also clears the tool's bucketing, which makes you a new visitor to it. You are re-bucketed at random, so on a 50/50 test you will land in the same variant about half the time — the panel says so after a reset, because otherwise that looks like a broken button.
The QA cookie toggle in the header sets or removes the debug cookie (e.g. OD=test) that variant code checks for, and reloads the page for you.
On Convert, a yellow note occasionally appears above the list saying some targeting rules could not be evaluated. That happens when the client site's Content Security Policy blocks the widget from running a test's targeting condition. The test is then listed anyway rather than hidden, so read the list as possibly showing more tests than are really active on that page.
Events tab
A live feed of the tracking events the A/B test code pushes. Filter by type using the chips (All, Init, Click, Viewport, Interaction, Other) or search by test ID, variant or text. Click any row to expand the raw payload, which is the fastest way to confirm an event fires with the values you expect.
It recognises the OD ab-test convention plus GA4's experiment_viewed and experiment_action. Other dataLayer shapes are ignored, so an empty Events tab can also mean the client uses a different naming convention.
Turning the widget off
Click the pinned extension icon and flip Widget active. While it's off, the icon carries a red OFF badge so you never wonder why the button is missing.
Turning it off releases the force the widget itself had set and reloads the page: a URL parameter, a cookie or a stored override, depending on the tool. Turning it back on is instant and needs no reload.
It stops there on purpose. Convert and Optimizely also record a forced variant in their own visitor state, and the toggle applies to every tab you have open — clearing that everywhere would make you a new visitor in tests on pages where you never forced anything. So turning the widget off does not guarantee the page is back to normal. If a variant still sticks, use Reset on that page before switching off; Reset does clear the tool's own bucketing.
At a glance
- Auto-detect Finds Convert, VWO or Optimizely on its own — no configuration per client.
- Force a variant Select a variant and reload to see exactly what that audience sees.
- Live events Watch tracking events arrive, filter by type, inspect the raw payload.
- QA cookie toggle Set or clear the debug cookie without touching devtools.
- Draggable Panel and button move freely on desktop and mobile; position is remembered.
- Survives modals Stays interactive inside React Aria / Radix modals and native fullscreen.
Troubleshooting
The QA button doesn't appear
First check the extension icon for a red OFF badge — if it's there, the widget is disabled. Click the icon and turn Widget active back on.
If it's on, the page may not have a supported tool running. After about two seconds the panel header shows Searching… and the body reads “No A/B testing tool detected on this page”.
A header reading No active tests means something different: a tool was found, but the site carries more than one testing tool and none of them has a test running here — so the widget doesn't guess which one is in charge. On a site with only one tool it always names that tool, whether tests are running or not.
That state is not final: the widget keeps looking and switches to the real panel by itself as soon as a tool turns up. So on a site where the A/B tool loads behind a consent banner, accept the banner and the variants appear — no refresh needed.
There are also places where it stays away on purpose: inside iframes, and on the testing tools' own dashboards such as app.convert.com, app.vwo.com and app.optimizely.com.
Chrome shows a "Disable developer mode extensions" banner
Expected with Load unpacked. Chrome can disable Developer mode extensions after a restart and warns you about it. Dismiss the banner; if the widget stopped working, open chrome://extensions/ and re-enable the extension. It stays enabled until the next time Chrome decides to ask.
I see two QA buttons on the page
You have the extension installed twice. This happens when an update is loaded with Load unpacked from a new folder instead of replacing the old folder's contents — Chrome derives an extension's identity from its folder path, so the two copies are separate extensions to it.
Open chrome://extensions/, remove the entry pointing at the folder you no longer want, and keep one. See updating for the flow that avoids this.
I updated but the version number didn't change
Chrome is still loading the old folder. Check the path on the extension's card in chrome://extensions/ and make sure that's the folder you replaced the contents of — if you unzipped somewhere else, the reload button just reloads the old files.
The panel is empty but I know tests are running
The Variants tab only lists experiments that target the current URL. Tests active in the project but scoped to other pages won't show up — the empty state tells you how many those are.
Also check that you cleared any earlier force overrides with Reset; a forced variant can make a test look stuck.
I dragged the panel off-screen
The position is clamped to the viewport, so it can't fully disappear, and resizing your window re-clamps it for you. Drag it if you want it somewhere else — the new position is saved right away.