🤖 QA Bot Test Report

Generated on: 9/28/2026, 10:22:38 PM

failed

Route Information

Route ID: #67 · Lovable Path: /floor-clean-education URL: https://get.purdyandfigg.com/floor-clean-education served through the proxy — this is what the runner fetched Region: UK Runner: 🤖 agatha-qa-runner Requested by: Nobody — the schedule asked for this one.

agatha-qa-runner suspects the BASELINE is stale (high confidence)

Suggested fix: accept the failure and retest — the page is right, the test is out of date

The offer on this lander moved from 40% off £32.95 to 30% off £28.50, with the customer-facing price unchanged at £19.95, and the baseline still asserts the old figures. Every place the page states the offer agrees with the new one — top bar, buy-box badge, strikethrough price, purchase CTA, sticky bar and the server-rendered meta description — so this is a campaign change the baseline has not caught up with, not a page regression.

How she worked that out

What I measured. The buy box renders £28.50 struck to £19.95 and badges "YOUR LIMITED TIME OFFER: SAVE 30%". £28.50 − £19.95 = £8.55, which is exactly 30.0000% — floor and ceil agree on 30, so the badge is not merely within rounding tolerance, it is exact. The top bar reads "30% off for a limited time" where the baseline expects 40%; the sticky bar reads "Floor Clean Starter Kit · £19.95 · Save 30%" where the baseline expects "· Save £13" (£13 was the old £32.95 − £19.95 saving). The strings "£32.95", "40%" and "Save £13" are absent from both innerText and textContent, so nothing is merely hidden at this width. What the money path does. Clicking TRY RISK-FREE navigates to https://purdyandfigg.com/pages/go?variant=56829413491068&plan=832140247420&discount=FLOORCLEAN4.4&quantity=1 and resolves to a Shopify checkout reading "Floor Clean Starter Kit Plan 4.4 Every 90 days", original £28.50, discounted £19.95, discount code FLOORCLEAN4.4 (−£8.55), total £19.95, recurring £23.95 every 90 days. The variant id (56829413491068) and selling plan (832140247420) are character-for-character identical to the baseline's; only the discount code changed, from ADVFLOORCLEANSKIT638C to FLOORCLEAN4.4. Same product, same plan, same price to the customer. What I ruled out. Not an A/B arm: the Intelligems bundle did not execute (window.Intelligems undefined, no Intelligems DOM nodes, only the server-emitted igProductData global), so I was served the native experience and cannot excuse or blame copy on a variant. Not a rendering artefact: the page's own meta description is server-rendered and reads "…Now 30% off.", which means the 30% figure is baked into the page source, not computed client-side from a bad value. Not a single-page fault: the sibling lander /floor-clean-problem carries the identical offer this run — 30% off, £28.50 → £19.95, £8.55 saving — so both Floor Clean landers moved together, which is what a deliberate campaign change looks like and not what a regression on one page looks like. Not a viewport problem: ran at 1280x813, desktop. Everything else in the baseline passes, including the assertions most likely to break in a real regression: all ten FAQ controls in the asserted order, the 10ml-into-5L dose (identical on the sibling, so the baseline's hard-failure condition for a dilution contradiction does not trigger), the 60ml ÷ 10ml = 6 washes and 3 × 6 = 18 weeks value maths, all five buy-box line items, both anchors, and every copy string in sections 2, 3, 5, 6, 9, 10, 11 and 12 verbatim under whitespace normalisation. The baseline clauses needing rewriting are section 1 (top bar 40% → 30%), section 8 (SAVE 40% → SAVE 30%, £32.95 → £28.50, and the CTA "TRY RISK-FREE | £32.95 £19.95" → "£28.50 £19.95"), section 12 (sticky bar "Save £13" → "Save 30%") and section 13 (discount ADVFLOORCLEANSKIT638C → FLOORCLEAN4.4). Section 8's arithmetic note should also be restated: £28.50 − £19.95 = £8.55 = exactly 30%.

A proposal, not a verdict — this route is still failing, and still counting toward the 3-strike demotion, until somebody confirms it in QA Bot.

Report Content

QA Run — /floor-clean-education (UK, route 67)

