← QA Widget

Changelog

Every release of the Online Dialogue QA Widget, newest first — 19 in total. The current version is v1.4.0.

Download v1.4.0

v1.4.0 latest

  • The widget now notices page changes inside single-page apps that it used to miss entirely. It was relying on hooking into the browser history, and on some sites another script gets there first — the hook stays in place but is never called, so variants were not re-checked after an in-page navigation. It now uses the browser's own navigation events, which cannot be bypassed that way
  • That detection moved into the shared core instead of living twice in the adapters

v1.3.10

  • The widget no longer creates a dataLayer on sites that do not have one. It was adding a global variable the site never had, and some scripts check whether it exists to decide how to initialise
  • A console message said "Reset" when you had actually switched the widget off, and it came from an adapter for a tool that was not even running on the page

v1.3.9

  • The widget now cleans up after itself when it replaces its own empty state. Watchers, page-navigation listeners and Optimizely's event hooks were being set up a second time, which made every in-page navigation do double work and showed Optimizely track events twice in the Events tab
  • It no longer leaves a marker on the browser's own history object, and the navigation hook is installed once per page instead of once per widget

v1.3.8

  • Turning the widget off now actually reloads the page on VWO and Optimizely. It was asking whether anything had been forced only after clearing it, so the answer was always no and the reload never happened — you kept looking at the forced variant with no widget left to change it
  • A tracking event that refers back to itself no longer breaks the Events tab, stops events from being saved, or throws an error into the client site's own error monitoring. Payloads are now captured as text the moment they arrive
  • On sites with a two-part domain ending such as .co.uk, forcing a VWO variant now writes to the domain VWO actually reads. It was creating a second cookie that hid VWO's own one, so the panel could report a variant you had not been given
  • Pressing Apply on an Optimizely page with no active campaign no longer leaves the widget believing a variant is forced ever after
  • Clearer wording about what turning the widget off does and does not do: it releases the widget's own force, but the testing tool's own record of your variant stays — use Reset for that

v1.3.7

  • On VWO the widget now knows which variants it forced itself. Its force cookie is also the cookie VWO stores its own bucketing in, so everything that read it was answering the wrong question
  • A variant you are simply bucketed into no longer shows the "forced via QA" badge — that badge was on every variant, always
  • Reset on a VWO page where you forced nothing no longer throws away your bucketing and drops you in a different variant
  • Turning the widget off no longer reloads every VWO page you are bucketed on, which is what it had been doing regardless of whether anything was being forced

v1.3.6

  • Fixed a panel that sometimes opened with a correctly styled header above a completely unstyled variant list, most often on VWO. When the widget replaces its own empty state after a tool shows up late, it builds a fresh panel — and the variant styles were only ever written into the first one

v1.3.5

  • The note after a Reset now also appears on VWO. It was tied to whether a tool needed its bucketing cleared separately, and VWO does not — its force cookie is its bucketing store — so the note stayed away even though you are re-bucketed there just the same
  • Resetting a page where nothing was being forced no longer claims you were re-bucketed

v1.3.4

  • Installation now covers allowing the extension in incognito. Chrome keeps extensions out of incognito windows unless you turn that on, so the widget would not appear in the very place you are told to do your QA
  • The note after a Reset is down to one line about being re-bucketed at random — the point being that on a 50/50 test the variant looks unchanged half the time, which reads like a broken button

v1.3.3

  • Reset now works on Optimizely too. It only cleared the widget’s own override there, so the badge stopped saying "forced" while the variant itself stayed put — Optimizely keeps its decision in its own storage, and that is now cleared as well

v1.3.2

  • One press of Reset is now enough: the bucketing is cleared as the next page starts loading, before the testing tool runs. Clearing it earlier let the tool write its state straight back, so the first Reset appeared to do nothing and only a second one worked

v1.3.1

  • Reset now also clears the testing tool’s own bucketing, so a forced variant no longer sticks around after resetting — the panel tells you when this happened and that you were re-bucketed at random
  • Clearing a cookie now works when the tool set it on the parent domain, which is where Convert and VWO put theirs
  • Turning the widget off deliberately leaves bucketing alone: it releases the force without making you a new visitor in the test data

v1.3.0

  • Detection now looks for which tool has active tests, not just which tools are on the page — a site with a leftover snippet from an old tool no longer misleads it
  • On a site with more than one testing tool and no active tests, the panel no longer claims which tool it is; with a single tool it still names it
  • A tool that turns out to have active tests takes over from one that does not

v1.2.6

  • Reset now works on links that already carried the force parameter twice
  • Turning the widget off no longer reloads pages where nothing was being forced, and it now also releases VWO cookies and Optimizely overrides instead of only Convert URL parameters
  • The widget no longer appears on the testing tools’ own dashboards
  • The panel picks whichever side has more room instead of always flipping below the button
  • The QA cookie toggle can be operated with the keyboard

v1.2.5

  • The "?" button now opens this page instead of a login-protected one
  • While no tool has been detected the panel says "Searching…" instead of naming a tool it has not found
  • VWO traffic percentages are read correctly — a 1% split was shown as 100%
  • When a targeting rule cannot be evaluated on a page, the test is listed with a warning instead of silently disappearing

v1.2.4

  • A hiccup while reading variant data no longer leaves the panel silently empty — it shows what went wrong and keeps updating
  • Bucketing and SPA navigation updates no longer stop after a single unexpected error
  • Corrupted saved state is now ignored instead of breaking the panel

v1.2.3

  • The widget now keeps looking for an A/B testing tool instead of giving up after two seconds — it picks up tools that load after a consent banner
  • Turning the widget off now releases any forced variant instead of only hiding the panel, so the page goes back to normal behaviour
  • The panel opens below the button when there is no room above it, and a saved position from a larger screen no longer puts the widget off-screen

v1.2.2

  • Fixed Reset and Apply on URLs with a #fragment: the force parameter was not being removed, so Reset did nothing and switching variants twice showed the previous one
  • Tracking events are no longer lost when a tag manager replaces dataLayer.push after the widget has started
  • Dropped the unused activeTab and scripting permissions — the extension now only asks for storage

v1.2.1

  • The zip now unpacks to a fixed folder name, so updating no longer changes the folder path Chrome loads the extension from
  • Reinstalling on top of an older version no longer risks a duplicate entry in chrome://extensions

v1.2.0

  • Rebuilt as a Chrome extension (previously a Tampermonkey userscript)
  • Auto-detects the A/B testing tool — no more per-client URL list
  • Popup with on/off toggle and incognito reminder
  • Badge on the extension icon shows OFF when the widget is disabled
  • Draggable on mobile via pointer events (mouse, touch and pen)
  • Works inside React Aria modals and native fullscreen
  • Detection timeout lowered to 2 seconds for faster empty-state feedback