@rstest/browser 0.11.6 → 0.11.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser-container/container-static/css/index.43daaf6c93.css +1 -0
- package/dist/browser-container/container-static/js/260.3739fe815c.js +194 -0
- package/dist/browser-container/container-static/js/index.c0f87bfb3e.js +1 -0
- package/dist/browser-container/index.html +1 -1
- package/dist/browserRsbuild.d.ts +24 -4
- package/dist/browserV8Coverage.d.ts +15 -0
- package/dist/client/240~1.js +150 -0
- package/dist/{augmentExpect.d.ts → client/client/augmentExpect.d.ts} +1 -1
- package/dist/client/{browserRpc.d.ts → client/browserRpc.d.ts} +1 -1
- package/dist/client/{dispatchTransport.d.ts → client/dispatchTransport.d.ts} +8 -4
- package/dist/client/client/index.d.ts +2 -0
- package/dist/client/client/runIdentity.d.ts +12 -0
- package/dist/client/client/runner.d.ts +4 -0
- package/dist/client/client/snapshot.d.ts +27 -0
- package/dist/client/client/sourceMapSupport.d.ts +36 -0
- package/dist/{browser.js → client/index.js} +3 -102
- package/dist/client/protocol.d.ts +225 -0
- package/dist/client/rpcProtocol.d.ts +138 -0
- package/dist/client/runner.js +675 -0
- package/dist/client/sourceMap/sourceMapLoader.d.ts +25 -0
- package/dist/containerRpc.d.ts +27 -19
- package/dist/headedRunRegistry.d.ts +51 -0
- package/dist/headedScheduler.d.ts +10 -10
- package/dist/headlessScheduler.d.ts +5 -4
- package/dist/headlessTransport.d.ts +4 -2
- package/dist/hostPayloads.d.ts +1 -7
- package/dist/index.js +840 -330
- package/dist/protocol.d.ts +48 -8
- package/dist/providers/index.d.ts +21 -0
- package/dist/providers/playwright/v8Coverage.d.ts +2 -0
- package/dist/rpcProtocol.d.ts +1 -2
- package/dist/schedulerSeam.d.ts +5 -0
- package/dist/sourceMap/sourceMapLoader.d.ts +12 -1
- package/dist/watchRerunPlanner.d.ts +20 -9
- package/dist/watchSignals.d.ts +8 -1
- package/package.json +10 -10
- package/dist/33.js +0 -7
- package/dist/browser-container/container-static/css/index.0521ff95b1.css +0 -1
- package/dist/browser-container/container-static/js/683.4f821ce8f1.js +0 -194
- package/dist/browser-container/container-static/js/index.568aa7cb35.js +0 -1
- package/dist/browser.d.ts +0 -2
- package/src/augmentExpect.ts +0 -62
- package/src/browser.ts +0 -3
- package/src/browserExecutor.ts +0 -222
- package/src/browserRpcRegistry.ts +0 -57
- package/src/browserRsbuild.ts +0 -1927
- package/src/client/api.ts +0 -213
- package/src/client/browserRpc.ts +0 -86
- package/src/client/dispatchTransport.ts +0 -240
- package/src/client/entry.ts +0 -807
- package/src/client/locator.ts +0 -448
- package/src/client/snapshot.ts +0 -113
- package/src/client/sourceMapSupport.ts +0 -159
- package/src/concurrency.ts +0 -65
- package/src/configValidation.ts +0 -263
- package/src/containerRpc.ts +0 -206
- package/src/dispatchCapabilities.ts +0 -177
- package/src/dispatchRouter.ts +0 -82
- package/src/env.d.ts +0 -54
- package/src/headedScheduler.ts +0 -664
- package/src/headedSerialTaskQueue.ts +0 -23
- package/src/headlessScheduler.ts +0 -566
- package/src/headlessTransport.ts +0 -28
- package/src/hostController.ts +0 -1365
- package/src/hostPayloads.ts +0 -62
- package/src/index.ts +0 -51
- package/src/manifest.d.ts +0 -41
- package/src/protocol.ts +0 -225
- package/src/providers/index.ts +0 -126
- package/src/providers/playwright/compileLocator.ts +0 -130
- package/src/providers/playwright/dispatchBrowserRpc.ts +0 -372
- package/src/providers/playwright/expectUtils.ts +0 -57
- package/src/providers/playwright/implementation.ts +0 -35
- package/src/providers/playwright/index.ts +0 -1
- package/src/providers/playwright/runtime.ts +0 -159
- package/src/providers/playwright/textMatcher.ts +0 -10
- package/src/rpcProtocol.ts +0 -218
- package/src/runSession.ts +0 -110
- package/src/schedulerSeam.ts +0 -49
- package/src/sessionRegistry.ts +0 -89
- package/src/sourceMap/sourceMapLoader.ts +0 -96
- package/src/viewportPresets.ts +0 -69
- package/src/watchRerunPlanner.ts +0 -88
- package/src/watchRuntime.ts +0 -83
- package/src/watchSignals.ts +0 -93
- /package/dist/{rslib-runtime.js → 612~0.js} +0 -0
- /package/dist/client/{api.d.ts → client/api.d.ts} +0 -0
- /package/dist/client/{locator.d.ts → client/locator.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(()=>{"use strict";var e,t,s,l,r,o,a={657(e,t,s){var l=s(4558),r=s(6709),o=s(1435),a=s(1308),i=s(1102),n=s(9083);let c=e=>{let{message:t}=e;return(0,l.jsx)("div",{className:"absolute inset-0 z-10 flex items-center justify-center bg-black/[0.02]",children:(0,l.jsx)("span",{className:"text-sm text-(--muted-foreground)",children:t})})};var d=s(3600),p=s(9204),u=s(9823),h=s(3294),f=s(7058);let x=(e,t)=>{if(!t)return e;let s=t.endsWith("/")?t.slice(0,-1):t;if(e.startsWith(s)){let t=e.slice(s.length);return t.startsWith("/")?t.slice(1):t}return e},g=e=>{window.parent?.postMessage({type:"open-in-editor",payload:{file:e}},"*"),fetch(`/__open-in-editor?file=${encodeURIComponent(e)}`).catch(()=>{})};var m=s(9404),j=s(3996),v=s(9782),y=s(6086),_=s(1241);let C={idle:{label:"Idle",color:"var(--accents-5)",icon:(0,l.jsx)(m.A,{size:14,strokeWidth:2.5})},running:{label:"Running",color:"var(--ds-amber-700)",icon:(0,l.jsx)(j.A,{size:14,className:"animate-spin",strokeWidth:2.5})},pass:{label:"Pass",color:"var(--ds-green-700)",icon:(0,l.jsx)(v.A,{size:14,strokeWidth:2.5})},fail:{label:"Fail",color:"var(--ds-red-800)",icon:(0,l.jsx)(y.A,{size:14,strokeWidth:2.5})}},w={...C,skip:{label:"Skip",color:"var(--accents-4)",icon:(0,l.jsx)(_.A,{size:14,strokeWidth:2.5})}};var b=s(6026),k=s(7580),S=s(7936),F=s(7135),N=s(7452),A=s(6513),P=s(4852),M=s(2734);let z={iPhoneSE:{width:375,height:667},iPhoneXR:{width:414,height:896},iPhone12Pro:{width:390,height:844},iPhone14ProMax:{width:430,height:932},Pixel7:{width:412,height:915},SamsungGalaxyS8Plus:{width:360,height:740},SamsungGalaxyS20Ultra:{width:412,height:915},iPadMini:{width:768,height:1024},iPadAir:{width:820,height:1180},iPadPro:{width:1024,height:1366},SurfacePro7:{width:912,height:1368},SurfaceDuo:{width:540,height:720},GalaxyZFold5:{width:344,height:882},AsusZenbookFold:{width:853,height:1280},SamsungGalaxyA51A71:{width:412,height:914},NestHub:{width:1024,height:600},NestHubMax:{width:1280,height:800}},O={iPhoneSE:"iPhone SE",iPhoneXR:"iPhone XR",iPhone12Pro:"iPhone 12 Pro",iPhone14ProMax:"iPhone 14 Pro Max",Pixel7:"Pixel 7",SamsungGalaxyS8Plus:"Samsung Galaxy S8+",SamsungGalaxyS20Ultra:"Samsung Galaxy S20 Ultra",iPadMini:"iPad Mini",iPadAir:"iPad Air",iPadPro:"iPad Pro",SurfacePro7:"Surface Pro 7",SurfaceDuo:"Surface Duo",GalaxyZFold5:"Galaxy Z Fold 5",AsusZenbookFold:"Asus Zenbook Fold",SamsungGalaxyA51A71:"Samsung Galaxy A51/71",NestHub:"Nest Hub",NestHubMax:"Nest Hub Max"},R=["iPhoneSE","iPhoneXR","iPhone12Pro","iPhone14ProMax","Pixel7","SamsungGalaxyS8Plus","SamsungGalaxyS20Ultra","iPadMini","iPadAir","iPadPro","SurfacePro7","SurfaceDuo","GalaxyZFold5","AsusZenbookFold","SamsungGalaxyA51A71","NestHub","NestHubMax"].map(e=>{let t=z[e];return{id:e,label:O[e],width:t.width,height:t.height}}),E=new Set(R.map(e=>e.id)),U=e=>"string"==typeof e&&E.has(e),T=e=>{let t=R.find(t=>t.id===e);if(!t)throw Error(`Unknown device preset: ${e}`);return t},B=(e,t,s)=>Math.min(s,Math.max(t,e)),$=e=>{let{token:t,value:s,onChange:r}=e,[o,a]=(0,i.useState)(!1),n=(0,i.useRef)({width:800,height:600});"responsive"===s.mode&&(n.current={width:s.width,height:s.height});let c="full"===s.mode?"full":"responsive"===s.mode?"responsive":s.preset,u=(0,i.useMemo)(()=>[{value:"full",label:"Full"},{value:"responsive",label:"Responsive"},...R.map(e=>{let t;return{value:e.id,label:(t=T(e.id),`${t.label} (${t.width} x ${t.height})`)}})],[]),h=(0,l.jsxs)("div",{className:"w-[280px]","data-testid":"viewport-popover",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)(b.A,{value:c,options:u,listHeight:280,dropdownStyle:{maxHeight:280,overflowY:"auto"},onChange:e=>{if("full"===e){r({mode:"full"}),a(!1);return}"responsive"===e?r({mode:"responsive",..."responsive"===s.mode?{width:s.width,height:s.height}:n.current}):(r({mode:"preset",preset:e,orientation:"preset"===s.mode&&s.preset===e?s.orientation:"portrait"}),a(!1))},size:"small",className:"flex-1",popupMatchSelectWidth:!1,"data-testid":"viewport-preset-select"}),(0,l.jsx)(d.A,{title:"Rotate",mouseLeaveDelay:0,children:(0,l.jsx)(p.Ay,{type:"text",size:"small",disabled:"full"===s.mode,className:"flex h-7 w-7 items-center justify-center rounded-md p-0 text-(--accents-4) hover:text-foreground hover:bg-(--accents-1) transition-all","data-testid":"viewport-rotate","aria-label":"Rotate viewport",icon:(0,l.jsx)(M.A,{size:14,strokeWidth:2.2}),onClick:()=>{if("full"!==s.mode){if("responsive"===s.mode){let e={mode:"responsive",width:s.height,height:s.width};n.current={width:e.width,height:e.height},r(e);return}r({mode:"preset",preset:s.preset,orientation:"portrait"===s.orientation?"landscape":"portrait"})}}})})]}),"responsive"===s.mode&&(0,l.jsxs)("div",{className:"mt-3 flex items-center gap-2","data-testid":"viewport-inputs",children:[(0,l.jsx)(k.A,{min:1,max:1e4,step:1,controls:!1,value:s.width,onChange:e=>{let t=B(Number(e??s.width),1,1e4);n.current={width:t,height:s.height},r({mode:"responsive",width:t,height:s.height})},size:"small",className:"w-[120px]","data-testid":"viewport-width-input","aria-label":"Viewport width"}),(0,l.jsx)("span",{className:"text-(--accents-4) select-none",children:"x"}),(0,l.jsx)(k.A,{min:1,max:1e4,step:1,controls:!1,value:s.height,onChange:e=>{let t=B(Number(e??s.height),1,1e4);n.current={width:s.width,height:t},r({mode:"responsive",width:s.width,height:t})},size:"small",className:"w-[120px]","data-testid":"viewport-height-input","aria-label":"Viewport height"})]})]});return(0,l.jsx)(S.A,{content:h,trigger:"click",open:o,onOpenChange:a,placement:"bottomRight",children:(0,l.jsxs)(p.Ay,{type:"text",size:"small",className:"flex h-7 items-center gap-2 rounded-md px-2 text-(--accents-6) hover:text-foreground hover:bg-(--accents-1) transition-all","data-testid":"viewport-button","aria-label":"Viewport",children:[(0,l.jsx)("span",{className:"flex h-4 w-4 items-center justify-center text-(--accents-5)",children:(e=>{if("full"===e.mode)return(0,l.jsx)(F.A,{size:14,strokeWidth:2.2});if("responsive"===e.mode)return(0,l.jsx)(N.A,{size:14,strokeWidth:2.2});let t=T(e.preset).label;return t.startsWith("iPad")||t.startsWith("Surface")||t.startsWith("Nest Hub")||t.includes("Fold")?(0,l.jsx)(A.A,{size:14,strokeWidth:2.2}):(0,l.jsx)(P.A,{size:14,strokeWidth:2.2})})(s)}),(0,l.jsx)("span",{className:"text-[12px] font-mono tracking-tight leading-none",style:{color:t.colorTextSecondary},children:"full"===s.mode?"Full":"responsive"===s.mode?`${s.width} x ${s.height}`:T(s.preset).label})]})})},W=e=>{let{token:t,activeFile:s,rootPath:r,status:o,viewport:i,onViewportChange:n}=e,{message:c}=a.A.useApp(),m=o?C[o]:void 0,j=s?x(s,r):"",v=j.split("/"),y=v.pop(),_=v.join("/"),w=async()=>{j&&(await navigator.clipboard.writeText(j),c.success("relative path copied"))},b="pass"===o?"green":"fail"===o?"red":"running"===o?"amber":null;return(0,l.jsxs)("div",{className:"flex h-[48px] items-center justify-between px-4","data-testid":"preview-header",style:{background:t.colorBgContainer,borderBottom:`1px solid ${t.colorBorder}`},children:[(0,l.jsxs)("div",{className:"flex items-center gap-2 overflow-hidden",children:[(0,l.jsx)(u.A,{size:16,strokeWidth:2,className:"shrink-0 text-(--accents-7)"}),(0,l.jsxs)("div",{className:"flex items-center gap-1.5 overflow-hidden",children:[_&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("span",{className:"text-[12px] font-mono tracking-tight text-(--accents-5) truncate max-w-[400px] hover:text-(--accents-6) transition-colors cursor-default",title:_,children:_}),(0,l.jsx)("span",{className:"text-(--accents-3) font-light select-none shrink-0",children:"/"})]}),y?(0,l.jsxs)("div",{className:"flex items-center gap-1.5 shrink-0",children:[(0,l.jsx)("span",{className:"text-[12px] font-mono font-semibold tracking-tight text-foreground",children:y}),s&&(0,l.jsxs)("div",{className:"flex items-center",children:[(0,l.jsx)(d.A,{title:"Copy relative path",mouseLeaveDelay:0,children:(0,l.jsx)(p.Ay,{type:"text",size:"small",className:"flex ml-1 h-5 w-5 items-center justify-center rounded-md p-0 text-(--accents-4) hover:text-foreground hover:bg-(--accents-1) transition-all",style:{color:t.colorTextDescription},"data-testid":"preview-copy-path",icon:(0,l.jsx)(h.A,{size:12,strokeWidth:2.5}),onClick:w})}),(0,l.jsx)(d.A,{title:"Open in Editor",mouseLeaveDelay:0,children:(0,l.jsx)(p.Ay,{type:"text",size:"small",className:"flex h-5 w-5 items-center justify-center rounded-md p-0 text-(--accents-4) hover:text-foreground hover:bg-(--accents-1) transition-all","data-testid":"preview-open-editor",icon:(0,l.jsx)(f.A,{size:12,strokeWidth:2.5}),onClick:()=>g(s),style:{color:t.colorTextDescription}})})]})]}):(0,l.jsx)("span",{className:"text-[13px] tracking-tight text-(--accents-4) shrink-0",children:"Select a test file"})]})]}),(0,l.jsxs)("div",{className:"flex items-center gap-3 shrink-0",children:[i&&n&&(0,l.jsx)($,{token:t,value:i,onChange:n}),m&&b&&(0,l.jsx)("div",{className:"flex items-center rounded-md px-2 py-0.5 text-[10px] font-semibold tracking-wider transition-colors shrink-0",style:{backgroundColor:`var(--ds-${b}-100)`,color:`var(--ds-${b}-900)`,border:`1px solid var(--ds-${b}-300)`},children:m.label.toUpperCase()})]})]})};var I=s(3489);let G=e=>{let{className:t,style:s,direction:r="horizontal",children:o,autoSaveId:a,...n}=e,c=i.Children.toArray(o).filter(e=>i.isValidElement(e)&&e.type===Z),d=i.useCallback(()=>{if(!a)return null;try{let e=localStorage.getItem(a);if(e){let t=JSON.parse(e);if(Array.isArray(t)&&t.length===c.length)return t}}catch{}return null},[a,c.length])(),p=c.map((e,t)=>{let{defaultSize:s,minSize:l,maxSize:r,children:o}=e.props,a=d?.[t]??s;return{defaultSize:a?`${a}%`:void 0,min:l?`${l}%`:void 0,max:r?`${r}%`:void 0,children:o}}),u=i.useCallback(e=>{if(a)try{localStorage.setItem(a,JSON.stringify(e))}catch{}},[a]);return(0,l.jsx)(I.A,{layout:"horizontal"===r?"horizontal":"vertical",className:t,style:{height:"100%",width:"100%",padding:0,margin:0,...s},onResizeEnd:u,...n,children:p.map(e=>(0,l.jsx)(I.A.Panel,{...e,children:e.children},`panel-${e.defaultSize}-${e.min}-${e.max}`))})},Z=e=>{let{children:t}=e;return(0,l.jsx)(l.Fragment,{children:t})};var D=s(7141),L=s(2377),q=s(7706),H=e=>(0,l.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 217 200",...e,children:[(0,l.jsx)("mask",{id:"rstest-logo_svg__a",width:217,height:200,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"luminance"},children:(0,l.jsx)("path",{fill:"#fff",d:"M216.88 0H.88v200h216z"})}),(0,l.jsxs)("g",{mask:"url(#rstest-logo_svg__a)",children:[(0,l.jsx)("path",{fill:"#83EAD0",d:"M73.92 73.24a32.96 32.96 0 1 0-29.45-5.31l8.27-10.89a19.3 19.3 0 1 1 17.24 3.12z"}),(0,l.jsx)("path",{fill:"#008564",d:"M73.95 73.23a32.96 32.96 0 1 0-29.54-5.35l3.49-4.56a27.22 27.22 0 1 1 24.39 4.42l1.66 5.5Z"}),(0,l.jsx)("path",{fill:"#FFD95F",d:"M72.76.86A42.07 42.07 0 0 0 32.25 14.8l4.42 3.76a36.25 36.25 0 0 1 34.92-12zm19.41 9.72a42.1 42.1 0 0 1 10.77 14.92l-5.34 2.3A36.25 36.25 0 0 0 74.42 7.25l1.63-5.58a42.1 42.1 0 0 1 16.12 8.9Zm12.03 18.23-5.52 1.83a36.24 36.24 0 0 1 .18 22.28l5.55 1.74a42.06 42.06 0 0 0-.2-25.85ZM92.83 72.95a41.9 41.9 0 0 0 10.42-15.05l-5.39-2.19c-2 4.93-5.07 9.36-8.97 12.97zM22.25 40.2a42.07 42.07 0 0 1 8.59-23.66l4.62 3.53a36.25 36.25 0 0 0-1.84 41.34l-4.92 3.1a42.07 42.07 0 0 1-6.45-24.31"}),(0,l.jsx)("path",{fill:"#83EAD0",d:"M52.22 68.02a6.24 6.24 0 0 1 7.25-6.04l2.13.35a6.24 6.24 0 0 1 4.95 8.01L63 81.8l-6.83 7.06-4.2-8.87.25-11.96Z"}),(0,l.jsx)("path",{fill:"#008564",d:"M55.4 69.45a3.93 3.93 0 1 1 7.67 1.27l-2.38 7.46-3.57 4.13-1.87-5.02z"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__b)",d:"M59.03 71.8c1.17.2 2.28-.62 2.48-1.8.2-1.2-.6-2.32-1.78-2.51a2.17 2.17 0 0 0-2.48 1.8c-.2 1.2.6 2.32 1.78 2.51"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__c)",d:"M76.7 42.14c0 6.5-5.36 11.78-11.98 11.78a11.89 11.89 0 0 1-11.99-11.78c0-6.51 5.37-11.8 11.99-11.8s11.99 5.29 11.99 11.8Z"}),(0,l.jsx)("path",{fill:"#564341",fillRule:"evenodd",d:"M75.08 71.02a31.21 31.21 0 1 0-30.91-5.58l6.16-8.12a21.04 21.04 0 1 1 21.8 3.94zm.5 1.67a32.96 32.96 0 1 0-31.11-4.77l8.27-10.88a19.3 19.3 0 1 1 17.24 3.12l3.94 13.08c.56-.17 1.12-.35 1.66-.55",clipRule:"evenodd"}),(0,l.jsx)("path",{fill:"#564341",fillRule:"evenodd",d:"M75.1 71a31.21 31.21 0 1 0-30.93-5.56l1.36-1.8a28.97 28.97 0 1 1 28.92 5.21l.65 2.16Zm.5 1.68a32.96 32.96 0 1 0-31.2-4.8c.12.04.13.1.07.04l3.48-4.57a27.22 27.22 0 1 1 24.32 4.4l1.66 5.49c.56-.17 1.13-.36 1.67-.56",clipRule:"evenodd"}),(0,l.jsx)("path",{fill:"#564341",fillRule:"evenodd",d:"M104.2 28.83v-.02l-5.52 1.83a36.25 36.25 0 0 1 .18 22.28l5.55 1.74c.17-.55.34-1.11.49-1.68l.01-.05a42.07 42.07 0 0 0-.18-22.4l-.02-.05c-.15-.55-.32-1.1-.5-1.65Zm-.74 3.97a40.3 40.3 0 0 1-.27 19.6l-2.1-.67a38.05 38.05 0 0 0-.17-19.93l2.1-.7c.16.57.3 1.13.44 1.7m-.21 25.1a41.7 41.7 0 0 1-10.42 15.05l-3.94-4.27a36.25 36.25 0 0 0 8.97-12.97zm-2.32.95-2.15-.88a38 38 0 0 1-7.45 10.78l1.57 1.7a40.3 40.3 0 0 0 8.03-11.6m-.32-34.25A40.32 40.32 0 0 0 77.22 3.88l-.64 2.23a38 38 0 0 1 21.9 19.4zm1.61-.69c.25.53.5 1.06.72 1.6l-5.34 2.28A36.25 36.25 0 0 0 74.42 7.26l1.63-5.58a42.12 42.12 0 0 1 26.17 22.23M70.68 2.26a40.32 40.32 0 0 0-35.94 12.36l1.77 1.5A38 38 0 0 1 70.2 4.54l.47-2.27Zm.36-1.71a42.07 42.07 0 0 0-38.8 14.24l4.43 3.77a36.25 36.25 0 0 1 34.91-12l1.18-5.7a42 42 0 0 0-1.72-.31M31.2 19.02a40.32 40.32 0 0 0-1.92 43.07l1.96-1.24a38 38 0 0 1 1.8-40.43zm-1.4-1.07a42.06 42.06 0 0 0-1.1 46.57l4.92-3.1v-.01a36.25 36.25 0 0 1 1.84-41.34l-4.62-3.53c-.36.47-.7.94-1.04 1.41m34.52 64.62-8.58 8.88-5.28-11.15.25-12.31a7.74 7.74 0 0 1 9-7.49l2.13.35a7.74 7.74 0 0 1 6.14 9.94zm-12.35-2.59.24-11.96a6.24 6.24 0 0 1 7.25-6.04l2.13.35a6.24 6.24 0 0 1 4.95 8.01L63 81.8l-6.82 7.06-4.2-8.87Z",clipRule:"evenodd"}),(0,l.jsx)("path",{fill:"#564341",fillRule:"evenodd",d:"m62.04 78.97-5.44 6.3-2.86-7.69.15-8.15a5.44 5.44 0 1 1 10.63 1.76zm-6.8-1.64.15-7.87a3.94 3.94 0 1 1 7.7 1.28l-2.39 7.48-3.58 4.15zm9.48-24.9a10.4 10.4 0 0 0 10.49-10.3 10.4 10.4 0 0 0-10.5-10.28 10.39 10.39 0 0 0-10.48 10.29c0 5.66 4.67 10.29 10.49 10.29m0 1.5c6.62 0 11.98-5.28 11.98-11.8 0-6.5-5.36-11.78-11.98-11.78a11.89 11.89 0 0 0-11.99 11.79 11.9 11.9 0 0 0 11.99 11.78Z",clipRule:"evenodd"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__d)",d:"M64.64 35.65c.76.78 1.03 2.63-.88 4.55-1.39 1.4-4.08 3-5.92.98-1.34-1.48.05-3.77 1.37-4.94 1.02-.9 3.9-2.18 5.43-.6Z"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__e)",d:"M68.36 39.73c.38.38.51 1.3-.43 2.25-.69.69-2.02 1.49-2.94.48-.66-.73.03-1.86.68-2.44.5-.45 1.93-1.08 2.7-.3Z"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__f)",fillOpacity:.3,d:"M69.53 51.24c-10.4.76-15.02-10.8-10.61-17.77 0 0-1.55 1-1.73 1.24-2.08 2.64-3.21 4.86-2.87 8.43a10.3 10.3 0 0 0 2.25 5.4c2.7 3.24 6.57 4.56 10.92 3.5.67-.18 2.04-.8 2.04-.8"}),(0,l.jsx)("path",{fill:"#83EAD0",d:"M28.9 154.31a374 374 0 0 0-15.29 7.14l-3.06 3.47c-1.15 3.18-.95 8.15-1.44 11.51l1.42 3.06 1.82-.68s.74-2.83 5.46-7.57l4.3-3.69s15.43-9.16 17.61-10.2c-3.1-.86-7.73-2.14-10.82-3.04"}),(0,l.jsx)("path",{fill:"#008564",d:"M39.61 157c-6.49 5.47-15.16 8.34-21.26 14.32l-1.5 2.2c10.54-6.52 21.34 4.03 30.92 6.9 2.3.69.22-.59 0-2.16-.1-.65.33-1.75 1.27-3.33l.04-2.39-6.59-1.7 1.15-5.96 3.34-2.4c.66-1.13 3.9-2.84 4.67-3.92l-7.07-1.67-4.97.1Zm133.17-11.3c3.63 5.72 9.33 13.35 25.06 20.1l1.5 2.2c-10.55-6.52-25.58 7.75-35.16 10.62-2.3.68-.22-.6 0-2.17.1-.64-.33-1.75-1.27-3.33l-.04-2.38 6.59-1.7-1.15-5.97-3.34-2.4c-.66-1.13-3.9-2.83-4.67-3.91l7.07-1.68z"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__g)",d:"M172.71 156.16v-7.77l-.34-6.04-1.44-5.73-1.37-3.87-2.09-3.49-1.67-3.07-1.57 3.85-2.85 4.73-2.2 2.8-2.87 2.3-5.33 2.92h-5.06l-4.84-2.3-4.29-2.39-3.07-3.94-.94-3-1.72-10.17-.73 2.1-2.64 4.94-3.1 4.42-4.26 3.8-3.44 1.86-4.64 1.26-3.43-.14-9.46-4.23-4.67-5.74-1.55-3.07-3.81 7.7-4.37 5.48-6.8 7.18-6.7 4.28-5.83 4.38c.26 2.55 1.05 4.36 2.38 5.43 3.42 2.7 5.62 7.4 8.79 9.74 4.04 2.99 7.79 4.42 11.44 6.7 3.44 2.17 4.25 6.16 7.26 7.83 11.29 6.27 21.75 7.05 24.44 6.63 3.2.63 7.57-.12 10.79-.08 2.24-.51 7.57-1 10.35-2.18 4.4-1.86 11.46-4.35 15.7-7.1 5-3.27 8.24-8.14 9.47-9.58 1.22-1.45 2.42-4.26 3.31-5.85 1.02-1.99 1.53-4 2.23-6.12l.92-4.48Z"}),(0,l.jsx)("path",{fill:"#564341",fillRule:"evenodd",d:"m172.7 148.22.14-.25c3.45 5.12 8.84 11.38 20.65 17.15-4.17-.08-8.55 1.58-12.62 3.6a142 142 0 0 0-7.03 3.83l-2.19 1.24a54 54 0 0 1-6.36 3.18l.07-.35c.1-.63-.08-1.3-.32-1.91a9 9 0 0 0-.15-.38 52 52 0 0 1-2.1 2.53l-.06.1-.24.4-.05.06-.22.35c-.06.1-.22.35-.27.65a1.3 1.3 0 0 0 .8 1.48c.4.15.8.09.96.06.23-.04.5-.1.81-.2 2.54-.76 5.38-2.25 8.3-3.89l2.25-1.28c2.24-1.28 4.54-2.59 6.86-3.74 6.28-3.11 12.11-4.73 16.78-1.84a1.2 1.2 0 0 0 1.61-1.69l-1.5-2.2a1.2 1.2 0 0 0-.52-.41c-15.46-6.64-20.99-14.1-24.51-19.65a1.2 1.2 0 0 0-1.3-.52zm-5.24 22.56 2.3-.6c.6-.15.98-.75.87-1.37l-.6-3.06a15 15 0 0 1-.47 1c-.27.48-.56 1.07-.88 1.7-.38.76-.8 1.58-1.22 2.33m-3.23 8.27v-.01z",clipRule:"evenodd"}),(0,l.jsx)("path",{fill:"#000",fillOpacity:.31,d:"M68.84 159.92c1.1 4.42 16.48 18.44 42.35 20.63-19.46-2.44-37.89-28.6-37.89-28.6s-.95.6-4.45 2.55v5.42Z"}),(0,l.jsx)("path",{fill:"#017356",d:"M112.13 162.39a2.05 2.05 0 0 1 1.54-2.05l12.23-3.1c.48-.12.97-.06 1.41.15l10.27 5.06c.8.39 1.25 1.25 1.12 2.13l-2.2 14.93c-.09.6-.44 1.14-.97 1.46l-10.08 6.07c-.73.44-1.67.38-2.34-.16l-9.78-7.94a2.04 2.04 0 0 1-.75-1.53z"}),(0,l.jsx)("path",{fill:"#05B78B",fillRule:"evenodd",d:"M68.91 163.03a80.3 80.3 0 0 0 15.4 11.36c8.83 4.99 19.82 7.3 38.78 8.73 22.78-.36 39.46-5.38 39.46-5.38 5.82-7.8 8.1-12.17 9.92-22.27 0 0-17.7 8.2-45.75 6.02-18.44-.73-36.02-5.44-45.74-8.51a49.8 49.8 0 0 1-12.07 10.05",clipRule:"evenodd"}),(0,l.jsx)("path",{fill:"#000",fillOpacity:.31,d:"M70 160.9c1.1 4.4 16.43 18.39 42.22 20.57-19.4-2.43-37.78-28.5-37.78-28.5s-.95.59-4.44 2.53z"}),(0,l.jsx)("path",{fill:"#017356",d:"M111.2 161.53a2.2 2.2 0 0 1 1.65-2.2l13.12-3.32a2.2 2.2 0 0 1 1.51.16l11.02 5.43a2.2 2.2 0 0 1 1.2 2.29l-2.35 16.02a2.2 2.2 0 0 1-1.04 1.56l-10.82 6.51c-.79.48-1.8.4-2.52-.17l-10.49-8.52c-.5-.4-.79-1-.8-1.64l-.49-16.12Z"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__h)",d:"M123.97 179.83c-3.87-5.88-6.1-6.5-7.52-6.81 3.55-2.78 5.63-2.29 7.52 2.24l.87-1.7c2.12-4 4.02-6.24 8.4-8.67-.87 2.56-.73 4.9.83 6.57-2.66 1-5.8 2.5-10.1 8.37"}),(0,l.jsx)("path",{fill:"#F28773",d:"M80.32 147.5c5.96 8.9 28.07 3.65 28.07-7.49 0 0-6.29-1.38-9-4.02l-6.08-7.28c-3.35 6.5-13 13.93-13.99 17.15 0 0 .64 1.02 1 1.65Zm70.66-4.02c-.4 9.02 13.88 13.23 20.73 9.03.4-8.47-.68-17.47-5.89-24.28-1.68 1.88-1.85 5.97-6.2 9.87a29.7 29.7 0 0 1-8.63 5.38z"}),(0,l.jsx)("path",{fill:"#564341",d:"M122.38 139.37c1.36 4.7 8.53 5.9 13.61 6.75-4.3 1.43-9.18.74-13.13-1.36-2.21-.95-4.15-4.61-.48-5.4Z"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__i)",d:"M65.22 157.8c-1-1.64-15.16 1.05-21.64 8.88-3.15 3.32 1.24 5.06 4.44 4.6 9.46-2.4 8.16-8.1 22.07-6.55.17.03-2.44-2.94-4.87-6.93"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__j)",d:"M71.6 166.28c-6.53-2.48-16.61.15-21.74 6.93-1.81 2.4-4.61 9.48-1.47 8.78 7.9-1.75 13.61-1.72 14.62-2.66 3.7-3.4 6.31-5.86 15.83-6.2-1.14-1.54-4.8-5.94-7.23-6.86Z"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__k)",d:"M84.08 174.67a18.79 18.79 0 0 0-19.58 3.82c-11.97 10.84-10.34 17.5-10.34 17.5l1.26 2.13c3.27 1.28 17.39-2.76 21.3-3.88 7.43-2.13 15.4-2.9 22.78-5.25 0 0-13.12-12.67-15.42-14.32"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__l)",d:"M143.67 189.78c9.48.74 18.7 3.75 27.55 7.08l2.2.74 1.79-.33c2.46-3.95-1.45-8.02-3.94-10.9-2.33-2.43-6.21-3.52-9.44-4.15-6.76-.62-12.4 4.73-18.16 7.56"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__m)",d:"M157.31 182.83c5.7-1.7 12 .25 16.17 4.93 0 0 3.25 2 4.18 1.41.88-.56-.16-4.49-.65-5.4-2.9-5.55-5.22-8.96-10.95-10.58-2.84 3.17-5.58 6.72-8.75 9.64"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__n)",d:"M167.27 172.82c7.98 2.53 5.79 5.38 13.07 7.08.45.1.5-1.96.5-2.42 0-2.23-6.15-7.43-9.5-9.6-1.35-.88-4.69 4.74-4.07 4.94"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__o)",d:"M136.67 81.29c.4 2.66-.42 10.31-.42 10.31 22.45-5.9 53.1-39.19 7.76-32.78 4.78-6.94 14.54-10.69 18.2-18.66l-.2-.97c-20.3.97-40.66 11.47-53.22 27.59l-1 2.95 1.36 3.4c9.24 2.84 19.3 2.02 28.91 2.79 0 0-1.65 4.58-1.39 5.37"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__p)",d:"M132.1 117.6c-3.97 13.3 10.74 16.22 20.74 11.36 22.45-17.85 16.44-59.46-17.15-34.69-1.9 3.05-1.41 11.17-1.5 11.57-.54 2.93-1.9 11.12-2.08 11.75h-.01Z"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__q)",d:"M94.39 120.3c.85 6.23 12.8 7.5 19.02 4.75 14.57-4.88 18.95-33.25 13.14-41.7-.52-.77-7.78-1.82-10.73-2.1-8.25-.8-18.04 6.9-22.28 17.79-1.12 2.87.42 6.53.72 9.49.4 4.12-.28 8.78.13 11.78Z"}),(0,l.jsx)("path",{fill:"#fff",d:"M94.08 122.94s22.15 15.38 33.05-13.76c2.78-7.44 1.53-18.55 1.62-23.51 9.65 4.67 2.38 31.26 1.7 34.45-2.42 11.23-13.44 20.01-22.66 17.57-13.87-3.66-13.71-14.75-13.71-14.75m38.04 5.27 1.92.71c6.02 4.51 14.67 2.92 20.55-1.04 8.55-6.94 9.33-16.27 12.6-25.86l.6.65c1.32 9.91-1.07 20.07-4.59 29.32-7.78 15.6-28.37 14.27-31.08-3.78"}),(0,l.jsx)("path",{fill:"#fff",d:"M136.56 105.93c-1.47 3.5-2 7.9-.96 11.57 2.46 5.7 9.27 6.2 13.2 1.7 11.32-12.12-2.26-32.58-12.24-13.28zm-19.58-.1c2.13-24.86-23.86-11.33-17.29 6.6 5.64 9.03 15.3.88 17.29-6.6"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__r)",d:"M170.79 171.1a8.5 8.5 0 0 0 1.33 3.15l-2.38-1.65-1.63-.79 2.1-3.47.86.43s-.48 1.03-.28 2.33"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__s)",d:"M165.81 179.54c.67 1.59 2.86 3.45 2.86 3.45l-5.51-1.66-2.74-.26 4.77-5.32s-.08 2.15.62 3.8Z"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__t)",d:"M62.32 196.64s15.4-4.6 21.6-10.78c4.23-4.24.76-9.57 1.43-9.28 4.19 1.88 5.47 4.67 7.96 7.7 1.14 1.39 6.08 4.64 6.08 4.64s-8.24 1.14-11.63 2.2c-6.07 1.86-25.43 5.52-25.43 5.52z"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__u)",d:"M157.51 185.55c.66 3.49 1.5 4.44 8.02 7.74.22.12-3.84-1.25-10.14-2.83-2.13-.52-8.48-1.56-8.48-1.56s4.6-1.82 5.77-2.59a49 49 0 0 1 5.24-2.56s-.47 1.46-.4 1.79Z"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__v)",d:"M62.23 178.48c-.77.23-3.5.51-6.15 1.33-1.2.37-3.07.9-4.42 1.26-.62.18-2.34.37-2.9-.08-.17-.14-.5-.8-.3-.85 7.4-1.58 11.91-3.6 15.2-5.59 5.65-3.4 6.66-6.08 7.13-8.07.2-.85 2.25 1.08 2.96 1.82l3.72 3.87s-5.35 1.02-6.99 1.49c-3.65 1.05-7.2 4.5-8.25 4.82"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__w)",d:"M42.94 170.3c6.86-2.72 13.67-5.07 20.98-12.38.49-.49 1.9.68 2.11 1.16.98 2.33 2.78 4.9 1.6 4.78-7.23-.79-11.68 2.23-14.9 4.7-2.31 1.77-10.43 1.98-9.79 1.73Z"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__x)",d:"M171.8 139.07c.38 2.12.38 8.08 1.17 8.53 13.73 7.8 33.88 7.11 37.62-10.34l2.04-.3 1.84-2.07a100 100 0 0 0 1.38-10.05l-1.1-4.87-2.13-4.35-5.48-6.24-6.09-3.52-6.46-1.92-7.76-.73-6.04.48-6.93 1.7c-1.1.63-4.25 2.42-5.14 3.34-.36 2-1.19 6.04-1.67 8-.21 1.36-.21 4.22-.87 5.68l-.16 2.94.84 3.49c1.87 3.68 4.04 6.05 4.93 10.23Z"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__y)",d:"M177.88 150.2c-9.5-21.46 1.4-42.72 25.92-42.38-5.68-3.69-10.39-4.22-16.98-4.6l-3.34.52-2.4-.2c-4.06 1.13-9.34 2.3-12.4 5.39-.14 1.89-1.17 6.13-1.67 8-.5 1.38-2.08 5.47-2.04 6.93l2.43 5.66c1.73 3.31 2.61 4.63 3.43 8.33l1.53 5.7.76 4.04 4.76 2.62Z"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__z)",d:"M185.74 122.34c.48-.85.13-2.78-1.28-3.66-1.62-1-3.9-.85-4.86 1.2-.75 1.58.33 3.17 1.88 4 1.56.8 3.4-.03 4.26-1.54"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__A)",d:"M205.68 121.56c-1.3 2.16-5.12 3.8-9.8 2.34-5.42-1.71-11.24-7.04-6.8-13.03 1.94-2.64 7.38-2.56 11.22-.65 2.8 1.39 8.44 6.23 5.38 11.34"}),(0,l.jsx)("path",{fill:"#ED8870",d:"M172.8 126.74c2.45 4.42 3.92 7.1 11.59 7.1 2.56 0 3.1 3.94 8.12 8.06 2.45 2.03 7.27 1.97 10.1.26 1.7-1 2.31-.6 2.83-.31 1.19.68 1.41.43 2.97.32 0 0 1.85-2.58 1.13-4.38-2.25-1.46-4.17-2.64-6.95-2.57l-1.63 1.53-1.23 1.92-1.49.94-2.2-.2a29.8 29.8 0 0 1-5.54-6.32c-3.32-3.36-6.72-2.61-10.94-2.07-2.02-1.26-4.62-3.2-6.75-4.28Z"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__B)",d:"M56.58 166.4c20.17-5.73 33.65-22.9 37.67-43.13l.04-4.02.76-3.06c-.44-2.86-.2-7.17-.43-10.04l2.34-.98 2-.42 1.65-1.14c.96-2.51.83-2.34.64-4.98-16.16-32.32-68.31-39.41-88.72-7.79-21.22 29.92-2.34 81.94 38.41 77.08z"}),(0,l.jsx)("path",{fill:"#F28773",d:"M40.15 150.48c1.25-6.58 35.5-10.73 38.95-21.92 1.5-11.25 5.6-12.5 15.35-13.51l.05-5.67-1.53-1.37a80 80 0 0 1-11.37 2.42c-2.29.08-5.82.12-8.04.67l-.8 3.3c1.1 2.29 2.23 10.52 2.23 10.52a40 40 0 0 1-.75 4.58c-10.42 8.07-24.77 8.63-36.23 14.88l-.66 1.97z"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__C)",d:"M65.09 165.25c-41.14 3.63-60.45-49.7-43.02-82.9 0 0-6.12 4.77-6.86 5.91-8.19 12.56-12.58 21.96-11.24 39l2.3 11.83c1.33 2.84 3.9 8 3.9 8 6.49 16.45 26.66 26.93 43.9 21.87l4.18-.8 6.84-2.9Z"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__D)",d:"M58.43 113.47c2.7 3.22 1.26 7.31-1.91 11.23-3.56 4.4-9.84 4.83-13.15 1.7-2.51-2.37-3.24-7.49 2.47-12.35 4.83-4.1 10.31-3.31 12.59-.58"}),(0,l.jsx)("path",{fill:"url(#rstest-logo_svg__E)",d:"M48.7 90.14c3.45 3.56 4.68 11.95-4 20.65-6.3 6.3-18.49 13.63-26.85 4.43-6.09-6.7.22-17.1 6.22-22.4 4.63-4.1 17.65-9.9 24.63-2.68"}),(0,l.jsx)("path",{fill:"#564341",fillRule:"evenodd",d:"M102.93 86.73c.45-1.04.9-2.32 1.24-4.04a17.1 17.1 0 0 1 6.46-2.74c10.83-1.93 19.96 1.8 23.65 9.32.29-1.72.56-3.82.78-5.98l.03-.24.02-.24.03-.24.05-.53c.13-1.4.13-2.7-.05-4.1-.03-.15-.16-.35-.4-.6l-.87-.07h-.09c-.35-.04-.73-.07-1.39-.1h-.23c-7.73-.32-11.73-.56-15.15-1l-.25-.04-.12-.01-.26-.04-.6-.08c-5.17-.79-8.17-2.05-9.12-4.46-.8-2.05-.03-4.4 1.8-7.06a36.2 36.2 0 0 1 4.48-5.15c3.01-3 8.52-7.28 14.25-10.94 7.28-4.64 14.41-8 20.65-9.4 8.06-1.82 14.65-2.17 15.9.36.74 1.46-.11 3.02-2.09 5.23a64 64 0 0 1-5.85 5.56c-1.75 1.52-3.53 3-5.35 4.46l-1.21 1-.09.06-.08.07-.04.03-.23.17-1 .83-.03.02.23-.02c2.44-.3 4.9-.44 7.35-.41h.32c3.36.11 6.19.66 8.44 1.81a8.72 8.72 0 0 1 4.94 6.9c.8 5.91-6.2 14.08-15.9 20.05 3.4.08 6.73.98 9.06 2.81 2.95 2.3 5.19 5.4 6.44 8.92.99 2.8 1.5 5.77 1.48 8.74 9.8-5.22 22.9-5.04 32.88.24 11.4 6.03 16.22 17.12 11.28 30.06a3.6 3.6 0 0 1-3.06 2.47c.03.13.04.27.05.41a6.8 6.8 0 0 1-.96 3.47 26.3 26.3 0 0 1-4.2 5.5c-6.46 6.84-18.4 8.3-27.44 3.85l-.85-.42-.12-.06-.06-.03-.08-.03-.07-.04-.9-.43c-.8-.4-1.5-.75-2.13-1.1.06 5.22-.9 10.4-2.8 15.28l-.13.32-.09.25-.2.57c1.47.65 2.89 1.4 4.24 2.26a17.94 17.94 0 0 1 6.67 7.76c.8 1.87.97 3.45-.02 4.65-.88 1.07-2.3 1.25-4.03.9a24 24 0 0 1 1.83 4.23c.63 2.11.46 3.81-.98 4.88-.53.4-1.3.48-2.18.35 1.5 3.29 1.4 6.51-1.03 7.72-1.32.65-2.88.44-5.37-.43-.46-.15-1.66-.62-2.97-1.13l-.15-.05-.26-.1-.5-.19-.06-.02-.15-.06-3.06-1.18a59.4 59.4 0 0 0-7.96-2.34l-1.55-.34-1.77-.36a55 55 0 0 0-7.72-1.06c-1.63-.1-3.13-.07-4.48.08-.2.03-.4.01-.58-.04a70 70 0 0 1-18 1.68c-6.3-.22-9.7-.47-13.28-1.15-.99-.18-1.98-.4-2.95-.66-3.19-.7-11.59.42-16.93 2.1-1.43.45-2.88.84-4.34 1.17l-6.1 1.33-.34.08-.1.02-.48.1-.2.05-.2.04c-2.14.47-4.2.94-5.3 1.2l-2.68.7-1.15.32-1.27.34c-1.05.28-2.1.52-3.17.74-3.86.77-6.6.76-8.36-.55-1.42-1.06-1.93-2.76-1.72-4.9.17-1.65.77-3.63 1.77-5.98.76-1.77 2.42-4.14 4.3-6.31l.07-.1-.08.02c-.95.25-1.9.52-2.83.8l-.28.09-.11.02-2.02.58-.03.02h-.02l-.14.03-.04.02-.15.03-.3.09-.17.03-.25.06c-1.65.4-2.78.5-3.86.17a3.6 3.6 0 0 1-2.43-2.55 12 12 0 0 1-1.15-.34c-3.32-1.13-6.37-2.77-11.22-5.8-1.29-.83-5.44-2.05-7.04-2.25-3.1-.37-8.67 1.13-11.04 2.75-.66.87-1.24 1.8-1.74 2.77l-.06.12-.24.48-.07.14-.07.15c-.28.58-.55 1.13-.64 1.27-.38.64-.88 1.03-1.58 1.06-.74.03-1.28-.4-1.66-1.07a7.2 7.2 0 0 1-.66-1.76 25 25 0 0 1-.62-4.96c-.16-4.37.44-8.29 1.87-10.14a16.6 16.6 0 0 1 5.49-4.37c.56.53 1.14 1.05 1.73 1.56-2.52 1.28-4.28 2.6-5.49 4.15-1.02 1.31-1.56 4.84-1.41 8.71.06 1.75.26 3.36.55 4.53l.17.57.02.06.02-.05.4-.85.06-.12.49-.94a23.4 23.4 0 0 1 3.4-4.66c1.99-2.14 5.08-4.51 8.69-6.8.77.39 1.55.75 2.36 1.1a60 60 0 0 0-7.18 5.05c2.58-.75 5.43-1.16 7.48-.91 1.87.22 6.32 1.54 7.94 2.55 4.71 2.96 7.65 4.53 10.76 5.6l.27.1c.31-1.76 1.53-4.28 2.76-6.18l-.86.19c-3.1.6-5.4.33-6.59-1.47a3.5 3.5 0 0 1-.59-1.9c.96.05 1.93.06 2.93.05 0 .1.04.19.09.26.29.45 1.6.6 3.62.2a26 26 0 0 0 4.18-1.17l.6-.22.54-.48a69.6 69.6 0 0 0 11.36-4.43 28 28 0 0 1 3.9 0 10.4 10.4 0 0 1-1.04-1.5c.84-.45 1.67-.93 2.5-1.43.51.88 1.2 1.65 2.06 2.24.88.6 1.71 1.27 2.5 1.99l.75.71s1.13 1.12 1.68 1.7l.07.07.06.06.06.06.05.06.39.4a78 78 0 0 0 8.08 5.27c6.58 3.71 14.43 5.93 26.3 7.4a4.7 4.7 0 0 1-1.34-3.14l-.45-15.02c-.01-.47.05-.92.16-1.36A203 203 0 0 1 80 154.06c.66-.7 1.3-1.44 1.9-2.19a200 200 0 0 0 29.32 6.8 4.7 4.7 0 0 1 1.8-.9l12.23-3.1a4.7 4.7 0 0 1 3.24.34l10.27 5.05c.25.12.48.26.7.42 8.19-.23 15.07-1.3 20.36-2.48a81 81 0 0 0 9-2.54c1.03-.36 1.81-.66 2.33-.87l.11-.05a38.95 38.95 0 0 0-5.33-25.05 32.9 32.9 0 0 1-4.67 7.84c-3.6 4.38-8 7.04-13.2 7.23-4.63.17-11.15-3.08-14.16-7.6-1.88-2.8-2.77-5.36-3.6-10.26a29.6 29.6 0 0 1-6.93 8.96l-.14.13-.14.12c-5.32 4.74-12.54 5.78-19.12 3.26l-.2-.08a18.97 18.97 0 0 1-10.27-9.32c2.24-7.16 3.26-13.43 4.39-20.41l.79-4.82s.98-.38 1.75-.94c-1.37 6.08 1.22 10.67 5.23 11.45 3.76.74 8.22-3.04 9.75-9.46 1.47-6.09-.45-11.27-4.4-12.29-3.58-.91-7.27 1.6-9.45 6.77-.06-.98-.21-2.1-.37-3.21a35 35 0 0 1-.4-3.96c.25-.06.4-.12.53-.2l-.02.03.08-.06c2.06-1.32 2.5-3.28 1.55-5.94m60 92.26v.02zm-.04.04.03-.01h.01l.42-.13.27-.35 1.05-1.43c.77-.9 1.5-1.81 2.17-2.77l.05-.09a19.45 19.45 0 0 1 6.17 4.68 16.5 16.5 0 0 1 2.21 3.35c.77 1.35 1.4 2.77 1.9 4.24l.02.1c.22.76.24 1.22.16 1.45v.01a5.4 5.4 0 0 1-1.1-.32 12.2 12.2 0 0 1-3.06-1.83 16 16 0 0 0-1.69-1.4c-3.62-2.6-7.1-3.78-10.42-3.8.62-.55 1.22-1.11 1.8-1.7Zm7.16-18.56a39 39 0 0 1-1.22 3.55l-.01.05-.01.03a33 33 0 0 1-7.78 12.69l-1.76.45c-1.9.47-4.67 1.1-8.15 1.75-3.43.63-7.55 1.28-12.2 1.79.1-.28.17-.58.22-.88l2.2-14.93c.1-.65.05-1.29-.1-1.9 7.63-.32 14.1-1.34 19.16-2.48a84 84 0 0 0 10.3-2.98 62 62 0 0 1-.66 2.86Zm-13.4 20.11a42.6 42.6 0 0 1-6.66 4.02c-8.31 4.05-18.5 5.95-28.73 5.61-6.16-.22-9.43-.47-12.83-1.1a28.1 28.1 0 0 1-10.94-4.34 15.5 15.5 0 0 1-3.87-3.78c-.5-.64-.92-1.16-1.29-1.6 6.06 2.04 13.3 3.38 22.7 4.35l6.4 5.2a4.7 4.7 0 0 0 5.4.38l9.26-5.58a173 173 0 0 0 20.56-3.16m-85.12-13.45q1.08.9 2.34 1.89l.34.34.1.12.1.09.04.06.77.79c.69.71 1.2 1.22 1.7 1.7-1.89.15-3.91.42-5.42.8-2.26.55-5.94 2.53-8.44 4.5l-.6.5c-1.09.11-2.54.43-4.37.9-.97.26-1.93.53-2.9.81l-.21.06-.1.03-.1.03-.1.02-.2.06-.1.03-1.72.5-.34.09-.67.17c-1.17.28-1.9.34-2.34.2-.35-.1-.55-.4-.64-1.3-.05-.52.54-1.98 1.28-3.43l.06-.1.06-.12.03-.06.13-.25a18.6 18.6 0 0 1 3.76-4.94 16.9 16.9 0 0 1 4.62-3c3.08-1.39 9.34-1.57 12.92-.49m5.26 7.9-.13.02h-.07l-.15.02h-.08l-.15.03-.38.04-.3.03c-1.12.13-2.23.31-3.33.56-1.82.45-5.15 2.24-7.35 3.98-2.84 2.22-6.68 6.83-7.81 9.48-1.76 4.12-2.01 6.66-.98 7.42.85.63 3 .64 6.05.03 1.43-.29 2.85-.63 4.26-1.04l1.14-.31c2.64-.72 5.3-1.36 7.99-1.9l.34-.1.33-.06.17-.04.34-.07.72-.16.17-.04 4.42-.97h.02l1-.22c1.7-.4 3.04-.75 4.12-1.1a59 59 0 0 1 10.8-2.18 26 26 0 0 1-3.47-2.34q-1.74-1.485-3.12-3.33a30 30 0 0 0-2.55-2.98l-.07-.07-.08-.07c-.29-.28-.58-.55-.9-.8a30.5 30.5 0 0 0-6.41-3.99h.01c-.36-.1-2.36-.05-4.55.17Zm83.78 8.6a12.2 12.2 0 0 0-5.27 1.48q-.195.09-.42.12c-1.08.66-2.2 1.26-3.33 1.83l-.3.14q-1.74.855-3.6 1.59c2.25.3 4.47.69 6.67 1.19l.64.13.17.04.74.15c2.78.6 5.44 1.4 8.34 2.46 1.08.4 2.17.82 3.25 1.24l.47.18.2.09.13.04.6.23h.01c1.12.44 2.08.81 2.46.93 1.76.62 2.76.75 3.13.57.44-.22.6-1.37.01-3.1a12.5 12.5 0 0 0-3.14-4.79l.01.02-.03-.03-.1-.09c-.43-.42-.9-.8-1.4-1.16-3.32-2.4-6.38-3.36-9.24-3.25Zm9.58-15.06-.05.12a36 36 0 0 1-1.61 3.1c1.79.86 3.55 2.1 5.1 3.55.73.67 1.34 1.3 1.88 1.93l.08.07a10 10 0 0 0 2.32 1.07c.54.18 1.1.28 1.67.3.18 0 .33-.02.41-.05h-.03v-.21l-.01-.05a4.8 4.8 0 0 0-.41-1.35c-.4-.92-1.03-1.95-1.63-2.76a17.2 17.2 0 0 0-4.01-3.74 30 30 0 0 0-3.7-1.98Zm.18-60.6-.24.14a80 80 0 0 1-2.96 17.93l.12.15a41.9 41.9 0 0 1 7.12 20.66c.92.6 1.96 1.16 3.18 1.75l1 .48.18.1.92.44c8.23 4.05 19.12 2.7 24.89-3.39a24.6 24.6 0 0 0 3.85-5.03c1-1.9.95-2.96-.17-3.5a10 10 0 0 1-.87-.48l-.44-.3-.06-.03-.38-.24a5.35 5.35 0 0 0-2.46-1c-.5-.02-.94.15-1.36.58-.39.38-.73.8-1.04 1.26l-.04.07-.21.33-.1.15-.32.49a3.6 3.6 0 0 1-2.3 1.67 5.03 5.03 0 0 1-4.51-1.13c-.97-.78-1.73-1.7-2.95-3.44l-.8-1.11c-1.06-1.49-1.78-2.25-2.47-2.55-2.55-1.12-3.7-1.2-5.42-.81l-.14.03-.15.04-.3.06c-2.46.5-4.59-.41-9.2-4.42a1.09 1.09 0 0 1 1.42-1.65c2.33 2.02 3.97 3.17 5.16 3.69a3.1 3.1 0 0 0 2.18.24l.4-.08.14-.04c2.15-.5 3.8-.37 6.79.94 1.17.5 2.09 1.48 3.37 3.27l.4.56.37.51.01.05h.02c2.2 3.14 3.43 4.13 5.17 3.72.45-.1.66-.28 1-.78l.02-.01v-.01l.17-.26a10.8 10.8 0 0 1 1.78-2.33 3.9 3.9 0 0 1 3-1.22c1.13.04 2.17.48 3.53 1.32l.89.58c.31.21.64.4.98.55 1.33.54 2.34.3 2.76-.81 2.35-6.16 2.34-11.78.24-16.62-1.93-4.44-5.6-8.14-10.5-10.74-9.66-5.1-22.46-5.12-31.67.22m-3.12-3.18v.04a52.5 52.5 0 0 1-2.84 11.97c-1.87 5.16-6.5 11.3-12.1 14.09a24.8 24.8 0 0 1-8.9 2.1c-3.68.16-6.9-.66-9.33-2.65a16.5 16.5 0 0 0 2.27 5.02c2.45 3.66 8 6.45 11.65 6.31 4.25-.17 7.95-2.38 11.04-6.17a29.6 29.6 0 0 0 4.96-9c2.06-6.31 3.43-15.48 3.26-21.37zm-37.27-16.87.03.17c1.2 7.08.73 15.05-2.53 24.07-1.87 5.17-6.49 11.31-12.09 14.1-2.12 1.06-6.51 2.14-10.3 2.18-4.11.03-7.56-1.06-9.94-3.47l-.08.21c.93 4.98 4.67 9.19 9.8 11.22 5.7 2.25 11.94 1.36 16.48-2.78l.02-.03c4.51-3.88 7.45-9.1 9.24-15.83 1.4-5.25 2.02-10.5 2.53-19.41.25-4.21-.93-7.76-3.16-10.43m16.1 1.32-.71.3-.34.15c-4.34 1.9-8.19 4.25-8.9 5.85v.05l-.1.2q.09 1.305 0 2.73a130 130 0 0 1-.3 4.56c2.83-5.27 7.36-7.93 12.03-6.74 5.76 1.48 8.29 8.32 6.5 15.78l-.06.23c-1.91 7.65-7.65 12.45-13.06 11.4-3.49-.69-6.15-3.27-7.31-6.91a57 57 0 0 1-1.15 4.15c-.09.83.12 1.92.56 3.11.27.73.6 1.44 1 2.12 1.86 2.87 5 4.05 9.05 3.88 2.9-.12 6.12-1 7.74-1.8 4.83-2.41 9.01-7.97 10.65-12.5 2.87-7.94 3.44-15.11 2.55-21.52a16.9 16.9 0 0 0-3.77-4.08c-3.35-2.62-9.86-2.84-14.39-.96zm-34.9-6.44a14.9 14.9 0 0 0-6.1 2.82c.78 2.05.96 3.95.42 5.58a8.83 8.83 0 0 1 6.27-.7c5.76 1.48 8.28 8.32 6.5 15.77l-.05.23c-1.92 7.66-7.66 12.45-13.07 11.4a9.34 9.34 0 0 1-6.47-4.92 58 58 0 0 1-2.34 8.88c1.76 2.56 4.76 3.71 8.72 3.68 3.35-.03 7.3-1.01 9.04-1.87 4.84-2.41 9.02-7.96 10.66-12.49 3.16-8.78 3.53-16.46 2.29-23.22l-.35-1.69-.03-.1-.23-.98-.03-.3c-3.9-2.33-9.21-3.16-15.23-2.09m25.4 26.13c-1.63 6.33.99 11.16 5.11 11.96 3.75.74 8.22-3.04 9.76-9.45 1.45-6.1-.46-11.28-4.4-12.3-4.23-1.07-8.6 2.61-10.47 9.79m20.78-68.43c-2.98.2-5.94.64-8.85 1.31-5.85 1.32-12.7 4.55-19.73 9.02-5.56 3.56-10.9 7.71-13.76 10.55-3.97 3.94-6.32 7.34-5.62 9.1.42 1.06 2.69 2.01 6.85 2.64 3.6.55 7.51.8 16.06 1.14 4.87.2 7.23.3 9.36.42l.33.02.41.01.2.02h.12l.2.02h.22l1.22.08c.26.02.43.04.6.09.14.04.26.09.4.18.39.25.68.65.68 1.25 0 .55-.25.9-.6 1.15-.1.09-.21.15-.33.2-.34.12-.69.2-1.05.23l-1.31.17-.09.01-.1.01-.32.05-1.25.17c-.88.12-1.75.29-2.62.5-.22 3.62-.69 7.84-1.2 10.93l-.02.08h.03c.75-.31 1.68-.71 2.74-1.2l.19-.08c1.07-.5 2.13-1 3.2-1.52l.27-.12c1.78-.88 3.55-1.77 4.83-2.45 10.44-5.5 18.46-14.08 17.8-19.05-.54-4.1-4.24-5.98-10.6-6.17-2.33-.08-4.74.08-7.6.42l-1.38.17-.12.02h-.06l-.12.02c-.8.1-1.62.19-2.44.25-.2.01-.4-.01-.58-.06a1.49 1.49 0 0 1-1.2-1.4c-.01-.44.1-.71.32-1.02l.29-.34.69-.65c.45-.4 1.05-.9 1.94-1.63l.25-.2 1.44-1.18.16-.13.04-.03.09-.07 1.33-1.08c1.77-1.45 3.53-2.91 5.27-4.4a63 63 0 0 0 5.6-5.3c.55-.6 1.03-1.24 1.44-1.94l.02-.03h-.05l-.34-.09h-.1c-1.04-.14-2.1-.17-3.14-.1h-.01Zm-45.01 121c-.13.28-.19.58-.18.89l.45 15.02c.02.6.3 1.16.75 1.53l2.76 2.23 3.71 3.02 3.31 2.69c.67.54 1.61.6 2.35.16l10.08-6.07c.52-.32.88-.85.97-1.46l2.2-14.93a2.05 2.05 0 0 0-1.12-2.13l-10.28-5.06a2.05 2.05 0 0 0-1.4-.14l-8.67 2.19-3.56.9c-.63.16-1.13.6-1.38 1.17Zm3.23 10.35a1.48 1.48 0 0 0 .6 2.62c.58.13 1.27.3 2.25 1.05 1.04.79 2.45 2.26 4.34 5.13a1.48 1.48 0 0 0 2.44.06 26.3 26.3 0 0 1 5.35-5.7c1.5-1.13 2.8-1.69 4.07-2.16a1.48 1.48 0 0 0 .56-2.4c-1.04-1.11-1.28-2.8-.5-5.08a1.48 1.48 0 0 0-2.13-1.78 21.5 21.5 0 0 0-5.41 4.02 21.6 21.6 0 0 0-3.16 4.47 5.08 5.08 0 0 0-2.71-2.1c-1.96-.57-3.9.46-5.7 1.87m8.43 3.41.86-1.69.01-.01c1.8-3.4 3.44-5.53 6.57-7.57a27 27 0 0 1 1.83-1.1c-.24.68-.4 1.35-.48 2a5.94 5.94 0 0 0 .45 3.3c.21.46.5.88.86 1.27-.47.17-.95.36-1.45.59-2.14.97-4.6 2.6-7.7 6.53-.31.4-.63.81-.95 1.25-.3-.46-.6-.9-.89-1.3-2.13-3-3.72-4.3-4.92-4.92a6.6 6.6 0 0 0-1.7-.6c.56-.44 1.1-.8 1.59-1.07 2.17-1.2 3.73-.74 5.1 1.64.28.48.55 1.04.82 1.68",clipRule:"evenodd"}),(0,l.jsx)("path",{fill:"#564341",fillRule:"evenodd",d:"M101.67 87.4a41 41 0 0 0-2.8 3.44l-1.68-1.08c.4-.64 1.87-2.46 3-3.7a18.4 18.4 0 0 1 4.08-3.5l1.01 1.74a16.4 16.4 0 0 0-3.6 3.1Z",clipRule:"evenodd"}),(0,l.jsx)("path",{fill:"#83EAD0",d:"m45.38 139.9 9.99-3.3-7.77 56.87c-.33 2.43-1.73 4.7-4.12 5.27-1 .24-2.11.35-3.15.16a7.8 7.8 0 0 1-2.59-1.15c-2.26-1.44-3.03-4.27-2.5-6.9z"}),(0,l.jsx)("path",{fill:"#62AF9C",d:"m45.38 139.9 4-1.26-10.18 53.43c-.68 4 1.13 5.68 4.28 6.67-1 .24-2.11.35-3.15.16a7.8 7.8 0 0 1-2.59-1.15c-2.26-1.44-3.03-4.27-2.5-6.9z"}),(0,l.jsx)("path",{fill:"#564341",fillRule:"evenodd",d:"M101.13 93.08C87.24 77.86 64.5 63.3 36.59 71.6l-.06.02-.06.03C22.24 77.68 13.17 85.7 7.79 94.53s-7.01 18.38-6.53 27.4c.48 9 3.07 17.5 6.18 24.27 3.09 6.74 6.75 11.93 9.47 14.23 7.25 6.12 14.48 9.42 21.47 10.62l-4.12 19.6c-.58 2.91.24 6.22 2.95 7.95a8.8 8.8 0 0 0 2.94 1.28 8.5 8.5 0 0 0 3.57-.17c2.94-.7 4.52-3.45 4.88-6.1l3.3-22.75a46.9 46.9 0 0 0 16.17-6.73 68.4 68.4 0 0 0 17.27-16.26c4.33-5.76 7.24-11.5 8.14-15.66 3.37-10.5 2.75-18.82 2.18-24.54l.8-.16h.01l.4-.07c.72-.15 1.47-.3 2.18-.53a6.67 6.67 0 0 0 3.85-2.81c.7-1.09.85-2.37.79-3.55-.07-1.2-.37-2.4-.72-3.45a23 23 0 0 0-1.64-3.72l-.02-.04-.01-.03-.01-.01v-.01l-.07-.12-.1-.1Zm-64.9 97.97 4.14-19.71h.02l.68-3.35 5.48-26c1.71-.56 3.57-1.13 5.5-1.72l2.4-.74-3.96 27.21h.01l-.8 5.46-3.09 21.14c-.3 2.2-1.52 3.99-3.35 4.42-.93.22-1.89.31-2.74.15a6.8 6.8 0 0 1-2.23-1c-1.81-1.16-2.53-3.5-2.06-5.86m30.54-28.95a44.9 44.9 0 0 1-14.5 6.22l4.28-29.44.09-.03a102 102 0 0 0 11.91-4.38c1.69-.79 3.2-1.63 4.38-2.53a7.03 7.03 0 0 0 2.53-3.13c.54-1.45.43-3.14.14-4.73a46 46 0 0 0-1.04-4.18l-.2-.75a20.5 20.5 0 0 1-.87-4.17c-.06-1.15.2-1.65.55-1.9.1-.08.36-.22.85-.4.46-.18 1.05-.36 1.75-.56 1.4-.4 3.2-.84 5.2-1.3l4.28-.95c2.43-.54 4.93-1.09 7.18-1.63.55 5.6 1.04 13.43-2.13 23.3l-.01.05-.02.06c-.78 3.68-3.47 9.12-7.73 14.78a66 66 0 0 1-16.64 15.67m.76-29.8a94 94 0 0 1-10.6 3.93l.01-.07-4.04 1.33-1.5.46c-2.68.83-5.28 1.62-7.5 2.38-1.75.6-3.3 1.18-4.56 1.76a8.85 8.85 0 0 0-2.94 1.93 3.42 3.42 0 0 0-.87 2.87c.16.91.67 1.69 1.18 2.28.51.61 1.12 1.14 1.6 1.56l.14.11.06.06a24 24 0 0 1 .77.7 1.2 1.2 0 0 0 1.88-1.5c-.17-.22-.4-.44-.6-.61l-.5-.44-.08-.07-.1-.08c-.48-.41-.96-.84-1.34-1.29a2.55 2.55 0 0 1-.63-1.13c-.04-.22-.02-.5.32-.9.27-.3.93-.75 2.12-1.3 1.06-.5 2.41-1.01 3.98-1.55l-5.46 25.96c-6.55-1.1-13.42-4.21-20.4-10.1-2.34-1.97-5.82-6.79-8.84-13.39a65.7 65.7 0 0 1-5.97-23.4c-.46-8.63 1.1-17.68 6.18-26.02 5.07-8.31 13.69-16.02 27.5-21.89 26.55-7.86 48.32 5.86 61.92 20.7l.07.15a20 20 0 0 1 1.35 3.12c.32.94.55 1.93.6 2.83s-.09 1.6-.4 2.1a4.28 4.28 0 0 1-2.56 1.83c-.57.18-1.2.31-1.92.45l-.15.03-.23.05c-.6.12-1.27.24-1.95.41l-1.02.25v.01c-2.3.56-4.87 1.13-7.4 1.69l-4.35.97c-2 .46-3.85.9-5.32 1.32-.73.21-1.4.42-1.94.63a6.3 6.3 0 0 0-1.4.69c-1.37.97-1.63 2.55-1.56 3.99.08 1.44.51 3.1.95 4.69l.22.78c.39 1.36.76 2.68.98 3.92.27 1.5.28 2.66-.03 3.48v.02l-.02.02c-.18.56-.7 1.24-1.72 2a21 21 0 0 1-3.93 2.27Z",clipRule:"evenodd"})]}),(0,l.jsxs)("defs",{children:[(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__b",x1:61.5,x2:57.23,y1:70.04,y2:69.44,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#FFE768"}),(0,l.jsx)("stop",{offset:.4,stopColor:"#FFE768"}),(0,l.jsx)("stop",{offset:.7,stopColor:"#FFBD4A"}),(0,l.jsx)("stop",{offset:1,stopColor:"#FFBD4A"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__c",x1:62.17,x2:70.66,y1:31.68,y2:52.47,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#FFBD4A"}),(0,l.jsx)("stop",{offset:.3,stopColor:"#FFBD4A"}),(0,l.jsx)("stop",{offset:.66,stopColor:"#FFE768"}),(0,l.jsx)("stop",{offset:1,stopColor:"#FFE768"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__d",x1:61.13,x2:61.38,y1:34.95,y2:42.09,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#FFF9CE"}),(0,l.jsx)("stop",{offset:1,stopColor:"#fff"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__e",x1:66.63,x2:66.75,y1:39.38,y2:42.91,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#FFF9CE"}),(0,l.jsx)("stop",{offset:1,stopColor:"#fff"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__f",x1:56.26,x2:61.89,y1:34.8,y2:52.4,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopOpacity:0}),(0,l.jsx)("stop",{offset:1})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__g",x1:79.06,x2:124.89,y1:129.48,y2:200.88,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#FFBC9C"}),(0,l.jsx)("stop",{offset:.7,stopColor:"#FFBC9C"}),(0,l.jsx)("stop",{offset:1,stopColor:"#FFA67A"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__h",x1:124.07,x2:124.07,y1:164.1,y2:177.93,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#FFE768"}),(0,l.jsx)("stop",{offset:.4,stopColor:"#FFE768"}),(0,l.jsx)("stop",{offset:.7,stopColor:"#FFBD4A"}),(0,l.jsx)("stop",{offset:1,stopColor:"#FFBD4A"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__i",x1:56.29,x2:52.14,y1:157.34,y2:174.04,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#F28773"}),(0,l.jsx)("stop",{offset:.3,stopColor:"#F28773"}),(0,l.jsx)("stop",{offset:1,stopColor:"#F6A66A"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__j",x1:62.9,x2:57.83,y1:165.36,y2:185.18,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#F28773"}),(0,l.jsx)("stop",{offset:.3,stopColor:"#F28773"}),(0,l.jsx)("stop",{offset:1,stopColor:"#F6A66A"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__k",x1:76.8,x2:68.87,y1:173.42,y2:202.88,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#F28773"}),(0,l.jsx)("stop",{offset:.3,stopColor:"#F28773"}),(0,l.jsx)("stop",{offset:1,stopColor:"#F6A66A"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__l",x1:159.83,x2:164.5,y1:185.06,y2:200.97,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#F57A55"}),(0,l.jsx)("stop",{offset:.4,stopColor:"#F28773"}),(0,l.jsx)("stop",{offset:1,stopColor:"#FA9F6E"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__m",x1:167.66,x2:174.68,y1:176.2,y2:190.87,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#F57A55"}),(0,l.jsx)("stop",{offset:.4,stopColor:"#F28773"}),(0,l.jsx)("stop",{offset:1,stopColor:"#FA9F6E"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__n",x1:174.02,x2:179.73,y1:170.05,y2:180.5,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#F57A55"}),(0,l.jsx)("stop",{offset:.4,stopColor:"#F28773"}),(0,l.jsx)("stop",{offset:1,stopColor:"#FA9F6E"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__o",x1:137.6,x2:137.6,y1:39.19,y2:91.6,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#FFE768"}),(0,l.jsx)("stop",{offset:.4,stopColor:"#FFE768"}),(0,l.jsx)("stop",{offset:.7,stopColor:"#FFBD4A"}),(0,l.jsx)("stop",{offset:1,stopColor:"#FFBD4A"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__p",x1:148.81,x2:173.03,y1:86.6,y2:126.45,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#564341"}),(0,l.jsx)("stop",{offset:.5,stopColor:"#564341"}),(0,l.jsx)("stop",{offset:1,stopColor:"#845750"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__q",x1:111.09,x2:135.47,y1:81.18,y2:122.03,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#564341"}),(0,l.jsx)("stop",{offset:.5,stopColor:"#564341"}),(0,l.jsx)("stop",{offset:1,stopColor:"#845750"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__r",x1:169.07,x2:171.79,y1:169.58,y2:171.69,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#C35C45"}),(0,l.jsx)("stop",{offset:1,stopColor:"#B76455"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__s",x1:162.38,x2:165.71,y1:177.26,y2:181.6,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#C35C45"}),(0,l.jsx)("stop",{offset:1,stopColor:"#B76455"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__t",x1:99.39,x2:86.16,y1:182.89,y2:205.25,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#AA6160"}),(0,l.jsx)("stop",{offset:1,stopColor:"#B36F5F"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__u",x1:151.35,x2:154.74,y1:185.75,y2:193.31,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#C35C45"}),(0,l.jsx)("stop",{offset:1,stopColor:"#B76455"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__v",x1:77.47,x2:67.81,y1:170.99,y2:188.1,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#AA6160"}),(0,l.jsx)("stop",{offset:1,stopColor:"#B36F5F"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__w",x1:68.02,x2:60.05,y1:161.75,y2:176.31,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#AA6160"}),(0,l.jsx)("stop",{offset:1,stopColor:"#B36F5F"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__x",x1:207.23,x2:174.11,y1:112.02,y2:145.59,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#FFCB87"}),(0,l.jsx)("stop",{offset:.1,stopColor:"#FFCB87"}),(0,l.jsx)("stop",{offset:.4,stopColor:"#FFBC9C"}),(0,l.jsx)("stop",{offset:1,stopColor:"#FFBC9C"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__y",x1:203.79,x2:162.43,y1:103.24,y2:147.79,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#FBC38C"}),(0,l.jsx)("stop",{offset:.3,stopColor:"#F19675"}),(0,l.jsx)("stop",{offset:.7,stopColor:"#F0876A"}),(0,l.jsx)("stop",{offset:1,stopColor:"#ED8870"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__z",x1:182.65,x2:182.65,y1:118.08,y2:124.19,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#FFFFFE"}),(0,l.jsx)("stop",{offset:1,stopColor:"#fff"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__A",x1:197.03,x2:197.03,y1:108.83,y2:124.46,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#FFFFFE"}),(0,l.jsx)("stop",{offset:1,stopColor:"#fff"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__B",x1:26.14,x2:54.22,y1:71.32,y2:168.06,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#FFCB87"}),(0,l.jsx)("stop",{offset:.2,stopColor:"#FFCB87"}),(0,l.jsx)("stop",{offset:.7,stopColor:"#FFBC9C"}),(0,l.jsx)("stop",{offset:1,stopColor:"#FFBC9C"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__C",x1:3.02,x2:53.59,y1:102.25,y2:152.08,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#FFCB87"}),(0,l.jsx)("stop",{offset:.3,stopColor:"#F79E75"}),(0,l.jsx)("stop",{offset:.5,stopColor:"#EF876D"}),(0,l.jsx)("stop",{offset:1,stopColor:"#ED8870"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__D",x1:50.38,x2:50.97,y1:111.28,y2:128.36,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#FFFFFE"}),(0,l.jsx)("stop",{offset:1,stopColor:"#fff"})]}),(0,l.jsxs)("linearGradient",{id:"rstest-logo_svg__E",x1:32.78,x2:33.91,y1:86.96,y2:119.34,gradientUnits:"userSpaceOnUse",children:[(0,l.jsx)("stop",{stopColor:"#FFF9CE"}),(0,l.jsx)("stop",{offset:1,stopColor:"#fff"})]})]})]});let J=e=>{let{theme:t,onThemeToggle:s,isConnected:r,token:o,counts:a}=e,[n,c]=(0,i.useState)(0),u=(0,i.useRef)(a);(0,i.useEffect)(()=>{let e=u.current;if(e.pass!==a.pass||e.fail!==a.fail||e.running!==a.running){let e=setTimeout(()=>{c(e=>e+1)},100);return()=>clearTimeout(e)}u.current=a},[a]);let h=a.idle+a.running+a.pass+a.fail+a.skip,f=e=>0===h?0:e/h*100,x=f(a.pass),g=f(a.fail),m=f(a.running),j={system:D.A,light:L.A,dark:q.A}[t];return(0,l.jsxs)("div",{className:"relative flex h-[48px] items-center justify-between px-4","data-testid":"sidebar-header",style:{background:o.colorBgContainer},children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)(H,{className:"h-6 transition-all"}),(0,l.jsxs)("div",{className:"flex flex-col leading-none",children:[(0,l.jsx)("span",{className:"text-[13px] font-bold tracking-tight",children:"Rstest"}),(0,l.jsx)("span",{className:"font-mono text-[9px] opacity-40 uppercase tracking-widest",children:"Browser"})]})]}),(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)(d.A,{title:r?"Connected":"Connecting...",mouseLeaveDelay:0,children:(0,l.jsx)("span",{className:"inline-flex h-2 w-2 cursor-default rounded-full",style:{backgroundColor:r?"var(--ds-green-700)":"var(--accents-4)"}})}),(0,l.jsx)(d.A,{title:{system:"Theme: System",light:"Theme: Light",dark:"Theme: Dark"}[t],mouseLeaveDelay:0,children:(0,l.jsx)(p.Ay,{type:"text",size:"small",className:"flex h-8 w-8 items-center justify-center rounded-md p-0","data-testid":"theme-toggle",icon:(0,l.jsx)(j,{size:15,strokeWidth:2.5}),onClick:()=>{"system"===t?s("light"):"light"===t?s("dark"):s("system")},style:{color:o.colorTextDescription}})})]}),(0,l.jsxs)("div",{className:"absolute inset-x-0 bottom-0 h-[1px] overflow-hidden",style:{background:"var(--accents-2)"},children:[(0,l.jsx)("div",{className:`absolute inset-y-0 left-0 h-full transition-all duration-500 ease-[cubic-bezier(0.4,0,0.2,1)] ${n>0?"progress-flash-active":""}`,style:{width:`${x}%`,background:"var(--ds-green-700)",zIndex:3,color:"var(--ds-green-700)"}},`pass-${n}`),(0,l.jsx)("div",{className:`absolute inset-y-0 left-0 h-full transition-all duration-500 ease-[cubic-bezier(0.4,0,0.2,1)] ${n>0?"progress-flash-active":""}`,style:{width:`${x+g}%`,background:"var(--ds-red-800)",zIndex:2,color:"var(--ds-red-800)"}},`fail-${n}`),(0,l.jsx)("div",{className:`absolute inset-y-0 left-0 h-full transition-all duration-500 ease-[cubic-bezier(0.4,0,0.2,1)] ${n>0?"progress-flash-active":""}`,style:{width:`${x+g+m}%`,background:"var(--ds-amber-700)",zIndex:1,color:"var(--ds-amber-700)"}},`run-${n}`)]})]})};var V=s(6092),X=s(1755),K=s(6632),Y=s(6255),Q=s(6369),ee=s(9396);let et=(0,i.memo)(e=>{let{counts:t,isRunning:s}=e,r=s&&0===t.running;return(0,l.jsx)("div",{className:"flex h-6 cursor-default select-none items-center",children:(0,l.jsx)("div",{className:"flex items-center gap-1.5",children:[{key:"pass",label:"passed",color:"green"},{key:"fail",label:"failed",color:"red"},{key:"running",label:"running",color:"amber"}].map(e=>{let s=t[e.key]||0,o="running"===e.key;return(0,l.jsxs)(ee.A,{className:`m-0 flex items-center gap-1 px-2 py-0 border-0 ${o&&r?"animate-pulse":""}`,style:{display:"flex",alignItems:"center",backgroundColor:`var(--ds-${e.color}-200)`,color:`var(--ds-${e.color}-900)`,borderRadius:"100px",fontSize:"11px",height:"20px",lineHeight:"normal",fontWeight:700},children:[(0,l.jsx)("span",{className:"font-mono",style:{fontVariantNumeric:"tabular-nums",fontWeight:"inherit"},children:s}),(0,l.jsx)("span",{className:"text-[10px] uppercase tracking-wider",style:{fontWeight:"inherit"},children:e.label})]},e.label)})})})}),es=e=>{let{token:t,filterText:s,onFilterChange:r,isAllExpanded:o,onToggleExpandAll:a,onRerun:i,counts:n,isRunning:c}=e;return(0,l.jsxs)("div",{className:"flex flex-col gap-3 px-4 py-3","data-testid":"test-files-header",style:{background:t.colorBgContainer},children:[(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsx)("div",{children:(0,l.jsx)(et,{counts:n,isRunning:c})}),(0,l.jsxs)("div",{className:"flex items-center gap-1",children:[(0,l.jsx)(d.A,{title:o?"Collapse all":"Expand all",mouseLeaveDelay:0,children:(0,l.jsx)(p.Ay,{type:"text",size:"small",icon:o?(0,l.jsx)(X.A,{size:13,strokeWidth:2.5}):(0,l.jsx)(K.A,{size:13,strokeWidth:2.5}),onClick:a,className:"flex h-8 w-8 items-center justify-center rounded-md p-0","data-testid":"test-files-toggle-expand",style:{color:t.colorTextDescription}})}),(0,l.jsx)(d.A,{title:"Re-run all tests",mouseLeaveDelay:0,children:(0,l.jsx)(p.Ay,{type:"text",size:"small",icon:(0,l.jsx)(Y.A,{size:15,strokeWidth:2.5}),onClick:i,disabled:!i,className:"flex h-8 w-8 items-center justify-center rounded-md p-0","data-testid":"test-files-rerun-all",style:{color:t.colorTextDescription}})})]})]}),(0,l.jsx)(V.A,{placeholder:"Search tests...",prefix:(0,l.jsx)(Q.A,{size:14,strokeWidth:2.5,className:"opacity-40"}),value:s,onChange:e=>r(e.target.value),allowClear:!0,className:"rounded-md py-1.5","data-testid":"test-files-search"})]})};var el=s(9296),er=s(3948),eo=s(9027),ea=s(4699),ei=s(9875);let en=e=>`__project__${e}`,ec=(e,t)=>`${e}::suite::${t.join("::")}`,ed=(e,t)=>{let s=e;for(let e=1;e<=t.length;e++)s=ec(s,t.slice(0,e));return s},ep=(e,t)=>`${e}::case::${t}`,eu=["pass","fail","skip"],eh=e=>{let{icon:t,iconColor:s,status:r,label:o,caseId:a,onRerun:n,buttonTextColor:c}=e,u=(0,i.useRef)(null),[h,f]=(0,i.useState)(0),x=eu.includes(r);return(0,i.useEffect)(()=>{x&&null!==u.current&&u.current!==r&&f(e=>e+1),u.current=r},[r,x]),(0,l.jsxs)("div",{className:"group grid w-full grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2","data-testid":"test-case-title","data-test-case":a,children:[t&&(0,l.jsx)("span",{className:`flex w-[16px] shrink-0 items-center justify-center ${h>0?"status-icon-flash":""}`,style:{color:s},children:t},h),(0,l.jsx)(d.A,{title:o,mouseLeaveDelay:0,children:(0,l.jsx)("span",{className:"truncate text-[13px] tracking-tight opacity-70",children:o})}),(0,l.jsx)("div",{className:"opacity-0 transition-opacity duration-200 group-hover:opacity-100",children:(0,l.jsx)(d.A,{title:"Re-run this test",mouseLeaveDelay:0,children:(0,l.jsx)(p.Ay,{type:"text",size:"small",icon:(0,l.jsx)(Y.A,{size:14,strokeWidth:2.5}),disabled:!n,onClick:e=>{e.stopPropagation(),n?.()},className:"inline-flex h-5 w-5 items-center justify-center p-0","data-testid":"test-case-rerun",style:{color:c}})})})]})},ef=["pass","fail"],ex=e=>{let{icon:t,iconColor:s,status:r,relativePath:o,filePath:a,onOpen:n,onRerun:c,textColor:u}=e,h=(0,i.useRef)(null),[x,g]=(0,i.useState)(0),m=ef.includes(r);return(0,i.useEffect)(()=>{m&&null!==h.current&&h.current!==r&&g(e=>e+1),h.current=r},[r,m]),(0,l.jsxs)("div",{className:"group grid w-full grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2","data-testid":"test-file-title","data-test-file":a,children:[(0,l.jsx)("span",{className:`flex w-[16px] shrink-0 items-center justify-center ${x>0?"status-icon-flash":""}`,style:{color:s},children:t},x),(0,l.jsx)(d.A,{title:o,styles:{container:{whiteSpace:"nowrap",maxWidth:"none"}},mouseLeaveDelay:0,children:(0,l.jsx)("span",{className:"truncate font-mono text-[12px] font-medium tracking-tight opacity-90",children:o})}),(0,l.jsxs)("div",{className:"flex items-center gap-1 opacity-0 transition-opacity duration-200 group-hover:opacity-100",children:[(0,l.jsx)(d.A,{title:"Open in editor",mouseLeaveDelay:0,children:(0,l.jsx)(p.Ay,{type:"text",size:"small",icon:(0,l.jsx)(f.A,{size:14,strokeWidth:2.5}),onClick:e=>{e.stopPropagation(),n()},className:"inline-flex h-5 w-5 items-center justify-center p-0","data-testid":"test-file-open-editor",style:{color:u}})}),(0,l.jsx)(d.A,{title:"Re-run this file",mouseLeaveDelay:0,children:(0,l.jsx)(p.Ay,{type:"text",size:"small",icon:(0,l.jsx)(Y.A,{size:14,strokeWidth:2.5}),disabled:!c,onClick:e=>{e.stopPropagation(),c?.()},className:"inline-flex h-5 w-5 items-center justify-center p-0","data-testid":"test-file-rerun",style:{color:u}})})]})]})},eg=["pass","fail","skip"],em=e=>{let{icon:t,iconColor:s,status:r,name:o,fullName:a,onRerun:n,buttonTextColor:c}=e,u=(0,i.useRef)(null),[h,f]=(0,i.useState)(0),x=eg.includes(r);return(0,i.useEffect)(()=>{x&&null!==u.current&&u.current!==r&&f(e=>e+1),u.current=r},[r,x]),(0,l.jsxs)("div",{className:"group grid w-full grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-2","data-testid":"test-suite-title","data-test-suite":a,children:[t&&(0,l.jsx)("span",{className:`flex w-[16px] shrink-0 items-center justify-center ${h>0?"status-icon-flash":""}`,style:{color:s},children:t},h),(0,l.jsx)(d.A,{title:o,mouseLeaveDelay:0,children:(0,l.jsx)("span",{className:"truncate text-[13px] font-medium tracking-tight opacity-80",children:o})}),(0,l.jsx)("div",{className:"opacity-0 transition-opacity duration-200 group-hover:opacity-100",children:(0,l.jsx)(d.A,{title:"Re-run this suite",mouseLeaveDelay:0,children:(0,l.jsx)(p.Ay,{type:"text",size:"small",icon:(0,l.jsx)(Y.A,{size:14,strokeWidth:2.5}),disabled:!n,onClick:e=>{e.stopPropagation(),n?.()},className:"inline-flex h-5 w-5 items-center justify-center p-0","data-testid":"test-suite-rerun",style:{color:c}})})})]})},ej=e=>{let{testFiles:t,statusMap:s,caseMap:r,rootPath:o,projects:a,loading:n,connected:c,openFiles:d,activeFile:p,token:u,filterText:h,onExpandChange:f,onSelect:m,onRerunFile:j,onRerunTestCase:v}=e,{filteredTestFiles:y,filteredCaseMap:_}=(0,i.useMemo)(()=>{if(!h.trim())return{filteredTestFiles:t,filteredCaseMap:r};let e=h.toLowerCase(),s=[],l={};for(let o of t){let t=o.testPath,a=t.toLowerCase().includes(e),i=r[t]??{},n={};for(let[t,s]of Object.entries(i))(s.name.toLowerCase().includes(e)||s.fullName.toLowerCase().includes(e))&&(n[t]=s);(a||Object.keys(n).length>0)&&(s.push(o),l[t]=a?i:n)}return{filteredTestFiles:s,filteredCaseMap:l}},[t,r,h]),b=(0,i.useCallback)((e,t)=>{if(0===t.length)return[{key:`${e}::__empty`,title:(0,l.jsx)("span",{className:"text-xs text-(--muted-foreground)",children:"No test cases reported yet"}),isLeaf:!0,selectable:!1}];let s={name:"",fullPath:[],children:new Map,cases:[],status:"idle"};for(let e of t){let t=s,l=e.parentNames;for(let e=0;e<l.length;e++){let s=l[e],r=l.slice(0,e+1);t.children.has(s)||t.children.set(s,{name:s,fullPath:r,children:new Map,cases:[],status:"idle"}),t=t.children.get(s)}t.cases.push(e)}let r=e=>{let t=[];for(let s of e.children.values())t.push(r(s));for(let s of e.cases)t.push(s.status);return t.some(e=>"fail"===e)?"fail":t.some(e=>"running"===e)?"running":t.every(e=>"pass"===e)?"pass":t.every(e=>"skip"===e)?"skip":t.some(e=>"pass"===e)?"pass":"idle"},o=(t,s)=>{let a=[];for(let i of t.children.values()){let t=r(i),n=w[t],d=ec(s,i.fullPath),p=i.fullPath.join(" ");a.push({key:d,title:(0,l.jsx)(em,{icon:n.icon,iconColor:n.color,status:t,name:i.name,fullName:p,onRerun:c?()=>{v(e,p)}:void 0,buttonTextColor:u.colorTextSecondary}),children:o(i,d),selectable:!1})}for(let r of t.cases){let t=w[r.status];a.push({key:ep(s,r.id),title:(0,l.jsx)(eh,{icon:t.icon,iconColor:t.color,status:r.status,label:r.name,caseId:r.id,onRerun:c?()=>{v(e,r.fullName)}:void 0,buttonTextColor:u.colorTextSecondary}),isLeaf:!0,selectable:!1})}return a};return o(s,e)},[c,v,u.colorTextSecondary]),k=(0,i.useMemo)(()=>{let e=[...new Set(y.map(e=>e.projectName))],t=new Map;for(let e of a)t.set(e.name,e.projectRoot);let r=(e,t)=>{let r=e.testPath,a=s[r]??"idle",i=C[a],n=x(r,t??o),d=Object.values(_[r]??{});return{key:r,title:(0,l.jsx)(ex,{icon:i.icon,iconColor:i.color,status:a,relativePath:n,filePath:r,onOpen:()=>g(r),onRerun:c?()=>{j(r)}:void 0,textColor:u.colorTextSecondary}),children:b(r,d)}};return e.length>1?e.map(e=>{let o=y.filter(t=>t.projectName===e),a=en(e),i=t.get(e),n=o.map(e=>s[e.testPath]??"idle"),c="idle";n.some(e=>"fail"===e)?c="fail":n.some(e=>"running"===e)?c="running":n.length>0&&n.every(e=>"pass"===e)&&(c="pass");let d=C[c];return{key:a,title:(0,l.jsxs)("div",{className:"flex items-center gap-1.5","data-testid":"test-project-title","data-test-project":e,children:[(0,l.jsx)(eo.A,{size:14,style:{color:d.color},strokeWidth:2.5,className:"shrink-0"}),(0,l.jsx)("span",{className:"truncate text-sm font-medium",style:{color:u.colorText},children:e})]}),children:o.map(e=>r(e,i)),selectable:!1}}):y.map(e=>r(e))},[b,_,c,j,a,o,s,y,u]);return n?(0,l.jsx)("div",{className:"space-y-2 p-3",children:[1,2,3].map(e=>(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)(el.A.Avatar,{active:!0,size:"small",shape:"circle"}),(0,l.jsx)(el.A.Input,{active:!0,size:"small",style:{width:`${60+10*e}%`}})]},e))}):c?0===t.length?(0,l.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,l.jsx)("span",{className:"text-(--muted-foreground)",children:"No test files detected"})}):0===y.length?(0,l.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,l.jsx)("span",{className:"text-(--muted-foreground)",children:"No matching tests found"})}):(0,l.jsx)(er.A,{blockNode:!0,"data-testid":"test-files-tree",showLine:!1,switcherIcon:e=>e.expanded?(0,l.jsx)(ea.A,{size:12,strokeWidth:2.5}):(0,l.jsx)(ei.A,{size:12,strokeWidth:2.5}),showIcon:!0,expandAction:"click",expandedKeys:d,selectedKeys:p?[p]:[],onExpand:e=>f(e.filter(e=>"string"==typeof e)),onSelect:(e,t)=>{let s=t.node.key,l=y.map(e=>e.testPath);"string"==typeof s&&l.includes(s)&&m(s)},treeData:k,className:"bg-transparent",style:{marginLeft:"16px"}}):(0,l.jsx)("div",{className:"flex h-full flex-col items-center justify-center gap-2",children:(0,l.jsx)("span",{className:"text-(--warning)",children:"Reconnecting..."})})},ev=(e,t)=>Number.isFinite(e)&&e>0&&Number.isFinite(t)&&t>0,ey=e=>{if(!e)return{mode:"full"};if("string"==typeof e&&U(e))return{mode:"preset",preset:e,orientation:"portrait"};if("object"==typeof e){let t=Number(e.width),s=Number(e.height);if(ev(t,s))return{mode:"responsive",width:t,height:s}}return{mode:"full"}},e_=(e,t,s)=>Math.min(s,Math.max(t,e)),eC=e=>{let{token:t,selection:s,active:r,onResponsiveResize:o,children:a,...n}=e,c=(0,i.useRef)(null),d=(e=>{if("full"===e.mode)return null;if("responsive"===e.mode)return{width:e.width,height:e.height};let t=T(e.preset);return"landscape"===e.orientation?{width:t.height,height:t.width}:{width:t.width,height:t.height}})(s);return(0,i.useLayoutEffect)(()=>{if(!r||"responsive"!==s.mode||!o)return;let e=c.current;if(!e)return;let t=!0,l=new ResizeObserver(e=>{let l=e[0]?.contentRect;if(!l)return;if(t){t=!1;return}if(l.width<=0||l.height<=0)return;let r=e_(Math.round(l.width),1,1e4),a=e_(Math.round(l.height),1,1e4);(r!==s.width||a!==s.height)&&o({width:r,height:a})});return l.observe(e),()=>l.disconnect()},[r,s,o]),(0,l.jsx)("div",{className:d?"flex h-full w-full items-start justify-center p-4 overflow-auto":"h-full w-full",children:(0,l.jsx)("div",{ref:c,className:d?"shrink-0 relative group":"h-full w-full",style:d?{width:d.width,height:d.height,boxSizing:"content-box",border:`1px solid ${t.colorBorder}`,borderRadius:0,background:t.colorBgContainer,overflow:"hidden",resize:"responsive"===s.mode?"both":"none",minWidth:"responsive"===s.mode?1:void 0,minHeight:"responsive"===s.mode?1:void 0,maxWidth:"responsive"===s.mode?1e4:void 0,maxHeight:"responsive"===s.mode?1e4:void 0}:{background:t.colorBgContainer},...n,children:a})})},ew=e=>{let{filePath:t,test:s,status:l,previousCase:r}=e,o=(s.parentNames??[]).filter(Boolean),a=[...o,s.name].join(" ")||s.name;return{id:s.testId,name:s.name,parentNames:o,fullName:a,status:l,filePath:s.testPath||r?.filePath||t,location:s.location??r?.location}},eb=e=>"object"==typeof e&&null!==e&&"requestId"in e&&"string"==typeof e.requestId?e.requestId:"unknown-request",ek=async(e,t,s)=>{if(null===s||"function"!=typeof s.postMessage)return;let l=e=>{s.postMessage({type:"__rstest_dispatch_response__",payload:e},"*")};if("unknown-request"===eb(t))return void l({requestId:eb(t),error:"Invalid dispatch request payload: expected an object with string requestId."});if(!e)return void l({requestId:t.requestId,error:"Container RPC is not ready for dispatch."});try{l(await e.dispatch(t))}catch(e){l({requestId:t.requestId,error:e instanceof Error?e.message:String(e)})}},eS=[1e3,2e3,4e3,8e3,16e3,3e4];var eF=s(7556);let eN=function(){for(var e=arguments.length,t=Array(e),s=0;s<e;s++)t[s]=arguments[s];window.__RSTEST_BROWSER_OPTIONS__?.debug===!0&&console.log(...t)},eA=e=>{let t,s,{options:o,theme:a,setTheme:n}=e,{token:d}=r.A.useToken(),[p,u]=(0,i.useState)({files:[],version:0}),h=p.files,[f,x]=(0,i.useState)(null),[g,m]=(0,i.useState)({}),[j,v]=(0,i.useState)({}),[y,_]=(0,i.useState)([]),[C,w]=(0,i.useState)(""),b=(0,i.useRef)((t=new Map,s=0,{grant(e,l,r){let o={runId:l,boot:s+=1,testNamePattern:r};return t.set(e,o),o},get:e=>t.get(e),retain(e){let s=new Set(e);for(let e of t.keys())s.has(e)||t.delete(e)}})),[,k]=(0,i.useReducer)(e=>e+1,0),S=(0,i.useCallback)(e=>{let t=5381;for(let e=0;e<o.rootPath.length;e++)t=33*t^o.rootPath.charCodeAt(e);return`rstest-viewport:${(t>>>0).toString(16)}:${e}`},[o.rootPath]),F=(0,i.useCallback)(e=>{try{let t=localStorage.getItem(S(e));if(!t)return null;let s=JSON.parse(t);if(!s||"object"!=typeof s)return null;let l=s.mode;if("full"===l)return{mode:"full"};if("responsive"===l){let e=Number(s.width),t=Number(s.height);return ev(e,t)?{mode:"responsive",width:e,height:t}:null}if("preset"===l){let e=s.preset,t=s.orientation;if(U(e)&&("portrait"===t||"landscape"===t))return{mode:"preset",preset:e,orientation:t}}return null}catch{return null}},[S]),N=(0,i.useCallback)((e,t)=>{try{localStorage.setItem(S(e),JSON.stringify(t))}catch{}},[S]),[A,P]=(0,i.useState)(()=>{let e={};for(let t of o.projects??[])e[t.name]=F(t.name)??ey(t.viewport);return e});(0,i.useEffect)(()=>{P(e=>{let t={...e};for(let e of o.projects??[])t[e.name]||(t[e.name]=F(e.name)??ey(e.viewport));return t})},[o.projects,F]);let M=(0,i.useCallback)(async(e,t,s)=>{eN("[Container] Granting run",t,"to",e,s??""),x(e),b.current.grant(e,t,s),k(),m(t=>({...t,[e]:"running"})),v(t=>{let s=t[e]??{},l={};for(let[e,t]of Object.entries(s))l[e]={...t,status:"running"};return{...t,[e]:l}})},[]),{rpc:z,loading:O,connected:R}=((e,t,s)=>{let[l,r]=(0,i.useState)(null),[o,a]=(0,i.useState)(!0),[n,c]=(0,i.useState)(!1),d=(0,i.useRef)(e),p=(0,i.useRef)(s),u=(0,i.useRef)(null);return(0,i.useEffect)(()=>{d.current=e},[e]),(0,i.useEffect)(()=>{p.current=s},[s]),(0,i.useEffect)(()=>{if(!t)return void a(!1);let e=null,s=null,l=0,o=null,i=!0,n=()=>{let h;if(!i)return;u.current=e=new WebSocket((h="https:"===window.location.protocol?"wss:":"ws:",`${h}//${window.location.hostname}:${t}`));let f=new WeakMap,x=-1,g=e=>{e.version<=x||(x=e.version,d.current(e))},m={onTestFileUpdate(e,t){eN("[Container RPC] onTestFileUpdate called:",t,e),g({files:e,version:t})},async reloadTestFile(e,t,s){if(eN("[Container RPC] reloadTestFile called:",e,t,s),!p.current)throw Error("reloadTestFile handler is not available");return p.current(e,t,s)},onHostConfigUpdate(e){eN("[Container RPC] onHostConfigUpdate called");let t=window;t.__RSTEST_BROWSER_OPTIONS__?Object.assign(t.__RSTEST_BROWSER_OPTIONS__,e):t.__RSTEST_BROWSER_OPTIONS__=e}};e.onopen=()=>{i&&e&&(eN("[Container] WebSocket connected"),l=0,c(!0),r(s=(0,eF.L)(m,{timeout:-1,post:t=>{e?.readyState===WebSocket.OPEN&&e.send(JSON.stringify(t))},on:t=>{if(!e)return;let s=e=>{try{let s=JSON.parse(e.data);t(s)}catch{}};f.set(t,s),e.addEventListener("message",s)},off:t=>{if(!e)return;let s=f.get(t);s&&(e.removeEventListener("message",s),f.delete(t))}})),s.getTestFiles().then(e=>{i&&(g(e),a(!1))}).catch(()=>{i&&a(!1)}))},e.onclose=()=>{if(u.current!==e||!i)return;eN("[Container] WebSocket disconnected"),s?.$close(Error("Container WebSocket disconnected")),r(null),c(!1);let t=eS[Math.min(l,eS.length-1)];eN(`[Container] Reconnecting in ${t}ms (attempt ${l+1})`),l++,o=setTimeout(()=>{i&&n()},t)},e.onerror=()=>{i&&eN("[Container] WebSocket error")}};return n(),()=>{i=!1,o&&clearTimeout(o),s?.$close(Error("Container RPC disposed")),e&&e.close()}},[t]),{rpc:l,loading:o,connected:n}})(u,o?.wsPort,M);(0,i.useEffect)(()=>{m(e=>{let t={};for(let s of h)t[s.testPath]=e[s.testPath]??"idle";return t}),v(e=>{let t={};for(let s of h)t[s.testPath]=e[s.testPath]??{};return t});let e=h.map(e=>e.testPath);b.current.retain(e),k(),_(t=>t.filter(t=>e.includes(t))),x(t=>!t&&h.length>0||t&&!e.includes(t)&&h.length>0?h[0].testPath:t)},[h]),(0,i.useEffect)(()=>{z&&R&&0!==p.version&&z.onFrameSetReady(p.version).catch(e=>{eN("[Container RPC] Failed to notify frame set ready:",e)})},[z,R,p]);let E=(0,i.useCallback)(e=>"pass"===e?"pass":"fail"===e?"fail":"skip"===e||"todo"===e?"skip":"running",[]),T=(0,i.useCallback)(e=>{x(e)},[]),B=(0,i.useCallback)((e,t)=>{let s=ew({filePath:e,test:t,status:E(t.status)});v(l=>{let r=l[e]??{};return{...l,[e]:{...r,[t.testId]:s}}})},[E]),$=(0,i.useCallback)((e,t)=>{v(s=>{let l=s[e]??{},r=(e=>{let{filePath:t,tests:s,previousCases:l}=e,r={},o=e=>{if("suite"===e.type){for(let t of e.tests)o(t);return}let s=l[e.testId];r[e.testId]=ew({filePath:t,test:e,status:s?.status??"idle",previousCase:s})};for(let e of s)o(e);return r})({filePath:e,tests:t.tests,previousCases:l});return{...s,[e]:r}})},[]),I=(0,i.useCallback)((e,t)=>{v(s=>{let l=s[e]??{};return{...s,[e]:(e=>{let{filePath:t,test:s,previousCases:l}=e,r=l[s.testId];return{...l,[s.testId]:ew({filePath:t,test:s,status:"running",previousCase:r})}})({filePath:e,test:t,previousCases:l})}})},[]),D=(0,i.useCallback)(e=>{x(e),z&&R&&z.rerunTest(e)},[z,R]),L=(0,i.useCallback)((e,t)=>{x(e),z&&R&&z.rerunTest(e,t)},[z,R]),q=(0,i.useCallback)(()=>{if(z&&R)for(let e of h)z.rerunTest(e.testPath)},[h,z,R]),H=(0,i.useRef)(0),V=(0,i.useCallback)((e,t,s)=>{z&&(H.current+=1,z.dispatch({requestId:`container-runner-${H.current}`,runId:e,namespace:"runner",method:t,args:s}).catch(e=>{eN("[Container] Failed to forward runner message:",t,e)}))},[z]);(0,i.useEffect)(()=>{let e=e=>{let t=(e=>{if(e.data?.type!=="__rstest_dispatch__")return null;let t=e.data.payload;return"object"!=typeof t||null===t||"object"!=typeof t.message||null===t.message||"string"!=typeof t.message.type?null:t})(e);if(!t)return;let s=t.message;if("dispatch-rpc-request"===s.type){let t=s.payload;if("runner"===t.namespace&&"file-ready"===t.method){let e=t.args;"string"==typeof e?.testPath&&Array.isArray(e.tests)&&$(e.testPath,e)}if("runner"===t.namespace&&"case-start"===t.method){let e=t.args;"string"==typeof e?.testPath&&e.testId&&I(e.testPath,e)}ek(z,t,e.source);return}if("file-start"===s.type){let e=s.payload.testPath;"string"==typeof e&&(m(t=>({...t,[e]:"running"})),v(t=>{let s=t[e]??{},l={};for(let[e,t]of Object.entries(s))l[e]={...t,status:"running"};return{...t,[e]:l}}))}else if("case-result"===s.type){let e=s.payload;e?.testPath&&B(e.testPath,e)}else if("file-complete"===s.type){let e=s.payload,t=e.testPath;if("string"==typeof t){let s="pass"===e.status||"skip"===e.status;m(e=>({...e,[t]:s?"pass":"fail"})),v(s=>{let l={};for(let s of e.results??[])s?.testId&&(l[s.testId]=ew({filePath:t,test:s,status:E(s.status)}));return{...s,[t]:l}})}}else"fatal"===s.type&&f&&m(e=>({...e,[f]:"fail"}));V(t.runId,s.type,"payload"in s?s.payload:void 0)};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[f,B,E,z,V,$,I]);let X=(0,i.useMemo)(()=>{let e=Object.values(j).flatMap(e=>Object.values(e));return{idle:e.filter(e=>"idle"===e.status).length,running:e.filter(e=>"running"===e.status).length,pass:e.filter(e=>"pass"===e.status).length,fail:e.filter(e=>"fail"===e.status).length,skip:e.filter(e=>"skip"===e.status).length}},[j]),K=(0,i.useMemo)(()=>Object.values(g).some(e=>"running"===e),[g]),Y=(0,i.useMemo)(()=>{let e=[],t=[...new Set(h.map(e=>e.projectName))];if(t.length>1)for(let s of t)e.push(en(s));for(let t of h){let s=t.testPath;for(let t of(e.push(s),Object.values(j[s]??{}))){let{parentNames:l}=t;for(let t=1;t<=l.length;t++)e.push(ed(s,l.slice(0,t)))}}return[...new Set(e)]},[h,j]),Q=o.projects?.[0]?.name||o.rootPath.split("/").filter(Boolean).pop()||"default",ee=`rstest-split-${Q}`,et=(0,i.useMemo)(()=>{let e=new Map;for(let t of o.projects??[])e.set(t.name,t.viewport);return e},[o.projects]),el=(0,i.useMemo)(()=>{if(!f)return o.projects?.[0]?.name;let e=h.find(e=>e.testPath===f);return e?.projectName??o.projects?.[0]?.name},[f,h,o.projects]),er=(0,i.useMemo)(()=>el?A[el]??ey(et.get(el)):{mode:"full"},[el,A,et]),eo=(0,i.useCallback)(e=>{el&&(N(el,e),P(t=>({...t,[el]:e})))},[el,N]),ea=(0,i.useCallback)((e,t)=>{P(s=>{let l=s[e];if(!l||"responsive"!==l.mode||l.width===t.width&&l.height===t.height)return s;let r={mode:"responsive",width:t.width,height:t.height};return N(e,r),{...s,[e]:r}})},[N]);return(0,l.jsx)("div",{className:"m-0 h-screen w-full overflow-hidden p-0",style:{background:d.colorBgContainer},children:(0,l.jsxs)(G,{direction:"horizontal",className:"h-full w-full",autoSaveId:ee,children:[(0,l.jsx)(Z,{defaultSize:32,minSize:20,maxSize:50,children:(0,l.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",style:{background:d.colorBgContainer},children:[(0,l.jsx)(J,{theme:a,onThemeToggle:n,isConnected:R,token:d,counts:X}),(0,l.jsx)(es,{token:d,filterText:C,onFilterChange:w,isAllExpanded:Y.length>0&&Y.every(e=>y.includes(e)),onToggleExpandAll:()=>{Y.length>0&&Y.every(e=>y.includes(e))?_([]):_(Y)},onRerun:R?q:void 0,counts:X,isRunning:K}),(0,l.jsx)("div",{className:"flex-1 overflow-x-hidden overflow-y-auto",style:{background:d.colorBgContainer},children:(0,l.jsx)(ej,{testFiles:h,statusMap:g,caseMap:j,rootPath:o.rootPath,projects:o.projects,loading:O,connected:R,openFiles:y,activeFile:f,token:d,filterText:C,onExpandChange:_,onSelect:T,onRerunFile:D,onRerunTestCase:L})})]})}),(0,l.jsx)(Z,{defaultSize:68,minSize:40,children:(0,l.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",style:{background:d.colorBgLayout},children:[(0,l.jsx)(W,{token:d,activeFile:f??void 0,rootPath:o.rootPath,status:f?g[f]??"idle":void 0,viewport:el?er:void 0,onViewportChange:el?eo:void 0}),(0,l.jsxs)("div",{className:"relative min-h-0 flex-1 overflow-auto",style:{background:d.colorBgLayout},children:[!f&&(0,l.jsx)(c,{message:"Select a test file on the left to view its run output"}),h.map(e=>{var t,s,r,a,i;let n,c,p,u,h,x;return n=e.testPath===f,c=b.current.get(e.testPath),p=c?.boot??0,u=A[e.projectName]??ey(et.get(e.projectName)),(0,l.jsx)("div",{className:"h-full w-full",style:{display:n?"block":"none"},children:(0,l.jsx)(eC,{token:d,selection:u,active:n,onResponsiveResize:"responsive"===u.mode?t=>ea(e.projectName,t):void 0,"data-testid":"responsive"===u.mode?"viewport-resizer":void 0,"data-test-project":e.projectName,"data-test-file":e.testPath,children:(0,l.jsx)("iframe",{"data-test-file":e.testPath,"data-test-project":e.projectName,title:`Test runner for ${(h=(t=e.testPath).split("/"))[h.length-1]||t}`,src:c?(r=e.testPath,a=(s=e.projectName)&&o.projectRunnerUrls?.[s]?o.projectRunnerUrls[s]:o.runnerUrl,i=c.testNamePattern,(x=new URL("/runner.html",a||window.location.origin)).searchParams.set("testFile",r),i&&x.searchParams.set("testNamePattern",i),x.toString()):"about:blank",className:"block h-full w-full border-0",style:{background:d.colorBgContainer},onLoad:t=>{let s=b.current.get(e.testPath);s&&s.boot===p&&t.currentTarget.contentWindow?.postMessage({type:"RSTEST_CONFIG",payload:{...o,testFile:e.testPath,runId:s.runId}},"*")}},`${e.testPath}#${p}`)})},e.testPath)})]})]})})]})})},eP=()=>{let e=window.__RSTEST_BROWSER_OPTIONS__,[t,s]=(0,i.useState)("dark"),[n,c]=(0,i.useState)("dark");(0,i.useEffect)(()=>{let e=window.matchMedia("(prefers-color-scheme: dark)"),t=e=>c(e.matches?"dark":"light");return c(e.matches?"dark":"light"),e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]),(0,i.useEffect)(()=>{try{let e=window.localStorage.getItem("rstest-theme");("light"===e||"dark"===e||"system"===e)&&s(e)}catch{}},[]);let d="system"===t?n:t;if((0,i.useEffect)(()=>{document.body.dataset.theme=d;try{window.localStorage.setItem("rstest-theme",t)}catch{}},[d,t]),!e)return(0,l.jsx)("div",{className:"flex h-screen w-full items-center justify-center bg-zinc-950 text-white",children:"Missing browser options"});let p="dark"===d,u=e.projects?.[0]?.name||e.rootPath.split("/").filter(Boolean).pop()||"rstest";return(0,i.useEffect)(()=>{document.title=`${u} [RSTEST BROWSER]`},[u]),(0,l.jsx)(o.Ay,{componentSize:"small",theme:{algorithm:p?r.A.darkAlgorithm:r.A.defaultAlgorithm,token:{fontFamily:'"Inter",system-ui,-apple-system,"Segoe UI",sans-serif',fontFamilyCode:'"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace',colorInfo:"#0070f3",colorPrimary:"#0070f3",colorSuccess:"#45a557",colorError:p?"#d93036":"#da2f35",colorWarning:"#ffb224",borderRadius:6}},children:(0,l.jsx)(a.A,{children:(0,l.jsx)(eA,{options:e,theme:t,setTheme:s})})})},eM=()=>{let e=document.getElementById("root");e&&n.createRoot(e).render((0,l.jsx)(i.StrictMode,{children:(0,l.jsx)(eP,{})}))};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",eM):eM()}},i={};function n(e){var t=i[e];if(void 0!==t)return t.exports;var s=i[e]={exports:{}};return a[e](s,s.exports,n),s.exports}n.m=a,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(s,l){if(1&l&&(s=this(s)),8&l||"object"==typeof s&&s&&(4&l&&s.__esModule||16&l&&"function"==typeof s.then))return s;var r=Object.create(null);n.r(r);var o={};e=e||[null,t({}),t([]),t(t)];for(var a=2&l&&s;("object"==typeof a||"function"==typeof a)&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach(e=>{o[e]=()=>s[e]});return o.default=()=>s,n.d(r,o),r},n.d=(e,t,s)=>{var l=(t,s)=>{for(var l in t)n.o(t,l)&&!n.o(e,l)&&Object.defineProperty(e,l,{enumerable:!0,[s]:t[l]})};l(t,"get"),l(s,"value")},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s=[],n.O=(e,t,l,r)=>{if(t){r=r||0;for(var o=s.length;o>0&&s[o-1][2]>r;o--)s[o]=s[o-1];s[o]=[t,l,r];return}for(var a=1/0,o=0;o<s.length;o++){for(var[t,l,r]=s[o],i=!0,c=0;c<t.length;c++)(!1&r||a>=r)&&Object.keys(n.O).every(e=>n.O[e](t[c]))?t.splice(c--,1):(i=!1,r<a&&(a=r));if(i){s.splice(o--,1);var d=l();void 0!==d&&(e=d)}}return e},l={410:0},n.O.j=e=>0===l[e],r=(e,t)=>{var s,r,[o,a,i]=t,c=0;if(o.some(e=>0!==l[e])){for(s in a)n.o(a,s)&&(n.m[s]=a[s]);if(i)var d=i(n)}for(e&&e(t);c<o.length;c++)r=o[c],n.o(l,r)&&l[r]&&l[r][0](),l[r]=0;return n.O(d)},(o=self.rspackChunk_rstest_browser_ui=self.rspackChunk_rstest_browser_ui||[]).forEach(r.bind(null,0)),o.push=r.bind(null,o.push.bind(o));var c=n.O(void 0,["783","260"],()=>n(657));c=n.O(c)})();
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<script>
|
|
13
13
|
window.__RSTEST_BROWSER_OPTIONS__ = __RSTEST_OPTIONS_PLACEHOLDER__;
|
|
14
14
|
</script>
|
|
15
|
-
<script defer src="/container-static/js/lib-react.e24a1d366b.js"></script><script defer src="/container-static/js/
|
|
15
|
+
<script defer src="/container-static/js/lib-react.e24a1d366b.js"></script><script defer src="/container-static/js/260.3739fe815c.js"></script><script defer src="/container-static/js/index.c0f87bfb3e.js"></script><link href="/container-static/css/index.43daaf6c93.css" rel="stylesheet"></head>
|
|
16
16
|
<body>
|
|
17
17
|
<div id="root"></div>
|
|
18
18
|
</body>
|
package/dist/browserRsbuild.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { type ProjectContext, type RstestContext, rsbuild, type WatchInvalidationState } from '@rstest/core/internal/browser';
|
|
2
2
|
import { WebSocketServer } from 'ws';
|
|
3
3
|
import type { ContainerRpcManager } from './containerRpc.js';
|
|
4
|
-
import type {
|
|
4
|
+
import type { HeadedRunRegistry } from './headedRunRegistry.js';
|
|
5
|
+
import { type BrowserDispatchHandler, type BrowserHostConfig, type BrowserProjectRuntime, type TestFileInfo } from './protocol.js';
|
|
5
6
|
import type { BrowserProvider, BrowserProviderBrowser, BrowserProviderContext, BrowserProviderPage } from './providers/index.js';
|
|
6
7
|
type RsbuildDevServer = rsbuild.RsbuildDevServer;
|
|
7
8
|
type RsbuildInstance = rsbuild.RsbuildInstance;
|
|
@@ -40,6 +41,26 @@ export type BrowserProjectServer = {
|
|
|
40
41
|
type BrowserWatchState = {
|
|
41
42
|
lastTestFiles: TestFileInfo[];
|
|
42
43
|
hooksEnabled: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* The rerun trigger of the CURRENT controller entry. The watch plugins below
|
|
46
|
+
* live as long as the compilers (one runtime, many controller entries after
|
|
47
|
+
* config-change restarts), so they must not capture any one entry's trigger:
|
|
48
|
+
* a closure bound at runtime creation would keep driving the first entry's
|
|
49
|
+
* dead scheduler forever, and watch would silently stop rerunning.
|
|
50
|
+
*/ triggerRerun?: () => Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* The headed run registry (identity + settlement owner). Lives here so a
|
|
53
|
+
* re-entering controller adopts the previous entry's still-open runs
|
|
54
|
+
* instead of orphaning them in a discarded closure.
|
|
55
|
+
*/ headedRuns?: HeadedRunRegistry;
|
|
56
|
+
/**
|
|
57
|
+
* The committed file set's monotonic version. Lives here for the same reason
|
|
58
|
+
* the registry does: the frame set it versions is the container's, and the
|
|
59
|
+
* container outlives any one controller entry. A per-entry counter would
|
|
60
|
+
* restart at 1 and become indistinguishable from the previous entry's
|
|
61
|
+
* in-flight acks — the exact ABA the version replaced a content signature to
|
|
62
|
+
* avoid.
|
|
63
|
+
*/ headedFileSetVersion: number;
|
|
43
64
|
// Diff baselines keyed per project: sibling projects have isolated
|
|
44
65
|
// compilers, so a shared flat baseline would let one project's compile
|
|
45
66
|
// clobber another's (missed reruns) and collide on compiler-local chunk
|
|
@@ -87,13 +108,13 @@ export declare const collectProjectEntries: (context: RstestContext, // The expl
|
|
|
87
108
|
// plugin) that do not carry the plan's project list.
|
|
88
109
|
browserProjects?: ProjectContext[]) => Promise<BrowserProjectEntries[]>;
|
|
89
110
|
export declare const resolveContainerDist: () => string;
|
|
90
|
-
// Host-side mirror of the browser runtime's `toContextKey` (client/
|
|
111
|
+
// Host-side mirror of the browser runtime's `toContextKey` (client/runner.ts):
|
|
91
112
|
// `./<path-relative-to-project-root>` with forward slashes. The runtime derives
|
|
92
113
|
// the same key from the target test file, so the non-watch import map below must
|
|
93
114
|
// key by the identical form for `loadTest(key)` to resolve.
|
|
94
115
|
export declare const toContextKey: (filePath: string, projectRootPosix: string) => string;
|
|
95
116
|
export declare const destroyBrowserRuntime: (runtime: BrowserRuntime) => Promise<void>;
|
|
96
|
-
export declare const createBrowserRuntime: ({ context, projectEntries: initialProjectEntries, browserProjects, shardedEntries, freezeShardedEntries, tempDir, isWatchMode,
|
|
117
|
+
export declare const createBrowserRuntime: ({ context, projectEntries: initialProjectEntries, browserProjects, shardedEntries, freezeShardedEntries, tempDir, isWatchMode, containerDistPath, containerDevServer, forceHeadless, skipProviderLaunch, appliedModifyRstestConfigEnvironments }: {
|
|
97
118
|
context: RstestContext;
|
|
98
119
|
projectEntries: BrowserProjectEntries[];
|
|
99
120
|
/**
|
|
@@ -106,7 +127,6 @@ export declare const createBrowserRuntime: ({ context, projectEntries: initialPr
|
|
|
106
127
|
freezeShardedEntries?: boolean;
|
|
107
128
|
tempDir: string;
|
|
108
129
|
isWatchMode: boolean;
|
|
109
|
-
onTriggerRerun?: () => Promise<void>;
|
|
110
130
|
containerDistPath?: string;
|
|
111
131
|
containerDevServer?: string;
|
|
112
132
|
/** Force headless mode regardless of user config (used for list command) */ forceHeadless?: boolean;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { BrowserProviderPage, BrowserV8CoverageCollector } from './providers/index.js';
|
|
2
|
+
import { type SourceMapPayload } from './sourceMap/sourceMapLoader.js';
|
|
3
|
+
export type BrowserV8CoverageResourceStore = {
|
|
4
|
+
assetFiles: Map<string, string>;
|
|
5
|
+
sourceMaps: Map<string, string>;
|
|
6
|
+
};
|
|
7
|
+
export declare const takeBrowserV8Coverage: ({ collector, page, projectUrl, rootPath, fetchTimeout, sourceMapCache, resourceStore }: {
|
|
8
|
+
collector: BrowserV8CoverageCollector;
|
|
9
|
+
page: BrowserProviderPage;
|
|
10
|
+
projectUrl: string;
|
|
11
|
+
rootPath: string;
|
|
12
|
+
fetchTimeout: number;
|
|
13
|
+
sourceMapCache: Map<string, SourceMapPayload | null>;
|
|
14
|
+
resourceStore?: BrowserV8CoverageResourceStore;
|
|
15
|
+
}) => Promise<unknown | null>;
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
const DISPATCH_MESSAGE_TYPE = '__rstest_dispatch__';
|
|
2
|
+
const DISPATCH_RESPONSE_TYPE = '__rstest_dispatch_response__';
|
|
3
|
+
const DISPATCH_RPC_BRIDGE_NAME = '__rstest_dispatch_rpc__';
|
|
4
|
+
const DISPATCH_RPC_REQUEST_TYPE = 'dispatch-rpc-request';
|
|
5
|
+
const RSTEST_CONFIG_MESSAGE_TYPE = 'RSTEST_CONFIG';
|
|
6
|
+
const DISPATCH_NAMESPACE_BROWSER = 'browser';
|
|
7
|
+
const DISPATCH_NAMESPACE_FILE_CLEANUP = 'file-cleanup';
|
|
8
|
+
const DISPATCH_NAMESPACE_SNAPSHOT = 'snapshot';
|
|
9
|
+
const RSTEST_BROWSER_CACHE_CLEANERS_KEY = '@rstest/browser/cache-cleaners';
|
|
10
|
+
let runId;
|
|
11
|
+
const adoptRunIdentity = (value)=>{
|
|
12
|
+
runId = value;
|
|
13
|
+
};
|
|
14
|
+
const getRunIdentity = ()=>runId;
|
|
15
|
+
const FRAMEWORK_RPC_TIMEOUT_MS = 30000;
|
|
16
|
+
let rpcPhase = 'framework';
|
|
17
|
+
const setRpcPhase = (phase)=>{
|
|
18
|
+
rpcPhase = phase;
|
|
19
|
+
};
|
|
20
|
+
const getRpcTimeout = (phase = rpcPhase)=>{
|
|
21
|
+
const configuredTimeout = window.__RSTEST_BROWSER_OPTIONS__?.rpcTimeout;
|
|
22
|
+
if (void 0 !== configuredTimeout && configuredTimeout > 0) return configuredTimeout;
|
|
23
|
+
return 'framework' === phase ? FRAMEWORK_RPC_TIMEOUT_MS : -1;
|
|
24
|
+
};
|
|
25
|
+
const pendingRequests = new Map();
|
|
26
|
+
let requestIdCounter = 0;
|
|
27
|
+
let messageListenerInitialized = false;
|
|
28
|
+
let messageListener;
|
|
29
|
+
const createRequestId = (prefix)=>{
|
|
30
|
+
if ('function' == typeof globalThis.crypto?.randomUUID) return globalThis.crypto.randomUUID();
|
|
31
|
+
requestIdCounter += 1;
|
|
32
|
+
return `${prefix}-${Date.now().toString(36)}-${requestIdCounter.toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
|
|
33
|
+
};
|
|
34
|
+
const createRunnerLifecycleRequest = (method, args)=>({
|
|
35
|
+
requestId: createRequestId('runner-lifecycle'),
|
|
36
|
+
namespace: "runner",
|
|
37
|
+
method,
|
|
38
|
+
args
|
|
39
|
+
});
|
|
40
|
+
const stampRunIdentity = (request)=>({
|
|
41
|
+
...request,
|
|
42
|
+
runId: getRunIdentity()
|
|
43
|
+
});
|
|
44
|
+
const toEnvelopeMessage = (request)=>({
|
|
45
|
+
type: DISPATCH_MESSAGE_TYPE,
|
|
46
|
+
payload: {
|
|
47
|
+
runId: getRunIdentity(),
|
|
48
|
+
message: {
|
|
49
|
+
type: DISPATCH_RPC_REQUEST_TYPE,
|
|
50
|
+
payload: request
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
const sendDispatchRequest = (request, onError)=>{
|
|
55
|
+
const stamped = stampRunIdentity(request);
|
|
56
|
+
if (window.parent === window) {
|
|
57
|
+
const dispatchBridge = window[DISPATCH_RPC_BRIDGE_NAME];
|
|
58
|
+
if (!dispatchBridge) return void onError?.(new Error('Dispatch RPC bridge is not available in top-level runner.'));
|
|
59
|
+
Promise.resolve(dispatchBridge(stamped)).catch((error)=>{
|
|
60
|
+
onError?.(error);
|
|
61
|
+
});
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
window.parent.postMessage(toEnvelopeMessage(stamped), '*');
|
|
65
|
+
};
|
|
66
|
+
const isDispatchResponse = (value)=>'object' == typeof value && null !== value && 'requestId' in value && 'string' == typeof value.requestId;
|
|
67
|
+
const takePendingRequest = (requestId)=>{
|
|
68
|
+
const pending = pendingRequests.get(requestId);
|
|
69
|
+
if (!pending) return;
|
|
70
|
+
pendingRequests.delete(requestId);
|
|
71
|
+
if (void 0 !== pending.timeoutId) clearTimeout(pending.timeoutId);
|
|
72
|
+
return pending;
|
|
73
|
+
};
|
|
74
|
+
const rejectPendingRequest = (requestId, error)=>{
|
|
75
|
+
takePendingRequest(requestId)?.reject(error);
|
|
76
|
+
};
|
|
77
|
+
const settlePendingRequest = (response)=>{
|
|
78
|
+
const pending = takePendingRequest(response.requestId);
|
|
79
|
+
if (!pending) return;
|
|
80
|
+
if (response.stale) return void pending.reject(new Error(pending.staleMessage));
|
|
81
|
+
if (response.error) return void pending.reject(new Error(response.error));
|
|
82
|
+
pending.resolve(response.result);
|
|
83
|
+
};
|
|
84
|
+
const disposeDispatchTransport = (error = new Error('Browser RPC transport disposed.'))=>{
|
|
85
|
+
for (const requestId of pendingRequests.keys())rejectPendingRequest(requestId, error);
|
|
86
|
+
if (messageListenerInitialized && messageListener) window.removeEventListener('message', messageListener);
|
|
87
|
+
messageListener = void 0;
|
|
88
|
+
messageListenerInitialized = false;
|
|
89
|
+
};
|
|
90
|
+
const initMessageListener = ()=>{
|
|
91
|
+
if (messageListenerInitialized) return;
|
|
92
|
+
messageListenerInitialized = true;
|
|
93
|
+
messageListener = (event)=>{
|
|
94
|
+
if (event.data?.type === DISPATCH_RESPONSE_TYPE) settlePendingRequest(event.data.payload);
|
|
95
|
+
};
|
|
96
|
+
window.addEventListener('message', messageListener);
|
|
97
|
+
};
|
|
98
|
+
const unwrapDispatchBridgeResult = (requestId, result, staleMessage)=>{
|
|
99
|
+
if (!isDispatchResponse(result)) throw new Error('Invalid dispatch bridge response payload.');
|
|
100
|
+
if (result.requestId !== requestId) throw new Error(`Mismatched dispatch response id: expected ${requestId}, got ${result.requestId}`);
|
|
101
|
+
if (result.stale) throw new Error(staleMessage);
|
|
102
|
+
if (result.error) throw new Error(result.error);
|
|
103
|
+
return result.result;
|
|
104
|
+
};
|
|
105
|
+
const dispatchRpc = ({ requestId, request, timeoutMs, timeoutMessage, staleMessage })=>{
|
|
106
|
+
const stamped = stampRunIdentity(request);
|
|
107
|
+
if (window.parent === window) {
|
|
108
|
+
const dispatchBridge = window[DISPATCH_RPC_BRIDGE_NAME];
|
|
109
|
+
if (!dispatchBridge) throw new Error('Dispatch RPC bridge is not available in top-level runner.');
|
|
110
|
+
return new Promise((resolve, reject)=>{
|
|
111
|
+
const pending = {
|
|
112
|
+
staleMessage,
|
|
113
|
+
resolve: (value)=>resolve(value),
|
|
114
|
+
reject
|
|
115
|
+
};
|
|
116
|
+
pendingRequests.set(requestId, pending);
|
|
117
|
+
if (timeoutMs >= 0) pending.timeoutId = setTimeout(()=>{
|
|
118
|
+
rejectPendingRequest(requestId, new Error(timeoutMessage));
|
|
119
|
+
}, timeoutMs);
|
|
120
|
+
const call = Promise.resolve().then(()=>dispatchBridge(stamped)).then((result)=>unwrapDispatchBridgeResult(requestId, result, staleMessage));
|
|
121
|
+
call.then((result)=>{
|
|
122
|
+
takePendingRequest(requestId)?.resolve(result);
|
|
123
|
+
}).catch((error)=>{
|
|
124
|
+
rejectPendingRequest(requestId, error instanceof Error ? error : new Error(String(error)));
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
initMessageListener();
|
|
129
|
+
return new Promise((resolve, reject)=>{
|
|
130
|
+
const pending = {
|
|
131
|
+
staleMessage,
|
|
132
|
+
resolve: (value)=>{
|
|
133
|
+
resolve(value);
|
|
134
|
+
},
|
|
135
|
+
reject: (error)=>{
|
|
136
|
+
reject(error);
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
pendingRequests.set(requestId, pending);
|
|
140
|
+
if (timeoutMs >= 0) pending.timeoutId = setTimeout(()=>{
|
|
141
|
+
rejectPendingRequest(requestId, new Error(timeoutMessage));
|
|
142
|
+
}, timeoutMs);
|
|
143
|
+
try {
|
|
144
|
+
window.parent.postMessage(toEnvelopeMessage(stamped), '*');
|
|
145
|
+
} catch (error) {
|
|
146
|
+
rejectPendingRequest(requestId, error instanceof Error ? error : new Error(String(error)));
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
};
|
|
150
|
+
export { DISPATCH_MESSAGE_TYPE, DISPATCH_NAMESPACE_BROWSER, DISPATCH_NAMESPACE_FILE_CLEANUP, DISPATCH_NAMESPACE_SNAPSHOT, RSTEST_BROWSER_CACHE_CLEANERS_KEY, RSTEST_CONFIG_MESSAGE_TYPE, adoptRunIdentity, createRequestId, createRunnerLifecycleRequest, dispatchRpc, disposeDispatchTransport, getRpcTimeout, getRunIdentity, sendDispatchRequest, setRpcPhase };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { BrowserRpcRequest } from '../rpcProtocol.js';
|
|
2
|
-
export declare const callBrowserRpc: <T>(payload: Omit<BrowserRpcRequest, 'id' | 'testPath'
|
|
2
|
+
export declare const callBrowserRpc: <T>(payload: Omit<BrowserRpcRequest, 'id' | 'testPath'>) => Promise<T>;
|
|
@@ -1,23 +1,26 @@
|
|
|
1
1
|
import type { BrowserDispatchRequest } from '../protocol.js';
|
|
2
|
-
|
|
2
|
+
type RpcPhase = 'framework' | 'test';
|
|
3
|
+
export declare const setRpcPhase: (phase: RpcPhase) => void;
|
|
4
|
+
export declare const getRpcTimeout: (phase?: RpcPhase) => number;
|
|
3
5
|
export declare const createRequestId: (prefix: string) => string;
|
|
4
6
|
/**
|
|
5
7
|
* Build a runner-lifecycle dispatch request.
|
|
6
8
|
*
|
|
7
9
|
* Lifecycle events (`file-ready`, `suite-start`, `suite-result`, `case-start`)
|
|
8
10
|
* share the dispatch-rpc envelope but are delivered fire-and-forget via
|
|
9
|
-
* {@link
|
|
11
|
+
* {@link sendDispatchRequest}, so the request id only needs to be unique — it is
|
|
10
12
|
* produced by the shared {@link createRequestId} factory rather than a bespoke
|
|
11
13
|
* per-runner counter.
|
|
12
14
|
*/ export declare const createRunnerLifecycleRequest: (method: string, args: unknown) => BrowserDispatchRequest;
|
|
13
15
|
/**
|
|
14
|
-
* Deliver a
|
|
16
|
+
* Deliver a dispatch request fire-and-forget.
|
|
15
17
|
*
|
|
16
18
|
* Unlike {@link dispatchRpc}, this never awaits, unwraps, id-matches, or times
|
|
17
19
|
* out: the host echoes a response but the runner ignores it. Failures surface
|
|
18
20
|
* only through the optional `onError` hook (debug logging at the call site),
|
|
19
21
|
* keeping the hot test loop non-blocking.
|
|
20
|
-
*/ export declare const
|
|
22
|
+
*/ export declare const sendDispatchRequest: (request: BrowserDispatchRequest, onError?: (error: unknown) => void) => void;
|
|
23
|
+
export declare const disposeDispatchTransport: (error?: Error) => void;
|
|
21
24
|
export declare const dispatchRpc: <T>({ requestId, request, timeoutMs, timeoutMessage, staleMessage }: {
|
|
22
25
|
requestId: string;
|
|
23
26
|
request: BrowserDispatchRequest;
|
|
@@ -25,3 +28,4 @@ export declare const dispatchRpc: <T>({ requestId, request, timeoutMs, timeoutMe
|
|
|
25
28
|
timeoutMessage: string;
|
|
26
29
|
staleMessage: string;
|
|
27
30
|
}) => Promise<T>;
|
|
31
|
+
export { };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one identity this document runs under.
|
|
3
|
+
*
|
|
4
|
+
* Written once at boot from the config handshake (headed: the container's
|
|
5
|
+
* lease grant; headless: the host-injected inline options) and read by every
|
|
6
|
+
* outbound channel — `send()` envelopes and dispatch requests alike. The
|
|
7
|
+
* document never re-derives its identity from the URL: after an HMR full
|
|
8
|
+
* reload the URL still names the run this frame was ORIGINALLY navigated for,
|
|
9
|
+
* while the handshake names the run the container wants NOW — a rerun that
|
|
10
|
+
* reports the URL's identity reports a dead run and deadlocks its cycle.
|
|
11
|
+
*/ export declare const adoptRunIdentity: (value: string) => void;
|
|
12
|
+
export declare const getRunIdentity: () => string | undefined;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser snapshot environment that proxies file operations to the host
|
|
3
|
+
* via postMessage RPC through the container.
|
|
4
|
+
*/ export declare class BrowserSnapshotEnvironment {
|
|
5
|
+
getVersion(): string;
|
|
6
|
+
getHeader(): string;
|
|
7
|
+
resolveRawPath(_testPath: string, rawPath: string): Promise<string>;
|
|
8
|
+
resolvePath(filepath: string): Promise<string>;
|
|
9
|
+
prepareDirectory(): Promise<void>;
|
|
10
|
+
saveSnapshotFile(filepath: string, snapshot: string): Promise<void>;
|
|
11
|
+
readSnapshotFile(filepath: string): Promise<string | null>;
|
|
12
|
+
removeSnapshotFile(filepath: string): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Process stack trace for inline snapshots.
|
|
15
|
+
* Maps bundled URLs back to original source file paths.
|
|
16
|
+
*/ processStackTrace(stack: {
|
|
17
|
+
file: string;
|
|
18
|
+
line: number;
|
|
19
|
+
column: number;
|
|
20
|
+
method: string;
|
|
21
|
+
}): {
|
|
22
|
+
file: string;
|
|
23
|
+
line: number;
|
|
24
|
+
column: number;
|
|
25
|
+
method: string;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get all script URLs currently on the page.
|
|
3
|
+
* Used to detect newly loaded chunk scripts.
|
|
4
|
+
*/ export declare const getScriptUrls: () => Set<string>;
|
|
5
|
+
/**
|
|
6
|
+
* Find the newly added script URL by comparing script sets.
|
|
7
|
+
* Returns the first new script URL found, or null if none.
|
|
8
|
+
*/ export declare const findNewScriptUrl: (beforeUrls: Set<string>, afterUrls: Set<string>) => string | null;
|
|
9
|
+
/**
|
|
10
|
+
* Preload source map for a test file's chunk URL.
|
|
11
|
+
*
|
|
12
|
+
* Always fetches fresh source map to handle file changes during watch mode.
|
|
13
|
+
*
|
|
14
|
+
* @param chunkUrl - The full URL of the chunk JS file
|
|
15
|
+
*/ export declare const preloadTestFileSourceMap: (chunkUrl: string) => Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Preload source map for the runner.js file.
|
|
18
|
+
*
|
|
19
|
+
* This is essential for inline snapshot support because the snapshot code
|
|
20
|
+
* runs in runner.js (which contains @rstest/core/internal/browser-runtime).
|
|
21
|
+
* Without this, stack traces from inline snapshots cannot be mapped back
|
|
22
|
+
* to the original source files.
|
|
23
|
+
*/ export declare const preloadRunnerSourceMap: () => Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Stack frame interface matching @vitest/snapshot's format
|
|
26
|
+
*/ interface StackFrame {
|
|
27
|
+
file: string;
|
|
28
|
+
line: number;
|
|
29
|
+
column: number;
|
|
30
|
+
method?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Map a stack frame from bundled URL to original source file.
|
|
34
|
+
* This is used by BrowserSnapshotEnvironment.processStackTrace
|
|
35
|
+
*/ export declare const mapStackFrame: (frame: StackFrame) => StackFrame;
|
|
36
|
+
export { };
|