URL: https://get.purdyandfigg.com/floor-clean-education/?aegis_qa=1 Viewport: 1280x813 (desktop) Runner: agatha-qa-runner (unattended) Theme: not a Shopify page (Lovable proxy on get.purdyandfigg.com); Shopify.theme is null here. Verified on purdyandfigg.com during cart cleanup: theme 188893921660, role main — no preview leak. A/B arms (Intelligems): bundle did not execute — window.Intelligems undefined, 0 Intelligems DOM nodes, only the server-emitted igProductData global. Control arm / native experience. (A stale ig-vars cookie from an earlier session is present; per playbook that is history, not state, and the global check is what establishes the arm.) Smooth-scroll probe: {instant: true, smooth: false} — measured before applying the instant-patch. getComputedStyle(documentElement).scrollBehavior = auto. CSS-animation probe: {probeOpacity: "0", reducedMotion: false} — animations are frozen in this browser. document.visibilityState is hidden.

Result: FAIL — baseline is stale, page is coherent

The offer moved from 40% off £32.95 to 30% off £28.50. The price the customer pays, £19.95, is unchanged. Every statement of the offer on the page agrees with the new figures, and checkout charges exactly what the page shows. My proposed triage is baseline, high confidence — see the triage note.

---

1. Page load & meta — PARTIAL
CheckResult
Page renders (not an empty shell)PASS
Title exactly `Floor Clean: Your Questions Answered \Purdy & Figg`PASS
Top bar The floor care you asked for is here · 40% off for a limited timeFAIL
Top bar 5.0 · 65,000+ reviewsPASS

Meta description (playbook rule): PASS and worth noting as a positive. The page carries its own <meta name="description">, specific to this route, 138 characters (inside the ~160 display limit): "Everything you need to know about Floor Clean, the floors it suits, how to use it in a bucket or spray mop, and how it works. Now 30% off." og:description is present with the same text. This is not the estate-wide shared-default failure recorded against the PDPs. It is also independent evidence that 30% is the intended live offer — the figure is server-rendered into the page head.

2. Hero — PASS

H1 Meet Floor Clean., eyebrow NEW · FOR EVERY FLOOR, sub-copy verbatim, CTA TRY FLOOR CLEAN, ✓ 30-day money-back guarantee, and all four USP ticker items (Natural concentrate, Safe on every floor, Three scents, Slip-free finish).

3. "Works on every hard floor in your home." — PASS

H2 and body copy verbatim. All four surface labels present (Hardwood, Tile & Grout, Stone & Slate, Marble). The documented six-types-vs-four-labels mismatch is unchanged and, per the baseline, not failed on.

4. "Three steps. Nothing left behind." — PASS

All three steps verbatim, closing line No rinsing. No residue. Just the right dose., and Have questions? Read our FAQ. present with #faq resolving to a real target.

Dose cross-check against the sibling — PASS, and this is the check that matters most here. /floor-clean-problem (route 66) states the identical 10ml into 5L. The baseline's hard-failure condition for a dilution contradiction does not trigger. The FAQ answer restates it consistently ("5 litres of warm water, and add one scoop").

5. "However you mop, we've got you covered" — PASS

Both methods present with copy verbatim.

6. Scents — PASS

All three scents with descriptions verbatim.

7. FAQ — PASS

Exactly ten accordion controls, in the asserted order, labels verbatim. Item 1 is open by default and its answer covers hard floors, rinse-free/non-slip and the direct-sunlight note, as asserted. Expansion verified: aria-expanded went false → true on item 2 and the answer text rendered.

Method disclosure: tooling clicks by ref did not register on this page — a capture-phase click listener on document recorded zero events after a ref click, while the element was in the viewport and document.elementFromPoint() at its centre resolved inside the button (hitIsButton: true). I therefore exercised the controls with a scripted .click(), which the listener did record. This is a runner-tooling limitation, not a page fault, and I am not reporting any control as broken on the basis of a click I could not prove landed.

8. Buy box — PARTIAL
CheckExpectedShownResult
H3Floor Clean Starter KitsamePASS
Sub-copyThree scents, one scoop, and a floor that stays clean.samePASS
Social proof65,000+ verified 5-star reviewssamePASS
Offer labelYOUR LIMITED TIME OFFER: SAVE 40%…SAVE 30%FAIL
Value line✓ One concentrate. Every floor. No residue.samePASS
Pricing£32.95 → £19.95£28.50 → £19.95FAIL
Five included line itemsall fiveall five verbatimPASS
Purchase CTA`TRY RISK-FREE \£32.95 £19.95``TRY RISK-FREE \£28.50 £19.95`FAIL
Reassurance linesbothboth verbatimPASS

