@rstest/browser 0.11.5 → 0.11.6

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.
@@ -0,0 +1 @@
1
+ (()=>{"use strict";var e,t,s,l,r,o,a={1086(e,t,s){var l=s(4558);let r="__rstest_dispatch_response__";var o=s(4514),a=s(9762),i=s(6170),n=s(1102),c=s(9083);let d=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 u=s(3070),p=s(7840),h=s(769),f=s(3880),x=s(1036);let m=(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 j=s(7590),v=s(8721),y=s(1216),_=s(6980),C=s(7575);let w={idle:{label:"Idle",color:"var(--accents-5)",icon:(0,l.jsx)(j.A,{size:14,strokeWidth:2.5})},running:{label:"Running",color:"var(--ds-amber-700)",icon:(0,l.jsx)(v.A,{size:14,className:"animate-spin",strokeWidth:2.5})},pass:{label:"Pass",color:"var(--ds-green-700)",icon:(0,l.jsx)(y.A,{size:14,strokeWidth:2.5})},fail:{label:"Fail",color:"var(--ds-red-800)",icon:(0,l.jsx)(_.A,{size:14,strokeWidth:2.5})}},b={...w,skip:{label:"Skip",color:"var(--accents-4)",icon:(0,l.jsx)(C.A,{size:14,strokeWidth:2.5})}};var S=s(5578),k=s(8567),F=s(1072),N=s(9789),A=s(4434),P=s(5271),M=s(9302),R=s(4444);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"},E=["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}}),U=new Set(E.map(e=>e.id)),T=e=>"string"==typeof e&&U.has(e),$=e=>{let t=E.find(t=>t.id===e);if(!t)throw Error(`Unknown device preset: ${e}`);return t},I=(e,t,s)=>Math.min(s,Math.max(t,e)),B=e=>{let{token:t,value:s,onChange:r}=e,[o,a]=(0,n.useState)(!1),i=(0,n.useRef)({width:800,height:600});"responsive"===s.mode&&(i.current={width:s.width,height:s.height});let c="full"===s.mode?"full":"responsive"===s.mode?"responsive":s.preset,d=(0,n.useMemo)(()=>[{value:"full",label:"Full"},{value:"responsive",label:"Responsive"},...E.map(e=>{let t;return{value:e.id,label:(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)(S.A,{value:c,options:d,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}:i.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)(u.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)(R.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};i.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=I(Number(e??s.width),1,1e4);i.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=I(Number(e??s.height),1,1e4);i.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)(F.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)(N.A,{size:14,strokeWidth:2.2});if("responsive"===e.mode)return(0,l.jsx)(A.A,{size:14,strokeWidth:2.2});let t=$(e.preset).label;return t.startsWith("iPad")||t.startsWith("Surface")||t.startsWith("Nest Hub")||t.includes("Fold")?(0,l.jsx)(P.A,{size:14,strokeWidth:2.2}):(0,l.jsx)(M.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}`:$(s.preset).label})]})})},W=e=>{let{token:t,activeFile:s,rootPath:r,status:o,viewport:a,onViewportChange:n}=e,{message:c}=i.A.useApp(),d=o?w[o]:void 0,j=s?m(s,r):"",v=j.split("/"),y=v.pop(),_=v.join("/"),C=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)(h.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)(u.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)(f.A,{size:12,strokeWidth:2.5}),onClick:C})}),(0,l.jsx)(u.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)(x.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:[a&&n&&(0,l.jsx)(B,{token:t,value:a,onChange:n}),d&&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:d.label.toUpperCase()})]})]})};var D=s(6422);let G=e=>{let{className:t,style:s,direction:r="horizontal",children:o,autoSaveId:a,...i}=e,c=n.Children.toArray(o).filter(e=>n.isValidElement(e)&&e.type===Z),d=n.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])(),u=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}}),p=n.useCallback(e=>{if(a)try{localStorage.setItem(a,JSON.stringify(e))}catch{}},[a]);return(0,l.jsx)(D.A,{layout:"horizontal"===r?"horizontal":"vertical",className:t,style:{height:"100%",width:"100%",padding:0,margin:0,...s},onResizeEnd:p,...i,children:u.map(e=>(0,l.jsx)(D.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 L=s(8211),q=s(1431),H=s(1240),J=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 V=e=>{let{theme:t,onThemeToggle:s,isConnected:r,token:o,counts:a}=e,[i,c]=(0,n.useState)(0),d=(0,n.useRef)(a);(0,n.useEffect)(()=>{let e=d.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)}d.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),m=f(a.fail),g=f(a.running),j={system:L.A,light:q.A,dark:H.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)(J,{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)(u.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)(u.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)] ${i>0?"progress-flash-active":""}`,style:{width:`${x}%`,background:"var(--ds-green-700)",zIndex:3,color:"var(--ds-green-700)"}},`pass-${i}`),(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)] ${i>0?"progress-flash-active":""}`,style:{width:`${x+m}%`,background:"var(--ds-red-800)",zIndex:2,color:"var(--ds-red-800)"}},`fail-${i}`),(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)] ${i>0?"progress-flash-active":""}`,style:{width:`${x+m+g}%`,background:"var(--ds-amber-700)",zIndex:1,color:"var(--ds-amber-700)"}},`run-${i}`)]})]})};var X=s(1256),K=s(3277),Y=s(9502),Q=s(9013),ee=s(3183),et=s(6389);let es=(0,n.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)(et.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)})})})}),el=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)(es,{counts:n,isRunning:c})}),(0,l.jsxs)("div",{className:"flex items-center gap-1",children:[(0,l.jsx)(u.A,{title:o?"Collapse all":"Expand all",mouseLeaveDelay:0,children:(0,l.jsx)(p.Ay,{type:"text",size:"small",icon:o?(0,l.jsx)(K.A,{size:13,strokeWidth:2.5}):(0,l.jsx)(Y.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)(u.A,{title:"Re-run all tests",mouseLeaveDelay:0,children:(0,l.jsx)(p.Ay,{type:"text",size:"small",icon:(0,l.jsx)(Q.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)(X.A,{placeholder:"Search tests...",prefix:(0,l.jsx)(ee.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 er=s(8787),eo=s(2364),ea=s(6197),ei=s(8493),en=s(7269);let ec=e=>`__project__${e}`,ed=(e,t)=>`${e}::suite::${t.join("::")}`,eu=(e,t)=>{let s=e;for(let e=1;e<=t.length;e++)s=ed(s,t.slice(0,e));return s},ep=(e,t)=>`${e}::case::${t}`,eh=["pass","fail","skip"],ef=e=>{let{icon:t,iconColor:s,status:r,label:o,caseId:a,onRerun:i,buttonTextColor:c}=e,d=(0,n.useRef)(null),[h,f]=(0,n.useState)(0),x=eh.includes(r);return(0,n.useEffect)(()=>{x&&null!==d.current&&d.current!==r&&f(e=>e+1),d.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)(u.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)(u.A,{title:"Re-run this test",mouseLeaveDelay:0,children:(0,l.jsx)(p.Ay,{type:"text",size:"small",icon:(0,l.jsx)(Q.A,{size:14,strokeWidth:2.5}),disabled:!i,onClick:e=>{e.stopPropagation(),i?.()},className:"inline-flex h-5 w-5 items-center justify-center p-0","data-testid":"test-case-rerun",style:{color:c}})})})]})},ex=["pass","fail"],em=e=>{let{icon:t,iconColor:s,status:r,relativePath:o,filePath:a,onOpen:i,onRerun:c,textColor:d}=e,h=(0,n.useRef)(null),[f,m]=(0,n.useState)(0),g=ex.includes(r);return(0,n.useEffect)(()=>{g&&null!==h.current&&h.current!==r&&m(e=>e+1),h.current=r},[r,g]),(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 ${f>0?"status-icon-flash":""}`,style:{color:s},children:t},f),(0,l.jsx)(u.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)(u.A,{title:"Open in editor",mouseLeaveDelay:0,children:(0,l.jsx)(p.Ay,{type:"text",size:"small",icon:(0,l.jsx)(x.A,{size:14,strokeWidth:2.5}),onClick:e=>{e.stopPropagation(),i()},className:"inline-flex h-5 w-5 items-center justify-center p-0","data-testid":"test-file-open-editor",style:{color:d}})}),(0,l.jsx)(u.A,{title:"Re-run this file",mouseLeaveDelay:0,children:(0,l.jsx)(p.Ay,{type:"text",size:"small",icon:(0,l.jsx)(Q.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:d}})})]})]})},eg=["pass","fail","skip"],ej=e=>{let{icon:t,iconColor:s,status:r,name:o,fullName:a,onRerun:i,buttonTextColor:c}=e,d=(0,n.useRef)(null),[h,f]=(0,n.useState)(0),x=eg.includes(r);return(0,n.useEffect)(()=>{x&&null!==d.current&&d.current!==r&&f(e=>e+1),d.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)(u.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)(u.A,{title:"Re-run this suite",mouseLeaveDelay:0,children:(0,l.jsx)(p.Ay,{type:"text",size:"small",icon:(0,l.jsx)(Q.A,{size:14,strokeWidth:2.5}),disabled:!i,onClick:e=>{e.stopPropagation(),i?.()},className:"inline-flex h-5 w-5 items-center justify-center p-0","data-testid":"test-suite-rerun",style:{color:c}})})})]})},ev=e=>{let{testFiles:t,statusMap:s,caseMap:r,rootPath:o,projects:a,loading:i,connected:c,openFiles:d,activeFile:u,token:p,filterText:h,onExpandChange:f,onSelect:x,onRerunFile:j,onRerunTestCase:v}=e,{filteredTestFiles:y,filteredCaseMap:_}=(0,n.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]),C=(0,n.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=b[t],d=ed(s,i.fullPath),u=i.fullPath.join(" ");a.push({key:d,title:(0,l.jsx)(ej,{icon:n.icon,iconColor:n.color,status:t,name:i.name,fullName:u,onRerun:c?()=>{v(e,u)}:void 0,buttonTextColor:p.colorTextSecondary}),children:o(i,d),selectable:!1})}for(let r of t.cases){let t=b[r.status];a.push({key:ep(s,r.id),title:(0,l.jsx)(ef,{icon:t.icon,iconColor:t.color,status:r.status,label:r.name,caseId:r.id,onRerun:c?()=>{v(e,r.fullName)}:void 0,buttonTextColor:p.colorTextSecondary}),isLeaf:!0,selectable:!1})}return a};return o(s,e)},[c,v,p.colorTextSecondary]),S=(0,n.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=w[a],n=m(r,t??o),d=Object.values(_[r]??{});return{key:r,title:(0,l.jsx)(em,{icon:i.icon,iconColor:i.color,status:a,relativePath:n,filePath:r,onOpen:()=>g(r),onRerun:c?()=>{j(r)}:void 0,textColor:p.colorTextSecondary}),children:C(r,d)}};return e.length>1?e.map(e=>{let o=y.filter(t=>t.projectName===e),a=ec(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=w[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)(ea.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:p.colorText},children:e})]}),children:o.map(e=>r(e,i)),selectable:!1}}):y.map(e=>r(e))},[C,_,c,j,a,o,s,y,p]);return i?(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)(er.A.Avatar,{active:!0,size:"small",shape:"circle"}),(0,l.jsx)(er.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)(eo.A,{blockNode:!0,"data-testid":"test-files-tree",showLine:!1,switcherIcon:e=>e.expanded?(0,l.jsx)(ei.A,{size:12,strokeWidth:2.5}):(0,l.jsx)(en.A,{size:12,strokeWidth:2.5}),showIcon:!0,expandAction:"click",expandedKeys:d,selectedKeys:u?[u]:[],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)&&x(s)},treeData:S,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..."})})},ey=(e,t)=>Number.isFinite(e)&&e>0&&Number.isFinite(t)&&t>0,e_=e=>{if(!e)return{mode:"full"};if("string"==typeof e&&T(e))return{mode:"preset",preset:e,orientation:"portrait"};if("object"==typeof e){let t=Number(e.width),s=Number(e.height);if(ey(t,s))return{mode:"responsive",width:t,height:s}}return{mode:"full"}},eC=(e,t,s)=>Math.min(s,Math.max(t,e)),ew=e=>{let{token:t,selection:s,active:r,onResponsiveResize:o,children:a,...i}=e,c=(0,n.useRef)(null),d=(e=>{if("full"===e.mode)return null;if("responsive"===e.mode)return{width:e.width,height:e.height};let t=$(e.preset);return"landscape"===e.orientation?{width:t.height,height:t.width}:{width:t.width,height:t.height}})(s);return((0,n.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=eC(Math.round(l.width),1,1e4),a=eC(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]),d)?(0,l.jsx)("div",{className:"flex h-full w-full items-start justify-center p-4 overflow-auto",children:(0,l.jsx)("div",{ref:c,className:"shrink-0 relative group",style:{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},...i,children:a})}):(0,l.jsx)("div",{className:"h-full w-full",style:{background:t.colorBgContainer},...i,children:a})},eb=e=>"object"==typeof e&&null!==e,eS=(e,t)=>"string"==typeof e[t],ek=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}},eF=e=>"object"==typeof e&&null!==e&&"requestId"in e&&"string"==typeof e.requestId?e.requestId:"unknown-request",eN=async(e,t,s)=>{if(null===s||"function"!=typeof s.postMessage)return;let l=e=>{s.postMessage({type:r,payload:e},"*")};if("unknown-request"===eF(t))return void l({requestId:eF(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)})}},eA=[1e3,2e3,4e3,8e3,16e3,3e4],eP=(e,t)=>t&&e.projectRunnerUrls?.[t]?e.projectRunnerUrls[t]:e.runnerUrl,eM=function(e,t,s){let l=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>4?arguments[4]:void 0,o=new URL("/runner.html",t||window.location.origin);return o.searchParams.set("testFile",e),s&&o.searchParams.set("testNamePattern",s),r&&o.searchParams.set("runId",r),l&&o.searchParams.set("t",Date.now().toString()),o.toString()};var eR=s(5999);let ez=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)},eO=e=>{try{return new URL(e.src,window.location.href).searchParams.get("runId")??void 0}catch{return}},eE=e=>Array.from(document.querySelectorAll("iframe[data-test-file]")).find(t=>t.dataset.testFile===e),eU=e=>{let{options:t,theme:s,setTheme:a}=e,{token:i}=o.A.useToken(),[c,u]=(0,n.useState)([]),[p,h]=(0,n.useState)(null),[f,x]=(0,n.useState)({}),[m,g]=(0,n.useState)({}),[j,v]=(0,n.useState)([]),[y,_]=(0,n.useState)(""),[C,w]=(0,n.useState)({}),b=(0,n.useCallback)(e=>{let s=5381;for(let e=0;e<t.rootPath.length;e++)s=33*s^t.rootPath.charCodeAt(e);return`rstest-viewport:${(s>>>0).toString(16)}:${e}`},[t.rootPath]),S=(0,n.useCallback)(e=>{try{let t=localStorage.getItem(b(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 ey(e,t)?{mode:"responsive",width:e,height:t}:null}if("preset"===l){let e=s.preset,t=s.orientation;if(T(e)&&("portrait"===t||"landscape"===t))return{mode:"preset",preset:e,orientation:t}}return null}catch{return null}},[b]),k=(0,n.useCallback)((e,t)=>{try{localStorage.setItem(b(e),JSON.stringify(t))}catch{}},[b]),[F,N]=(0,n.useState)(()=>{let e={};for(let s of t.projects??[])e[s.name]=S(s.name)??e_(s.viewport);return e});(0,n.useEffect)(()=>{N(e=>{let s={...e};for(let e of t.projects??[])s[e.name]||(s[e.name]=S(e.name)??e_(e.viewport));return s})},[t.projects,S]);let A=(0,n.useCallback)(async(e,s)=>{ez("[Container] handleReloadTestFile called:",e,s),h(e);let l=document.querySelector(`iframe[data-test-file="${e}"]`);if(ez("[Container] Found iframe:",l),!l)throw Error(`Cannot reload test file "${e}": iframe not found`);let r="function"==typeof globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`run-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`;w(t=>({...t,[e]:r})),x(t=>({...t,[e]:"running"})),g(t=>{let s=t[e]??{},l={};for(let[e,t]of Object.entries(s))l[e]={...t,status:"running"};return{...t,[e]:l}});let o=eM(e,eP(t,l.getAttribute("data-test-project")??void 0),s,!1,r);return ez("[Container] Setting iframe.src to:",o),l.src=o,{runId:r}},[t.runnerUrl,t.projectRunnerUrls]),{rpc:P,loading:M,connected:R}=((e,t,s)=>{let[l,r]=(0,n.useState)(null),[o,a]=(0,n.useState)(!0),[i,c]=(0,n.useState)(!1),d=(0,n.useRef)(e),u=(0,n.useRef)(s),p=(0,n.useRef)(null);return(0,n.useEffect)(()=>{d.current=e},[e]),(0,n.useEffect)(()=>{u.current=s},[s]),(0,n.useEffect)(()=>{if(!t)return void a(!1);let e=null,s=null,l=0,o=null,i=!0,n=()=>{let h;if(!i)return;p.current=e=new WebSocket((h="https:"===window.location.protocol?"wss:":"ws:",`${h}//${window.location.hostname}:${t}`));let f=new WeakMap,x={onTestFileUpdate(e){ez("[Container RPC] onTestFileUpdate called:",e),d.current(e)},async reloadTestFile(e,t){if(ez("[Container RPC] reloadTestFile called:",e,t),!u.current)throw Error("reloadTestFile handler is not available");return u.current(e,t)},onHostConfigUpdate(e){ez("[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&&(ez("[Container] WebSocket connected"),l=0,c(!0),r(s=(0,eR.L)(x,{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&&(d.current(e),a(!1))}).catch(()=>{i&&a(!1)}))},e.onclose=()=>{if(p.current!==e||!i)return;ez("[Container] WebSocket disconnected"),s?.$close(Error("Container WebSocket disconnected")),r(null),c(!1);let t=eA[Math.min(l,eA.length-1)];ez(`[Container] Reconnecting in ${t}ms (attempt ${l+1})`),l++,o=setTimeout(()=>{i&&n()},t)},e.onerror=()=>{i&&ez("[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:i}})(u,t?.wsPort,A);(0,n.useEffect)(()=>{x(e=>{let t={};for(let s of c)t[s.testPath]=e[s.testPath]??"idle";return t}),g(e=>{let t={};for(let s of c)t[s.testPath]=e[s.testPath]??{};return t}),w(e=>{let t={};for(let s of c)e[s.testPath]&&(t[s.testPath]=e[s.testPath]);return t});let e=c.map(e=>e.testPath);v(t=>t.filter(t=>e.includes(t))),h(t=>!t&&c.length>0||t&&!e.includes(t)&&c.length>0?c[0].testPath:t)},[c]),(0,n.useEffect)(()=>{P&&R&&P.onRunnerFramesReady(c.map(e=>e.testPath)).catch(e=>{ez("[Container RPC] Failed to notify runner frames ready:",e)})},[P,R,c]);let z=(0,n.useCallback)(e=>"pass"===e?"pass":"fail"===e?"fail":"skip"===e||"todo"===e?"skip":"running",[]),O=(0,n.useCallback)(e=>{h(e)},[]),E=(0,n.useCallback)((e,t)=>{let s=ek({filePath:e,test:t,status:z(t.status)});g(l=>{let r=l[e]??{};return{...l,[e]:{...r,[t.testId]:s}}})},[z]),U=(0,n.useCallback)((e,t)=>{g(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]=ek({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}})},[]),$=(0,n.useCallback)((e,t)=>{g(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]:ek({filePath:t,test:s,status:"running",previousCase:r})}})({filePath:e,test:t,previousCases:l})}})},[]),I=(0,n.useCallback)(e=>{h(e),P&&R&&P.rerunTest(e)},[P,R]),B=(0,n.useCallback)((e,t)=>{h(e),P&&R&&P.rerunTest(e,t)},[P,R]),D=(0,n.useCallback)(()=>{if(P&&R)for(let e of c)P.rerunTest(e.testPath)},[c,P,R]);(0,n.useEffect)(()=>{let e=e=>{let t=e.data?.type!=="__rstest_dispatch__"?null:e.data.payload;if(t){if("file-start"===t.type){let e=t.payload,s=e.testPath;"string"==typeof s&&(x(e=>({...e,[s]:"running"})),g(e=>{let t=e[s]??{},l={};for(let[e,s]of Object.entries(t))l[e]={...s,status:"running"};return{...e,[s]:l}}),P?.onTestFileStart({testPath:s,projectName:e.projectName??""}))}else if("case-result"===t.type){let e=t.payload;e?.testPath&&(E(e.testPath,e),P?.onTestCaseResult(e))}else if("file-complete"===t.type){let s=t.payload,l=s.testPath;if("string"==typeof l){let t=(e=>{if(e)return Array.from(document.querySelectorAll("iframe[data-test-file]")).find(t=>t.contentWindow===e)})(e.source)??eE(l),r=(t?eO(t):void 0)??C[l],o="pass"===s.status||"skip"===s.status;x(e=>({...e,[l]:o?"pass":"fail"})),g(e=>{let t={};for(let e of s.results??[])e?.testId&&(t[e.testId]=ek({filePath:l,test:e,status:z(e.status)}));return{...e,[l]:t}}),P?.onTestFileComplete({...s,runId:r})}}else if("fatal"===t.type){let e=t.payload;p&&x(e=>({...e,[p]:"fail"})),P?.onFatal(e)}else if("log"===t.type){let e=t.payload;P?.onLog(e)}else if("dispatch-rpc-request"===t.type){let s=t.payload;if("runner"===s.namespace&&"file-ready"===s.method){let e=s.args;"string"==typeof e?.testPath&&Array.isArray(e.tests)&&U(e.testPath,e)}if("runner"===s.namespace&&"case-start"===s.method){let e=s.args;"string"==typeof e?.testPath&&e.testId&&$(e.testPath,e)}let l=(e=>{if(!eb(e)||"browser"!==e.namespace||"rpc"!==e.method)return null;let t=e.args;return eb(t)&&eS(t,"id")&&eS(t,"kind")&&eS(t,"method")&&eS(t,"testPath")&&eS(t,"runId")?t:null})(s);if(l){let t=eE(l.testPath),o=t?eO(t):void 0;if(!o||l.runId!==o){let t,a;null!==(t=e.source)&&"function"==typeof t.postMessage&&e.source.postMessage({type:r,payload:(a=s.requestId,{requestId:a,stale:!0,error:`Ignored stale browser RPC request from previous run: ${l.kind}.${l.method} (testPath: ${l.testPath}, runId: ${l.runId}, currentRunId: ${o??"none"})`})},"*");return}}eN(P,s,e.source)}}};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[p,E,z,P,C,U,$]);let L=(0,n.useMemo)(()=>{let e=Object.values(m).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}},[m]),q=(0,n.useMemo)(()=>Object.values(f).some(e=>"running"===e),[f]),H=(0,n.useMemo)(()=>{let e=[],t=[...new Set(c.map(e=>e.projectName))];if(t.length>1)for(let s of t)e.push(ec(s));for(let t of c){let s=t.testPath;for(let t of(e.push(s),Object.values(m[s]??{}))){let{parentNames:l}=t;for(let t=1;t<=l.length;t++)e.push(eu(s,l.slice(0,t)))}}return[...new Set(e)]},[c,m]),J=t.projects?.[0]?.name||t.rootPath.split("/").filter(Boolean).pop()||"default",X=`rstest-split-${J}`,K=(0,n.useMemo)(()=>{let e=new Map;for(let s of t.projects??[])e.set(s.name,s.viewport);return e},[t.projects]),Y=(0,n.useMemo)(()=>{if(!p)return t.projects?.[0]?.name;let e=c.find(e=>e.testPath===p);return e?.projectName??t.projects?.[0]?.name},[p,c,t.projects]),Q=(0,n.useMemo)(()=>Y?F[Y]??e_(K.get(Y)):{mode:"full"},[Y,F,K]),ee=(0,n.useCallback)(e=>{Y&&(k(Y,e),N(t=>({...t,[Y]:e})))},[Y,k]),et=(0,n.useCallback)((e,t)=>{N(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 k(e,r),{...s,[e]:r}})},[k]);return(0,l.jsx)("div",{className:"m-0 h-screen w-full overflow-hidden p-0",style:{background:i.colorBgContainer},children:(0,l.jsxs)(G,{direction:"horizontal",className:"h-full w-full",autoSaveId:X,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:i.colorBgContainer},children:[(0,l.jsx)(V,{theme:s,onThemeToggle:a,isConnected:R,token:i,counts:L}),(0,l.jsx)(el,{token:i,filterText:y,onFilterChange:_,isAllExpanded:H.length>0&&H.every(e=>j.includes(e)),onToggleExpandAll:()=>{H.length>0&&H.every(e=>j.includes(e))?v([]):v(H)},onRerun:R?D:void 0,counts:L,isRunning:q}),(0,l.jsx)("div",{className:"flex-1 overflow-x-hidden overflow-y-auto",style:{background:i.colorBgContainer},children:(0,l.jsx)(ev,{testFiles:c,statusMap:f,caseMap:m,rootPath:t.rootPath,projects:t.projects,loading:M,connected:R,openFiles:j,activeFile:p,token:i,filterText:y,onExpandChange:v,onSelect:O,onRerunFile:I,onRerunTestCase:B})})]})}),(0,l.jsx)(Z,{defaultSize:68,minSize:40,children:(0,l.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",style:{background:i.colorBgLayout},children:[(0,l.jsx)(W,{token:i,activeFile:p??void 0,rootPath:t.rootPath,status:p?f[p]??"idle":void 0,viewport:Y?Q:void 0,onViewportChange:Y?ee:void 0}),(0,l.jsxs)("div",{className:"relative min-h-0 flex-1 overflow-auto",style:{background:i.colorBgLayout},children:[!p&&(0,l.jsx)(d,{message:"Select a test file on the left to view its run output"}),c.map(e=>{var s;let r,o,a,n;return r=e.testPath===p,o=C[e.testPath],a=F[e.projectName]??e_(K.get(e.projectName)),(0,l.jsx)("div",{className:"h-full w-full",style:{display:r?"block":"none"},children:(0,l.jsx)(ew,{token:i,selection:a,active:r,onResponsiveResize:"responsive"===a.mode?t=>et(e.projectName,t):void 0,"data-testid":"responsive"===a.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 ${(n=(s=e.testPath).split("/"))[n.length-1]||s}`,src:o?eM(e.testPath,eP(t,e.projectName),void 0,!1,o):"about:blank",className:"block h-full w-full border-0",style:{background:i.colorBgContainer},onLoad:s=>{if(!o)return;let l=s.currentTarget,r=eO(l)??o;l.contentWindow&&l.contentWindow.postMessage({type:"RSTEST_CONFIG",payload:{...t,testFile:e.testPath,runId:r}},"*")}})})},e.testPath)})]})]})})]})})},eT=()=>{let e=window.__RSTEST_BROWSER_OPTIONS__,[t,s]=(0,n.useState)("dark"),[r,c]=(0,n.useState)("dark");(0,n.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,n.useEffect)(()=>{try{let e=window.localStorage.getItem("rstest-theme");("light"===e||"dark"===e||"system"===e)&&s(e)}catch{}},[]);let d="system"===t?r:t;if((0,n.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 u="dark"===d,p=e.projects?.[0]?.name||e.rootPath.split("/").filter(Boolean).pop()||"rstest";return(0,n.useEffect)(()=>{document.title=`${p} [RSTEST BROWSER]`},[p]),(0,l.jsx)(a.Ay,{componentSize:"small",theme:{algorithm:u?o.A.darkAlgorithm:o.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:u?"#d93036":"#da2f35",colorWarning:"#ffb224",borderRadius:6}},children:(0,l.jsx)(i.A,{children:(0,l.jsx)(eU,{options:e,theme:t,setTheme:s})})})},e$=()=>{let e=document.getElementById("root");e&&c.createRoot(e).render((0,l.jsx)(n.StrictMode,{children:(0,l.jsx)(eT,{})}))};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e$):e$()}},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","683"],()=>n(1086));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/506.b2f920fa67.js"></script><script defer src="/container-static/js/index.d27fd63f5e.js"></script><link href="/container-static/css/index.0521ff95b1.css" rel="stylesheet"></head>
15
+ <script defer src="/container-static/js/lib-react.e24a1d366b.js"></script><script defer src="/container-static/js/683.4f821ce8f1.js"></script><script defer src="/container-static/js/index.568aa7cb35.js"></script><link href="/container-static/css/index.0521ff95b1.css" rel="stylesheet"></head>
16
16
  <body>
17
17
  <div id="root"></div>
18
18
  </body>
@@ -2,10 +2,12 @@ import { type BrowserTestExecutor, type CreateBrowserExecutorOptions, type Rstes
2
2
  /**
3
3
  * The browser side of the {@link TestExecutor} seam. It delegates into the
4
4
  * existing `hostController` in place (no file split this phase) and adapts the
5
- * host's `BrowserTestRunResult` into the shared `ExecutorCycleOutcome` — the
6
- * former `toBrowserOutcome` core adapter is folded in here and deleted.
5
+ * host's `BrowserTestRunResult` into the shared `ExecutorCycleOutcome`.
7
6
  *
8
- * Only used in non-watch runs (the shared executor loop); browser watch stays
9
- * host-driven and self-finalizing until Phase 6, so `runCycle` maps directly
10
- * onto one `runBrowserController` invocation and its coverage/close semantics.
7
+ * Watch and non-watch differ only in what one `runCycle` means. Non-watch: one
8
+ * `runBrowserController` invocation that returns a deferred `close`. Watch: the
9
+ * first cycle boots the persistent runtime and hands back a live
10
+ * {@link BrowserWatchSession}; every cycle after it is a rerun the host's own
11
+ * triggers signalled through `onInvalidate` and core scheduled. Either way core
12
+ * finalizes, so this adapter never touches reporters or the exit code.
11
13
  */ export declare function createBrowserExecutor(context: RstestContext, options: CreateBrowserExecutorOptions): Promise<BrowserTestExecutor>;
@@ -0,0 +1,119 @@
1
+ import { type ProjectContext, type RstestContext, rsbuild, type WatchInvalidationState } from '@rstest/core/internal/browser';
2
+ import { WebSocketServer } from 'ws';
3
+ import type { ContainerRpcManager } from './containerRpc.js';
4
+ import type { BrowserDispatchHandler, BrowserHostConfig, BrowserProjectRuntime, TestFileInfo } from './protocol.js';
5
+ import type { BrowserProvider, BrowserProviderBrowser, BrowserProviderContext, BrowserProviderPage } from './providers/index.js';
6
+ type RsbuildDevServer = rsbuild.RsbuildDevServer;
7
+ type RsbuildInstance = rsbuild.RsbuildInstance;
8
+ export declare const serializeForInlineScript: (value: unknown) => string;
9
+ // ============================================================================
10
+ // Type Definitions
11
+ type BrowserProjectEntries = {
12
+ project: ProjectContext;
13
+ setupFiles: string[];
14
+ testFiles: string[];
15
+ };
16
+ export type BrowserProviderProject = {
17
+ rootPath: string;
18
+ provider: BrowserProvider;
19
+ };
20
+ type BrowserLaunchOptions = {
21
+ provider: BrowserProvider;
22
+ browser: ProjectContext['normalizedConfig']['browser']['browser'];
23
+ headless: ProjectContext['normalizedConfig']['browser']['headless'];
24
+ port: ProjectContext['normalizedConfig']['browser']['port'];
25
+ strictPort: ProjectContext['normalizedConfig']['browser']['strictPort'];
26
+ providerOptions: Record<string, unknown>;
27
+ };
28
+ export type BrowserProjectServer = {
29
+ projectName: string;
30
+ environmentName: string;
31
+ rsbuildInstance: RsbuildInstance;
32
+ devServer: RsbuildDevServer;
33
+ port: number;
34
+ manifestPath: string;
35
+ };
36
+ // Watch diff/rerun state. Lives on the BrowserRuntime (one per set of
37
+ // per-project compilers, surviving controller re-entry that reuses the
38
+ // runtime) instead of module scope, so its lifetime always matches the
39
+ // compilers whose baselines it holds.
40
+ type BrowserWatchState = {
41
+ lastTestFiles: TestFileInfo[];
42
+ hooksEnabled: boolean;
43
+ // Diff baselines keyed per project: sibling projects have isolated
44
+ // compilers, so a shared flat baseline would let one project's compile
45
+ // clobber another's (missed reruns) and collide on compiler-local chunk
46
+ // keys.
47
+ invalidation: Map<string, WatchInvalidationState>;
48
+ // Affected files accumulated per project until a rerun drains them, so a
49
+ // compile finishing while another project's rerun is being planned cannot
50
+ // drop pending work.
51
+ pendingAffectedTestFiles: Map<string, Set<string>>;
52
+ // Per-project compile start times and the accumulated compile duration of
53
+ // the pending rerun, so the rerun's finalize reports the real buildTime.
54
+ compileStartTimes: Map<string, number>;
55
+ pendingBuildTimeMs: number;
56
+ };
57
+ export declare const drainPendingBuildTime: (watchState: BrowserWatchState) => number;
58
+ export declare const drainPendingAffectedTestFiles: (watchState: BrowserWatchState) => string[];
59
+ export type BrowserRuntime = {
60
+ // Per-project servers, keyed by project name.
61
+ projectServers: Map<string, BrowserProjectServer>;
62
+ // The server that hosts the container UI HTML (headed mode). The WebSocket
63
+ // server below is shared and reachable from any origin.
64
+ containerServer: BrowserProjectServer;
65
+ browser: BrowserProviderBrowser;
66
+ browserLaunchOptions: BrowserLaunchOptions;
67
+ wsPort: number;
68
+ tempDir: string;
69
+ containerPage?: BrowserProviderPage;
70
+ containerContext?: BrowserProviderContext;
71
+ setContainerOptions: (options: BrowserHostConfig) => void;
72
+ // Reserved extension seam for host-side dispatch capabilities.
73
+ dispatchHandlers: Map<string, BrowserDispatchHandler>;
74
+ wss: WebSocketServer;
75
+ rpcManager?: ContainerRpcManager;
76
+ projectEntries: BrowserProjectEntries[];
77
+ watchState: BrowserWatchState;
78
+ };
79
+ export declare const mapViewportByProject: (projects: BrowserProjectRuntime[]) => Map<string, {
80
+ width: number;
81
+ height: number;
82
+ }>;
83
+ export declare const createBrowserContextExcludeRegExp: (patterns: string[], projectRoot: string) => RegExp | null;
84
+ export declare const getBrowserProjects: (context: RstestContext) => ProjectContext[];
85
+ export declare const collectProjectEntries: (context: RstestContext, // The explicit browser-project subset the executor was constructed with. Falls
86
+ // back to re-deriving from `context` for internal callers (e.g. the watch
87
+ // plugin) that do not carry the plan's project list.
88
+ browserProjects?: ProjectContext[]) => Promise<BrowserProjectEntries[]>;
89
+ export declare const resolveContainerDist: () => string;
90
+ // Host-side mirror of the browser runtime's `toContextKey` (client/entry.ts):
91
+ // `./<path-relative-to-project-root>` with forward slashes. The runtime derives
92
+ // the same key from the target test file, so the non-watch import map below must
93
+ // key by the identical form for `loadTest(key)` to resolve.
94
+ export declare const toContextKey: (filePath: string, projectRootPosix: string) => string;
95
+ export declare const destroyBrowserRuntime: (runtime: BrowserRuntime) => Promise<void>;
96
+ export declare const createBrowserRuntime: ({ context, projectEntries: initialProjectEntries, browserProjects, shardedEntries, freezeShardedEntries, tempDir, isWatchMode, onTriggerRerun, containerDistPath, containerDevServer, forceHeadless, skipProviderLaunch, appliedModifyRstestConfigEnvironments }: {
97
+ context: RstestContext;
98
+ projectEntries: BrowserProjectEntries[];
99
+ /**
100
+ * The explicit browser-project subset (plan output). Drives launch-option
101
+ * consistency and the container origin (`browserProjects[0]`).
102
+ */ browserProjects: ProjectContext[];
103
+ shardedEntries?: Map<string, {
104
+ entries: Record<string, string>;
105
+ }>;
106
+ freezeShardedEntries?: boolean;
107
+ tempDir: string;
108
+ isWatchMode: boolean;
109
+ onTriggerRerun?: () => Promise<void>;
110
+ containerDistPath?: string;
111
+ containerDevServer?: string;
112
+ /** Force headless mode regardless of user config (used for list command) */ forceHeadless?: boolean;
113
+ skipProviderLaunch?: boolean;
114
+ appliedModifyRstestConfigEnvironments?: Set<string>;
115
+ }) => Promise<BrowserRuntime>;
116
+ export declare function resolveProjectEntries(context: RstestContext, shardedEntries: Map<string, {
117
+ entries: Record<string, string>;
118
+ }> | undefined, browserProjects: ProjectContext[]): Promise<BrowserProjectEntries[]>;
119
+ export { };
@@ -0,0 +1,52 @@
1
+ import { type TestResult } from '@rstest/core/internal/browser';
2
+ import { type BirpcReturn } from 'birpc';
3
+ import { type WebSocket, WebSocketServer } from 'ws';
4
+ import type { BrowserDispatchRequest, BrowserDispatchResponse, BrowserHostConfig, TestFileInfo } from './protocol.js';
5
+ import type { FatalPayload, HeadedTestFileCompletePayload, LogPayload, ReloadTestFileAck, TestFileStartPayload } from './hostPayloads.js';
6
+ /** RPC methods exposed by the host (server) to the container (client) */ export type HostRpcMethods = {
7
+ rerunTest: (testFile: string, testNamePattern?: string) => Promise<void>;
8
+ getTestFiles: () => Promise<TestFileInfo[]>;
9
+ onRunnerFramesReady: (testFiles: string[]) => Promise<void>;
10
+ // Test result callbacks from container
11
+ onTestFileStart: (payload: TestFileStartPayload) => Promise<void>;
12
+ onTestCaseResult: (payload: TestResult) => Promise<void>;
13
+ onTestFileComplete: (payload: HeadedTestFileCompletePayload) => Promise<void>;
14
+ onLog: (payload: LogPayload) => Promise<void>;
15
+ onFatal: (payload: FatalPayload) => Promise<void>;
16
+ // Generic dispatch endpoint used by runner RPC requests.
17
+ dispatch: (request: BrowserDispatchRequest) => Promise<BrowserDispatchResponse>;
18
+ };
19
+ /** RPC methods exposed by the container (client) to the host (server) */ export type ContainerRpcMethods = {
20
+ onTestFileUpdate: (testFiles: TestFileInfo[]) => Promise<void>;
21
+ reloadTestFile: (testFile: string, testNamePattern?: string) => Promise<ReloadTestFileAck>;
22
+ /**
23
+ * Replace the container's copy of the host config so runner iframes loaded
24
+ * from now on receive fresh values (e.g. the 'u' shortcut flipping
25
+ * `snapshot.updateSnapshot` between watch reruns).
26
+ */ onHostConfigUpdate: (config: BrowserHostConfig) => Promise<void>;
27
+ };
28
+ export type ContainerRpc = BirpcReturn<ContainerRpcMethods, HostRpcMethods>;
29
+ // ============================================================================
30
+ // RPC Manager - Encapsulates WebSocket and birpc management
31
+ // ============================================================================
32
+ /**
33
+ * Manages the WebSocket connection and birpc communication with the container UI.
34
+ * Provides a clean interface for sending RPC calls and handling connections.
35
+ */ export declare class ContainerRpcManager {
36
+ private wss;
37
+ private ws;
38
+ private rpc;
39
+ private methods;
40
+ private onDisconnect?;
41
+ private detachActiveSocketListeners;
42
+ constructor(wss: WebSocketServer, methods: HostRpcMethods, onDisconnect?: (error: Error) => void);
43
+ /** Update the RPC methods (used when starting a new test run) */ updateMethods(methods: HostRpcMethods, onDisconnect?: (error: Error) => void): void;
44
+ private setupConnectionHandler;
45
+ private attachWebSocket;
46
+ /** Check if a container is currently connected */ get isConnected(): boolean;
47
+ /** Get the current WebSocket instance (for reuse in watch mode) */ get currentWebSocket(): WebSocket | null;
48
+ /** Reattach an existing WebSocket (for watch mode reuse) */ reattach(ws: WebSocket): void;
49
+ /** Notify container of test file changes */ notifyTestFileUpdate(files: TestFileInfo[]): Promise<void>;
50
+ /** Push a refreshed host config to the container (watch reruns) */ updateHostConfig(config: BrowserHostConfig): Promise<void>;
51
+ /** Request container to reload a specific test file */ reloadTestFile(testFile: string, testNamePattern?: string): Promise<ReloadTestFileAck>;
52
+ }
@@ -1,5 +1,5 @@
1
- import type { Reporter } from '@rstest/core/internal/browser';
2
1
  import { HostDispatchRouter } from './dispatchRouter.js';
2
+ import type { ReporterHookArg } from './hostPayloads.js';
3
3
  import type { BrowserClientMessage, BrowserDispatchHandler, SnapshotRpcRequest } from './protocol.js';
4
4
  export type HostDispatchRouterOptions = ConstructorParameters<typeof HostDispatchRouter>[0];
5
5
  type RunnerPayload<TType extends BrowserClientMessage['type']> = Extract<BrowserClientMessage, {
@@ -7,7 +7,6 @@ type RunnerPayload<TType extends BrowserClientMessage['type']> = Extract<Browser
7
7
  }> extends {
8
8
  payload: infer TPayload;
9
9
  } ? TPayload : never;
10
- type ReporterHookArg<THook extends keyof Reporter> = NonNullable<Reporter[THook]> extends (...args: infer TArgs) => unknown ? TArgs[0] : never;
11
10
  type RunnerDispatchFileReadyPayload = ReporterHookArg<'onTestFileReady'>;
12
11
  type RunnerDispatchSuiteStartPayload = ReporterHookArg<'onTestSuiteStart'>;
13
12
  type RunnerDispatchSuiteResultPayload = ReporterHookArg<'onTestSuiteResult'>;
@@ -0,0 +1,58 @@
1
+ import type { RstestContext, TestFileResult, TestResult } from '@rstest/core/internal/browser';
2
+ import { type BrowserRuntime } from './browserRsbuild.js';
3
+ import type { HostDispatchRouter } from './dispatchRouter.js';
4
+ import { type FatalPayload, type LogPayload, type TestFileStartPayload } from './hostPayloads.js';
5
+ import type { BrowserHostConfig, TestFileInfo } from './protocol.js';
6
+ import { planWatchRerun } from './watchRerunPlanner.js';
7
+ import type { BrowserWatchSession, DispatchPageResolver, SchedulerRunResult } from './schedulerSeam.js';
8
+ import type { WatchSignals } from './watchSignals.js';
9
+ type HeadedSchedulerContext = Pick<RstestContext, 'rootPath' | 'snapshotManager' | 'updateReporterResultState'> & {
10
+ normalizedConfig: Pick<RstestContext['normalizedConfig'], 'name'>;
11
+ };
12
+ type HeadedSchedulerDeps = {
13
+ context: HeadedSchedulerContext;
14
+ runtime: BrowserRuntime;
15
+ allTestFiles: TestFileInfo[];
16
+ hostOptions: BrowserHostConfig;
17
+ isWatchMode: boolean;
18
+ createDispatchRouter: () => HostDispatchRouter;
19
+ handlers: {
20
+ handleTestFileStart: (payload: TestFileStartPayload) => Promise<void>;
21
+ handleTestCaseResult: (payload: TestResult) => Promise<void>;
22
+ handleTestFileComplete: (payload: TestFileResult) => Promise<void>;
23
+ handleLog: (payload: LogPayload) => Promise<void>;
24
+ handleFatal: (payload: FatalPayload) => Promise<void>;
25
+ };
26
+ fatalErrorRef: {
27
+ current: Error | null;
28
+ };
29
+ watchSignals: Pick<WatchSignals, 'setDispatchRerun' | 'signalInvalidation' | 'awaitSignalledCycle'>;
30
+ setDispatchPageResolver: (resolver: DispatchPageResolver) => void;
31
+ createWatchSession: (execute: (testPaths: string[]) => Promise<void>) => BrowserWatchSession;
32
+ collectProjectEntries: () => Promise<Parameters<typeof planWatchRerun>[0]['projectEntries']>;
33
+ logWatchReady: () => void;
34
+ destroyRuntime: () => Promise<void>;
35
+ };
36
+ /**
37
+ * A headed cycle's work list: the files of its scope that still exist, each
38
+ * paired with the test-name pattern whichever trigger put it in scope asked for.
39
+ *
40
+ * Both halves are resolved in one pass, synchronously, at the top of the cycle.
41
+ * A queued scope can go stale before its cycle is dequeued — a later trigger may
42
+ * have rebuilt the file set without one of these files — and it is skipped the
43
+ * way the headless twin skips it; throwing would abandon the still-valid files
44
+ * beside it and fail the run. The patterns are claimed here, and only for the
45
+ * paths in this scope, so a click landing once the cycle is under way keeps its
46
+ * pattern for the cycle it signalled instead of losing it to this one mid-loop.
47
+ *
48
+ * A skipped path keeps its pattern too, for the same reason: consuming it on the
49
+ * way past would leave the next cycle that does run the file — the file set can
50
+ * be rebuilt back — running it unfiltered, so the user's click would silently
51
+ * become a full-file rerun. The cost is one map entry per path that never comes
52
+ * back, which the next launch drops with the map.
53
+ */ export declare const claimHeadedCycleScope: (testPaths: string[], currentTestFiles: TestFileInfo[], pendingTestNamePatterns: Map<string, string>) => {
54
+ file: TestFileInfo;
55
+ testNamePattern?: string;
56
+ }[];
57
+ export declare const createHeadedScheduler: ({ context, runtime, allTestFiles, hostOptions, isWatchMode, createDispatchRouter, handlers: { handleTestFileStart, handleTestCaseResult, handleTestFileComplete, handleLog, handleFatal }, fatalErrorRef, watchSignals, setDispatchPageResolver, createWatchSession, collectProjectEntries, logWatchReady, destroyRuntime }: HeadedSchedulerDeps) => Promise<SchedulerRunResult>;
58
+ export { };
@@ -0,0 +1,37 @@
1
+ import type { RstestContext, TestFileResult } from '@rstest/core/internal/browser';
2
+ import { type BrowserRuntime } from './browserRsbuild.js';
3
+ import type { HostDispatchRouterOptions } from './dispatchCapabilities.js';
4
+ import type { HostDispatchRouter } from './dispatchRouter.js';
5
+ import { type FatalPayload } from './hostPayloads.js';
6
+ import type { BrowserHostConfig, BrowserProjectRuntime, TestFileInfo } from './protocol.js';
7
+ import type { BrowserProviderBrowser } from './providers/index.js';
8
+ import { planWatchRerun } from './watchRerunPlanner.js';
9
+ import type { BrowserWatchSession, DispatchPageResolver, SchedulerRunResult } from './schedulerSeam.js';
10
+ import type { WatchSignals } from './watchSignals.js';
11
+ type HeadlessSchedulerContext = Pick<RstestContext, 'command' | 'snapshotManager' | 'stateManager' | 'updateReporterResultState'> & {
12
+ normalizedConfig: Pick<RstestContext['normalizedConfig'], 'bail' | 'pool'>;
13
+ };
14
+ type HeadlessSchedulerDeps = {
15
+ context: HeadlessSchedulerContext;
16
+ browser: BrowserProviderBrowser;
17
+ browserLaunchOptions: BrowserRuntime['browserLaunchOptions'];
18
+ projectServers: BrowserRuntime['projectServers'];
19
+ allTestFiles: TestFileInfo[];
20
+ projectRuntimeConfigs: BrowserProjectRuntime[];
21
+ hostOptions: BrowserHostConfig;
22
+ watchState: BrowserRuntime['watchState'];
23
+ isWatchMode: boolean;
24
+ createDispatchRouter: (options?: HostDispatchRouterOptions) => HostDispatchRouter;
25
+ handlers: {
26
+ handleFatal: (payload: FatalPayload) => Promise<void>;
27
+ handleTestFileComplete: (payload: TestFileResult) => Promise<void>;
28
+ };
29
+ watchSignals: Pick<WatchSignals, 'setDispatchRerun' | 'setInterrupt' | 'signalInvalidation'>;
30
+ setDispatchPageResolver: (resolver: DispatchPageResolver) => void;
31
+ createWatchSession: (execute: (testPaths: string[]) => Promise<void>) => BrowserWatchSession;
32
+ collectProjectEntries: () => Promise<Parameters<typeof planWatchRerun>[0]['projectEntries']>;
33
+ logWatchReady: () => void;
34
+ destroyRuntime: () => Promise<void>;
35
+ };
36
+ export declare const createHeadlessScheduler: ({ context, browser, browserLaunchOptions, projectServers, allTestFiles, projectRuntimeConfigs, hostOptions, watchState, isWatchMode, createDispatchRouter, handlers: { handleFatal, handleTestFileComplete }, watchSignals, setDispatchPageResolver, createWatchSession, collectProjectEntries, logWatchReady, destroyRuntime }: HeadlessSchedulerDeps) => Promise<SchedulerRunResult>;
37
+ export { };
@@ -1,51 +1,17 @@
1
- import { type BrowserTestRunOptions, type BrowserTestRunResult, type ListBrowserTestsOptions, type ListCommandResult, type RstestContext } from '@rstest/core/internal/browser';
2
- type LazyCompilationModule = {
3
- nameForCondition?: () => string | null | undefined;
4
- };
5
- type BrowserLazyCompilationConfig = {
6
- imports: true;
7
- entries: false;
8
- test?: (module: LazyCompilationModule) => boolean;
1
+ import { type BrowserTestRunOptions, type BrowserTestRunResult, type ExecutorInvalidationCallback, type ListBrowserTestsOptions, type ListCommandResult, type RstestContext } from '@rstest/core/internal/browser';
2
+ import type { BrowserWatchSession } from './schedulerSeam.js';
3
+ // ============================================================================
4
+ export type BrowserControllerOptions = BrowserTestRunOptions & {
5
+ /**
6
+ * Watch only: core's watch-cycle driver (see `TestExecutor.onInvalidate`).
7
+ * Its promise settles when the cycle it queued has finalized, which only an
8
+ * explicit request may wait for (see `signalInvalidation`).
9
+ */ onInvalidate?: ExecutorInvalidationCallback;
9
10
  };
10
- /**
11
- * Resolve the actual port the dev server is listening on.
12
- *
13
- * Rsbuild's `devServer.listen()` may return `0` when configured with
14
- * `server.port: 0` because its internal `getPort` never reads back the
15
- * OS-assigned ephemeral port. This helper falls back to
16
- * `httpServer.address()` to obtain the real bound port.
17
- */ export declare const resolveListenPort: (listenPort: number, httpServer: {
18
- address: () => ReturnType<import('node:net').Server['address']>;
19
- } | null) => number;
20
- export declare const createBrowserLazyCompilationConfig: (setupFiles: string[]) => BrowserLazyCompilationConfig;
21
- /**
22
- * HMR — and the lazyCompilation transport it carries — is wired only for headed
23
- * watch, the sole path that reuses a persistent page and applies module updates
24
- * in place. Headless always loads each test file in a fresh page (pulling the
25
- * latest incrementally-built chunks over HTTP), and one-shot runs never rerun,
26
- * so pushing HMR updates there is dead weight that only races factory
27
- * registration for chunk-split node_modules (rspack#11922) and lets
28
- * lazyCompilation's accept-chain walk abort the next spec when no boundary
29
- * exists (#1472). Disabling HMR does not make watch rebuilds any less
30
- * incremental — HMR is only the client push transport.
31
- */ export declare const shouldEnableBrowserHmr: (isWatchMode: boolean, isHeadless: boolean) => boolean;
32
- export declare const createBrowserRsbuildDevConfig: (enableHmr: boolean) => {
33
- writeToDisk: boolean;
34
- hmr: boolean;
35
- client: {
36
- logLevel: 'error';
37
- };
11
+ export type BrowserControllerResult = BrowserTestRunResult & {
12
+ watchSession?: BrowserWatchSession;
38
13
  };
39
- export declare const createBrowserContextExcludeRegExp: (patterns: string[], projectRoot: string) => RegExp | null;
40
- // Host-side mirror of the browser runtime's `toContextKey` (client/entry.ts):
41
- // `./<path-relative-to-project-root>` with forward slashes. The runtime derives
42
- // the same key from the target test file, so the non-watch import map below must
43
- // key by the identical form for `loadTest(key)` to resolve.
44
- export declare const toContextKey: (filePath: string, projectRootPosix: string) => string;
45
- // ============================================================================
46
- // Main Entry Point
47
- // ============================================================================
48
- export declare const runBrowserController: (context: RstestContext, options?: BrowserTestRunOptions) => Promise<BrowserTestRunResult | void>;
14
+ export declare const runBrowserController: (context: RstestContext, options?: BrowserControllerOptions) => Promise<BrowserControllerResult | void>;
49
15
  // ============================================================================
50
16
  // List Browser Tests
51
17
  // ============================================================================
@@ -62,4 +28,3 @@ export declare const runBrowserController: (context: RstestContext, options?: Br
62
28
  * This function creates a headless browser runtime, loads test files,
63
29
  * and collects their test structure (describe/test declarations).
64
30
  */ export declare const listBrowserTests: (context: RstestContext, options?: ListBrowserTestsOptions) => Promise<ListBrowserTestsResult>;
65
- export { };