1import{e as s,u as d,P as m,j as e,L as n,S as u,T as h,p as c,l as g,U as x,F as r,D as p,d as f,G as b,g as y,h as k,C as v,c as j}from"./index-CY8Nbixe.js";import{P as w}from"./PageBreadcrumbJsonLd-BC4dNl-4.js";import{e as A}from"./ecom-dynamic-storefronts-BtQDVsz_.js";import{U as N}from"./UseCasePillsSection-CUffth8g.js";import{A as C}from"./arrow-right-Brl6OCrp.js";import{B as I}from"./boxes-DIUqasRz.js";import{S as l}from"./shield-check-waXmLeC3.js";import{S}from"./smartphone-D8gA7EOI.js";import{W as F}from"./workflow-B8DaLUcp.js";import{B as E}from"./bug-BBtzuwHE.js";import{C as P}from"./clock-CMmejKVJ.js";import{G as z}from"./git-branch-CyzylSvl.js";import{M as T}from"./message-square-Dz02SL5e.js";/** 2 * @license lucide-react v0.462.0 - ISC 3 * 4 * This source code is licensed under the ISC license. 5 * See the LICENSE file in the root directory of this source tree. 6 */const L=s("CreditCard",[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}]]);/** 7 * @license lucide-react v0.462.0 - ISC 8 * 9 * This source code is licensed under the ISC license. 10 * See the LICENSE file in the root directory of this source tree. 11 */const M=s("Frame",[["line",{x1:"22",x2:"2",y1:"6",y2:"6",key:"15w7dq"}],["line",{x1:"22",x2:"2",y1:"18",y2:"18",key:"1ip48p"}],["line",{x1:"6",x2:"6",y1:"2",y2:"22",key:"a2lnyx"}],["line",{x1:"18",x2:"18",y1:"2",y2:"22",key:"8vb6jd"}]]);/** 12 * @license lucide-react v0.462.0 - ISC 13 * 14 * This source code is licensed under the ISC license. 15 * See the LICENSE file in the root directory of this source tree. 16 */const R=s("Languages",[["path",{d:"m5 8 6 6",key:"1wu5hv"}],["path",{d:"m4 14 6-6 2-3",key:"1k1g8d"}],["path",{d:"M2 5h12",key:"or177f"}],["path",{d:"M7 2h1",key:"1t2jsx"}],["path",{d:"m22 22-5-10-5 10",key:"don7ne"}],["path",{d:"M14 18h6",key:"1m8k6r"}]]);/** 17 * @license lucide-react v0.462.0 - ISC 18 * 19 * This source code is licensed under the ISC license. 20 * See the LICENSE file in the root directory of this source tree. 21 */const D=s("ShoppingCart",[["circle",{cx:"8",cy:"21",r:"1",key:"jimo8o"}],["circle",{cx:"19",cy:"21",r:"1",key:"13723u"}],["path",{d:"M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12",key:"9zh506"}]]);/** 22 * @license lucide-react v0.462.0 - ISC 23 * 24 * This source code is licensed under the ISC license. 25 * See the LICENSE file in the root directory of this source tree. 26 */const B=s("Tags",[["path",{d:"m15 5 6.3 6.3a2.4 2.4 0 0 1 0 3.4L17 19",key:"1cbfv1"}],["path",{d:"M9.586 5.586A2 2 0 0 0 8.172 5H3a1 1 0 0 0-1 1v5.172a2 2 0 0 0 .586 1.414L8.29 18.29a2.426 2.426 0 0 0 3.42 0l3.58-3.58a2.426 2.426 0 0 0 0-3.42z",key:"135mg7"}],["circle",{cx:"6.5",cy:"9.5",r:".5",fill:"currentColor",key:"5pm5xn"}]]),G="/assets/ecom-cart-accuracy-QInLyXks.png",q="/assets/ecom-checkout-failures-DXe_V1t5.png",U="/assets/ecom-safeguard-revenue-eIKv-uZy.png",W="/assets/ecom-omnichannel-DJ4iUYdq.png",V="/assets/ecom-composable-commerce-C51DjnBK.png",_="/assets/ecom-reproducing-errors-DULEwNK7.png",O=[{title:"Dynamic storefronts break conversion silently",description:"Seasonal campaigns and personalisations never stop. When flows drift, conversion drops and carts fail before checkout â without being caught.",icon:D,image:A,imageAlt:"Personalised storefront branching across promo codes, currencies and product variants"},{title:"Cart accuracy breaks with composable stacks",description:"APIs, webhooks and caching layers drift over time. When they fail, customers see missing products and broken carts â directly impacting your GMV.",icon:I,image:G,imageAlt:"Cart with out-of-stock variant alongside API and inventory errors"},{title:"Checkout failures reduce payment success",description:"Payments, shipping and fraud checks rely on third-party services and iframes. Any failure directly impacts payment success and checkout completion.",icon:L,image:q,imageAlt:"Checkout panel with multiple payment providers being tested by an AI agent"}],K=[{eyebrow:"Revenue-critical",title:"Safeguard revenue-critical flows with AI testing",description:"QA agents validate E2E shopping journeys and catch UI regressions, interacting with your commerce experience like real customers. AI tests across storefronts, APIs and admin systems â adapting to promotion logic, conditional checkouts and local rules.",bullets:["Test browse â cart â checkout end-to-e
26nd","Catch regressions in promo and discount logic","Validate admin flows alongside shopper flows"],icon:l,image:U,imageAlt:"Abandoned cart recovery flow tested across mobile app, web storefront and APIs"},{eyebrow:"Omnichannel",title:"Omnichannel and cross-device ready",description:"Validate user flows that include cross-device cart synchronisation, multichannel catalogs, localisation rules and the complex commerce scenarios you need under control.",bullets:["Cart hand-off between mobile and desktop","Channel-specific catalogs and pricing","Region-aware shipping and tax behavior"],icon:S,image:W,imageAlt:"Devices, operating systems and country flags representing omnichannel coverage"},{eyebrow:"Composable",title:"Agentic QA for composable commerce",description:"Move from testing individual apps to catching integration regressions at the surface â confirming your composable stack delivers the right shopping experience.",bullets:["Surface failures across CMS, PIM, OMS and PSP","Detect drift between services in real flows","Stop debugging which microservice broke checkout"],icon:F,image:V,imageAlt:"Natural language test prompt with coverage and execution steps"},{eyebrow:"Debug",title:"No more issues with reproducing errors",description:"AI agents record every step of a buyer journey test, giving developers full context and logs to debug faster and understand what caused the failure.",bullets:["Step-by-step traces with screenshots and network logs","One-click reproduction across teams","Root-cause level signal, not stack traces"],icon:E,image:_,imageAlt:"Test trace surfacing a payment validation failure with network logs"}],Q=[{title:"Master the promotion matrix",description:"Ensure discounts, loyalty rewards and vouchers apply in the correct order during checkout.",icon:B},{title:"Asynchronous payments",description:"Test payment redirects, delayed confirmations and other async outcomes that affect checkout.",icon:P},{title:"Testing for global commerce",description:"Schedule tests daily, weekly or on merge. Control coverage and scale across regions and storefronts.",icon:b}],X=[{title:"Localised experience",description:"Validate currencies, taxes and region-specific checkout rules across global storefronts.",icon:R},{title:"Embedded iframe testing",description:"Test payment, delivery or map widgets with AI â if users can click them, the agent can test them.",icon:M},{title:"Marketplace role testing",description:"Test buyer, vendor and admin flows. AI ensures permissions and actions work correctly for each role.",icon:y}],H=[{title:"Built for CI/CD",description:"Trigger AI tests from your CI/CD pipeline on every build or deployment.",icon:z},{title:"Instant PR feedback",description:"Run tests on every pull request and catch issues before merge to power up shift-left teams.",icon:k},{title:"SOC 2 Type 2 compliant",description:"AI tests your product without reading your code. Your data is never used to train models.",icon:l}],$=[{title:"No infra setup needed",description:"AI agents run in the cloud. Point them at your environment and start testing.",icon:v},{title:"Write tests in natural language",description:"Work with AI in plain English and get new test case ideas.",icon:T},{title:"No vendor lock-in",description:"Test definitions stay portable and open for full flexibility.",icon:j}],J=[{label:"Checkout flows",slug:"checkout-flow-testing"},{label:"E-commerce testing",slug:"ecommerce-testing"},{label:"Search, filter & sort",slug:"search-filter-testing"},{label:"Login & authentication",slug:"authentication-testing"},{label:"Marketplace (buyer & seller)",slug:"marketplace-testing"},{label:"Analytics & tracking events",slug:"analytics-tracking-testing"},{label:"Visual regression",slug:"visual-regression-testing"},{label:"Localization & i18n",slug:"localization-testing"},{label:"Mobile app testing",slug:"mobile-app-testing"},{label:"Notifications & activity feeds",slug:"notifications-testing"},{label:"Automated regression testing",slug:"automated-regression-testing"},{label:"Accessibility (WCAG)",slug:"accessibility-testing"}],me=()=>(d(m.industriesEcommerce),e.jsxs("div",{className:"bg-[#FAFAFA]",children:[e.jsx(w,{id:"ld-industries-ecom-breadcrumb",items:[{name:"Home",path:"/"},{name:"Industries",path:"/industries/ecommerce"},{name:"Ecommerce",path:"/industries/ecommerce"}]}),e.jsx("section",{className:"relative isolate overflow-hidden",children:e.jsxs("div",{className:"mx-auto max-w-5xl px-6 pt-16 pb-12 sm:pt-24 lg:px-10",children:[e.jsx("p",{className:"font-mono text-[11px] uppercase tracking-[0.18em] text-neutral-500",children:"Ecommerce"}),e.jsxs("h1",{className:"mt-4 text-4xl font-medium tracking-tight text-neutral-900 sm:text-6xl",children:[e.jsx("span",{className:"box-decoration-clone bg-[linear-gradient(to_top,#EAFF81_55%,transparent_55%)] px-1",children:"Stop losing orders"})," ","to broken shopping journeys."]}),e.jsx("p",{className:"mt-6 max-w-3xl text-base font-light text-neutral-600 sm:text-lg",children:"Validate full E2E shopping flows with QA agents that test like real customers â across storefronts, payment providers and the composable stack behind them."}),e.jsx("div",{className:"mt-8 flex flex-wrap items-center gap-3",children:e.jsxs(n,{to:u.demo,className:"inline-flex items-center gap-2 rounded-full bg-neutral-900 px-5 py-2 text-sm font-medium text-white transition-colors hover:bg-zinc-700",children:["Get a demo",e.jsx(C,{className:"size-3.5"})]})})]})}),e.jsx("section",{className:"mx-auto max-w-5xl overflow-hidden rounded-t-[4px] border-x border-t border-zinc-200",children:e.jsx(h,{compact:!0,topBorder:!1})}),e.jsxs("section",{className:"mx-auto max-w-5xl rounded-t-[4px] border-x border-t border-zinc-200 bg-[#FAFAFA] px-6 py-16 sm:py-20 lg:px-10",children:[e.jsxs("div",{className:"max-w-3xl",children:[e.jsx("h2",{className:"text-3xl font-medium tracking-tight text-neutral-900 sm:text-4xl",children:"Protect revenue flows in omnichannel commerce."}),e.jsx("p",{className:"mt-4 text-base font-light text-neutral-600",children:"Modern commerce stacks are made of moving parts. When one drifts, customers feel it at the checkout â and
26you only find out from the GMV report."})]}),e.jsx("div",{className:"mt-10 grid grid-cols-1 gap-4 sm:grid-cols-3",children:O.map(t=>e.jsxs("article",{className:"flex flex-col",children:[e.jsx("div",{className:"flex h-[25rem] w-full items-center justify-center overflow-hidden rounded-md border border-neutral-900/10 bg-[#FAFAFA]",children:e.jsx("img",{src:t.image,alt:t.imageAlt,loading:"lazy",className:"h-full w-full object-cover object-center"})}),e.jsx("h3",{className:"mt-5 text-base font-semibold tracking-tight text-neutral-900",children:t.title}),e.jsx("p",{className:"mt-2 text-sm font-light leading-6 text-neutral-600",children:t.description})]},t.title))})]}),e.jsx("section",{className:"mx-auto max-w-5xl border-x border-t border-zinc-200 bg-[#FAFAFA]",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2",children:[e.jsxs("div",{className:"relative h-64 md:h-auto md:max-h-[400px] md:min-h-[20rem]",children:[e.jsx("img",{src:c,alt:"Pricer",className:"absolute inset-0 h-full w-full object-cover md:hidden",style:{WebkitMaskImage:"linear-gradient(to bottom, black 0%, black 55%, transparent 100%)",maskImage:"linear-gradient(to bottom, black 0%, black 55%, transparent 100%)"}}),e.jsx("img",{src:c,alt:"","aria-hidden":!0,className:"absolute inset-0 hidden h-full w-full object-cover md:block",style:{WebkitMaskImage:"linear-gradient(to right, black 0%, black 45%, transparent 95%)",maskImage:"linear-gradient(to right, black 0%, black 45%, transparent 95%)"}})]}),e.jsxs("figure",{className:"relative flex flex-col justify-center px-8 py-12 sm:px-12 sm:py-16",children:[e.jsx("blockquote",{className:"text-3xl font-light tracking-tight text-neutral-900 sm:text-4xl",children:e.jsx("p",{children:'"Pricer saves 390h of testing each quarter."'})}),e.jsxs("figcaption",{className:"mt-6 flex items-center gap-3",children:[e.jsx("img",{src:g,alt:"Chris Chalkitis",className:"h-10 w-10 rounded-full object-cover"}),e.jsxs("div",{children:[e.jsx("div",{className:"text-sm font-semibold text-neutral-900",children:"Chris Chalkitis â Chief Digital Officer"}),e.jsx("div",{className:"text-sm font-light text-neutral-600",children:"Pricer is a world leading electronic shelf label provider. ~200 employees."})]})]}),e.jsxs(n,{to:"/case-studies/how-pricer-transform-qa-with-qa-tech",className:"mt-6 inline-flex items-center gap-1 text-sm font-normal text-neutral-900 underline-offset-4 hover:underline",children:["Read their story ",e.jsx("span",{"aria-hidden":!0,children:"â"})]})]})]})}),e.jsxs("section",{className:"mx-auto max-w-5xl border-x border-t border-zinc-200 bg-[#FAFAFA]",children:[e.jsx("div",{className:"max-w-3xl px-6 pt-16 sm:pt-20 lg:px-10",children:e.jsx("h2",{className:"text-3xl font-medium tracking-tight text-neutral-900 sm:text-4xl",children:"Validate the customer journey, continuously."})}),e.jsx("div",{className:"mt-10 flex flex-col border-t border-zinc-200",children:K.map((t,i)=>{const a=i%2===1;return e.jsxs("div",{className:`grid gap-0 md:grid-cols-2 ${i>0?"border-t border-zinc-200":""}`,children:[e.jsxs("div",{className:`flex flex-col justify-center p-8 sm:p-10 lg:p-12 ${a?"md:order-2 md:border-l md:border-zinc-200":""}`,children:[e.jsx("h3",{className:"text-2xl font-medium tracking-tight text-neutral-900",children:t.title}),e.jsx("p",{className:"mt-3 text-sm font-light text-neutral-600",children:t.description}),t.bullets&&e.jsx("ul",{className:"mt-5 flex flex-col gap-2.5",children:t.bullets.map(o=>e.jsxs("li",{className:"flex items-start gap-2 text-sm text-neutral-700",children:[e.jsx("span",{className:"mt-2 size-1 shrink-0 rounded-full bg-neutral-400"}),e.jsx("span",{className:"font-light",children:o})]},o))})]}),e.jsx("div",{className:`flex items-center justify-center overflow-hidden bg-[#FAFAFA] md:min-h-[280px] ${a?"md:order-1":"md:border-l md:border-zinc-200"}`,children:e.jsx("img",{src:t.image,alt:t.imageAlt,loading:"lazy",className:"h-full w-full object-cover object-center"})})]},t.title)})})]}),e.jsx("div",{className:"mx-auto max-w-5xl border-x border-zinc-200",children:e.jsx(x,{})}),e.jsxs("section",{className:"mx-auto max-w-5xl border-x border-t border-zinc-200 bg-[#FAFAFA]",children:[e.jsx("div",{className:"px-6 pt-16 sm:pt-20 lg:px-10",children:e.jsx("div",{className:"max-w-3xl",children:e.jsx("h2",{className:"text-3xl font-medium tracking-tight text-neutral-900 sm:text-4xl",children:"The AI testing blueprint for commerce."})})}),e.jsx("div",{className:"mt-10 border-t border-zinc-200",children:e.jsx(r,{tiles:Q.map(t=>
26({Icon:t.icon,title:t.title,desc:t.description}))})}),e.jsx("div",{className:"border-t border-zinc-200",children:e.jsx(r,{tiles:X.map(t=>({Icon:t.icon,title:t.title,desc:t.description}))})})]}),e.jsxs("section",{className:"mx-auto max-w-5xl border-x border-t border-zinc-200 bg-[#FAFAFA]",children:[e.jsx("div",{className:"px-6 pt-16 sm:pt-20 lg:px-10",children:e.jsx("div",{className:"max-w-3xl",children:e.jsx("h2",{className:"text-3xl font-medium tracking-tight text-neutral-900 sm:text-4xl",children:"Built to plug into the rest of your stack."})})}),e.jsx("div",{className:"mt-10 border-t border-zinc-200",children:e.jsx(r,{tiles:H.map(t=>({Icon:t.icon,title:t.title,desc:t.description}))})}),e.jsx("div",{className:"border-t border-zinc-200",children:e.jsx(r,{tiles:$.map(t=>({Icon:t.icon,title:t.title,desc:t.description}))})})]}),e.jsx(N,{intro:"Revenue paths first, then the merchandising and content flows that quietly break conversion:",pills:J}),e.jsx("div",{className:"mx-auto max-w-5xl border-x border-zinc-200",children:e.jsx(p,{})}),e.jsx(f,{})]}));export{me as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.