Arithmetic on what is actually shown: £28.50 − £19.95 = £8.55; £8.55 / £28.50 = exactly 30.0000%. floor and ceil both give 30, so the SAVE 30% badge is exact, not merely within rounding tolerance. The page is internally consistent.

9. "Better value than it looks." — PASS

Both claims verbatim. Maths still reconciles: 60ml ÷ 10ml = 6 washes ✓; 3 concentrates × 6 = 18 washes = 18 weekly mops = 18 weeks ✓. All three figures remain consistent with the 10ml dose in section 4.

10. "Why subscribe?" — PASS

All four perks present with copy verbatim. (The page also carries a sub-heading Exclusive perks, only available to members. which the baseline does not assert — not a fault, worth adding when the baseline is next drafted.)

11. Reviews — PASS

H2 present with 65.6K 5-star reviews and all five named testimonials (Roberta, Bath, Krish, Manchester, Lisa, London, Rory, Preston, Sophie, Leeds).

12. Closing CTA & footer — PARTIAL
CheckExpectedShownResult
Closing H2 + CTA + guaranteeReady to give it a go? etc.samePASS
Sticky footer barFloor Clean Starter Kit · £19.95 · Save £13Floor Clean Starter Kit · £19.95 · Save 30%FAIL
Footer© 2026 Purdy & Figg. All rights reserved.samePASS

The sticky bar was read after scrolling, with getComputedStyle checked: position: fixed, visibility: visible, opacity: 1 — a price a customer genuinely sees. Save £13 was the old £32.95 − £19.95 saving; £8.55 is the new one, and the bar now expresses it as a percentage instead.

13. CTA destination — PARTIAL

Checkout verified end-to-end. The link resolves to a Shopify checkout reading: Floor Clean Starter Kit, Plan 4.4, Every 90 days — original price £28.50, discounted price £19.95, discount code FLOORCLEAN4.4 (−£8.55), Subtotal £19.95, Total GBP £19.95, TOTAL SAVINGS £8.55, recurring subtotal £23.95 every 90 days. The price displayed on the page is the price charged at checkout.

Measured on a verified-clean session: I dropped the cart cookie before the first purchase action, and after the run /cart.js returned item_count: 0. The only code on the session afterwards was FLOORCLEAN4.4, which the page itself shipped in its /pages/go URL — so the £8.55 reduction is the page's own behaviour, not an inherited code.

Critical-rule checks: no variant reaches checkout under £1.00 (lowest line price £19.95), and no "Unleashed" variant appears anywhere on this page or at checkout.

Hero CTA scroll — NOT VERIFIED (runner limitation, handler sound)

TRY FLOOR CLEAN did not carry the page to the buy box in this browser. This is not reported as a defect.

Verdict: not verified — smooth scroll unavailable in runner browser; target reachable, handler sound. Note the playbook's 2026-09-06 measurement on this route (0 → 5153, landing on #buy-box at 5152px) no longer matches the page geometry — the buy box now sits at ~4460px absolute, consistent with the layout changes around the offer.

GA / tracking — PASS with one flag
Observations (not failed, not filed as defects)
Defect filed

One, for the flag the baseline has carried since capture and which I verified this run — the 5.0 aggregate rating claim against the company's own published 4.8. See the route's Defects tab.

Checkout links

https://purdyandfigg.com/pages/go?variant=56829413491068&plan=832140247420&discount=FLOORCLEAN4.4&quantity=1

That is the only purchase destination on the page — one plan, one link. It is built at runtime by the React handler (the page ships no href and no /cart/add form; a link scrape returns only /, #faq and #buy-box), so I recovered it by clicking the CTA and reading document.referrer at the checkout, then reading the parts of it individually rather than as a joined query string. It resolved to a Shopify checkout that applied FLOORCLEAN4.4 (−£8.55 on £28.50, total £19.95). The resolved checkout URL carries a one-time /checkouts/cn/… session token tied to my own cart and is not reproducible, so it is not reproduced here; the discount code it carried is the one named above.