@checksum-ai/runtime 5.3.0 → 5.3.1

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.
Files changed (4) hide show
  1. package/.env +1 -1
  2. package/cli.js +3 -3
  3. package/index.js +3 -3
  4. package/package.json +1 -1
package/.env CHANGED
@@ -1 +1 @@
1
- CHECKSUM_RUNTIME_BUILD_TIME=2026-09-13T01:40:44.949Z
1
+ CHECKSUM_RUNTIME_BUILD_TIME=2026-09-14T16:20:38.611Z
package/cli.js CHANGED
@@ -146,12 +146,12 @@ ${f}`:i.stack}u(EJ,"appendFetchStackTrace");G.exports.fetch=u(function(o,l=void
146
146
  `)[4]?.trim().match(/\(([^)]+)\)/);if(!(f&&f[1]))throw new Error;let g=f[1].split(":"),p=g.slice(0,-2).join(":"),h=g[g.length-2],r=`${IJ.default.basename(p)}:${h}`;s&&(process.stdout.write(RS.default.format("\x1B[34m",r,"\x1B[0m",...l)+`
147
147
  `),setTimeout(()=>this.listeners.forEach(e=>e.onLog(...l)),0)),this.logStream&&this.logStream.write(`[${r}] ${l.map(e=>{if(typeof e=="object")try{return JSON.stringify(e,null,2)}catch{}return String(e)}).join(" ")}
148
148
  `)}catch{s&&process.stdout.write(RS.default.format(...l)+`
149
- `)}}shouldLog(o){switch(o){case"warning":return this.logLevel==="all"||this.logLevel==="warnings";case"error":return!0;case"info":return this.logLevel==="all";default:return!1}}addListener(o){this.listeners.push(o)}info(...o){this.log("info",...o)}warning(...o){this.log("warning",...o)}error(...o){this.log("error",...o)}setLogLevel(o){this.logLevel=o}setLogStream(o){this.logStream=o}},ec=new DS,aye=Object.assign((...a)=>ec.info(...a),{info:u((...a)=>ec.info(...a),"info"),warning:u((...a)=>ec.warning(...a),"warning"),error:u((...a)=>ec.error(...a),"error"),setLogLevel:u(a=>ec.setLogLevel(a),"setLogLevel"),setLogStream:u(a=>ec.setLogStream(a),"setLogStream"),addLogListener:u(a=>ec.addListener(a),"addLogListener")}),tc=aye;var Gf=require("node:perf_hooks");var qf=class{constructor(o={}){this.options=o;this.priorityQueue=[];this.nonPriorityQueue=[];this.isRunning=!1;this.taskIndex=0;this.timeRunningTasks=0;this.timeGoingBack=0;this.tasksExecuted=0}static{u(this,"TaskTimeMachineQueue")}enqueue(o){let l=this.taskIndex++,s={...o,index:l,queuedAt:Gf.performance.now()};if(o.priority)this.priorityQueue.push(s);else if(this.options.sortByTimestamp){let i=this.nonPriorityQueue.findIndex(f=>f.timestamp!==void 0&&o.timestamp!==void 0&&f.timestamp>o.timestamp);i===-1?this.nonPriorityQueue.push(s):this.nonPriorityQueue.splice(i,0,s)}else this.nonPriorityQueue.push(s);return l}popTask(){return this.priorityQueue.length>0?this.priorityQueue.shift():this.nonPriorityQueue.shift()}async runSingleTask(o,l){let s=Gf.performance.now();try{if(this.options.logPerformance){let f=Gf.performance.now()-o.queuedAt;tc.info(`Running task, timestamp: ${o.timestamp} \x1B[36m${o.name}\x1B[0m, index: ${o.index}, was pending for ${f}ms`)}await l(o);let i=Gf.performance.now()-s;this.timeRunningTasks+=i,this.options.logPerformance&&tc.info("Finished running task, took",i,"ms.","Queue lengths:",`priority=${this.priorityQueue.length}`,`non-priority=${this.nonPriorityQueue.length}`),this.tasksExecuted++}catch(i){tc.error("Task execution error:",i)}}async runTasks(o){if(!this.isRunning){this.isRunning=!0;try{for(;this.getQueueLength()>0;){let l=this.popTask();if(!l)break;await this.runSingleTask(l,o)}}finally{this.isRunning=!1,this.getQueueLength()>0&&this.options.logPerformance&&tc.info("Accumulated time running tasks:",this.timeRunningTasks,"ms, from which time spent going back:",this.timeGoingBack)}}}getTasksAtTimestamp(o){return[...this.priorityQueue.filter(l=>l.timestamp===o),...this.nonPriorityQueue.filter(l=>l.timestamp===o)]}removeTasksAtTimestamp(o){this.priorityQueue=this.priorityQueue.filter(l=>l.timestamp!==o),this.nonPriorityQueue=this.nonPriorityQueue.filter(l=>l.timestamp!==o)}getQueueLength(){return this.priorityQueue.length+this.nonPriorityQueue.length}setTimeGoingBack(o){this.timeGoingBack=o}};var DMe=require("@playwright/test"),Vf=V(xS());function OJ(a){if(!a)return;let{username:o,password:l,server:s}=a;return o&&l?new Vf.ProxyAgent({uri:`http://${o}:${l}@${s.replace("http://","")}`}):new Vf.ProxyAgent({uri:s})}u(OJ,"makeWebProxyAgent");async function cye(a,o){let s=a.request().url();try{let f=await(0,Vf.fetch)(s,o?{dispatcher:o}:{}),g=f.status,p={};f.headers.forEach((c,d)=>p[d]=c),p["access-control-allow-origin"]="*";let h=parseInt(f.headers.get("content-length")||"0",10),n=25*1024*1024;if(h>n){await a.continue();return}if(!f.body){await a.fulfill({status:g,headers:p});return}let e=await f.arrayBuffer(),t=Buffer.from(e);await a.fulfill({status:g,headers:p,body:t})}catch{await a.continue()}}u(cye,"handleCorsRoute");async function CJ(a,o,l){try{let s=a.page(),i=et(s);if(l.has(i))return;l.add(i),await s.route(/^https?:\/\/(?!(?:localhost|127\.0\.0\.1|::1)).*/,f=>cye(f,o))}catch{}}u(CJ,"preventCrossOriginErrors");var LMe=require("@playwright/test");var zf=require("node:perf_hooks");async function wJ(a,{shouldGoBack:o,shouldBatch:l,task:s,timestamp:i,beforeTimestamp:f,name:g,resolve:p,reject:h}){if(a.requireTimeMachineFrame().isDetached()&&h(),o){let e=zf.performance.now();await a.goBack(i,f),a.addTimeGoingBack(zf.performance.now()-e)}let n=SJ(a,{taskForSafeRun:s,name:g,resolve:p,reject:h}),r=a.taskQueue.getQueueLength()>0&&l?lye(a,{firstTask:n,timestamp:i,name:g,resolve:p,reject:h}):[n];for(let e of r)await e()}u(wJ,"runTaskWrapper");function SJ(a,{taskForSafeRun:o,name:l,resolve:s,reject:i}){return async()=>{try{let f=zf.performance.now(),g=await Re(o(a.requireTimeMachineFrame()),a.options.taskTimeout,()=>`Task execution timeout - ${l}, took ${zf.performance.now()-f}ms with timeout of ${a.options.taskTimeout}ms`);s(g)}catch(f){tc.error("Task execution error:",f.message),i(f)}}}u(SJ,"makeSafeRunTask");function lye(a,{firstTask:o,timestamp:l,name:s,resolve:i,reject:f}){let g=[o],p=a.taskQueue.getTasksAtTimestamp(l);return g.push(...p.map(({task:h})=>SJ(a,{taskForSafeRun:u(()=>h({shouldGoBack:!1,shouldBatch:!1}),"taskForSafeRun"),name:s,resolve:i,reject:f}))),a.taskQueue.removeTasksAtTimestamp(l),g}u(lye,"collectBatchedTasks");var HMe=require("@playwright/test");var uye="checksum is not defined";async function NS(a,o,{retriesLeft:l=3,retryWaitMS:s=1e3}={}){try{let{reducedHTML:i,currentChecksumId:f}=await o.evaluate(async({errorMessage:g,...p})=>{if(!window.checksum)throw new Error(g);return window.checksum.testGenerator.reduceHTML({},p)},{stopFlashingElementsDetection:!0,assignChecksumIdsToAllElements:!0,initialChecksumId:a.currentChecksumId,fromTimeMachine:!0,invalidateCache:!0,errorMessage:uye});return a.currentChecksumId=f,{reducedHTML:i}}catch(i){if(l>0)return await Xe(s),NS(a,o,{retriesLeft:l-1,retryWaitMS:s});throw i}}u(NS,"getReducedHTMLWithRetries");var zMe=require("@playwright/test");function QS({frameMsgBroker:a,recordingFrame:o,timeMachineFrame:l,handler:s}){let i="rrweb";if(!o)throw new Error("Recording frame is not initialized");a.subscribeToChannel(i,l,{originFrame:o,handler:s}),l.page().on("close",()=>a.unsubscribeFromChannel(i,l))}u(QS,"subscribeToRrwebEvents");var dA="checksum is not defined",pA=class a{constructor(o,l,s={headless:!0,logPerformance:!1,timestampBatchingEnabled:!1,sortByTimestamp:!1,taskTimeout:24e4,debugPort:void 0,frameMsgBrokerRegisterName:void 0}){this.frameMsgBroker=o;this.injectedScriptManager=l;this.options=s;this.currentTimestamp=0;this.currentBeforeTimestamp=!1;this.currentChecksumId="0";this.timeGoingBack=0;this.pagesWithCorsInterception=new Set;this.reducedHTMLCache=new Map;this.taskQueue=new qf({sortByTimestamp:s.sortByTimestamp,logPerformance:s.logPerformance}),this.webProxyAgent=OJ(s.webProxy)}static{u(this,"ChecksumTimeMachine")}requireTimeMachineFrame(){if(!this.timeMachineFrame)throw new Error("Time machine frame is not initialized");return this.timeMachineFrame}addTimeGoingBack(o){this.timeGoingBack+=o,this.taskQueue.setTimeGoingBack(this.timeGoingBack)}getPage(){return this.requireTimeMachineFrame().page()}getFrame(){return this.requireTimeMachineFrame()}hasReplayFrame(){return!!this.timeMachineFrame}async prepare(o,l,s){if(this.recordingFrame=o,await this.frameMsgBroker.register("live",o),this.options.recordOnly&&!l){this.prepareRecordOnly(o);return}l?this.timeMachineFrame=l:this.timeMachineFrame=await this.prepareBrowserContextAndFrame(),await CJ(this.timeMachineFrame,this.webProxyAgent,this.pagesWithCorsInterception),this.options.frameMsgBrokerRegisterName&&await this.frameMsgBroker.register(this.options.frameMsgBrokerRegisterName,this.timeMachineFrame),s&&s(this.timeMachineFrame),await this.injectedScriptManager.addTrackedFrame(this.timeMachineFrame),this.timeMachineFrame.page().on("framenavigated",async i=>{await this.injectedScriptManager.onFrameNavigated(i)}),QS({frameMsgBroker:this.frameMsgBroker,recordingFrame:this.recordingFrame,timeMachineFrame:this.requireTimeMachineFrame(),handler:this.rrwebEventHandler.bind(this)}),this.taskQueue=new qf({sortByTimestamp:this.options.sortByTimestamp,logPerformance:this.options.logPerformance}),await this.start()}prepareRecordOnly(o){QS({frameMsgBroker:this.frameMsgBroker,recordingFrame:o,timeMachineFrame:o,handler:this.rrwebEventHandler.bind(this)})}async start(){await this.requireTimeMachineFrame().evaluate(async o=>{if(!window.checksum)throw new Error(o);window.checksum.timeMachine.start({firstEventTimestamp:Date.now()})},dA)}setBrowserContext(o){this.timeMachineBrowserContext=o}async executeTask(o,l,{name:s,beforeTimestamp:i=!1,priority:f=!1}={}){return new Promise((g,p)=>{let h=u((n={shouldGoBack:!0,shouldBatch:this.options.timestampBatchingEnabled??!1})=>wJ(this,{...n,task:o,timestamp:l,beforeTimestamp:i,name:s,resolve:g,reject:p}),"taskWrapper");this.taskQueue.enqueue({name:s,task:h,timestamp:i&&l!==void 0?l-1:l,priority:f}),this.runTasks()})}static{this.REDUCED_HTML_CACHE_MAX=20}executeReducedHTMLTask(o,{priority:l=!1}={}){let s=this.reducedHTMLCache.get(o);if(s){let i=new Ns(s);return Promise.resolve(i.getRrwebIdsReducedDomString())}return this.executeTask(async i=>{let g=(await NS(this,i)).reducedHTML;return g&&this.setReducedHTMLCache(o,g),new Ns(g).getRrwebIdsReducedDomString()},o,{name:"getReducedHTMLForTimestamp",priority:l})}setReducedHTMLCache(o,l){for(this.reducedHTMLCache.delete(o),this.reducedHTMLCache.set(o,l);this.reducedHTMLCache.size>a.REDUCED_HTML_CACHE_MAX;){let s=this.reducedHTMLCache.keys().next().value;if(s===void 0)break;this.reducedHTMLCache.delete(s)}}goBack(o,l=!1){return this.currentBeforeTimestamp===l&&this.currentTimestamp===o?Promise.resolve():(this.currentTimestamp=o,this.currentBeforeTimestamp=l,this.requireTimeMachineFrame().evaluate(({timestamp:s,beforeTimestamp:i,errorMessage:f})=>{if(!window.checksum)throw new Error(f);return s===void 0?window.checksum.timeMachine.goLive():window.checksum.timeMachine.goBack(s,{beforeTimestamp:i})},{timestamp:o,beforeTimestamp:l,errorMessage:dA}))}async runTasks(){await this.taskQueue.runTasks(async o=>{await o.task()})}async rrwebEventHandler(o){let l=JSON.stringify(o);if(this.timeMachineFrame)try{await this.timeMachineFrame.evaluate(function({eventsJSON:s,errorMessage:i}){if(!window.checksum)throw new Error(i);let f=JSON.parse(s);return window.checksum.timeMachine.handleEvents(f)},{eventsJSON:l,errorMessage:dA})}catch{}return l}async makeBrowserContext(){let o=[];this.options.debugPort&&o.push(`--remote-debugging-port=${this.options.debugPort}`);let{headless:l}=this.options,s=await kJ.chromium.launch({...l!==void 0?{headless:l}:{},args:o});return this.timeMachineBrowserContext=await s.newContext({bypassCSP:!0}),this.timeMachineBrowserContext}async makeFrame(){if(!this.timeMachineBrowserContext)throw new Error("Time machine browser context is not initialized");return(await this.timeMachineBrowserContext.newPage()).mainFrame()}async prepareBrowserContextAndFrame(){return this.timeMachineBrowserContext||await this.makeBrowserContext(),this.makeFrame()}async toggleTimeMachineHandleEvents(o){try{await this.requireTimeMachineFrame().evaluate(({shouldHandleEvents:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);return window.checksum.timeMachine.setShouldHandleEvents(l)},{shouldHandleEvents:o,errorMessage:dA})}catch{}}};var sye=!0,Li="checksum is not defined";async function TJ(a,o,l){if(l?.selector)return{...l,selector:l.selector,locator:l.locator??"",clickOffset:l.position};if(!o)return a.logger.log(`[getSelectionDataForChecksumId] checksumid not provided (${o})`),{...l,selector:o,locator:`locator("${o}")`};let s=await fye(a,o);return sye&&s.invalid&&s.rrwebId&&(s=await dye(a,o,s)),s.selector||a.logger.log(`[getSelectionDataForChecksumId] Could not get selector for checksumid: ${o}. If checksumid is correct, try to change app rules preMapReducedHTMLSelectors to true`),s}u(TJ,"getSelectionDataForChecksumId");function fye(a,o){return a.evaluateWithChecksum(async({checksumId:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);let{selector:i,locator:f,clickOffset:g,parentFramesSelectors:p,invalid:h,rrwebId:n}=await window.checksum.testGenerator.getSelectorForChecksumId(l),r=await window.checksum.testGenerator.getElementForChecksumId(l),e=r instanceof HTMLOptionElement&&r.value?r.value:void 0;return{selector:i,locator:f,clickOffset:g,selectOptionValue:e,parentFramesSelectors:p,invalid:h,rrwebId:n}},{checksumId:o,errorMessage:Li})}u(fye,"fetchSelectorForChecksumId");async function dye(a,o,l){a.logger.log(`[getSelectionDataForChecksumId] Could not get selector for checksumid: ${o}. Trying to use time machine...`);let s=l;try{let i=await pye(a,l.rrwebId);s={...l,...i}}catch{a.logger.log(`[getSelectionDataForChecksumId] error using time machine to get selector for checksumid: ${o}`)}return a.logger.log(`[getSelectionDataForChecksumId] got selector: ${s.selector} for checksumid: ${o} from time machine`),s}u(dye,"applyTimeMachineFallback");async function pye(a,o){if(!a.rrwebEventAtLastReducedHTML)return;let l=a.getTimeMachine();return l?await l.executeTask(i=>i.evaluate(async({rrwebId:f,errorMessage:g})=>{if(!window.checksum)throw new Error(g);return window.checksum.testGenerator.getInspectedElementSelectionResultByRRwebId(f,{ignoredIframesSelectors:[".replayer-wrapper > iframe"],fromTimeMachine:!0})},{rrwebId:o,errorMessage:Li}),a.rrwebEventAtLastReducedHTML.timestamp,{name:"getSelectionDataForRRwebIdAtReduceHTMLTime"})??void 0:void 0}u(pye,"getSelectionDataForRRwebIdAtReduceHTMLTime");async function PJ(a,o,l){return o?(await a.evaluateWithChecksum(async({selector:i,parentFramesSelectors:f,errorMessage:g})=>{if(!window.checksum)throw new Error(g);return window.checksum.testGenerator.getSelectionDataForSelector(i,f)},{selector:o,parentFramesSelectors:l,errorMessage:Li}))?.esraMetadata:void 0}u(PJ,"getESRAForSelector");async function BJ(a,o){return await a.evaluateWithChecksum(async({getMoreItemsId:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);return window.checksum.testGenerator.getMoreItemsForTemplate(l,{})},{getMoreItemsId:o,errorMessage:Li})??{items:"",hasMoreItems:!1}}u(BJ,"getMoreItemsForTemplate");function xJ(a,o){return a.evaluateWithChecksum(async({checksumId:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);return window.checksum.testGenerator.scrollElementIntoViewByChecksumId(l)},{checksumId:o,errorMessage:Li})}u(xJ,"scrollElementIntoViewByChecksumId");function RJ(a,o){return a.evaluateWithChecksum(async({rrwebId:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);return window.checksum.testGenerator.scrollElementIntoViewByRrwebId(l)},{rrwebId:o,errorMessage:Li})}u(RJ,"scrollElementIntoViewByRrwebId");function DJ(a,o){return a.evaluateWithChecksum(async({rrwebId:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);return window.checksum.testGenerator.generateLocatorByRrwebId(l)},{rrwebId:o,errorMessage:Li})}u(DJ,"generateLocatorByRrwebId");function NJ(a){return a.evaluateWithChecksum(async o=>{if(!window.checksum)throw new Error(o);return window.checksum.testGenerator.extractViewportHTML()},Li)}u(NJ,"getViewportHTML");function QJ(a,o,l,s){return a.evaluateWithChecksum(async({rrwebId:i,direction:f,length:g,errorMessage:p})=>{if(!window.checksum)throw new Error(p);return window.checksum.testGenerator.scrollScrollableElement(i,f,g)},{rrwebId:o,direction:l,length:s,errorMessage:Li})}u(QJ,"scrollScrollableElement");var rUe=require("@playwright/test"),aUe=require("@playwright/test");var Z3e=V(_G());function LG(a,o){let l=Math.max([...a].length,[...o].length);return l===0?1:1-Sye(a,o)/l}u(LG,"levenshteinSimilarity");function Sye(a,o){if(a===o)return 0;let l=[...a],s=[...o];if(l.length===0||s.length===0)return Math.max(l.length,s.length);let i=s.map((g,p)=>p+1),f=s.length;for(let[g,p]of l.entries()){let h=g,n=g+1,r=[];for(let[e,t]of i.entries()){let c=p===s[e]?0:1;n=Math.min(t+1,n+1,h+c),r.push(n),h=t}i=r,f=n}return f}u(Sye,"levenshteinDistance");var KS=class{constructor(o){this.data=o;this.toJSON=u(()=>this.data,"toJSON")}static{u(this,"SimilarityRecord")}getSimilar(o){let l=null,s=-1/0;for(let[i,f]of Object.entries(this.data)){let g=LG(o,i);g>s&&(s=g,l=f)}return l}},vA=class a extends KS{static{u(this,"RectangleIndex")}constructor(o){super(a.preprocessRectangles(o))}static{this.preprocessRectangles=u(o=>{let l=[...new Map([...o].map(i=>[JSON.stringify(i.vertices),i])).values()],s={};return l.forEach(i=>{let f=s[i.text]??[];f.push(i),f.sort((g,p)=>{let h=a.calculateArea(g.vertices),n=a.calculateArea(p.vertices);return h-n}),s[i.text]=f}),s},"preprocessRectangles")}static{this.calculateArea=u(o=>{let[l,s,,i]=o;if(!l||!s||!i)return 0;let f=Math.abs(s.x-l.x),g=Math.abs(i.y-l.y);return f*g},"calculateArea")}getRectangleByTextAndSizeRanking(o,l){let s=!l||!Number(l)?0:Number(l),i=this.getSimilar(o);if(!i||i.length===0)return null;let f=Math.min(Math.max(s,0),i.length-1);return i[f]??null}};var bA=class{constructor(){this.config={}}static{u(this,"PageInteractorAPI")}};var FG=require("path"),MG=require("fs");async function ZS(a,o){if(!a.pageInteractorAPI)throw new Error("pageInteractorAPI is not defined");return new vA(await a.pageInteractorAPI.getTextDetection(o))}u(ZS,"getTextDetection");async function UG(a,o,l){try{if(!await o.evaluate(g=>g.tagName.toLowerCase()==="canvas"))throw new Error("Click attempted on a non-canvas element");let f=(await ZS(a,await o.screenshot())).getRectangleByTextAndSizeRanking(l.canvasText,l.rectSizeIndex);if(!f)throw new Error(`Canvas click target not found for ${l.canvasText}`);a.logger.log(`Canvas click target: ${f}`),await a.actionGuardReturn(o.click({position:f.center}),"Canvas click could not be performed")}catch(s){throw a.logger.logError("Canvas click:",s.message),new Error("Canvas click action failed")}}u(UG,"canvasClick");function jG(a,o=!0,l=1e4){return new Promise(s=>{let f=0,g=u(()=>{if(a.activeDialog){let p=a.activeDialog;o&&(a.activeDialog=null),s(p)}else f>=l?s(null):(f+=1e3,setTimeout(g,1e3))},"checkDialog");g()})}u(jG,"waitForDialog");async function HG(a,o,l){if(!await o.evaluate(i=>i.tagName==="INPUT"&&i.getAttribute("type")==="file"))throw new Error("File upload action performed on non-file input element");let s=(l.files??[]).map(i=>(0,FG.join)(a.options.testAssetsDir,i)).filter(i=>(0,MG.existsSync)(i)?!0:(a.logger.log(`Upload file not found: ${i}. Filtering out.`),!1));if(!s.length)throw new Error("No files to upload");await a.actionGuardReturn(o.setInputFiles(s),"Set input files timeout")}u(HG,"performFileUploadAction");var pUe=require("@playwright/test"),gUe=require("@playwright/test");var kye="checksum is not defined";function Tye(a){if(a.fileChooser){let o=a.fileChooser;return a.fileChooser=void 0,o}return null}u(Tye,"getOpenedFileChooser");async function WG(a,o=[]){let l=Tye(a);if(!l)return{};let s="fc_"+Math.random().toString(36).slice(2,4);return await a.evaluateWithChecksum(async([i,f,g])=>{if(!window.checksum)throw new Error(g);window.checksum.testGenerator.addForceIncludeElement(f,i)},[s,l.element(),kye]),{interruptionEvent:"fileUploadOpenedEvent",payload:{checksumid:s,customFiles:o}}}u(WG,"handleFileChooserEvent");async function JG(a,o,l){let s=o.querySelector(`[checksum-get-more-items='${l}']`);if(!s)throw new Error("Get more items root not found");let{items:i,hasMoreItems:f}=await a.getMoreItemsForTemplate(l);s.innerHTML=s.innerHTML+i,f||s.removeAttribute("checksum-get-more-items")}u(JG,"addMoreItemsToDom");async function Pye(a,o){let l=et(o),s=a.getLastActionForPage(l);return{id:l,url:o.url(),title:await o.title(),new:a.newPagesIds.includes(l),active:l===et(a.getPage()),...s?{lastAction:s}:{}}}u(Pye,"getPageInfo");async function GG(a){let o=a.getPage(),l=await Promise.all(o.context().pages().map(i=>Pye(a,i))),s=a.getTimeMachine()?.getPage();return s&&s!==o&&(l=l.filter(i=>i.id!==et(s))),a.newPagesIds=[],l}u(GG,"getTabsInfo");var IUe=require("@playwright/test");async function qG(a,o,l){let s=a.getPage();a.loginFunction&&(await Promise.all([s.context().clearCookies(),s.evaluate(()=>localStorage.clear())]),await a.loginFunction(l??s,{...o!==void 0&&{role:o}}))}u(qG,"reauthenticate");function VG(a){return a.map(o=>{if(o.fileName)return o.fileName;switch(o.mimeType){case"image/png":return"image_200x200.png";case"image/jpeg":return"image_200x200.jpg";case"application/pdf":return"document.pdf";case"text/csv":return"data.csv";default:return"file.txt"}})}u(VG,"mapFileMIMETypeToFilename");function zG(a,o=!0){let l=a.fillValue;if(!l){let s=a.selector?.match(/(?<=value.*)('|").*/);s&&(l=s[0].slice(1,-1))}return typeof l!="string"&&(l="X"),o&&(a.fillValue=l),l}u(zG,"getActionFillValue");function YG(a,o){let l=o??a.options.actionTimeout;return l!==void 0?{timeout:l}:{}}u(YG,"actionTimeoutOption");function $G(a,o){let l=o??a.options.navigationTimeout;return l!==void 0?{timeout:l}:{}}u($G,"navigationTimeoutOption");function KG(a,o,l,{isNavigation:s=!1,timeout:i}={}){return Re(o,i??(s?a.options.navigationTimeout:a.options.actionTimeout),l)}u(KG,"actionGuardReturn");function ZG(a,o,l=[]){return wE(a.getFrame(),o??"",l)}u(ZG,"makeLocator");function XG(host,locator){return eval("host.getFrame()."+locator)}u(XG,"makeLocatorFromLocator");async function eq(a,o){let l=await a.getPage().screenshot({type:"jpeg",scale:"css",timeout:5e3,...o});return{base64:`data:image/jpeg;base64,${l.toString("base64")}`,buffer:l}}u(eq,"takeScreenshot");function tq(a){return a.getFrame().url()}u(tq,"getCurrentURL");var MUe=require("@playwright/test");var mA=class a{constructor(o){this.activeDialog=null;this.newPagesIds=[];this.listeners={dialog:null,filechooser:null,page:null};this.listenToContextPage=u(()=>{this.getPage().context().on("page",o=>{this.newPagesIds.push(o._guid)})},"listenToContextPage");this.listenToFileChooser=u(()=>{this.listeners.filechooser=async o=>{this.logger.log("File chooser event detected"),this.fileChooser=o},this.getPage().on("filechooser",this.listeners.filechooser)},"listenToFileChooser");this.evaluateWithChecksum=o.evaluateWithChecksum,this.getFrame=o.getFrame,this.getTimeMachine=o.getTimeMachine,this.logger=o.logger,this.options=o.options,this.pageInteractorAPI=o.pageInteractorAPI,this.loginFunction=o.loginFunction}static{u(this,"TestGenerationPageInteractorBase")}static{this.lastActions=new Map}static setLastAction(o,l){a.lastActions.set(o,l)}static getLastAction(o){return a.lastActions.get(o)}getPage(){return this.getFrame().page()}init(){this.listenToContextPage(),this.options.listenToFileChooser!==!1&&this.listenToFileChooser(),this.options.listenToDialog&&this.listenToDialog()}listenToDialog(){this.listeners.dialog=async o=>{this.activeDialog=o},this.getPage().on("dialog",this.listeners.dialog)}removeListener(o){try{switch(o){case"dialog":this.listeners.dialog&&(this.getPage().removeListener(o,this.listeners.dialog),this.listeners.dialog=null);break;case"filechooser":this.listeners.filechooser&&(this.getPage().off(o,this.listeners.filechooser),this.listeners.filechooser=null);break;case"page":this.listeners.page&&(this.getPage().context().off(o,this.listeners.page),this.listeners.page=null);break}}catch(l){this.logger.logError(`Error removing listener: ${o}`,l)}}getLastActionForPage(o){return a.getLastAction(o)}};var xye="checksum is not defined",ed=class extends mA{constructor(){super(...arguments);this.waitForDialog=u((l=!0,s=1e4)=>jG(this,l,s),"waitForDialog");this.performFileUploadAction=u(async(l,s)=>HG(this,l,s),"performFileUploadAction");this.getSelectionDataForAction=u(async(l,s)=>l.checksumid?this.getSelectionDataForChecksumId(l.checksumid,s):l.position?await this.evaluateWithChecksum(async([f,g,p])=>{if(!window.checksum)throw new Error(p);return window.checksum.testGenerator.getSelectorByPosition(f,g)},[l.position.x,l.position.y,xye])??{selector:"",locator:""}:l.selector?{selector:l.selector,locator:`locator("${l.selector}")`}:{selector:"",locator:""},"getSelectionDataForAction")}static{u(this,"TestGenerationPageInteractor")}reauthenticate(l,s){return qG(this,l,s)}mapFileMIMETypeToFilename(l){return VG(l)}getActionFillValue(l,s=!0){return zG(l,s)}actionTimeoutOption(l){return YG(this,l)}navigationTimeoutOption(l){return $G(this,l)}actionGuardReturn(l,s,i={}){return KG(this,l,s,i)}makeLocator(l,s=[]){return ZG(this,l,s)}makeLocatorFromLocator(l){return XG(this,l)}takeScreenshot(l){return eq(this,l)}getCurrentURL(){return tq(this)}async handleFileChooserEvent(l=[]){return WG(this,l)}async addMoreItemsToDom(l,s){return JG(this,l,s)}async getTabsInfo(){return GG(this)}async translateActionResponseToAgentPotentialAction(l,s=void 0,i={}){return rL(this,l,s,i)}async performAction(l,s={}){return tL(this,l,s)}getTextDetection(l){return ZS(this,l)}canvasClick(l,s){return UG(this,l,s)}async getCurrentReducedHTML({retriesLeft:l=3,retryWaitMS:s=2e3,initialChecksumId:i="0",extractESRAForInterpretationRequiredElements:f=!1,stopFlashingElementsDetection:g=!1,assignChecksumIdsToAllElements:p}={}){try{return await nL(this,{initialChecksumId:i,extractESRAForInterpretationRequiredElements:f,stopFlashingElementsDetection:g,assignChecksumIdsToAllElements:p})}catch(h){if(l>0)return this.logger.logError(`[getCurrentReducedHTML] Error: ${h.message}`),this.logger.logError(`Failed do obtain reduced HTML, trying again in ${s/1e3} seconds, ${l-1} to go.`),await Xe(s),this.getCurrentReducedHTML({retriesLeft:l-1,retryWaitMS:s});throw h}}getActionEventCode(l){return M_[l]}getSelectionDataForChecksumId(l,s){return TJ(this,l,s)}getESRAForSelector(l,s){return PJ(this,l,s)}getMoreItemsForTemplate(l){return BJ(this,l)}scrollElementIntoViewByChecksumId(l){return xJ(this,l)}scrollElementIntoViewByRrwebId(l){return RJ(this,l)}generateLocatorByRrwebId(l){return DJ(this,l)}getViewportHTML(){return NJ(this)}scrollScrollableElement(l,s,i){return QJ(this,l,s,i)}};var Oet=require("@playwright/test"),$t=require("fs");var nq=require("module");var Rye=(0,nq.createRequire)("/"),Jl,Dye,Nye;try{Jl=Rye("worker_threads"),Dye=Jl.Worker,Nye=Jl.isMarkedAsUntransferable}catch{}var Mn=Uint8Array,Wl=Uint16Array,Qye=Int32Array,oq=new Mn([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),iq=new Mn([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),_ye=new Mn([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),rq=u(function(a,o){for(var l=new Wl(31),s=0;s<31;++s)l[s]=o+=1<<a[s-1];for(var i=new Qye(l[30]),s=1;s<30;++s)for(var f=l[s];f<l[s+1];++f)i[f]=f-l[s]<<5|s;return{b:l,r:i}},"freb"),Jl=rq(oq,2),aq=Jl.b,Lye=Jl.r;aq[28]=258,Lye[258]=28;var cq=rq(iq,0),Fye=cq.b,ije=cq.r,n1=new Wl(32768);for(Te=0;Te<32768;++Te)Fi=(Te&43690)>>1|(Te&21845)<<1,Fi=(Fi&52428)>>2|(Fi&13107)<<2,Fi=(Fi&61680)>>4|(Fi&3855)<<4,n1[Te]=((Fi&65280)>>8|(Fi&255)<<8)>>1;var Fi,Te,td=u((function(a,o,l){for(var s=a.length,i=0,f=new Wl(o);i<s;++i)a[i]&&++f[a[i]-1];var g=new Wl(o);for(i=1;i<o;++i)g[i]=g[i-1]+f[i-1]<<1;var p;if(l){p=new Wl(1<<o);var h=15-o;for(i=0;i<s;++i)if(a[i])for(var n=i<<4|a[i],r=o-a[i],e=g[a[i]-1]++<<r,t=e|(1<<r)-1;e<=t;++e)p[n1[e]>>h]=n}else for(p=new Wl(s),i=0;i<s;++i)a[i]&&(p[i]=n1[g[a[i]-1]++]>>15-a[i]);return p}),"hMap"),nd=new Mn(288);for(Te=0;Te<144;++Te)nd[Te]=8;var Te;for(Te=144;Te<256;++Te)nd[Te]=9;var Te;for(Te=256;Te<280;++Te)nd[Te]=7;var Te;for(Te=280;Te<288;++Te)nd[Te]=8;var Te,lq=new Mn(32);for(Te=0;Te<32;++Te)lq[Te]=5;var Te;var Mye=td(nd,9,1);var Uye=td(lq,5,1),XS=u(function(a){for(var o=a[0],l=1;l<a.length;++l)a[l]>o&&(o=a[l]);return o},"max"),Lo=u(function(a,o,l){var s=o/8|0;return(a[s]|a[s+1]<<8)>>(o&7)&l},"bits"),e1=u(function(a,o){var l=o/8|0;return(a[l]|a[l+1]<<8|a[l+2]<<16)>>(o&7)},"bits16"),jye=u(function(a){return(a+7)/8|0},"shft"),i1=u(function(a,o,l){return(o==null||o<0)&&(o=0),(l==null||l>a.length)&&(l=a.length),new Mn(a.subarray(o,l))},"slc");var Hye=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Fn=u(function(a,o,l){var s=new Error(o||Hye[a]);if(s.code=a,Error.captureStackTrace&&Error.captureStackTrace(s,Fn),!l)throw s;return s},"err"),Wye=u(function(a,o,l,s){var i=a.length,f=s?s.length:0;if(!i||o.f&&!o.l)return l||new Mn(0);var g=!l,p=g||o.i!=2,h=o.i;g&&(l=new Mn(i*3));var n=u(function(C_){var w_=l.length;if(C_>w_){var S_=new Mn(Math.max(w_*2,C_));S_.set(l),l=S_}},"cbuf"),r=o.f||0,e=o.p||0,t=o.b||0,c=o.l,d=o.d,A=o.m,y=o.n,v=i*8;do{if(!c){r=Lo(a,e,1);var m=Lo(a,e+1,3);if(e+=3,m)if(m==1)c=Mye,d=Uye,A=9,y=5;else if(m==2){var B=Lo(a,e,31)+257,R=Lo(a,e+10,15)+4,N=B+Lo(a,e+5,31)+1;e+=14;for(var D=new Mn(N),M=new Mn(19),S=0;S<R;++S)M[_ye[S]]=Lo(a,e+S*3,7);e+=R*3;for(var ee=XS(M),P=(1<<ee)-1,I=td(M,ee,1),S=0;S<N;){var _=I[Lo(a,e,P)];e+=_&15;var b=_>>4;if(b<16)D[S++]=b;else{var j=0,ce=0;for(b==16?(ce=3+Lo(a,e,3),e+=2,j=D[S-1]):b==17?(ce=3+Lo(a,e,7),e+=3):b==18&&(ce=11+Lo(a,e,127),e+=7);ce--;)D[S++]=j}}var le=D.subarray(0,B),he=D.subarray(B);A=XS(le),y=XS(he),c=td(le,A,1),d=td(he,y,1)}else Fn(1);else{var b=jye(e)+4,O=a[b-4]|a[b-3]<<8,w=b+O;if(w>i){h&&Fn(0);break}p&&n(t+O),l.set(a.subarray(b,w),t),o.b=t+=O,o.p=e=w*8,o.f=r;continue}if(e>v){h&&Fn(0);break}}p&&n(t+131072);for(var ht=(1<<A)-1,Ot=(1<<y)-1,_e=e;;_e=e){var j=c[e1(a,e)&ht],we=j>>4;if(e+=j&15,e>v){h&&Fn(0);break}if(j||Fn(2),we<256)l[t++]=we;else if(we==256){_e=e,c=null;break}else{var Se=we-254;if(we>264){var S=we-257,Ie=oq[S];Se=Lo(a,e,(1<<Ie)-1)+aq[S],e+=Ie}var We=d[e1(a,e)&Ot],Tn=We>>4;We||Fn(3),e+=We&15;var he=Fye[Tn];if(Tn>3){var Ie=iq[Tn];he+=e1(a,e)&(1<<Ie)-1,e+=Ie}if(e>v){h&&Fn(0);break}p&&n(t+131072);var Zp=t+Se;if(t<he){var O_=f-he,aX=Math.min(he,Zp);for(O_+t<0&&Fn(3);t<aX;++t)l[t]=s[O_+t]}for(;t<Zp;++t)l[t]=l[t-he]}}o.l=c,o.p=_e,o.b=t,o.f=r,c&&(r=1,o.m=A,o.d=d,o.n=y)}while(!r);return t!=l.length&&g?i1(l,0,t):l.subarray(0,t)},"inflt");var Jye=new Mn(0);var fi=u(function(a,o){return a[o]|a[o+1]<<8},"b2"),co=u(function(a,o){return(a[o]|a[o+1]<<8|a[o+2]<<16|a[o+3]<<24)>>>0},"b4"),t1=u(function(a,o){return co(a,o)+co(a,o+4)*4294967296},"b8");function Gye(a,o){return Wye(a,{i:2},o&&o.out,o&&o.dictionary)}u(Gye,"inflateSync");var o1=typeof TextDecoder<"u"&&new TextDecoder,qye=0;try{o1.decode(Jye,{stream:!0}),qye=1}catch{}var Vye=u(function(a){for(var o="",l=0;;){var s=a[l++],i=(s>127)+(s>223)+(s>239);if(l+i>a.length)return{s:o,r:i1(a,l-1)};i?i==3?(s=((s&15)<<18|(a[l++]&63)<<12|(a[l++]&63)<<6|a[l++]&63)-65536,o+=String.fromCharCode(55296|s>>10,56320|s&1023)):i&1?o+=String.fromCharCode((s&31)<<6|a[l++]&63):o+=String.fromCharCode((s&15)<<12|(a[l++]&63)<<6|a[l++]&63):o+=String.fromCharCode(s)}},"dutf8");function zye(a,o){if(o){for(var l="",s=0;s<a.length;s+=16384)l+=String.fromCharCode.apply(null,a.subarray(s,s+16384));return l}else{if(o1)return o1.decode(a);var i=Vye(a),f=i.s,l=i.r;return l.length&&Fn(8),f}}u(zye,"strFromU8");var Yye=u(function(a,o){return o+30+fi(a,o+26)+fi(a,o+28)},"slzh"),$ye=u(function(a,o,l){var s=fi(a,o+28),i=fi(a,o+30),f=zye(a.subarray(o+46,o+46+s),!(fi(a,o+8)&2048)),g=o+46+s,p=Kye(a,g,i,l,co(a,o+20),co(a,o+24),co(a,o+42)),h=p[0],n=p[1],r=p[2];return[fi(a,o+10),h,n,f,g+i+fi(a,o+32),r]},"zh"),Kye=u(function(a,o,l,s,i,f,g){var p=i==4294967295,h=f==4294967295,n=g==4294967295,r=o+l,e=p+h+n;if(s&&e){for(;o+4<r;o+=4+fi(a,o+2))if(fi(a,o)==1)return[p?t1(a,o+4+8*h):i,h?t1(a,o+4):f,n?t1(a,o+4+8*(h+p)):g,1];s<2&&Fn(13)}return[i,f,g,0]},"z64hs");function uq(a,o){for(var l={},s=a.length-22;co(a,s)!=101010256;--s)(!s||a.length-s>65558)&&Fn(13);var i=fi(a,s+8);if(!i)return{};var f=co(a,s+16),g=co(a,s-20)==117853008;if(g){var p=co(a,s-12);g=co(a,p)==101075792,g&&(i=co(a,p+32),f=co(a,p+48))}for(var h=o&&o.filter,n=0;n<i;++n){var r=$ye(a,f,g),e=r[0],t=r[1],c=r[2],d=r[3],A=r[4],y=r[5],v=Yye(a,y);f=A,(!h||h({name:d,size:t,originalSize:c,compression:e}))&&(e?e==8?l[d]=Gye(a.subarray(v,v+t),{out:new Mn(c)}):Fn(14,"unknown compression type "+e):l[d]=i1(a,v,v+t))}return l}u(uq,"unzipSync");var Eo=V(require("path"));var od=class extends Error{static{u(this,"ExpectError")}constructor(o){super("Fallback Exception Wrapper"),this.fallbackResult=o}};var fje=require("@playwright/test");var kVe=require("@playwright/test");var qje=require("@playwright/test");async function sq(a){await a.body?.cancel().catch(()=>{})}u(sq,"drainBody");var Zye="http://127.0.0.1";async function r1(a,o){let l=o.fetchImpl??globalThis.fetch;try{let s=await l(`${Zye}:${o.port}/`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a),signal:AbortSignal.timeout(o.timeoutMs)});return await sq(s),s.ok?!0:(o.onError?.(new Error(`monitor rejected message with status ${s.status}`)),!1)}catch(s){return o.onError?.(s),!1}}u(r1,"postToMonitor");async function a1(a,o){return await r1(a,o)?!0:o.attempts<=1?!1:(await Xye(o.retryDelayMs),a1(a,{...o,attempts:o.attempts-1}))}u(a1,"postToMonitorWithRetry");function Xye(a){return new Promise(o=>{setTimeout(o,a)})}u(Xye,"sleep");var EA={uploadTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_TIMEOUT_MS",fallback:6e5,min:5e3,max:36e5},noProgressAbortMs:{env:"CHECKSUM_RUNTIME_UPLOAD_NO_PROGRESS_MS",fallback:6e4,min:5e3,max:6e5},assetDeadlineMs:{env:"CHECKSUM_RUNTIME_UPLOAD_ASSET_DEADLINE_MS",fallback:12e5,min:3e4,max:54e5},maxAttempts:{env:"CHECKSUM_RUNTIME_UPLOAD_MAX_ATTEMPTS",fallback:6,min:1,max:20},stallTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_STALL_TIMEOUT_MS",fallback:6e5,min:3e4,max:36e5},minProgressBytes:{env:"CHECKSUM_RUNTIME_UPLOAD_MIN_PROGRESS_BYTES",fallback:65536,min:1,max:67108864},finalizeBudgetMs:{env:"CHECKSUM_RUNTIME_UPLOAD_FINALIZE_BUDGET_MS",fallback:18e5,min:6e4,max:54e5},finalizeCeilingMs:{env:"CHECKSUM_RUNTIME_UPLOAD_FINALIZE_CEILING_MS",fallback:24e5,min:12e4,max:72e5},cliHardCapMs:{env:"CHECKSUM_RUNTIME_UPLOAD_CLI_HARD_CAP_MS",fallback:27e5,min:12e4,max:72e5},watchTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_WATCH_TIMEOUT_MS",fallback:12e4,min:5e3,max:18e5},ipcTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_IPC_TIMEOUT_MS",fallback:5e3,min:500,max:6e4},onEndFlushTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_ONEND_FLUSH_TIMEOUT_MS",fallback:5e3,min:500,max:6e4},resumableChunkBytes:{env:"CHECKSUM_RUNTIME_UPLOAD_RESUMABLE_CHUNK_BYTES",fallback:8388608,min:262144,max:268435456},connectTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_CONNECT_TIMEOUT_MS",fallback:1e4,min:1e3,max:6e4},headersTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_HEADERS_TIMEOUT_MS",fallback:3e5,min:5e3,max:18e5},bodyTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_BODY_TIMEOUT_MS",fallback:3e5,min:5e3,max:18e5},maxConcurrentUploads:{env:"CHECKSUM_RUNTIME_UPLOAD_MAX_CONCURRENT",fallback:15,min:1,max:64}};function eve(a,o,l,s){if(a===void 0||a.trim()==="")return o;let i=Number(a);return Number.isInteger(i)?Math.min(s,Math.max(l,i)):o}u(eve,"clampEnvInt");var tve=[["cliHardCapMs",["finalizeCeilingMs"],.9],["finalizeCeilingMs",["finalizeBudgetMs"],1],["finalizeBudgetMs",["stallTimeoutMs","assetDeadlineMs","watchTimeoutMs"],1],["assetDeadlineMs",["uploadTimeoutMs"],1],["uploadTimeoutMs",["noProgressAbortMs"],.5]];function nve(a){let o={...a},l=[];for(let[s,i,f]of tve)for(let g of i){let p=Math.floor(o[s]*f);o[g]>p&&(l.push(`${EA[g].env} (${o[g]}ms) exceeds its bound under ${EA[s].env} (${o[s]}ms); using ${p}ms`),o[g]=p)}return{tunables:o,warnings:l}}u(nve,"coerceScopeHierarchy");function ove(a){let o={};for(let l of Object.keys(EA)){let s=EA[l];o[l]=eve(a[s.env],s.fallback,s.min,s.max)}return o.resumableChunkBytes=Math.max(1,Math.floor(o.resumableChunkBytes/262144))*262144,nve(o)}u(ove,"resolveUploadTunablesDetailed");function id(a){return ove(a).tunables}u(id,"resolveUploadTunables");var Pje=id({});var IA=u(a=>{if(a.error!=null)return"ERROR";let o=a.status_code;if(typeof o=="number"&&o>=500)return"ERROR";let l=a.exit_code;return typeof l=="number"&&l!==0?"ERROR":"INFO"},"severityFor");var c1=require("fs");var fq="\x1B[31m",ive="\x1B[33m",rve="\x1B[32m",ave="\x1B[36m",cve="\x1B[2m",lve="\x1B[1m",rd="\x1B[0m",uve=u(()=>{let a=process.env.WIDE_EVENT_PRETTY;return a==="true"||a==="1"?!0:a==="false"||a==="0"?!1:process.stdout.isTTY?!0:process.env.APP_ENV==="local"},"shouldPretty"),sve=new Set(["severity","message","kind","timestamp","_startedAtMs"]),fve=u(a=>{let o=new WeakSet;return JSON.stringify(a,(l,s)=>{if(typeof s=="bigint")return s.toString();if(typeof s=="object"&&s!==null){if(o.has(s))return"[Circular]";o.add(s)}return s})},"safeStringify"),dve=u(a=>a==="ERROR"||a==="CRITICAL"?fq:a==="WARNING"?ive:rve,"colorForSeverity"),pve=u(a=>{let o=String(a.severity??"INFO"),l=`${dve(o)}${o.padEnd(5)}${rd}`,s=a.kind?`${ave}${a.kind}${rd}`:"",i=String(a.message??""),f=a.error&&typeof a.error=="object"?(()=>{let r=a.error;return` ${fq}${r.type??"Error"}: ${r.message??""}${rd}`})():"",g=["outcome","test_suite_run_id","status"],p=Object.entries(a).filter(([r,e])=>!sve.has(r)&&e!=null&&r!=="error"&&typeof e!="object"),h=u(r=>{let e=g.indexOf(r);return e===-1?g.length:e},"rank"),n=p.sort(([r],[e])=>h(r)-h(e)).slice(0,8).map(([r,e])=>`${cve}${r}=${rd}${e}`).join(" ");return[l,lve+s+rd,i,n,f].filter(r=>r&&r.trim()!=="").join(" ")},"formatPretty"),gve=u(a=>{let o=a.trace_id;if(typeof o!="string"||o==="")return a;let l=process.env.GCP_PROJECT_ID||process.env.GOOGLE_CLOUD_PROJECT;return l?{...a,"logging.googleapis.com/trace":`projects/${l}/traces/${o}`}:a},"withGcpTraceField"),Gl=u(a=>{let o=uve()?pve(a):fve(gve(a));(0,c1.writeSync)(1,o+`
149
+ `)}}shouldLog(o){switch(o){case"warning":return this.logLevel==="all"||this.logLevel==="warnings";case"error":return!0;case"info":return this.logLevel==="all";default:return!1}}addListener(o){this.listeners.push(o)}info(...o){this.log("info",...o)}warning(...o){this.log("warning",...o)}error(...o){this.log("error",...o)}setLogLevel(o){this.logLevel=o}setLogStream(o){this.logStream=o}},ec=new DS,aye=Object.assign((...a)=>ec.info(...a),{info:u((...a)=>ec.info(...a),"info"),warning:u((...a)=>ec.warning(...a),"warning"),error:u((...a)=>ec.error(...a),"error"),setLogLevel:u(a=>ec.setLogLevel(a),"setLogLevel"),setLogStream:u(a=>ec.setLogStream(a),"setLogStream"),addLogListener:u(a=>ec.addListener(a),"addLogListener")}),tc=aye;var Gf=require("node:perf_hooks");var qf=class{constructor(o={}){this.options=o;this.priorityQueue=[];this.nonPriorityQueue=[];this.isRunning=!1;this.taskIndex=0;this.timeRunningTasks=0;this.timeGoingBack=0;this.tasksExecuted=0}static{u(this,"TaskTimeMachineQueue")}enqueue(o){let l=this.taskIndex++,s={...o,index:l,queuedAt:Gf.performance.now()};if(o.priority)this.priorityQueue.push(s);else if(this.options.sortByTimestamp){let i=this.nonPriorityQueue.findIndex(f=>f.timestamp!==void 0&&o.timestamp!==void 0&&f.timestamp>o.timestamp);i===-1?this.nonPriorityQueue.push(s):this.nonPriorityQueue.splice(i,0,s)}else this.nonPriorityQueue.push(s);return l}popTask(){return this.priorityQueue.length>0?this.priorityQueue.shift():this.nonPriorityQueue.shift()}async runSingleTask(o,l){let s=Gf.performance.now();try{if(this.options.logPerformance){let f=Gf.performance.now()-o.queuedAt;tc.info(`Running task, timestamp: ${o.timestamp} \x1B[36m${o.name}\x1B[0m, index: ${o.index}, was pending for ${f}ms`)}await l(o);let i=Gf.performance.now()-s;this.timeRunningTasks+=i,this.options.logPerformance&&tc.info("Finished running task, took",i,"ms.","Queue lengths:",`priority=${this.priorityQueue.length}`,`non-priority=${this.nonPriorityQueue.length}`),this.tasksExecuted++}catch(i){tc.error("Task execution error:",i)}}async runTasks(o){if(!this.isRunning){this.isRunning=!0;try{for(;this.getQueueLength()>0;){let l=this.popTask();if(!l)break;await this.runSingleTask(l,o)}}finally{this.isRunning=!1,this.getQueueLength()>0&&this.options.logPerformance&&tc.info("Accumulated time running tasks:",this.timeRunningTasks,"ms, from which time spent going back:",this.timeGoingBack)}}}getTasksAtTimestamp(o){return[...this.priorityQueue.filter(l=>l.timestamp===o),...this.nonPriorityQueue.filter(l=>l.timestamp===o)]}removeTasksAtTimestamp(o){this.priorityQueue=this.priorityQueue.filter(l=>l.timestamp!==o),this.nonPriorityQueue=this.nonPriorityQueue.filter(l=>l.timestamp!==o)}getQueueLength(){return this.priorityQueue.length+this.nonPriorityQueue.length}setTimeGoingBack(o){this.timeGoingBack=o}};var DMe=require("@playwright/test"),Vf=V(xS());function OJ(a){if(!a)return;let{username:o,password:l,server:s}=a;return o&&l?new Vf.ProxyAgent({uri:`http://${o}:${l}@${s.replace("http://","")}`}):new Vf.ProxyAgent({uri:s})}u(OJ,"makeWebProxyAgent");async function cye(a,o){let s=a.request().url();try{let f=await(0,Vf.fetch)(s,o?{dispatcher:o}:{}),g=f.status,p={};f.headers.forEach((c,d)=>p[d]=c),p["access-control-allow-origin"]="*";let h=parseInt(f.headers.get("content-length")||"0",10),n=25*1024*1024;if(h>n){await a.continue();return}if(!f.body){await a.fulfill({status:g,headers:p});return}let e=await f.arrayBuffer(),t=Buffer.from(e);await a.fulfill({status:g,headers:p,body:t})}catch{await a.continue()}}u(cye,"handleCorsRoute");async function CJ(a,o,l){try{let s=a.page(),i=et(s);if(l.has(i))return;l.add(i),await s.route(/^https?:\/\/(?!(?:localhost|127\.0\.0\.1|::1)).*/,f=>cye(f,o))}catch{}}u(CJ,"preventCrossOriginErrors");var LMe=require("@playwright/test");var zf=require("node:perf_hooks");async function wJ(a,{shouldGoBack:o,shouldBatch:l,task:s,timestamp:i,beforeTimestamp:f,name:g,resolve:p,reject:h}){if(a.requireTimeMachineFrame().isDetached()&&h(),o){let e=zf.performance.now();await a.goBack(i,f),a.addTimeGoingBack(zf.performance.now()-e)}let n=SJ(a,{taskForSafeRun:s,name:g,resolve:p,reject:h}),r=a.taskQueue.getQueueLength()>0&&l?lye(a,{firstTask:n,timestamp:i,name:g,resolve:p,reject:h}):[n];for(let e of r)await e()}u(wJ,"runTaskWrapper");function SJ(a,{taskForSafeRun:o,name:l,resolve:s,reject:i}){return async()=>{try{let f=zf.performance.now(),g=await Re(o(a.requireTimeMachineFrame()),a.options.taskTimeout,()=>`Task execution timeout - ${l}, took ${zf.performance.now()-f}ms with timeout of ${a.options.taskTimeout}ms`);s(g)}catch(f){tc.error("Task execution error:",f.message),i(f)}}}u(SJ,"makeSafeRunTask");function lye(a,{firstTask:o,timestamp:l,name:s,resolve:i,reject:f}){let g=[o],p=a.taskQueue.getTasksAtTimestamp(l);return g.push(...p.map(({task:h})=>SJ(a,{taskForSafeRun:u(()=>h({shouldGoBack:!1,shouldBatch:!1}),"taskForSafeRun"),name:s,resolve:i,reject:f}))),a.taskQueue.removeTasksAtTimestamp(l),g}u(lye,"collectBatchedTasks");var HMe=require("@playwright/test");var uye="checksum is not defined";async function NS(a,o,{retriesLeft:l=3,retryWaitMS:s=1e3}={}){try{let{reducedHTML:i,currentChecksumId:f}=await o.evaluate(async({errorMessage:g,...p})=>{if(!window.checksum)throw new Error(g);return window.checksum.testGenerator.reduceHTML({},p)},{stopFlashingElementsDetection:!0,assignChecksumIdsToAllElements:!0,initialChecksumId:a.currentChecksumId,fromTimeMachine:!0,invalidateCache:!0,errorMessage:uye});return a.currentChecksumId=f,{reducedHTML:i}}catch(i){if(l>0)return await Xe(s),NS(a,o,{retriesLeft:l-1,retryWaitMS:s});throw i}}u(NS,"getReducedHTMLWithRetries");var zMe=require("@playwright/test");function QS({frameMsgBroker:a,recordingFrame:o,timeMachineFrame:l,handler:s}){let i="rrweb";if(!o)throw new Error("Recording frame is not initialized");a.subscribeToChannel(i,l,{originFrame:o,handler:s}),l.page().on("close",()=>a.unsubscribeFromChannel(i,l))}u(QS,"subscribeToRrwebEvents");var dA="checksum is not defined",pA=class a{constructor(o,l,s={headless:!0,logPerformance:!1,timestampBatchingEnabled:!1,sortByTimestamp:!1,taskTimeout:24e4,debugPort:void 0,frameMsgBrokerRegisterName:void 0}){this.frameMsgBroker=o;this.injectedScriptManager=l;this.options=s;this.currentTimestamp=0;this.currentBeforeTimestamp=!1;this.currentChecksumId="0";this.timeGoingBack=0;this.pagesWithCorsInterception=new Set;this.reducedHTMLCache=new Map;this.taskQueue=new qf({sortByTimestamp:s.sortByTimestamp,logPerformance:s.logPerformance}),this.webProxyAgent=OJ(s.webProxy)}static{u(this,"ChecksumTimeMachine")}requireTimeMachineFrame(){if(!this.timeMachineFrame)throw new Error("Time machine frame is not initialized");return this.timeMachineFrame}addTimeGoingBack(o){this.timeGoingBack+=o,this.taskQueue.setTimeGoingBack(this.timeGoingBack)}getPage(){return this.requireTimeMachineFrame().page()}getFrame(){return this.requireTimeMachineFrame()}hasReplayFrame(){return!!this.timeMachineFrame}async prepare(o,l,s){if(this.recordingFrame=o,await this.frameMsgBroker.register("live",o),this.options.recordOnly&&!l){this.prepareRecordOnly(o);return}l?this.timeMachineFrame=l:this.timeMachineFrame=await this.prepareBrowserContextAndFrame(),await CJ(this.timeMachineFrame,this.webProxyAgent,this.pagesWithCorsInterception),this.options.frameMsgBrokerRegisterName&&await this.frameMsgBroker.register(this.options.frameMsgBrokerRegisterName,this.timeMachineFrame),s&&s(this.timeMachineFrame),await this.injectedScriptManager.addTrackedFrame(this.timeMachineFrame),this.timeMachineFrame.page().on("framenavigated",async i=>{await this.injectedScriptManager.onFrameNavigated(i)}),QS({frameMsgBroker:this.frameMsgBroker,recordingFrame:this.recordingFrame,timeMachineFrame:this.requireTimeMachineFrame(),handler:this.rrwebEventHandler.bind(this)}),this.taskQueue=new qf({sortByTimestamp:this.options.sortByTimestamp,logPerformance:this.options.logPerformance}),await this.start()}prepareRecordOnly(o){QS({frameMsgBroker:this.frameMsgBroker,recordingFrame:o,timeMachineFrame:o,handler:this.rrwebEventHandler.bind(this)})}async start(){await this.requireTimeMachineFrame().evaluate(async o=>{if(!window.checksum)throw new Error(o);window.checksum.timeMachine.start({firstEventTimestamp:Date.now()})},dA)}setBrowserContext(o){this.timeMachineBrowserContext=o}async executeTask(o,l,{name:s,beforeTimestamp:i=!1,priority:f=!1}={}){return new Promise((g,p)=>{let h=u((n={shouldGoBack:!0,shouldBatch:this.options.timestampBatchingEnabled??!1})=>wJ(this,{...n,task:o,timestamp:l,beforeTimestamp:i,name:s,resolve:g,reject:p}),"taskWrapper");this.taskQueue.enqueue({name:s,task:h,timestamp:i&&l!==void 0?l-1:l,priority:f}),this.runTasks()})}static{this.REDUCED_HTML_CACHE_MAX=20}executeReducedHTMLTask(o,{priority:l=!1}={}){let s=this.reducedHTMLCache.get(o);if(s){let i=new Ns(s);return Promise.resolve(i.getRrwebIdsReducedDomString())}return this.executeTask(async i=>{let g=(await NS(this,i)).reducedHTML;return g&&this.setReducedHTMLCache(o,g),new Ns(g).getRrwebIdsReducedDomString()},o,{name:"getReducedHTMLForTimestamp",priority:l})}setReducedHTMLCache(o,l){for(this.reducedHTMLCache.delete(o),this.reducedHTMLCache.set(o,l);this.reducedHTMLCache.size>a.REDUCED_HTML_CACHE_MAX;){let s=this.reducedHTMLCache.keys().next().value;if(s===void 0)break;this.reducedHTMLCache.delete(s)}}goBack(o,l=!1){return this.currentBeforeTimestamp===l&&this.currentTimestamp===o?Promise.resolve():(this.currentTimestamp=o,this.currentBeforeTimestamp=l,this.requireTimeMachineFrame().evaluate(({timestamp:s,beforeTimestamp:i,errorMessage:f})=>{if(!window.checksum)throw new Error(f);return s===void 0?window.checksum.timeMachine.goLive():window.checksum.timeMachine.goBack(s,{beforeTimestamp:i})},{timestamp:o,beforeTimestamp:l,errorMessage:dA}))}async runTasks(){await this.taskQueue.runTasks(async o=>{await o.task()})}async rrwebEventHandler(o){let l=JSON.stringify(o);if(this.timeMachineFrame)try{await this.timeMachineFrame.evaluate(function({eventsJSON:s,errorMessage:i}){if(!window.checksum)throw new Error(i);let f=JSON.parse(s);return window.checksum.timeMachine.handleEvents(f)},{eventsJSON:l,errorMessage:dA})}catch{}return l}async makeBrowserContext(){let o=[];this.options.debugPort&&o.push(`--remote-debugging-port=${this.options.debugPort}`);let{headless:l}=this.options,s=await kJ.chromium.launch({...l!==void 0?{headless:l}:{},args:o});return this.timeMachineBrowserContext=await s.newContext({bypassCSP:!0}),this.timeMachineBrowserContext}async makeFrame(){if(!this.timeMachineBrowserContext)throw new Error("Time machine browser context is not initialized");return(await this.timeMachineBrowserContext.newPage()).mainFrame()}async prepareBrowserContextAndFrame(){return this.timeMachineBrowserContext||await this.makeBrowserContext(),this.makeFrame()}async toggleTimeMachineHandleEvents(o){try{await this.requireTimeMachineFrame().evaluate(({shouldHandleEvents:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);return window.checksum.timeMachine.setShouldHandleEvents(l)},{shouldHandleEvents:o,errorMessage:dA})}catch{}}};var sye=!0,Li="checksum is not defined";async function TJ(a,o,l){if(l?.selector)return{...l,selector:l.selector,locator:l.locator??"",clickOffset:l.position};if(!o)return a.logger.log(`[getSelectionDataForChecksumId] checksumid not provided (${o})`),{...l,selector:o,locator:`locator("${o}")`};let s=await fye(a,o);return sye&&s.invalid&&s.rrwebId&&(s=await dye(a,o,s)),s.selector||a.logger.log(`[getSelectionDataForChecksumId] Could not get selector for checksumid: ${o}. If checksumid is correct, try to change app rules preMapReducedHTMLSelectors to true`),s}u(TJ,"getSelectionDataForChecksumId");function fye(a,o){return a.evaluateWithChecksum(async({checksumId:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);let{selector:i,locator:f,clickOffset:g,parentFramesSelectors:p,invalid:h,rrwebId:n}=await window.checksum.testGenerator.getSelectorForChecksumId(l),r=await window.checksum.testGenerator.getElementForChecksumId(l),e=r instanceof HTMLOptionElement&&r.value?r.value:void 0;return{selector:i,locator:f,clickOffset:g,selectOptionValue:e,parentFramesSelectors:p,invalid:h,rrwebId:n}},{checksumId:o,errorMessage:Li})}u(fye,"fetchSelectorForChecksumId");async function dye(a,o,l){a.logger.log(`[getSelectionDataForChecksumId] Could not get selector for checksumid: ${o}. Trying to use time machine...`);let s=l;try{let i=await pye(a,l.rrwebId);s={...l,...i}}catch{a.logger.log(`[getSelectionDataForChecksumId] error using time machine to get selector for checksumid: ${o}`)}return a.logger.log(`[getSelectionDataForChecksumId] got selector: ${s.selector} for checksumid: ${o} from time machine`),s}u(dye,"applyTimeMachineFallback");async function pye(a,o){if(!a.rrwebEventAtLastReducedHTML)return;let l=a.getTimeMachine();return l?await l.executeTask(i=>i.evaluate(async({rrwebId:f,errorMessage:g})=>{if(!window.checksum)throw new Error(g);return window.checksum.testGenerator.getInspectedElementSelectionResultByRRwebId(f,{ignoredIframesSelectors:[".replayer-wrapper > iframe"],fromTimeMachine:!0})},{rrwebId:o,errorMessage:Li}),a.rrwebEventAtLastReducedHTML.timestamp,{name:"getSelectionDataForRRwebIdAtReduceHTMLTime"})??void 0:void 0}u(pye,"getSelectionDataForRRwebIdAtReduceHTMLTime");async function PJ(a,o,l){return o?(await a.evaluateWithChecksum(async({selector:i,parentFramesSelectors:f,errorMessage:g})=>{if(!window.checksum)throw new Error(g);return window.checksum.testGenerator.getSelectionDataForSelector(i,f)},{selector:o,parentFramesSelectors:l,errorMessage:Li}))?.esraMetadata:void 0}u(PJ,"getESRAForSelector");async function BJ(a,o){return await a.evaluateWithChecksum(async({getMoreItemsId:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);return window.checksum.testGenerator.getMoreItemsForTemplate(l,{})},{getMoreItemsId:o,errorMessage:Li})??{items:"",hasMoreItems:!1}}u(BJ,"getMoreItemsForTemplate");function xJ(a,o){return a.evaluateWithChecksum(async({checksumId:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);return window.checksum.testGenerator.scrollElementIntoViewByChecksumId(l)},{checksumId:o,errorMessage:Li})}u(xJ,"scrollElementIntoViewByChecksumId");function RJ(a,o){return a.evaluateWithChecksum(async({rrwebId:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);return window.checksum.testGenerator.scrollElementIntoViewByRrwebId(l)},{rrwebId:o,errorMessage:Li})}u(RJ,"scrollElementIntoViewByRrwebId");function DJ(a,o){return a.evaluateWithChecksum(async({rrwebId:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);return window.checksum.testGenerator.generateLocatorByRrwebId(l)},{rrwebId:o,errorMessage:Li})}u(DJ,"generateLocatorByRrwebId");function NJ(a){return a.evaluateWithChecksum(async o=>{if(!window.checksum)throw new Error(o);return window.checksum.testGenerator.extractViewportHTML()},Li)}u(NJ,"getViewportHTML");function QJ(a,o,l,s){return a.evaluateWithChecksum(async({rrwebId:i,direction:f,length:g,errorMessage:p})=>{if(!window.checksum)throw new Error(p);return window.checksum.testGenerator.scrollScrollableElement(i,f,g)},{rrwebId:o,direction:l,length:s,errorMessage:Li})}u(QJ,"scrollScrollableElement");var rUe=require("@playwright/test"),aUe=require("@playwright/test");var Z3e=V(_G());function LG(a,o){let l=Math.max([...a].length,[...o].length);return l===0?1:1-Sye(a,o)/l}u(LG,"levenshteinSimilarity");function Sye(a,o){if(a===o)return 0;let l=[...a],s=[...o];if(l.length===0||s.length===0)return Math.max(l.length,s.length);let i=s.map((g,p)=>p+1),f=s.length;for(let[g,p]of l.entries()){let h=g,n=g+1,r=[];for(let[e,t]of i.entries()){let c=p===s[e]?0:1;n=Math.min(t+1,n+1,h+c),r.push(n),h=t}i=r,f=n}return f}u(Sye,"levenshteinDistance");var KS=class{constructor(o){this.data=o;this.toJSON=u(()=>this.data,"toJSON")}static{u(this,"SimilarityRecord")}getSimilar(o){let l=null,s=-1/0;for(let[i,f]of Object.entries(this.data)){let g=LG(o,i);g>s&&(s=g,l=f)}return l}},vA=class a extends KS{static{u(this,"RectangleIndex")}constructor(o){super(a.preprocessRectangles(o))}static{this.preprocessRectangles=u(o=>{let l=[...new Map([...o].map(i=>[JSON.stringify(i.vertices),i])).values()],s={};return l.forEach(i=>{let f=s[i.text]??[];f.push(i),f.sort((g,p)=>{let h=a.calculateArea(g.vertices),n=a.calculateArea(p.vertices);return h-n}),s[i.text]=f}),s},"preprocessRectangles")}static{this.calculateArea=u(o=>{let[l,s,,i]=o;if(!l||!s||!i)return 0;let f=Math.abs(s.x-l.x),g=Math.abs(i.y-l.y);return f*g},"calculateArea")}getRectangleByTextAndSizeRanking(o,l){let s=!l||!Number(l)?0:Number(l),i=this.getSimilar(o);if(!i||i.length===0)return null;let f=Math.min(Math.max(s,0),i.length-1);return i[f]??null}};var bA=class{constructor(){this.config={}}static{u(this,"PageInteractorAPI")}};var FG=require("path"),MG=require("fs");async function ZS(a,o){if(!a.pageInteractorAPI)throw new Error("pageInteractorAPI is not defined");return new vA(await a.pageInteractorAPI.getTextDetection(o))}u(ZS,"getTextDetection");async function UG(a,o,l){try{if(!await o.evaluate(g=>g.tagName.toLowerCase()==="canvas"))throw new Error("Click attempted on a non-canvas element");let f=(await ZS(a,await o.screenshot())).getRectangleByTextAndSizeRanking(l.canvasText,l.rectSizeIndex);if(!f)throw new Error(`Canvas click target not found for ${l.canvasText}`);a.logger.log(`Canvas click target: ${f}`),await a.actionGuardReturn(o.click({position:f.center}),"Canvas click could not be performed")}catch(s){throw a.logger.logError("Canvas click:",s.message),new Error("Canvas click action failed")}}u(UG,"canvasClick");function jG(a,o=!0,l=1e4){return new Promise(s=>{let f=0,g=u(()=>{if(a.activeDialog){let p=a.activeDialog;o&&(a.activeDialog=null),s(p)}else f>=l?s(null):(f+=1e3,setTimeout(g,1e3))},"checkDialog");g()})}u(jG,"waitForDialog");async function HG(a,o,l){if(!await o.evaluate(i=>i.tagName==="INPUT"&&i.getAttribute("type")==="file"))throw new Error("File upload action performed on non-file input element");let s=(l.files??[]).map(i=>(0,FG.join)(a.options.testAssetsDir,i)).filter(i=>(0,MG.existsSync)(i)?!0:(a.logger.log(`Upload file not found: ${i}. Filtering out.`),!1));if(!s.length)throw new Error("No files to upload");await a.actionGuardReturn(o.setInputFiles(s),"Set input files timeout")}u(HG,"performFileUploadAction");var pUe=require("@playwright/test"),gUe=require("@playwright/test");var kye="checksum is not defined";function Tye(a){if(a.fileChooser){let o=a.fileChooser;return a.fileChooser=void 0,o}return null}u(Tye,"getOpenedFileChooser");async function WG(a,o=[]){let l=Tye(a);if(!l)return{};let s="fc_"+Math.random().toString(36).slice(2,4);return await a.evaluateWithChecksum(async([i,f,g])=>{if(!window.checksum)throw new Error(g);window.checksum.testGenerator.addForceIncludeElement(f,i)},[s,l.element(),kye]),{interruptionEvent:"fileUploadOpenedEvent",payload:{checksumid:s,customFiles:o}}}u(WG,"handleFileChooserEvent");async function JG(a,o,l){let s=o.querySelector(`[checksum-get-more-items='${l}']`);if(!s)throw new Error("Get more items root not found");let{items:i,hasMoreItems:f}=await a.getMoreItemsForTemplate(l);s.innerHTML=s.innerHTML+i,f||s.removeAttribute("checksum-get-more-items")}u(JG,"addMoreItemsToDom");async function Pye(a,o){let l=et(o),s=a.getLastActionForPage(l);return{id:l,url:o.url(),title:await o.title(),new:a.newPagesIds.includes(l),active:l===et(a.getPage()),...s?{lastAction:s}:{}}}u(Pye,"getPageInfo");async function GG(a){let o=a.getPage(),l=await Promise.all(o.context().pages().map(i=>Pye(a,i))),s=a.getTimeMachine()?.getPage();return s&&s!==o&&(l=l.filter(i=>i.id!==et(s))),a.newPagesIds=[],l}u(GG,"getTabsInfo");var IUe=require("@playwright/test");async function qG(a,o,l){let s=a.getPage();a.loginFunction&&(await Promise.all([s.context().clearCookies(),s.evaluate(()=>localStorage.clear())]),await a.loginFunction(l??s,{...o!==void 0&&{role:o}}))}u(qG,"reauthenticate");function VG(a){return a.map(o=>{if(o.fileName)return o.fileName;switch(o.mimeType){case"image/png":return"image_200x200.png";case"image/jpeg":return"image_200x200.jpg";case"application/pdf":return"document.pdf";case"text/csv":return"data.csv";default:return"file.txt"}})}u(VG,"mapFileMIMETypeToFilename");function zG(a,o=!0){let l=a.fillValue;if(!l){let s=a.selector?.match(/(?<=value.*)('|").*/);s&&(l=s[0].slice(1,-1))}return typeof l!="string"&&(l="X"),o&&(a.fillValue=l),l}u(zG,"getActionFillValue");function YG(a,o){let l=o??a.options.actionTimeout;return l!==void 0?{timeout:l}:{}}u(YG,"actionTimeoutOption");function $G(a,o){let l=o??a.options.navigationTimeout;return l!==void 0?{timeout:l}:{}}u($G,"navigationTimeoutOption");function KG(a,o,l,{isNavigation:s=!1,timeout:i}={}){return Re(o,i??(s?a.options.navigationTimeout:a.options.actionTimeout),l)}u(KG,"actionGuardReturn");function ZG(a,o,l=[]){return wE(a.getFrame(),o??"",l)}u(ZG,"makeLocator");function XG(host,locator){return eval("host.getFrame()."+locator)}u(XG,"makeLocatorFromLocator");async function eq(a,o){let l=await a.getPage().screenshot({type:"jpeg",scale:"css",timeout:5e3,...o});return{base64:`data:image/jpeg;base64,${l.toString("base64")}`,buffer:l}}u(eq,"takeScreenshot");function tq(a){return a.getFrame().url()}u(tq,"getCurrentURL");var MUe=require("@playwright/test");var mA=class a{constructor(o){this.activeDialog=null;this.newPagesIds=[];this.listeners={dialog:null,filechooser:null,page:null};this.listenToContextPage=u(()=>{this.listeners.page=async o=>{this.newPagesIds.push(o._guid)},this.getPage().context().on("page",this.listeners.page)},"listenToContextPage");this.listenToFileChooser=u(()=>{this.listeners.filechooser=async o=>{this.logger.log("File chooser event detected"),this.fileChooser=o},this.getPage().on("filechooser",this.listeners.filechooser)},"listenToFileChooser");this.evaluateWithChecksum=o.evaluateWithChecksum,this.getFrame=o.getFrame,this.getTimeMachine=o.getTimeMachine,this.logger=o.logger,this.options=o.options,this.pageInteractorAPI=o.pageInteractorAPI,this.loginFunction=o.loginFunction}static{u(this,"TestGenerationPageInteractorBase")}static{this.lastActions=new Map}static setLastAction(o,l){a.lastActions.set(o,l)}static getLastAction(o){return a.lastActions.get(o)}getPage(){return this.getFrame().page()}init(){this.listenToContextPage(),this.options.listenToFileChooser!==!1&&this.listenToFileChooser(),this.options.listenToDialog&&this.listenToDialog()}listenToDialog(){this.listeners.dialog=async o=>{this.activeDialog=o},this.getPage().on("dialog",this.listeners.dialog)}removeListener(o){try{switch(o){case"dialog":this.listeners.dialog&&(this.getPage().removeListener(o,this.listeners.dialog),this.listeners.dialog=null);break;case"filechooser":this.listeners.filechooser&&(this.getPage().off(o,this.listeners.filechooser),this.listeners.filechooser=null);break;case"page":this.listeners.page&&(this.getPage().context().off(o,this.listeners.page),this.listeners.page=null);break}}catch(l){this.logger.logError(`Error removing listener: ${o}`,l)}}getLastActionForPage(o){return a.getLastAction(o)}};var xye="checksum is not defined",ed=class extends mA{constructor(){super(...arguments);this.waitForDialog=u((l=!0,s=1e4)=>jG(this,l,s),"waitForDialog");this.performFileUploadAction=u(async(l,s)=>HG(this,l,s),"performFileUploadAction");this.getSelectionDataForAction=u(async(l,s)=>l.checksumid?this.getSelectionDataForChecksumId(l.checksumid,s):l.position?await this.evaluateWithChecksum(async([f,g,p])=>{if(!window.checksum)throw new Error(p);return window.checksum.testGenerator.getSelectorByPosition(f,g)},[l.position.x,l.position.y,xye])??{selector:"",locator:""}:l.selector?{selector:l.selector,locator:`locator("${l.selector}")`}:{selector:"",locator:""},"getSelectionDataForAction")}static{u(this,"TestGenerationPageInteractor")}reauthenticate(l,s){return qG(this,l,s)}mapFileMIMETypeToFilename(l){return VG(l)}getActionFillValue(l,s=!0){return zG(l,s)}actionTimeoutOption(l){return YG(this,l)}navigationTimeoutOption(l){return $G(this,l)}actionGuardReturn(l,s,i={}){return KG(this,l,s,i)}makeLocator(l,s=[]){return ZG(this,l,s)}makeLocatorFromLocator(l){return XG(this,l)}takeScreenshot(l){return eq(this,l)}getCurrentURL(){return tq(this)}async handleFileChooserEvent(l=[]){return WG(this,l)}async addMoreItemsToDom(l,s){return JG(this,l,s)}async getTabsInfo(){return GG(this)}async translateActionResponseToAgentPotentialAction(l,s=void 0,i={}){return rL(this,l,s,i)}async performAction(l,s={}){return tL(this,l,s)}getTextDetection(l){return ZS(this,l)}canvasClick(l,s){return UG(this,l,s)}async getCurrentReducedHTML({retriesLeft:l=3,retryWaitMS:s=2e3,initialChecksumId:i="0",extractESRAForInterpretationRequiredElements:f=!1,stopFlashingElementsDetection:g=!1,assignChecksumIdsToAllElements:p}={}){try{return await nL(this,{initialChecksumId:i,extractESRAForInterpretationRequiredElements:f,stopFlashingElementsDetection:g,assignChecksumIdsToAllElements:p})}catch(h){if(l>0)return this.logger.logError(`[getCurrentReducedHTML] Error: ${h.message}`),this.logger.logError(`Failed do obtain reduced HTML, trying again in ${s/1e3} seconds, ${l-1} to go.`),await Xe(s),this.getCurrentReducedHTML({retriesLeft:l-1,retryWaitMS:s});throw h}}getActionEventCode(l){return M_[l]}getSelectionDataForChecksumId(l,s){return TJ(this,l,s)}getESRAForSelector(l,s){return PJ(this,l,s)}getMoreItemsForTemplate(l){return BJ(this,l)}scrollElementIntoViewByChecksumId(l){return xJ(this,l)}scrollElementIntoViewByRrwebId(l){return RJ(this,l)}generateLocatorByRrwebId(l){return DJ(this,l)}getViewportHTML(){return NJ(this)}scrollScrollableElement(l,s,i){return QJ(this,l,s,i)}};var Oet=require("@playwright/test"),$t=require("fs");var nq=require("module");var Rye=(0,nq.createRequire)("/"),Jl,Dye,Nye;try{Jl=Rye("worker_threads"),Dye=Jl.Worker,Nye=Jl.isMarkedAsUntransferable}catch{}var Mn=Uint8Array,Wl=Uint16Array,Qye=Int32Array,oq=new Mn([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),iq=new Mn([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),_ye=new Mn([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),rq=u(function(a,o){for(var l=new Wl(31),s=0;s<31;++s)l[s]=o+=1<<a[s-1];for(var i=new Qye(l[30]),s=1;s<30;++s)for(var f=l[s];f<l[s+1];++f)i[f]=f-l[s]<<5|s;return{b:l,r:i}},"freb"),Jl=rq(oq,2),aq=Jl.b,Lye=Jl.r;aq[28]=258,Lye[258]=28;var cq=rq(iq,0),Fye=cq.b,ije=cq.r,n1=new Wl(32768);for(Te=0;Te<32768;++Te)Fi=(Te&43690)>>1|(Te&21845)<<1,Fi=(Fi&52428)>>2|(Fi&13107)<<2,Fi=(Fi&61680)>>4|(Fi&3855)<<4,n1[Te]=((Fi&65280)>>8|(Fi&255)<<8)>>1;var Fi,Te,td=u((function(a,o,l){for(var s=a.length,i=0,f=new Wl(o);i<s;++i)a[i]&&++f[a[i]-1];var g=new Wl(o);for(i=1;i<o;++i)g[i]=g[i-1]+f[i-1]<<1;var p;if(l){p=new Wl(1<<o);var h=15-o;for(i=0;i<s;++i)if(a[i])for(var n=i<<4|a[i],r=o-a[i],e=g[a[i]-1]++<<r,t=e|(1<<r)-1;e<=t;++e)p[n1[e]>>h]=n}else for(p=new Wl(s),i=0;i<s;++i)a[i]&&(p[i]=n1[g[a[i]-1]++]>>15-a[i]);return p}),"hMap"),nd=new Mn(288);for(Te=0;Te<144;++Te)nd[Te]=8;var Te;for(Te=144;Te<256;++Te)nd[Te]=9;var Te;for(Te=256;Te<280;++Te)nd[Te]=7;var Te;for(Te=280;Te<288;++Te)nd[Te]=8;var Te,lq=new Mn(32);for(Te=0;Te<32;++Te)lq[Te]=5;var Te;var Mye=td(nd,9,1);var Uye=td(lq,5,1),XS=u(function(a){for(var o=a[0],l=1;l<a.length;++l)a[l]>o&&(o=a[l]);return o},"max"),Lo=u(function(a,o,l){var s=o/8|0;return(a[s]|a[s+1]<<8)>>(o&7)&l},"bits"),e1=u(function(a,o){var l=o/8|0;return(a[l]|a[l+1]<<8|a[l+2]<<16)>>(o&7)},"bits16"),jye=u(function(a){return(a+7)/8|0},"shft"),i1=u(function(a,o,l){return(o==null||o<0)&&(o=0),(l==null||l>a.length)&&(l=a.length),new Mn(a.subarray(o,l))},"slc");var Hye=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Fn=u(function(a,o,l){var s=new Error(o||Hye[a]);if(s.code=a,Error.captureStackTrace&&Error.captureStackTrace(s,Fn),!l)throw s;return s},"err"),Wye=u(function(a,o,l,s){var i=a.length,f=s?s.length:0;if(!i||o.f&&!o.l)return l||new Mn(0);var g=!l,p=g||o.i!=2,h=o.i;g&&(l=new Mn(i*3));var n=u(function(C_){var w_=l.length;if(C_>w_){var S_=new Mn(Math.max(w_*2,C_));S_.set(l),l=S_}},"cbuf"),r=o.f||0,e=o.p||0,t=o.b||0,c=o.l,d=o.d,A=o.m,y=o.n,v=i*8;do{if(!c){r=Lo(a,e,1);var m=Lo(a,e+1,3);if(e+=3,m)if(m==1)c=Mye,d=Uye,A=9,y=5;else if(m==2){var B=Lo(a,e,31)+257,R=Lo(a,e+10,15)+4,N=B+Lo(a,e+5,31)+1;e+=14;for(var D=new Mn(N),M=new Mn(19),S=0;S<R;++S)M[_ye[S]]=Lo(a,e+S*3,7);e+=R*3;for(var ee=XS(M),P=(1<<ee)-1,I=td(M,ee,1),S=0;S<N;){var _=I[Lo(a,e,P)];e+=_&15;var b=_>>4;if(b<16)D[S++]=b;else{var j=0,ce=0;for(b==16?(ce=3+Lo(a,e,3),e+=2,j=D[S-1]):b==17?(ce=3+Lo(a,e,7),e+=3):b==18&&(ce=11+Lo(a,e,127),e+=7);ce--;)D[S++]=j}}var le=D.subarray(0,B),he=D.subarray(B);A=XS(le),y=XS(he),c=td(le,A,1),d=td(he,y,1)}else Fn(1);else{var b=jye(e)+4,O=a[b-4]|a[b-3]<<8,w=b+O;if(w>i){h&&Fn(0);break}p&&n(t+O),l.set(a.subarray(b,w),t),o.b=t+=O,o.p=e=w*8,o.f=r;continue}if(e>v){h&&Fn(0);break}}p&&n(t+131072);for(var ht=(1<<A)-1,Ot=(1<<y)-1,_e=e;;_e=e){var j=c[e1(a,e)&ht],we=j>>4;if(e+=j&15,e>v){h&&Fn(0);break}if(j||Fn(2),we<256)l[t++]=we;else if(we==256){_e=e,c=null;break}else{var Se=we-254;if(we>264){var S=we-257,Ie=oq[S];Se=Lo(a,e,(1<<Ie)-1)+aq[S],e+=Ie}var We=d[e1(a,e)&Ot],Tn=We>>4;We||Fn(3),e+=We&15;var he=Fye[Tn];if(Tn>3){var Ie=iq[Tn];he+=e1(a,e)&(1<<Ie)-1,e+=Ie}if(e>v){h&&Fn(0);break}p&&n(t+131072);var Zp=t+Se;if(t<he){var O_=f-he,aX=Math.min(he,Zp);for(O_+t<0&&Fn(3);t<aX;++t)l[t]=s[O_+t]}for(;t<Zp;++t)l[t]=l[t-he]}}o.l=c,o.p=_e,o.b=t,o.f=r,c&&(r=1,o.m=A,o.d=d,o.n=y)}while(!r);return t!=l.length&&g?i1(l,0,t):l.subarray(0,t)},"inflt");var Jye=new Mn(0);var fi=u(function(a,o){return a[o]|a[o+1]<<8},"b2"),co=u(function(a,o){return(a[o]|a[o+1]<<8|a[o+2]<<16|a[o+3]<<24)>>>0},"b4"),t1=u(function(a,o){return co(a,o)+co(a,o+4)*4294967296},"b8");function Gye(a,o){return Wye(a,{i:2},o&&o.out,o&&o.dictionary)}u(Gye,"inflateSync");var o1=typeof TextDecoder<"u"&&new TextDecoder,qye=0;try{o1.decode(Jye,{stream:!0}),qye=1}catch{}var Vye=u(function(a){for(var o="",l=0;;){var s=a[l++],i=(s>127)+(s>223)+(s>239);if(l+i>a.length)return{s:o,r:i1(a,l-1)};i?i==3?(s=((s&15)<<18|(a[l++]&63)<<12|(a[l++]&63)<<6|a[l++]&63)-65536,o+=String.fromCharCode(55296|s>>10,56320|s&1023)):i&1?o+=String.fromCharCode((s&31)<<6|a[l++]&63):o+=String.fromCharCode((s&15)<<12|(a[l++]&63)<<6|a[l++]&63):o+=String.fromCharCode(s)}},"dutf8");function zye(a,o){if(o){for(var l="",s=0;s<a.length;s+=16384)l+=String.fromCharCode.apply(null,a.subarray(s,s+16384));return l}else{if(o1)return o1.decode(a);var i=Vye(a),f=i.s,l=i.r;return l.length&&Fn(8),f}}u(zye,"strFromU8");var Yye=u(function(a,o){return o+30+fi(a,o+26)+fi(a,o+28)},"slzh"),$ye=u(function(a,o,l){var s=fi(a,o+28),i=fi(a,o+30),f=zye(a.subarray(o+46,o+46+s),!(fi(a,o+8)&2048)),g=o+46+s,p=Kye(a,g,i,l,co(a,o+20),co(a,o+24),co(a,o+42)),h=p[0],n=p[1],r=p[2];return[fi(a,o+10),h,n,f,g+i+fi(a,o+32),r]},"zh"),Kye=u(function(a,o,l,s,i,f,g){var p=i==4294967295,h=f==4294967295,n=g==4294967295,r=o+l,e=p+h+n;if(s&&e){for(;o+4<r;o+=4+fi(a,o+2))if(fi(a,o)==1)return[p?t1(a,o+4+8*h):i,h?t1(a,o+4):f,n?t1(a,o+4+8*(h+p)):g,1];s<2&&Fn(13)}return[i,f,g,0]},"z64hs");function uq(a,o){for(var l={},s=a.length-22;co(a,s)!=101010256;--s)(!s||a.length-s>65558)&&Fn(13);var i=fi(a,s+8);if(!i)return{};var f=co(a,s+16),g=co(a,s-20)==117853008;if(g){var p=co(a,s-12);g=co(a,p)==101075792,g&&(i=co(a,p+32),f=co(a,p+48))}for(var h=o&&o.filter,n=0;n<i;++n){var r=$ye(a,f,g),e=r[0],t=r[1],c=r[2],d=r[3],A=r[4],y=r[5],v=Yye(a,y);f=A,(!h||h({name:d,size:t,originalSize:c,compression:e}))&&(e?e==8?l[d]=Gye(a.subarray(v,v+t),{out:new Mn(c)}):Fn(14,"unknown compression type "+e):l[d]=i1(a,v,v+t))}return l}u(uq,"unzipSync");var Eo=V(require("path"));var od=class extends Error{static{u(this,"ExpectError")}constructor(o){super("Fallback Exception Wrapper"),this.fallbackResult=o}};var fje=require("@playwright/test");var kVe=require("@playwright/test");var qje=require("@playwright/test");async function sq(a){await a.body?.cancel().catch(()=>{})}u(sq,"drainBody");var Zye="http://127.0.0.1";async function r1(a,o){let l=o.fetchImpl??globalThis.fetch;try{let s=await l(`${Zye}:${o.port}/`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a),signal:AbortSignal.timeout(o.timeoutMs)});return await sq(s),s.ok?!0:(o.onError?.(new Error(`monitor rejected message with status ${s.status}`)),!1)}catch(s){return o.onError?.(s),!1}}u(r1,"postToMonitor");async function a1(a,o){return await r1(a,o)?!0:o.attempts<=1?!1:(await Xye(o.retryDelayMs),a1(a,{...o,attempts:o.attempts-1}))}u(a1,"postToMonitorWithRetry");function Xye(a){return new Promise(o=>{setTimeout(o,a)})}u(Xye,"sleep");var EA={uploadTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_TIMEOUT_MS",fallback:6e5,min:5e3,max:36e5},noProgressAbortMs:{env:"CHECKSUM_RUNTIME_UPLOAD_NO_PROGRESS_MS",fallback:6e4,min:5e3,max:6e5},assetDeadlineMs:{env:"CHECKSUM_RUNTIME_UPLOAD_ASSET_DEADLINE_MS",fallback:12e5,min:3e4,max:54e5},maxAttempts:{env:"CHECKSUM_RUNTIME_UPLOAD_MAX_ATTEMPTS",fallback:6,min:1,max:20},stallTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_STALL_TIMEOUT_MS",fallback:6e5,min:3e4,max:36e5},minProgressBytes:{env:"CHECKSUM_RUNTIME_UPLOAD_MIN_PROGRESS_BYTES",fallback:65536,min:1,max:67108864},finalizeBudgetMs:{env:"CHECKSUM_RUNTIME_UPLOAD_FINALIZE_BUDGET_MS",fallback:18e5,min:6e4,max:54e5},finalizeCeilingMs:{env:"CHECKSUM_RUNTIME_UPLOAD_FINALIZE_CEILING_MS",fallback:24e5,min:12e4,max:72e5},cliHardCapMs:{env:"CHECKSUM_RUNTIME_UPLOAD_CLI_HARD_CAP_MS",fallback:27e5,min:12e4,max:72e5},watchTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_WATCH_TIMEOUT_MS",fallback:12e4,min:5e3,max:18e5},ipcTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_IPC_TIMEOUT_MS",fallback:5e3,min:500,max:6e4},onEndFlushTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_ONEND_FLUSH_TIMEOUT_MS",fallback:5e3,min:500,max:6e4},resumableChunkBytes:{env:"CHECKSUM_RUNTIME_UPLOAD_RESUMABLE_CHUNK_BYTES",fallback:8388608,min:262144,max:268435456},connectTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_CONNECT_TIMEOUT_MS",fallback:1e4,min:1e3,max:6e4},headersTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_HEADERS_TIMEOUT_MS",fallback:3e5,min:5e3,max:18e5},bodyTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_BODY_TIMEOUT_MS",fallback:3e5,min:5e3,max:18e5},maxConcurrentUploads:{env:"CHECKSUM_RUNTIME_UPLOAD_MAX_CONCURRENT",fallback:15,min:1,max:64}};function eve(a,o,l,s){if(a===void 0||a.trim()==="")return o;let i=Number(a);return Number.isInteger(i)?Math.min(s,Math.max(l,i)):o}u(eve,"clampEnvInt");var tve=[["cliHardCapMs",["finalizeCeilingMs"],.9],["finalizeCeilingMs",["finalizeBudgetMs"],1],["finalizeBudgetMs",["stallTimeoutMs","assetDeadlineMs","watchTimeoutMs"],1],["assetDeadlineMs",["uploadTimeoutMs"],1],["uploadTimeoutMs",["noProgressAbortMs"],.5]];function nve(a){let o={...a},l=[];for(let[s,i,f]of tve)for(let g of i){let p=Math.floor(o[s]*f);o[g]>p&&(l.push(`${EA[g].env} (${o[g]}ms) exceeds its bound under ${EA[s].env} (${o[s]}ms); using ${p}ms`),o[g]=p)}return{tunables:o,warnings:l}}u(nve,"coerceScopeHierarchy");function ove(a){let o={};for(let l of Object.keys(EA)){let s=EA[l];o[l]=eve(a[s.env],s.fallback,s.min,s.max)}return o.resumableChunkBytes=Math.max(1,Math.floor(o.resumableChunkBytes/262144))*262144,nve(o)}u(ove,"resolveUploadTunablesDetailed");function id(a){return ove(a).tunables}u(id,"resolveUploadTunables");var Pje=id({});var IA=u(a=>{if(a.error!=null)return"ERROR";let o=a.status_code;if(typeof o=="number"&&o>=500)return"ERROR";let l=a.exit_code;return typeof l=="number"&&l!==0?"ERROR":"INFO"},"severityFor");var c1=require("fs");var fq="\x1B[31m",ive="\x1B[33m",rve="\x1B[32m",ave="\x1B[36m",cve="\x1B[2m",lve="\x1B[1m",rd="\x1B[0m",uve=u(()=>{let a=process.env.WIDE_EVENT_PRETTY;return a==="true"||a==="1"?!0:a==="false"||a==="0"?!1:process.stdout.isTTY?!0:process.env.APP_ENV==="local"},"shouldPretty"),sve=new Set(["severity","message","kind","timestamp","_startedAtMs"]),fve=u(a=>{let o=new WeakSet;return JSON.stringify(a,(l,s)=>{if(typeof s=="bigint")return s.toString();if(typeof s=="object"&&s!==null){if(o.has(s))return"[Circular]";o.add(s)}return s})},"safeStringify"),dve=u(a=>a==="ERROR"||a==="CRITICAL"?fq:a==="WARNING"?ive:rve,"colorForSeverity"),pve=u(a=>{let o=String(a.severity??"INFO"),l=`${dve(o)}${o.padEnd(5)}${rd}`,s=a.kind?`${ave}${a.kind}${rd}`:"",i=String(a.message??""),f=a.error&&typeof a.error=="object"?(()=>{let r=a.error;return` ${fq}${r.type??"Error"}: ${r.message??""}${rd}`})():"",g=["outcome","test_suite_run_id","status"],p=Object.entries(a).filter(([r,e])=>!sve.has(r)&&e!=null&&r!=="error"&&typeof e!="object"),h=u(r=>{let e=g.indexOf(r);return e===-1?g.length:e},"rank"),n=p.sort(([r],[e])=>h(r)-h(e)).slice(0,8).map(([r,e])=>`${cve}${r}=${rd}${e}`).join(" ");return[l,lve+s+rd,i,n,f].filter(r=>r&&r.trim()!=="").join(" ")},"formatPretty"),gve=u(a=>{let o=a.trace_id;if(typeof o!="string"||o==="")return a;let l=process.env.GCP_PROJECT_ID||process.env.GOOGLE_CLOUD_PROJECT;return l?{...a,"logging.googleapis.com/trace":`projects/${l}/traces/${o}`}:a},"withGcpTraceField"),Gl=u(a=>{let o=uve()?pve(a):fve(gve(a));(0,c1.writeSync)(1,o+`
150
150
  `)},"emitEvent");var OA=u(a=>{(0,c1.writeSync)(2,a.endsWith(`
151
151
  `)?a:`${a}
152
152
  `)},"writeStderrLine");var hve=u(a=>{let o=a.kind??"event",l=a.outcome?` ${a.outcome}`:"",s=typeof a.duration_ms=="number"?` ${a.duration_ms}ms`:"";return`${o}${l}${s}`.trim()},"defaultMessage"),Ave=u((a,o,l)=>{let s=Date.now(),i={timestamp:new Date().toISOString(),kind:a,...o},f=!1,g={set(p){return Object.assign(i,p),g},emit(p){f||(f=!0,p&&Object.assign(i,p),i.duration_ms===void 0&&(i.duration_ms=Date.now()-s),l(i))}};return g},"startHandle"),yve=u((a={})=>{let o=a.decide??(()=>!0),l=a.deriveMessage??hve,s=a.label??"[wide-event]",i=a.sink??(p=>Gl(p)),f=u(p=>{if(!o(p))return;let h={severity:IA(p),message:p.message??l(p),...p};try{i(h)}catch(n){try{OA(`${s} emit failed: ${String(n)}`)}catch{}}},"emit");return{emit:f,emitWideEvent:u((p,h={})=>{f({timestamp:new Date().toISOString(),kind:p,...h})},"emitWideEvent"),wideEvent:u((p,h={})=>Ave(p,h,f),"wideEvent"),configureSink:u(p=>{i=p},"configureSink")}},"createWideEvents"),dq=u(a=>a==="true"||a==="1","truthy"),CA=u(()=>dq(process.env.CHECKSUM_WIDE_EVENTS)||dq(process.env.WIDE_EVENT_PRETTY),"wideEventsEnabled"),l1=yve({decide:u(()=>CA(),"decide")}),vve=l1.configureSink,Mi=u((a,o={})=>l1.wideEvent(a,o),"wideEvent"),_r=u((a,o={})=>{l1.emitWideEvent(a,o)},"emitWideEvent"),di=u(a=>a instanceof Error?{type:a.name,message:a.message}:{type:"UnknownError",message:String(a)},"toErrorField");var bve=4,pq=3,mve=500,u1=class a{constructor(o){this.workerInfo=o;this.hasMonitor=!1;a.monitorAgentPort?this.hasMonitor=!0:q("CHECKSUM_UPLOAD_AGENT_PORT is not defined"),this.sendPlaywrightConfig()}static{u(this,"TestRunMonitorBridge")}static{this.monitorAgentHost="http://localhost"}static{this.monitorAgentPort=process.env.CHECKSUM_UPLOAD_AGENT_PORT}static{this.playwrightConfigSent=!1}static{this.tunables=id(process.env)}addAsset(o){this.signalUpload(o,["trace","har","rrweb-recording"].includes(o.type))}addChecksumTestMetadata(o){let l={type:"checksumTestMetadata",payload:o};this.sendMessage(l)}addTestInfo(o,l,s=!1){this.sendMessage({type:"testInfo",payload:{checksumTestId:o,pwTestId:l,usingChecksumTestIdPlaceholder:s}})}addSingleTestStats(o,l){this.sendMessage({type:"testStats",payload:{passed:o,healed:l}})}sendPlaywrightConfig(){if(a.playwrightConfigSent)return;let o=this.buildPlaywrightConfig();this.sendMessage({type:"playwrightConfig",payload:o}),a.playwrightConfigSent=!0}buildPlaywrightConfig(){let{use:o,testDir:l,testMatch:s,testIgnore:i,timeout:f,outputDir:g,retries:p}=this.workerInfo.project,{reporter:h,configFile:n,projects:r}=this.workerInfo.config,e=Object.keys(r).filter(t=>[o,l,s,i,f,g,p].includes(t)).reduce((t,c)=>({...t,[c]:r[Number(c)]}),{});return{reporter:h,...n!==void 0?{configFile:n}:{},filteredProjects:e,use:o,testDir:l,testMatch:s,testIgnore:i,timeout:f,outputDir:g,retries:p}}sendMessage(o){return this.hasMonitor&&a.monitorAgentPort?r1(o,{port:a.monitorAgentPort,timeoutMs:a.tunables.ipcTimeoutMs,onError:u(l=>q("Failed to send message to test run monitor",o,l),"onError")}):void 0}async signalUpload(o,l=!1){let s=a.monitorAgentPort;if(!this.hasMonitor||!s)return;let i={type:"asset",payload:o,watch:l},f;await a1(i,{port:s,timeoutMs:a.tunables.ipcTimeoutMs*bve,attempts:pq,retryDelayMs:mve,onError:u(p=>{f=p,q("Failed to register asset with test run monitor",i,p)},"onError")})||_r("asset_registration_failed",{test_suite_run_id:process.env.CHECKSUM_TEST_SUITE_ID,outcome:"error",asset_type:o.type,asset_path:o.path,attempts:pq,error:di(f)})}};var Eve=u(()=>{let o=(new Error().stack??"").split(`
153
153
  `).find(s=>s.includes(".checksum.spec.ts"));if(!o)return;let l=o.split(":");return{lineNumber:parseInt(l[1]??""),columnNumber:parseInt(l[2]??"")}},"findCodeLocationFromStackTrace"),ad=class{constructor(){this.store={};this.activeVariablesSet=new Set;return new Proxy(this,this)}static{u(this,"VariableStore")}clearAll(){for(let o in this.store)Object.prototype.hasOwnProperty.call(this.store,o)&&delete this.store[o];this.activeVariablesSet.clear()}getActiveVariables(){return Array.from(this.activeVariablesSet).map(o=>this.store[o]).filter(o=>o!==void 0)}setVariable(o,l){this.store[o]={name:o,value:l,type:l instanceof Function?"RandomValueGenerator":"FillValue"}}set(o,l,s){if(typeof l!="string")return!1;let i=Eve();return o.store[l]={name:l,value:s,type:s instanceof Function?"RandomValueGenerator":"FillValue",...i,line:""},!0}get(o,l){if(l in o)return Reflect.get(o,l);if(!(l in o.store))throw new Error(`Variable ${l} is not defined`);return o.activeVariablesSet.add(l),o.store[l]?.value}};var Ui=V(require("path")),d1=require("fs");var s1=require("path"),wA=require("fs");function Ive(a,o,l=10){let s=a;for(let i=0;i<l;i++){let f=(0,s1.join)(s,"package.json");if((0,wA.existsSync)(f))try{if(JSON.parse((0,wA.readFileSync)(f,"utf8")).name===o)return s}catch{}s=(0,s1.join)(s,"..")}}u(Ive,"findRepositoryRoot");function gq(a,o=10){return Ive(a,"checksum-customer-engineering-workspace",o)}u(gq,"findCustomerEngineeringRoot");var p1=V(OE());var Pt=u((a,o)=>{if(a==null||a==="")return o?.default??!1;let l=a.toLowerCase().trim();return l==="true"?!0:l==="false"?!1:o?.default??!1},"parseBoolean");function hq(a){if(a===void 0||a.trim()==="")return 5e7;let o=Number(a);return!Number.isInteger(o)||o<0?5e7:o}u(hq,"resolveMaxRRwebBytes");function Aq(a,o){return o>0&&a>o}u(Aq,"isRRwebOverCap");function yq(a){return a.recordRRwebEventsToFile&&!!a.hostReports&&!a.disableRrwebRecording&&!a.disableTimeMachine}u(yq,"shouldRecordRRwebEvents");var Ove=__dirname,vq=Ui.join(__dirname,".."),mq=(0,d1.existsSync)(vq)?vq:Ove;(0,p1.config)({path:Ui.resolve(mq,".env")});var bq=Pt(process.env.CHECKSUM_RUNTIME_DEV_MODE);function Cve(){let a=__dirname;for(;!(0,d1.existsSync)(Ui.join(a,"package.json"));)a=Ui.join(a,"..");return a}u(Cve,"findRoot");var cd=Cve(),wve=gq(cd,10);(0,p1.config)({path:[mq,wve].filter(a=>!!a).map(a=>Ui.resolve(a,".env")),override:!1});var f1=Pt(process.env.CHECKSUM_RUNTIME_REPO_MODE),Sve=f1?Ui.join(cd,"package","pw-report-template.html"):Ui.join(cd,"pw-report-template.html"),kve=Pt(process.env.CHECKSUM_DEBUG_ANALYTICS),Tve=Pt(process.env.CHECKSUM_LOG_ANALYTICS_TO_CONSOLE),Pve=hq(process.env.CHECKSUM_RUNTIME_RRWEB_MAX_BYTES),te={isDevMode:bq,isRepoMode:f1,CI:!!process.env.CI,checksumRootFolderBypass:f1&&process.env.CHECKSUM_RUNTIME_ROOT_FOLDER_BYPASS_FOR_REPO_MODE?process.env.CHECKSUM_RUNTIME_ROOT_FOLDER_BYPASS_FOR_REPO_MODE:process.env.CHECKSUM_RUNTIME_ROOT_FOLDER_BYPASS,logLevel:process.env.CHECKSUM_RUNTIME_LOG_LEVEL??"warnings",checksumScript:{source:process.env.CHECKSUM_RUNTIME_SCRIPT_SOURCE??(bq?"url":"file"),url:process.env.CHECKSUM_RUNTIME_SCRIPT_URL,path:cd+"/checksumlib.js"},runtimeRoot:cd,playwrightReporter:{htmlReportTemplatePath:Sve},bypassProxyForLocalhost:Pt(process.env.CHECKSUM_RUNTIME_BYPASS_PROXY_FOR_LOCALHOST),useCLIDebug:Pt(process.env.CHECKSUM_RUNTIME_USE_CLI_DEBUG),useRemoteDebugging:{enabled:Pt(process.env.CHECKSUM_RUNTIME_USE_REMOTE_DEBUGGING),port:parseInt(process.env.CHECKSUM_AGENT_RUNTIME_REMOTE_DEBUGGING_PORT??"9500")},testRun:{timeMachine:{headless:!Pt(process.env.CHECKSUM_RUNTIME_SHOW_RUNTIME_TIME_MACHINE),recordRRwebEventsToFile:Pt(process.env.CHECKSUM_RUNTIME_RECORD_RRWEB_EVENTS_TO_FILE,{default:!0}),maxRRwebBytes:Pve},monitoring:{debugAnalytics:kve,logToConsole:Tve,segment:{writeKey:process.env.CHECKSUM_RUNTIME_MONITORING_SEGMENT_WRITE_KEY??"TMuP8uorDj4QzJfNs0gEHDO7kHozVBOo",devWriteKey:process.env.CHECKSUM_RUNTIME_MONITORING_SEGMENT_DEV_WRITE_KEY??"gofHHwvdNHJNmb7KqACUmypZclVHEQ2l"}},autoRecovery:{verboseConsoleLog:Pt(process.env.CHECKSUM_RUNTIME_AUTO_RECOVERY_CONSOLE_LOG,{default:!1}),sessionTimeout:18e4},disableAutoRecovery:Pt(process.env.CHECKSUM_RUNTIME_DISABLE_AUTO_RECOVERY),disableHostReports:Pt(process.env.CHECKSUM_RUNTIME_DISABLE_HOST_REPORTS),disableTimeMachine:Pt(process.env.CHECKSUM_RUNTIME_DISABLE_TIME_MACHINE),disableRrwebRecording:Pt(process.env.CHECKSUM_RUNTIME_DISABLE_RRWEB_RECORDING),request:{userEmail:process.env.CHECKSUM_RUNTIME_REQUEST_USER_EMAIL,reason:process.env.CHECKSUM_RUNTIME_REQUEST_REASON},platform:{name:process.env.CHECKSUM_RUNTIME_PLATFORM_NAME,jobURL:process.env.CHECKSUM_RUNTIME_PLATFORM_JOB_URL,jobName:process.env.CHECKSUM_RUNTIME_PLATFORM_JOB_NAME},runType:process.env.CHECKSUM_RUNTIME_RUN_TYPE},buildTime:process.env.CHECKSUM_RUNTIME_BUILD_TIME??"unknown"};var Bve=require("@playwright/test"),xve=require("puppeteer-extra-plugin"),Eq=require("module");var A4e=(0,Eq.createRequire)(__filename);var SA=class a{constructor(o,l,s,i,f){this.traits=o;this.isolatedMode=l;this.debugAnalytics=s;this.shouldLogToConsole=i;this.flushPromise=null;this.client=null;this.initialized=!1;this.config=f??{enabled:!0,debugMode:s,logToConsole:i}}static{u(this,"AbstractAnalytics")}async executeWithPromise(o){return this.flushPromise?this.flushPromise:(this.flushPromise=(async()=>{try{await o()}finally{this.flushPromise=null}})(),this.flushPromise)}static flattenEvent(o){let l=u((s,i=[])=>{if(s==null||typeof s!="object")return{};try{return Object.entries(s).reduce((f,[g,p])=>{let h=[...i,g],n=h.join(".");if(typeof p=="object"&&p!==null&&!Array.isArray(p)){let r=l(p,h);Object.assign(f,r)}else f[n]=p;return f},{})}catch{return{}}},"flattenDeep");return l(o)}get analyticsEnabled(){return this.isolatedMode&&!this.debugAnalytics?!1:this.config.enabled}get metadata(){return{...this.traits}}makeTableName(o){let l=this.debugAnalytics?"dev":"";return l?`${l}_${o}`:o}trackEventWithTable(o,l,s,i){if(i||this.shouldLogToConsole){let f=a.flattenEvent(o);console.log("Analytics event tracked:",{eventType:o.event,tableName:this.makeTableName(s),testSuiteRunId:l.testSuiteRunId,metadata:l,eventData:f,timestamp:new Date().toISOString()})}this.trackEventWithTableImpl(o,l,s,i)}trackEventWithTableImpl(o,l,s,i=!1){!this.analyticsEnabled||!this.config.enabled||(this.initialized||(this.initializeClient(),this.initialized=!0),this.safeExecute(()=>{let g={...a.flattenEvent(o),tableName:this.makeTableName(s),eventType:o.event,...l};this.sendEvent(g,s),(i||this.shouldLogToConsole)&&this.logEvent(o.event,g)},"tracking event"))}flushEvents(){return Promise.resolve()}async close(){!this.analyticsEnabled||!this.config.enabled||!this.initialized||await this.executeWithPromise(async()=>{await this.safeExecuteAsync(async()=>{await this.flushEvents(),this.shouldLogToConsoleEnabled&&console.log(`${this.getProviderName()} analytics session ended successfully`)},"closing analytics session")})}safeExecute(o,l){try{o()}catch(s){this.handleError(s,l)}}async safeExecuteAsync(o,l){try{await o()}catch(s){this.handleError(s,l)}}handleError(o,l){this.shouldLogToConsoleEnabled&&console.error(`Error ${l} in ${this.getProviderName()}:`,o.message)}logEvent(o,l){console.log(`${this.getProviderName()} event tracked: ${o}`,l)}get shouldLogToConsoleEnabled(){return this.shouldLogToConsole}};var bqe=require("@playwright/test");var e$=V(XY());var nv=class extends SA{constructor(l,s){let i={writeKey:te.testRun.monitoring.segment.writeKey,enabled:!!te.testRun.monitoring.segment.writeKey,debugMode:te.testRun.monitoring.debugAnalytics,logToConsole:te.testRun.monitoring.logToConsole};super(l,s,te.testRun.monitoring.debugAnalytics,te.testRun.monitoring.logToConsole,i);this.traits=l}static{u(this,"SegmentRuntimeAnalytics")}initializeClient(){this.client??=new e$.default({writeKey:this.config.writeKey,flushAt:1,flushInterval:1e3})}sendEvent(l,s){this.client&&this.client.track({anonymousId:l.testSuiteRunId,event:l.eventType,properties:l})}async flushEvents(){this.client&&await Re(this.client.flush(),2e4)}getProviderName(){return"Segment"}};var ho=class{static{u(this,"AnalyticsFactory")}static createFromConfig(o={},l=!1){return new nv(o,l)}};var Uo=class a{static{u(this,"TestRunAnalytics")}constructor(o,l,s){this.analytics=ho.createFromConfig(o,l),this.isolatedMode=l,this.testInfo=s}static get maybeInstance(){return a.testRunInstance}static get isolatedMode(){return a.maybeInstance?.isolatedMode||!1}close(){this.analytics.close()}static getTestRunInstance(o,l,s){return a.maybeInstance||(a.testRunInstance=new a(o,l,s)),a.testRunInstance}static getCurrentTestInfo(){return a.maybeInstance?.testInfo}static getCurrentInstance(){return a.maybeInstance}getTestSuiteRunInfo(){return this.analytics.metadata}get tableName(){return"test_runs"}get metadata(){let o=this.testInfo;return{...this.analytics.metadata,checksumTestId:this.analytics.metadata.checksumTestId,filePath:o?.titlePath[0]||"unknown",retry:o?.retry||0,project:o?.project.name||"unknown",playwrightTestId:o?.testId||"unknown"}}event(o){this.analytics.trackEventWithTable(o,this.metadata,this.tableName)}testRunStart(){this.event({event:"Test Run Start",metadata:this.metadata})}testRunError(o){this.event({event:"Test Run Error",metadata:this.metadata,...o})}compoundSelectionFailure(o){this.event({event:"Compound Selection Failure",metadata:this.metadata,...o})}testRunEnd(o){this.event({event:"Test Run End",metadata:this.metadata,...o})}testRunActionExecutionFailure(o){this.event({event:"Test Run Action Execution Failure",metadata:this.metadata,...o})}testRunAssertionExecutionFailure(o){this.event({event:"Test Run Assertion Execution Failure",metadata:this.metadata,...o})}testRunFallbackExecution(o){this.event({event:"Test Run Fallback Execution",metadata:this.metadata,...o})}testRunAutoRecovery(o){this.event({event:"Test Run Auto Recovery",metadata:this.metadata,...o})}};var bP=require("crypto");function mP(a,o){return{testSuiteRunId:o,appName:"generic-app",commitHash:"generic-commit-hash",envName:"generic-env-name",branch:"generic-branch",checksumRuntimeVersion:a}}u(mP,"createDefaultTestSuiteRunInfo");function t$(a,o,l={}){let s=["mock-app","mock-app-2","mock-app-3"];return{...{appName:s[Math.floor(Math.random()*s.length)]??s[0],commitHash:(0,bP.randomUUID)(),envName:"test-environment",branch:(0,bP.randomUUID)(),testSuiteRunId:o,checksumRuntimeVersion:a},...l}}u(t$,"createMockTestSuiteRunInfo");var hVe=require("@playwright/test");var fVe=require("@playwright/test");var zqe=require("@playwright/test");var Pqe=require("@playwright/test");var n$=require("node:async_hooks");function ov(){return{current:!1}}u(ov,"createMuteRef");function iv(a,o){let l=a.catch.bind(a);return Object.defineProperty(a,"catch",{configurable:!0,writable:!0,value:u(s=>(o.current=!0,l(s)),"value")})}u(iv,"markActionPromise");var o$=new n$.AsyncLocalStorage;function i$(a){return o$.run(!0,a)}u(i$,"runInLocatorHandlerScope");function EP(){return o$.getStore()===!0}u(EP,"isInsideLocatorHandlerScope");var gu=class{constructor(o,l,s){this.frame=o;this.base=l;this.getAnalytics=s;this.LOCATORS_TIMEOUT=5e3;this.HANDLES_TIMEOUT=5e3;this.HANDLES_INTERVAL=300;this.locatorsChain=[];this.base??=this.frame}static{u(this,"CompoundSelectorLocator")}setBase(o){this.base=o}setAnalytics(o){this.getAnalytics=o}init(...o){return this.sanitizeArgs(...o),new Proxy(this,{get:u((l,s)=>s==="setBase"?function(...i){this.setBase(i[0])}.bind(this):s==="setAnalytics"?function(...i){this.setAnalytics(i[0])}.bind(this):this.handleLocatorChain(l,s),"get")})}getLocatorSelector(o){if(o)return o._selector}sanitizeArgs(...o){if(o.length===1&&typeof o[0]=="object"){if(typeof o[0].anchors!="function")throw new Error("Invalid compound selector format. Object must contain anchors property with a method value");this.anchorLocatorMethod=o[0].anchors,this.targetLocatorMethod=o[0].target;return}if(typeof o[0]!="function")throw new Error("Invalid compound selector format. First argument must be an object or a function");if(this.anchorLocatorMethod=o[0],o.length===2){if(typeof o[1]!="function")throw new Error("Invalid compound selector format. Second argument must be a function");this.targetLocatorMethod=o[1]}}async resolveLocator(){if(this.resolvedLocator)return this.resolvedLocator;q("Waiting for locators..");let o=this.getLocatorsFromMethods();if(o.some(h=>!("_selector"in h)))throw new Error("Can't resolve at least one locator, make sure anchors and target are valid locators or strings");try{await Promise.all(o.map(async h=>Re(h.first().waitFor({bypassChecksum:!0}),this.LOCATORS_TIMEOUT,"Waiting for compound selector locators timeout")))}catch(h){throw new Error(`Error while waiting for locators - ${h.message}`)}let l=await Re(this.getElementHandles(o),this.HANDLES_TIMEOUT);q(`Resolved to ${IP(l)} elements from ${o.length} locators`);let s=this.getLocatorSelector(this.getLocatorsFromMethods(!1,!0,this.frame)[0]),i=await this.frame.evaluate(async({handles:h,targetSelector:n})=>window.checksum?.testGenerator.getCompoundSelector().select(h,n??""),{handles:l,targetSelector:s}),f=i?.[0];if(!i||i.length===0||f===void 0)throw new Error("Could not generate selectors from handles");q(`Resolved compound selector to ${i.length} selectors`);let g=this.getBase(),p=g.locator(f);return i.slice(1,50).forEach(h=>{p=p.or(g.locator(h))}),this.locatorsChain.length&&this.locatorsChain.forEach(({name:h,args:n})=>{p=Reflect.get(p,h).apply(p,n)}),q(`Compound locator selector: ${this.getLocatorSelector(p)}`),this.resolvedLocator=p,p}handleLocatorChain(o,l){if(typeof l=="symbol")return;if(l==="constructor")return u(function(...g){return this[l](...g)},"Locator");if(l==="toString")return()=>this.toString();let s=u(()=>new Proxy(o,{get:u((f,g)=>f.handleLocatorChain(f,g),"get")}),"createLocatorProxy");return l==="valueOf"?u(function(){return s()},"Locator"):l==="then"?(f,g)=>{this.resolveLocator().then(p=>f(p)).catch(g)}:Object.values([...Object.values(rr),...Object.values(Wc)]).includes(l)?u(function(...g){return o.locatorsChain.push({name:l,args:g}),s()},"Locator"):l==="bypassChecksum"?()=>this.resolveLocator():u(function(...g){let p=ov();return iv(this.handleAction(l,g,p),p)},"Locator").bind(this)}async handleAction(o,l,s){try{if(typeof o=="symbol")return;if(!this.anchorLocatorMethod)throw new Error("Compound selection is missing anchor locators");let i=await this.resolveLocator();return await this.frame.executeLocatorAction(i,o,l,s)}catch(i){throw q(`Failed to execute compound selection action: ${i}`),this.getAnalytics?.()?.compoundSelectionFailure({error:i.toString(),selector:this.toString()}),i}}async getElementHandles(o){q("Resolving compound selector elements");let l,s,i,f,g=0,p=u(()=>{g=2},"resetSameHandlesCount");do{l=s;let h=[];s=h,await Promise.all(o.map(async n=>{let r=await n.elementHandles({bypassChecksum:!0});if(r.length===0)throw new Error(`No elements found for locator: ${this.getLocatorSelector(n)}`);h.push(r)})),i=IP(h),f=l?IP(l):0,q(`Handles itteration, previous: ${l?f:"-"}, current: ${i}`),f!==i&&p(),await Xe(this.HANDLES_INTERVAL)}while(!l||f!==i||--g>0);return s}getLocatorsFromMethods(o=!0,l=!0,s=this.getBase()){return(o&&this.anchorLocatorMethod?this.anchorLocatorMethod(s):[]).concat(l&&this.targetLocatorMethod?[this.targetLocatorMethod(s)]:[]).map(i=>typeof i=="string"?s.getByText(i):i)}getBase(){return this.base}toString(){return`CompoundSelection(${this.resolvedLocator?this.getLocatorSelector(this.resolvedLocator):`${this.anchorLocatorMethod?.toString()}, ${this.targetLocatorMethod?.toString()})`})`}},IP=u(a=>a.reduce((o,l)=>o+l.length,0),"countHandleElements");var hu=class{constructor(o){this.options=o;this.health=u(async()=>fetch(`${this.options.apiURL}/client-api/runtime/api/health`,{headers:{ChecksumAppCode:this.options.apiKey}}).catch(o=>(console.error(o),null)),"health");this.getCanvasDetection=u(async o=>{try{let l=o.toString("base64");return await(await fetch(`${this.options.apiURL}/client-api/runtime/vision/text-detection`,{body:JSON.stringify({imageBuffer:l}),method:"POST",headers:{"Content-Type":"application/json",ChecksumAppCode:this.options.apiKey}})).json()}catch(l){return console.error(l),null}},"getCanvasDetection")}static{u(this,"ChecksumClient")}};var rv=class{constructor(o){this.options=o}static{u(this,"Action")}async handleError(o,l,s){let i=`Error in ${l} action during ${o} execution: ${s.message}`;throw new Error(i)}async guardedExecute(){try{return await(this.options.timeout!=null?Re(this.execute(),this.options.timeout,"Execution timeout"):this.execute())}catch(o){return this.handleError(this.options.method,this.constructor.name,o)}}};function DSe(a,o){return a in o}u(DSe,"isLocatorMethod");var OP=class extends rv{static{u(this,"PlaywrightAction")}async execute(){let{locator:o,method:l,args:s}=this.options;if(DSe(l,o)){let i=o[l];return typeof i=="function"?Reflect.apply(i,o,s):i}return o}},CP=class extends rv{constructor(l,s){super(l);this.pageInteractor=s}static{u(this,"APIAction")}},wP=class extends CP{static{u(this,"CanvasClickAction")}constructor(o,l){super(o,l.pageInteractor)}async execute(){try{let{locator:o,args:l}=this.options,[s,i]=l,f=await o.screenshot({timeout:3e4}),p=(await this.pageInteractor.getTextDetection(f)).getRectangleByTextAndSizeRanking(s,i);if(!p)throw new Error("No matching text found");await o.click({position:p.center})}catch(o){throw new Error(`Error in canvas click action: ${o.message}`)}}},av=class{static{u(this,"ActionFactory")}static{this.customActionMap={canvasClick:wP}}static isCustomAction(o){return o in this.customActionMap}static createAction(o,l){return this.isCustomAction(o.method)?new this.customActionMap[o.method]({...o,timeout:15e3},l):new OP(o)}};function Au(a,o){return Reflect.get(a,o)}u(Au,"readDynamicProperty");function r$(a,o,l){let s=Au(a,o);if(typeof s!="function")throw new Error(`Method ${o} is not a function`);return s.apply(a,l)}u(r$,"callDynamicMethod");function a$(a){if(typeof a=="object"&&a!==null&&"timeout"in a&&typeof a.timeout=="number")return a.timeout}u(a$,"extractTimeout");var cv=class a{constructor(o,l,s,i,f,g,p){this.frame=o;this.checksumPage=l;this.isReplMode=s;this.config=i;this.injectedScriptManager=f;this.getPageInteractor=g;this.onExecutionError=p;this.locatorStack=[];this.proxy=this.createFrameProxy(),this.checksumClient=new hu({apiURL:this.config.apiURL,apiKey:this.config.apiKey})}static{u(this,"ChecksumFrame")}static init(o,l,s,i,f,g,p=!1){return new a(o,l,p,g,s,i,f).proxy}createFrameProxy(){return new Proxy(this,{get:u(function(l,s){return l.handleFrameMethod(s)},"get")})}handleFrameMethod(o){if(typeof o=="symbol")return;let l=Au(this,o);return typeof l=="function"?o==="constructor"?l:l.bind(this):[...Object.values(rr),...Object.values(Wc)].includes(o)?(this.pushToLocatorStack([{type:o,base:this.frame}]),u(function(i,f){try{return this.executeLocator(i,f)}catch(g){throw this.popLocatorChain(),g}},"Locator").bind(this)):Au(this.frame,o)}page(){return this.checksumPage}compoundSelection(...o){try{let l=this.locatorStack.length?this.getCurrentLocatorInChain()?.base:this.proxy;return new gu(this.proxy,l).init(...o)}catch{throw new Error("Failed generating compound selector")}}async wrapInternalSteps(o,l=this.frame){try{return l._checksumInternal=!0,await o()}finally{l._checksumInternal=!1}}get navigationPromise(){return this.injectedScriptManager.getNavigationPromise(this.frame)}pushToLocatorStack(o){this.locatorStack.push(o)}getCurrentLocatorChain(){let o=this.locatorStack[this.locatorStack.length-1];if(!o){let l=[];return this.locatorStack.push(l),l}return o}popLocatorChain(){return this.locatorStack.pop()}getCurrentLocatorInChain(){let o=this.getCurrentLocatorChain();return o[o.length-1]}getLocator(o,l){let s=this.getCurrentLocatorInChain();if(!s)throw new Error("No locator in current chain");return r$(s.base,s.type,[o,l])}executeLocator(o,l){try{q(`
154
- Executing locator ${this.getCurrentLocatorInChain()?.type} with ${typeof o=="string"?`selector ${o}`:"locator"}`);try{o&&typeof o=="object"&&"has"in o&&this.popLocatorChain()}catch{}let s=this.getLocator(o,l);return new Proxy(s,{get:u((i,f)=>this.getLocatorMethod(s,i,f),"get")})}catch(s){q("Failed to locate",s);return}}getLocatorMethod(o,l,s){return s==="then"?this.handleThen(o,l,s):s==="catch"?this.handleCatch(o):s==="finally"?this.handleFinally(o):s==="constructor"?u(function(...f){return this.popLocatorChain(),l.constructor(...f)},"Locator"):s in l&&typeof Au(l,s)!="function"||s===Symbol.toPrimitive||s in Object||s==="evaluate"?(this.popLocatorChain(),Au(l,s)):s==="compoundSelection"?function(...i){let f=this.compoundSelection(...i);return f.setBase(o),f}.bind(this):[...Object.values(rr),...Object.values(Wc)].includes(s)?["or","and"].includes(s)?(q("'Or' and 'And' locator are not supported, will execute normally"),this.popLocatorChain(),Au(l,s)):(this.getCurrentLocatorChain().push({type:s,base:o}),u(function(...f){return this.executeLocator(f[0],f[1])},"Locator").bind(this)):s==="page"?()=>(this.popLocatorChain(),this.proxy.page()):s==="bypassChecksum"?()=>(this.popLocatorChain(),l):u(function(...f){let g=ov(),p=this.executeLocatorAction(o,s,f,g).finally(()=>{this.popLocatorChain()});return iv(p,g)},"Locator").bind(this)}async executeLocatorAction(o,l,s,i){if(Array.from(s).some(n=>n?.bypassChecksum===!0))return r$(o,l,s);let f=o._selector;q("Executing",l,f);let g=l==="_expect"?"assertion":"action",p=this.config.options?.consecutiveActionDelay??100;p>0&&g==="action"&&this.lastLocatorActionType==="action"&&(q("Adding minimal wait between consecutive actions..."),await new Promise(n=>setTimeout(n,p))),this.lastLocatorActionType=g,q("Running initial locator...");let h;try{this.navigationPromise&&await this.navigationPromise,await this.wrapInternalSteps(async()=>{try{q("[executeLocatorAction] waitForFunction"),await this.frame.waitForFunction(()=>!!window.checksum,{timeout:5e3})}catch{q("[executeLocatorAction] checksum libs not loaded")}});let n=this.getLocatorActionTimeout(g,l,s);return await av.createAction({locator:o,method:l,args:s,...n!==void 0?{timeout:n}:{}},{api:this.checksumClient,pageInteractor:this.getPageInteractor()}).guardedExecute()}catch(n){q("Failed initial execution. Exception:",n.message),h=n}if(i?.current)throw q("Action failure muted by explicit .catch(), skipping fallback"),h;if(EP())throw q("Action failed inside a locator handler, skipping fallback"),h;if(g==="action")return this.onExecutionError({error:h,locator:o,method:l,args:s},this.frame);throw h}setExpectConfiguration(o){this.expectConfiguration=o}getLocatorActionTimeout(o,l,s=[]){if(!this.isReplMode)try{if(o==="assertion"){let g=this.getAssertionTimeout(s);return q(`Assertion timeout set to ${g}`),g}let i=["fill","dragTo"].includes(l)?1:0,f=a$(s[i]);return f!==void 0&&!isNaN(f)?f:3e4}catch{return 3e4}}getAssertionTimeout(o=[]){let l=a$(o[1]);if(l!==void 0)return l;if(this.expectConfiguration?.timeout!==void 0)return this.expectConfiguration.timeout;let s=this.testInfo._projectInternal?.expect?.timeout;return s!==void 0?s:3e4}handleThen(o,l,s){return(i,f)=>Promise.resolve(o).then(g=>{let p=i?i(g):g;return p instanceof Promise?p:this.getLocatorMethod(p,l,s)},g=>{if(f)return f(g);throw g})}handleCatch(o){return l=>Promise.resolve(o).catch(s=>{if(l)return l(s);throw s})}handleFinally(o){return l=>Promise.resolve(o).finally(l)}};var IVe=require("@playwright/test");function c$(a,o){return Reflect.get(a,o)}u(c$,"readDynamicProperty");var SP=class a{constructor(o){this.context=o;this._pages={};this._pagesInProgress=new Map;this._testAssets=null;this.pageGuidMap=new WeakMap;this.instanceId=++a.instanceCounter,this.proxy=this.createContextProxy()}static{u(this,"ChecksumBrowserContext")}static{this.instanceCounter=0}static{this.guidCounter=0}static makeContext(o){return new a(o).proxy}_rawContext(){return this.context}setTestAssets(o){this._testAssets=o,this.setupPageListener()}getTestAssets(){return this._testAssets}cleanup(){this._pagesInProgress.clear(),this._pages={}}async newPage(){let o=await this.context.newPage();return this.makePage(o)}async makePage(o){if(o._isChecksumPage===!0)return o;if(o.isClosed())throw new Error("Cannot initialize closed page");let l=this.getPageGuid(o),s=this.getPageByGuid(l);if(s)return s;let i=this._pagesInProgress.get(l);if(i)return i;let f=this._createPageInstance(o);this._pagesInProgress.set(l,f);try{let g=await f;return this._pagesInProgress.delete(l),this.addPage(g),g}catch(g){throw this._pagesInProgress.delete(l),g}}addPage(o){let l=this.getPageGuid(o);this._pages[l]=o,o.once("close",()=>{this.removePage(l)})}removePage(o){this._pages[o]&&delete this._pages[o]}async _createPageInstance(o){if(o.isClosed())throw new Error("Cannot initialize page: Page has already been closed");if(this._testAssets)try{return await lv.init(o,this.proxy,this._testAssets.testRunAnalytics,this._testAssets.monitorBridge,this._testAssets.variableStore,this._testAssets.testInfo,this._testAssets.checksumTestId,this._testAssets.test,this._testAssets.config,this._testAssets.isReplMode)}catch(l){throw new Error(`Failed to initialize RuntimePage: ${l instanceof Error?l.message:String(l)}. Test assets must be properly configured.`)}throw new Error("Cannot create page: Test assets not set. Use setTestAssets() before creating pages.")}createContextProxy(){return new Proxy(this,{get:u(function(l,s){return l.getContextMethod(s)},"get")})}setupPageListener(){this.context.on("page",async o=>{try{if(o.isClosed())return;await this.makePage(o)}catch(l){let s=l instanceof Error?l.message:String(l);if(s.includes("Page has already been closed")||s.includes("Target page, context or browser has been closed"))return;throw console.error("[ChecksumBrowserContext] Failed to initialize page created by application:",l),l}})}getPageGuid(o){let l=this.pageGuidMap.get(o);return l||(l=`page@checksumctx_${this.instanceId}_${++a.guidCounter}`,this.pageGuidMap.set(o,l)),l}getPageByGuid(o){return this._pages[o]}getAllPages(){return Object.values(this._pages)}getContextMethod(o){if(o in this){let s=c$(this,o);return typeof s=="function"?s.bind(this):s}let l=c$(this.context,o);return typeof l=="function"?l.bind(this.context):l}pages(){return this.getAllPages()}getPage(o){let l=this.getAllPages(),s=l[o];if(!s)throw new Error(`Page with index ${o} not found. Total pages: ${l.length}`);return s}};var pze=require("@playwright/test");var KVe=require("@playwright/test");var WVe=require("@playwright/test");var kd=require("@playwright/test");function l$(a,o){let l;try{l=s$(o)}catch{l=u$(o)}return l(a,kd.expect)}u(l$,"evaluate");function u$(a){return new Function("page","expect",`return (async () => { ${a} })();`)}u(u$,"compile");function s$(a){return u$(`return (
154
+ Executing locator ${this.getCurrentLocatorInChain()?.type} with ${typeof o=="string"?`selector ${o}`:"locator"}`);try{o&&typeof o=="object"&&"has"in o&&this.popLocatorChain()}catch{}let s=this.getLocator(o,l);return new Proxy(s,{get:u((i,f)=>this.getLocatorMethod(s,i,f),"get")})}catch(s){q("Failed to locate",s);return}}getLocatorMethod(o,l,s){return s==="then"?this.handleThen(o,l,s):s==="catch"?this.handleCatch(o):s==="finally"?this.handleFinally(o):s==="constructor"?u(function(...f){return this.popLocatorChain(),l.constructor(...f)},"Locator"):s in l&&typeof Au(l,s)!="function"||s===Symbol.toPrimitive||s in Object||s==="evaluate"?(this.popLocatorChain(),Au(l,s)):s==="compoundSelection"?function(...i){let f=this.compoundSelection(...i);return f.setBase(o),f}.bind(this):[...Object.values(rr),...Object.values(Wc)].includes(s)?["or","and"].includes(s)?(q("'Or' and 'And' locator are not supported, will execute normally"),this.popLocatorChain(),Au(l,s)):(this.getCurrentLocatorChain().push({type:s,base:o}),u(function(...f){return this.executeLocator(f[0],f[1])},"Locator").bind(this)):s==="page"?()=>(this.popLocatorChain(),this.proxy.page()):s==="bypassChecksum"?()=>(this.popLocatorChain(),l):u(function(...f){let g=ov(),p=this.executeLocatorAction(o,s,f,g).finally(()=>{this.popLocatorChain()});return iv(p,g)},"Locator").bind(this)}async executeLocatorAction(o,l,s,i){if(Array.from(s).some(n=>n?.bypassChecksum===!0))return r$(o,l,s);let f=o._selector;q("Executing",l,f);let g=l==="_expect"?"assertion":"action",p=this.config.options?.consecutiveActionDelay??100;p>0&&g==="action"&&this.lastLocatorActionType==="action"&&(q("Adding minimal wait between consecutive actions..."),await new Promise(n=>setTimeout(n,p))),this.lastLocatorActionType=g,q("Running initial locator...");let h;try{this.navigationPromise&&await this.navigationPromise,await this.wrapInternalSteps(async()=>{try{q("[executeLocatorAction] waitForFunction"),await this.frame.waitForFunction(()=>!!window.checksum,{timeout:5e3})}catch{q("[executeLocatorAction] checksum libs not loaded")}});let n=this.getLocatorActionTimeout(g,l,s);return await av.createAction({locator:o,method:l,args:s,...n!==void 0?{timeout:n}:{}},{api:this.checksumClient,pageInteractor:this.getPageInteractor()}).guardedExecute()}catch(n){q("Failed initial execution. Exception:",n.message),h=n}if(i?.current)throw q("Action failure muted by explicit .catch(), skipping fallback"),h;if(EP())throw q("Action failed inside a locator handler, skipping fallback"),h;if(g==="action")return this.onExecutionError({error:h,locator:o,method:l,args:s},this.frame);throw h}setExpectConfiguration(o){this.expectConfiguration=o}getLocatorActionTimeout(o,l,s=[]){if(!this.isReplMode)try{if(o==="assertion"){let g=this.getAssertionTimeout(s);return q(`Assertion timeout set to ${g}`),g}let i=["fill","dragTo"].includes(l)?1:0,f=a$(s[i]);return f!==void 0&&!isNaN(f)?f:3e4}catch{return 3e4}}getAssertionTimeout(o=[]){let l=a$(o[1]);if(l!==void 0)return l;if(this.expectConfiguration?.timeout!==void 0)return this.expectConfiguration.timeout;let s=this.testInfo._projectInternal?.expect?.timeout;return s!==void 0?s:3e4}handleThen(o,l,s){return(i,f)=>Promise.resolve(o).then(g=>{let p=i?i(g):g;return p instanceof Promise?p:this.getLocatorMethod(p,l,s)},g=>{if(f)return f(g);throw g})}handleCatch(o){return l=>Promise.resolve(o).catch(s=>{if(l)return l(s);throw s})}handleFinally(o){return l=>Promise.resolve(o).finally(l)}};var IVe=require("@playwright/test");function c$(a,o){return Reflect.get(a,o)}u(c$,"readDynamicProperty");var SP=class a{constructor(o){this.context=o;this._pages={};this._pagesInProgress=new Map;this._testAssets=null;this.pageListener=null;this.pageGuidMap=new WeakMap;this.instanceId=++a.instanceCounter,this.proxy=this.createContextProxy()}static{u(this,"ChecksumBrowserContext")}static{this.instanceCounter=0}static{this.guidCounter=0}static makeContext(o){return new a(o).proxy}_rawContext(){return this.context}setTestAssets(o){this._testAssets=o,this.setupPageListener()}getTestAssets(){return this._testAssets}async cleanup(){this.pageListener&&(this.context.off("page",this.pageListener),this.pageListener=null),await Promise.allSettled(this._pagesInProgress.values()),await Promise.all(this.getAllPages().map(o=>(o.detachContextListeners(),o.isClosed()?void 0:o.close().catch(()=>{})))),this._pagesInProgress.clear(),this._pages={}}async newPage(){let o=await this.context.newPage();return this.makePage(o)}async makePage(o){if(o._isChecksumPage===!0)return o;if(o.isClosed())throw new Error("Cannot initialize closed page");let l=this.getPageGuid(o),s=this.getPageByGuid(l);if(s)return s;let i=this._pagesInProgress.get(l);if(i)return i;let f=this._createPageInstance(o);this._pagesInProgress.set(l,f);try{let g=await f;return this._pagesInProgress.delete(l),this.addPage(g),g}catch(g){throw this._pagesInProgress.delete(l),g}}addPage(o){let l=this.getPageGuid(o);this._pages[l]=o,o.once("close",()=>{this.removePage(l)})}removePage(o){this._pages[o]&&delete this._pages[o]}async _createPageInstance(o){if(o.isClosed())throw new Error("Cannot initialize page: Page has already been closed");if(this._testAssets)try{return await lv.init(o,this.proxy,this._testAssets.testRunAnalytics,this._testAssets.monitorBridge,this._testAssets.variableStore,this._testAssets.testInfo,this._testAssets.checksumTestId,this._testAssets.test,this._testAssets.config,this._testAssets.isReplMode)}catch(l){throw new Error(`Failed to initialize RuntimePage: ${l instanceof Error?l.message:String(l)}. Test assets must be properly configured.`)}throw new Error("Cannot create page: Test assets not set. Use setTestAssets() before creating pages.")}createContextProxy(){return new Proxy(this,{get:u(function(l,s){return l.getContextMethod(s)},"get")})}setupPageListener(){this.pageListener||(this.pageListener=async o=>{try{if(o.isClosed())return;await this.makePage(o)}catch(l){let s=l instanceof Error?l.message:String(l);if(s.includes("Page has already been closed")||s.includes("Target page, context or browser has been closed"))return;throw console.error("[ChecksumBrowserContext] Failed to initialize page created by application:",l),l}},this.context.on("page",this.pageListener))}getPageGuid(o){let l=this.pageGuidMap.get(o);return l||(l=`page@checksumctx_${this.instanceId}_${++a.guidCounter}`,this.pageGuidMap.set(o,l)),l}getPageByGuid(o){return this._pages[o]}getAllPages(){return Object.values(this._pages)}getContextMethod(o){if(o in this){let s=c$(this,o);return typeof s=="function"?s.bind(this):s}let l=c$(this.context,o);return typeof l=="function"?l.bind(this.context):l}pages(){return this.getAllPages()}getPage(o){let l=this.getAllPages(),s=l[o];if(!s)throw new Error(`Page with index ${o} not found. Total pages: ${l.length}`);return s}};var pze=require("@playwright/test");var KVe=require("@playwright/test");var WVe=require("@playwright/test");var kd=require("@playwright/test");function l$(a,o){let l;try{l=s$(o)}catch{l=u$(o)}return l(a,kd.expect)}u(l$,"evaluate");function u$(a){return new Function("page","expect",`return (async () => { ${a} })();`)}u(u$,"compile");function s$(a){return u$(`return (
155
155
  ${a}
156
156
  );`)}u(s$,"compileExpression");function f$(a,o){let l;try{l=s$(o)}catch(s){return Promise.reject(new Error(`a replacement must be a single expression, for example page.getByRole('button', { name: 'Save' }).click(): ${s instanceof Error?s.message:String(s)}`))}return l(a,kd.expect)}u(f$,"evaluateExpression");var NSe=new Set(["click","dblclick","fill","type","press","check","uncheck","hover","focus","blur","clear","tap","setInputFiles","scrollIntoViewIfNeeded","waitFor"]);function kP(a){let o=a;return typeof o=="object"&&o!==null&&typeof o.click=="function"&&typeof o._selector=="string"}u(kP,"isLocator");function d$(a,o){if(o)return o.kind==="action"?NSe.has(o.method)?l=>QSe(a,l):void 0:kP(o.subject)?l=>_Se(a,o,l):void 0}u(d$,"repairFor");async function QSe(a,o){let l=await f$(a,o);if(l!==void 0)throw new Error(kP(l)?"the replacement evaluated to a locator but never acted on it; call the action, for example page.getByRole('button', { name: 'Save' }).click()":"an action replacement must perform the action and return nothing; this returned a value")}u(QSe,"repairAction");async function _Se(a,o,l){let s=await f$(a,l);if(!kP(s))throw new Error("the replacement must evaluate to a Locator, for example page.getByRole('button', { name: 'Save' })");let i=o.timeout===void 0?kd.expect:kd.expect.configure({timeout:o.timeout}),f=o.negated?i(s).not:i(s),g=Reflect.get(f,o.matcher);if(typeof g!="function")throw new Error(`${o.matcher} is not a Locator matcher`);await g.apply(f,o.args)}u(_Se,"repairAssertion");var h$=require("node:crypto"),A$=require("node:http");var LSe="CHECKSUM_HEAL_PROBE",FSe="CHECKSUM_HEAL_PROBE_PORT",MSe="CHECKSUM_HEAL_PROBE_TIMEOUT_MS",PP="CHECKSUM_HEAL_PROBE_TOKEN",USe="x-checksum-heal-probe-token",jSe="step,assertion,action",HSe="action,assertion",WSe=4099,JSe=900*1e3,GSe="CHECKSUM_HEAL_PROBE_TRY_TIMEOUT_MS",qSe=30*1e3;function y$(a=process.env[GSe]){let o=Number(a);return Number.isFinite(o)&&o>0?o:qSe}u(y$,"healProbeTryTimeoutMs");function VSe(a=process.env[LSe]){return a==="1"||a==="true"}u(VSe,"isHealProbeEnabled");function TP(a=process.env[FSe]){let o=Number(a);return Number.isInteger(o)&&o>0&&o<=65535?o:WSe}u(TP,"healProbePort");function zSe(a=process.env[MSe]){let o=Number(a);return Number.isFinite(o)&&o>0?o:JSe}u(zSe,"healProbeTimeoutMs");var Td=null,p$=0,g$=new WeakSet;function YSe(a){if(a.headers.origin!==void 0)return!1;let o=process.env[PP]??"",l=a.headers[USe];if(!o||typeof l!="string")return!1;let s=Buffer.from(o),i=Buffer.from(l);return s.length===i.length&&(0,h$.timingSafeEqual)(s,i)}u(YSe,"isAuthorised");async function $Se(a,o){try{return KSe(await b$(l$(a,o)))}catch(l){return v$(l)}}u($Se,"evaluateAgainstPage");function v$(a){let o=sv(a);return a instanceof uv?{ok:!1,unknown:!0,error:o}:/target (page|context|browser).*closed|target closed/i.test(o)?{ok:!1,gone:!0,error:o}:{ok:!1,error:o}}u(v$,"failed");function b$(a){let o=y$()+1e3;return Promise.race([a,new Promise((l,s)=>{setTimeout(()=>s(new uv(o)),o).unref()})])}u(b$,"withTimeout");var uv=class extends Error{static{u(this,"TimedOut")}constructor(o){super(`still running after ${o}ms; whether it worked is unknown`)}};function m$(a,o=0){if(a===null||typeof a!="object"||o>2)return!1;let l=Object.getPrototypeOf(a);return l!==Object.prototype&&l!==Array.prototype&&l!==null?!0:Object.values(a).some(s=>m$(s,o+1))}u(m$,"holdsAHandle");function KSe(a){let o=u(()=>({ok:!0,kind:"opaque",value:String(a)}),"opaque");if(a==null)return{ok:!0,kind:"value",value:null};if(m$(a))return o();try{return{ok:!0,kind:"value",value:JSON.parse(JSON.stringify(a))}}catch{return o()}}u(KSe,"serialize");function E$(a){return new Promise(o=>{let l="";a.on("data",s=>l+=s),a.on("end",()=>o(l))})}u(E$,"readBody");function ZSe(a,o,l){E$(o).then(async s=>{let i;try{i=JSON.parse(s||"{}").expression}catch{l(400,{ok:!1,error:"body must be JSON"});return}if(typeof i!="string"||!i.trim()){l(400,{ok:!1,error:"expression is required"});return}l(200,await $Se(a,i))}).catch(s=>{l(500,{ok:!1,error:sv(s)})})}u(ZSe,"handleTry");function XSe(a,o){if(o.operation!==a.operation)return{status:409,payload:{ok:!1,error:`operation ${String(o.operation)} is not the parked one (${a.operation})`}};if(!a.repair)return{status:409,payload:{ok:!1,unsupported:!0,error:`a failure at ${JSON.stringify(a.context.where)} cannot resume; edit the spec and rerun`}};let{expression:l}=o;return typeof l!="string"||!l.trim()?{status:400,payload:{ok:!1,error:"expression is required"}}:a.running?{status:409,payload:{ok:!1,error:"a repair already ran or is still running for this operation; if its outcome was not reported, stop and rerun"}}:{repair:a.repair,expression:l}}u(XSe,"checkRepair");function e1e(a,o,l){E$(o).then(async s=>{let i;try{i=JSON.parse(s||"{}")}catch{l(400,{ok:!1,error:"body must be JSON"});return}let f=XSe(a,i);if("status"in f){l(f.status,f.payload);return}a.running=!0;let g=f.repair(f.expression);g.catch(()=>{a.running=!1});try{await b$(g)}catch(p){l(200,v$(p));return}l(200,{ok:!0,resumed:!0,operation:a.operation},()=>{a.context.testInfo?.annotations.push({type:"checksum-heal-repair",description:`operation ${a.operation} at ${a.context.where}: ${f.expression}`}),console.warn(`[checksum] heal probe resumed operation ${a.operation} at ${JSON.stringify(a.context.where)}`),a.settle(!0)})}).catch(s=>{l(500,{ok:!1,error:sv(s)})})}u(e1e,"handleRepair");function t1e(a){return(o,l,s)=>{a.writeHead(o,{"Content-Type":"application/json"}),a.end(JSON.stringify(l),()=>s?.())}}u(t1e,"replyWith");function n1e(a,o,l){let{context:s}=a;if(!YSe(o)){l(401,{error:"unauthorised"});return}if(o.method==="GET"&&o.url==="/probe"){l(200,{parked:!0,parks:jSe,resumes:HSe,operation:a.operation,resumable:a.repair!==void 0,where:s.where,error:s.error,spec:s.spec});return}if(o.method==="POST"&&o.url==="/release"){l(200,{released:!0},()=>a.settle(!1));return}if(o.method==="POST"&&o.url==="/try"){ZSe(a.page,o,l);return}if(o.method==="POST"&&o.url==="/repair"){e1e(a,o,l);return}l(404,{error:"not found"})}u(n1e,"handleProbeRequest");function o1e(a){return new Promise(o=>{if(!a){o();return}a.closeAllConnections(),a.close(()=>o())})}u(o1e,"closeAndFreePort");function i1e(a){let o=(0,A$.createServer)((l,s)=>{n1e(a,l,t1e(s))});return o.on("error",l=>{console.warn(`[checksum] heal probe could not listen on ${TP()}: ${l.message}`),a.settle(!1)}),o.listen(TP(),"127.0.0.1",()=>{console.warn(`[checksum] heal probe parked at ${JSON.stringify(a.context.where)} on port ${TP()}`)}),o}u(i1e,"listen");function r1e(a,o,l){let{testInfo:s}=o,i=s?.timeout??0,f=Date.now();s?.setTimeout(0),a.setDefaultTimeout(y$());let g;return new Promise(p=>{let h=!1,n=u(t=>{h||(h=!0,i&&s?.setTimeout(i+Date.now()-f),a.setDefaultTimeout(s?.project.use.actionTimeout??0),p(t))},"settle"),r={page:a,context:o,operation:l,repair:d$(a,o.resume),running:!1,settle:n};setTimeout(()=>n(!1),zSe()).unref(),g=i1e(r)}).finally(()=>o1e(g))}u(r1e,"park");function BP(a,o,l){return VSe()?process.env[PP]?typeof l=="object"&&l!==null&&g$.has(l)?Promise.resolve(!1):Td?Td.then(()=>!1):(typeof l=="object"&&l!==null&&g$.add(l),p$+=1,Td=r1e(a,{...o,error:sv(l)},p$).finally(()=>{Td=null}),Td):(console.warn(`[checksum] heal probe needs ${PP}; not parking`),Promise.resolve(!1)):Promise.resolve(!1)}u(BP,"maybeParkOnFailure");function sv(a){return a instanceof Error?a.message:String(a)}u(sv,"message");var a1e=["toMatchSnapshot"],c1e=["toBe","toBeCloseTo","toBeDefined","toBeFalsy","toBeGreaterThan","toBeGreaterThanOrEqual","toBeInstanceOf","toBeLessThan","toBeLessThanOrEqual","toBeNaN","toBeNull","toBeTruthy","toBeUndefined","toContain","toContainEqual","toEqual","toHaveLength","toHaveProperty","toMatch","toMatchObject","toStrictEqual","toThrow","toThrowError"],l1e=[...c1e,...a1e];var u1e=require("@playwright/test");var dv=class extends bA{constructor(l){super();this.config=l;this.getTextDetection=u(async l=>{let s=await this.api.getCanvasDetection(l);if(!s)throw new Error("No data returned from canvas detection");return s},"getTextDetection");this.config=l,this.api=new hu({apiKey:l.apiKey,apiURL:l.apiURL})}static{u(this,"RuntimePageInteractorAPI")}};var s1e="CHECKSUM_STEP_ANNOTATIONS";function RP(a=process.env[s1e]){return a==="1"||a==="true"}u(RP,"isStepAnnotationsEnabled");var f1e={position:"bottom-right",duration:1e3,fontSize:20},d1e={duration:1500};function p1e(a){return a.screencast}u(p1e,"getScreencast");var S$=new WeakSet;async function DP(a,o){try{let l=p1e(a);if(!l)return;typeof l.showActions=="function"&&!S$.has(a)&&(S$.add(a),await l.showActions(f1e)),typeof l.showChapter=="function"&&await l.showChapter(o,d1e)}catch{}}u(DP,"annotateStepStart");var Vze=require("@playwright/test");var g1e={generateSelectionData:!1,navigationTimeout:30*1e3,actionTimeout:5*1e3},hi=class{constructor(o,l,s,i,f,g,p){this.page=o;this.evaluateWithChecksum=l;this.checksumPage=s;this.pageInteractor=i;this.options=f;this.API_BASE_DOMAIN="https://api.checksum.ai";this.didCancel=!1;this.timeout=900*1e3;this.canResolveAssertion=!1;this.page=o,this.options={...g1e,...f},this.runtimePage=g,this.context=p}static{u(this,"AbstractFallback")}canResolve(o){return!(o.type==="assertion"&&!this.canResolveAssertion)}addMetadata(o){}cancel(){this.didCancel=!0}isCanceled(){return this.didCancel}async execute(o,l,s,i=6e4){return k$(o,l,s,i)}log(...o){q(...o)}setThought(o){this.thought=o}setVariables(o){this.variables=o}get shouldSendToAnalytics(){return!0}getAnalyticsPayload(){return{}}toString(){return this.constructor.name}};var NP=V(require("fs"));function h1e(a){return a.replace(/(\s*)try\s*\{([\s\S]*?)\}[\s\n]*catch\s*\(.*?\)\s*\{[\s\S]*?\}[\s\n]*\1testInfo\.status\s*=\s*["']failed["'];?/g,(o,l,s)=>s.trimEnd())}u(h1e,"removeTryCatchAndTestInfo");var vu=class{static{u(this,"ErrorFormatter")}static toString(o,l){let s=T$(o,l);return Object.entries(s).map(([,i])=>`
157
157
  ${i}`).join("")}static toRecord(o,l){return T$(o,l)}};function A1e(a){return(a.match(/\(([^)]+):(\d+):(\d+)\)/)??a.match(/at ((?:[a-zA-Z]:\\|\/)[^:]+):(\d+):(\d+)/))?.[1]}u(A1e,"extractFilePathFromStackLine");function y1e(a,o){return a.includes(o)&&!a.includes("node_modules")&&!a.includes("<anonymous>")&&!a.includes("internal")&&!a.includes("loader")&&!a.startsWith("eval")}u(y1e,"isRelevantSourcePath");function v1e(a,o){try{if(!o[a]&&NP.default.existsSync(a)){let l=NP.default.readFileSync(a,"utf-8");o[a]=h1e(l)}}catch(l){o[a]=`Error reading file: ${l.message}`}}u(v1e,"readSourceForPath");function T$(a,o){let s=(a.stack||"No stack trace available").split(`
@@ -237,7 +237,7 @@ ${o}`)}get createChecksumStep(){return o=>this.checksumPage.createChecksumStep(o
237
237
 
238
238
  ${i}`;return{success:!0,pages:s,message:f}}async switchPageHandler(l){if(!l.pageId)return{success:!1,message:"pageId is required"};l.thought&&this.utils.createChecksumStep({title:l.thought});try{await this.utils.setActivePage(l.pageId);let s=await this.utils.captureApplicationState();return{success:!0,activePageId:l.pageId,message:`Successfully switched to page ${l.pageId}`,appState:s}}catch(s){let i=s instanceof Error?s.message:String(s);return{success:!1,activePageId:this.utils.activePageGuid,message:`Failed to switch to page ${l.pageId}: ${i}`}}}};async function Bm(a,o){let l;try{l=await a.json()}catch{l=void 0}return WBe({ok:a.ok,status:a.status,body:l},o)}u(Bm,"assertOkJson");function WBe(a,o){let l=a.body&&typeof a.body=="object"?a.body:void 0;if(!a.ok){let i=JBe(l?.message);throw GBe(new Error(`${o.resource} failed (HTTP ${a.status})`+(i?`: ${i}`:".")),a.status)}if(!l)throw new Error(`${o.resource} (HTTP ${a.status}) returned a non-object body; expected JSON.`);let s=(o.requiredFields??[]).filter(i=>!l[i]);if(s.length>0)throw new Error(`${o.resource} (HTTP ${a.status}) response is missing required field${s.length>1?"s":""}: ${s.join(", ")}.`);return l}u(WBe,"assertJsonBody");function JBe(a){return typeof a=="string"?a:Array.isArray(a)?a.filter(o=>typeof o=="string").join("; "):""}u(JBe,"extractMessage");function GBe(a,o){return Object.assign(a,{status:o})}u(GBe,"withStatus");var _p=u(a=>typeof a=="number"&&a>=400&&a<500&&a!==408&&a!==429,"isNonRetryableStatus"),c9=u(a=>typeof a=="number"&&(a===502||a===503||a===520||a===522||a===523||a===525),"isConnectionLevelStatus");var nr=class a extends hi{static{u(this,"ARFallback")}static{this.API_BASE_ROUTE="/auto-recovery"}static{this.TIMEOUT_MS=12e4}getInitializationData(){if(!this.initializationData)throw new Error("ARFallback initialization data is not initialized");return this.initializationData}getAgent(){if(!this.agent)throw new Error("ARFallback agent is not initialized");return this.agent}getUtils(){if(!this.utils)throw new Error("ARFallback utils is not initialized");return this.utils}constructor(o,l,s,i,f,g,p){super(o,l,s,i,f,g,p),this.runtimePageContext=g}init(o){return this.initializationData=o,this}canResolve(o){return!0}get failingThought(){return this.getInitializationData().thoughts.failing}getRecoveryAttemptTitle(){switch(this.getInitializationData().type){case"action":return`Checksum Auto-Recovery: trying to achieve action "${this.failingThought}"...`;case"assertion":return`Checksum Auto-Recovery: trying to verify assertion "${this.failingThought}"...`;default:return`Checksum Auto-Recovery: trying to achieve action "${this.failingThought}"...`}}static async registerSession(o){let l=o.config.apiURL,s=o.config.apiKey,i=await fetch(`${l}${a.API_BASE_ROUTE}/register-auto-recovery-session`,{method:"POST",headers:{"Content-Type":"application/json",ChecksumAppCode:s},body:JSON.stringify({appName:o.testIdentification.testFileName,fallbackData:o})});return Bm(i,{resource:"register-auto-recovery-session",requiredFields:["arConfig","sessionId"]})}async prepareSession(o){let l=this.getInitializationData(),s=await a.registerSession(l);this.utils=new Tm({page:this.page,evaluateWithChecksum:this.evaluateWithChecksum,checksumPage:this.checksumPage,pageInteractor:this.pageInteractor,arConfig:s.arConfig,sessionId:s.sessionId,runtimeFallbackData:l,fallbackData:o,variableStore:this.variables??[],runtimePage:this.runtimePageContext,...this.context!==void 0?{context:this.context}:{}});try{this.agent=await Pm.build(this.getUtils())}catch(i){let f=i instanceof Error?i.message:String(i);throw new Error(`Failed to prepare ARFallback: ${f}`)}}async resolve(o){let l,s=new Promise((g,p)=>{l=setTimeout(()=>{let h=this.getUtils();h.analytics.ARError({error:`Auto-recovery timed out after ${a.TIMEOUT_MS/1e3} seconds`});let n="Auto-Recovery attempt finished unsuccessfully";h.createChecksumStep({title:n,withError:!0}),h.addAutoRecoveryErrorToReport(n,!1),p(new Error(n))},a.TIMEOUT_MS)}),i=Date.now();await this.prepareSession(o);let f=Mi("auto_recovery_session",{recovery:this.getUtils().analytics.metadata});this.getUtils().analytics.ARStart();try{let g=await Promise.race([this.getAgent().init(),s]);return clearTimeout(l),this.getUtils().analytics.ARFinish({duration:Date.now()-i}),f.emit({outcome:"success",result:g.result,steps_count:g.stepsThoughts.length,final_thought:g.finalThought}),{fbResult:g.result,thought:g.finalThought,stepsThoughts:g.stepsThoughts,steps:[]}}catch(g){throw clearTimeout(l),this.getUtils().analytics.ARFinish({duration:Date.now()-i}),f.emit({outcome:"error",error:di(g)}),g}}};var set=require("@playwright/test");var l9=u(a=>{let o=a.info();return o.annotations.some(l=>l.type==="bug")||o.tags.some(l=>l==="@bug")},"isKnownBugTest");var kQ=1e3*30;function qBe(a,o){Reflect.set(a,"fallbackResult",o)}u(qBe,"setFallbackResult");var lv=class a extends gv{constructor(l,s="normal",i,f,g,p,h,n,r,e,t,c,d){super(l,i,t,()=>this.pageInteractor);this.page=l;this.runMode=s;this.testRunAnalytics=f;this.monitorBridge=g;this.testInfo=p;this.checksumTestId=h;this.test=n;this.options=r;this.isReplMode=e;this.config=t;this.pageInteractorAPI=c;this.appSpecificRules={};this.hasRuntimeStartedTrace=!1;this.unzippedHarData=[];this.fallbacks=[];this.hasUsedAutoRecovery=!1;this.hasSuccessfulAutoRecovery=!1;this.arSummaries=[];this.arStepIds=[];this.arResults=[];this.thoughtsCounter=0;this.highLevelThoughts=[];this.framesMsgBroker=new ng;this.previousSteps=[];this.scriptLoadWrapper=u(async(l,s)=>(!this.isTimeMachineFrame(s)&&this.navigationPromise&&await this.navigationPromise,this.wrapInternalSteps(l,s.page())),"scriptLoadWrapper");this.scriptLoadCheck=u(async l=>l.evaluate(()=>!!window.checksum),"scriptLoadCheck");this.scriptLoadCallback=u(async l=>{await l.evaluate(({appSpecificRules:s,esraTimeout:i,sessionRecorder:f,showFrontendLogs:g,showTMSeeker:p,filesObserver:h,nativeDialogObserver:n,assertionsObserver:r,actionsObserver:e,recordOptions:t})=>{window.checksum?.testGenerator.init(s,{esraTimeout:i,showFrontendLogs:g,skipElementHighlighting:!0,...t!==void 0?{recordOptions:t}:{}},{assertionGenerator:!1,sessionRecorder:f,filesObserver:h,nativeDialogObserver:n,assertionsObserver:r,actionsObserver:e});try{p&&window.checksum?.timeMachine.openSeekbar()}catch{}},{appSpecificRules:this.appSpecificRules,esraTimeout:kQ,sessionRecorder:!this.isTimeMachineFrame(l)&&!!this.timeMachine,showFrontendLogs:te.isDevMode,showTMSeeker:this.isTimeMachineFrame(l)&&process.env.CHECKSUM_SHOW_TIME_MACHINE==="true",filesObserver:!1,nativeDialogObserver:!1,assertionsObserver:!1,actionsObserver:!1}),q(`[init] init script loaded for ${l.page().url()}`)},"scriptLoadCallback");xm(r.printLogs??!1);let A=this.config.options?.useChecksumAI;l9(n)&&typeof A=="object"&&A.skipTestsWithKnownBugs&&(console.log("Auto recovery will not run for this test as it is marked as a known bug"),A.actions=!1,A.assertions=!1,A.visualComparison=!1);let y=this.injectedScriptManager;if(!y)throw new Error("Injected script manager not initialized");y.setScriptLoadWrapper(this.scriptLoadWrapper).setScriptLoadCallback(this.scriptLoadCallback).setScriptLoadCheck(this.scriptLoadCheck);let v=fv({config:this.config}),m=this.getPlaywrightProjectConfig();if(this.pageInteractor=new ed({evaluateWithChecksum:this.evaluateWithChecksum.bind(this),getFrame:u(()=>this.page.mainFrame(),"getFrame"),getTimeMachine:u(()=>this.timeMachine,"getTimeMachine"),logger:{log:q,logError:q},options:{navigationTimeout:m.use.navigationTimeout,actionTimeout:m.use.actionTimeout,testAssetsDir:Ds(Vn()),waitActionDelay:1e3},pageInteractorAPI:this.pageInteractorAPI,loginFunction:v}),this.checkForActiveTracing(),this.resetFallbacks(),d&&(this.highLevelThoughts=d.highLevelThoughts??[],d.timeMachineBrowserContext!==void 0&&(this.timeMachineBrowserContext=d.timeMachineBrowserContext),d.variableStore!==void 0&&(this.variableStore=d.variableStore)),!this.options.disableTimeMachine){let b=this.shouldRecordRRwebEvents()?{recordRRwebEventsToFile:!0,recordRRwebEventsToFilePath:V_(this.checksumTestId,this.testInfo.retry)}:{};this.timeMachine=new pv(this.framesMsgBroker,y,{...b,maxRRwebBytes:te.testRun.timeMachine.maxRRwebBytes,headless:process.env.CHECKSUM_SHOW_TIME_MACHINE==="true"?!1:te.testRun.timeMachine.headless,webProxy:p.project.use.proxy,recordOnly:process.env.CHECKSUM_RUNTIME_TIME_MACHINE_REPLAY!=="true"}),this.timeMachineBrowserContext&&this.timeMachine.setTimeMachineBrowserContext(this.timeMachineBrowserContext)}}static{u(this,"RuntimePage")}static{this.recentlyInteracted=new Map}previousThoughtsAndTimestamps(){return this.previousSteps}static async init(l,s,i,f,g,p,h,n,r,e=!1){let t=!1,c=h;c||(c=eg(5),t=!0,console.warn(`Checksum test id was not defined for test "${p.title}" and was auto-generated. Please replace - "${p.title}" with -
239
239
  test(defineChecksumTest("${p.title}", "${c}"), async ({ page }) => {...`)),f.addTestInfo(c,p.testId,t),r.options!==void 0&&typeof r.options.useChecksumAI=="boolean"&&(r.options.useChecksumAI={actions:r.options.useChecksumAI,assertions:!1,visualComparison:!1});let d=new dv(r),A=new a(l,r.runMode,s,i,f,p,c,n,{useChecksumSelectors:!0,useChecksumAI:{actions:!0,assertions:!1},newAssertionsEnabled:r.runMode!=="normal",useMockData:!1,printLogs:!1,...r.options},e,r,d,{variableStore:g});return s.pages().length===0&&(n._checksum.expect.setPage(A),n._checksum.checksumAI.page=A,g.clearAll(),A.testRunAnalytics.testRunStart()),await A.asyncInit(),A.proxy}async asyncInit(l=!1){await this.loadAppSpecificRules(),await this.wrapInternalSteps(async()=>{await this.page.addInitScript(()=>{window.sessionStorage.setItem("checksumai:disable","true")})}),this.timeMachine&&(await this.timeMachine.prepare(this.page.mainFrame()),this.timeMachineBrowserContext=this.timeMachine.getTimeMachineBrowserContext()),this.pageInteractor.init(),l||await this.prepareForTestArtifacts()}async makePage(l){let s=new a(l,this.runMode,this._context,this.testRunAnalytics,this.monitorBridge,this.testInfo,this.checksumTestId,this.test,this.options,this.isReplMode,this.config,this.pageInteractorAPI,{highLevelThoughts:this.highLevelThoughts,...this.timeMachineBrowserContext!==void 0?{timeMachineBrowserContext:this.timeMachineBrowserContext}:{},variableStore:this.variableStore});return await s.asyncInit(!0),s.proxy}getTimeMachinePage(){return this.timeMachine?.getPage()}getFramesMessageBroker(){return this.framesMsgBroker}isTimeMachineFrame(l){return this.timeMachine?.hasReplayFrame()?l===this.timeMachine.getFrame():!1}shouldRecordRRwebEvents(){return yq({recordRRwebEventsToFile:te.testRun.timeMachine.recordRRwebEventsToFile,hostReports:this.config.options?.hostReports,disableRrwebRecording:this.options.disableRrwebRecording,disableTimeMachine:this.options.disableTimeMachine})}recordInteraction(){let l=this.getPageGuid(this.page);a.recentlyInteracted.set(l,Date.now())}async direct(l,s){try{return await s()}catch(i){throw await this.parkOnTerminalFailure(l,i),i}}async goto(l,s){return this.recordInteraction(),this.direct(`goto ${l}`,()=>this.page.goto(l,s))}async reload(l){return this.recordInteraction(),this.direct("reload",()=>this.page.reload(l))}async goBack(l){return this.recordInteraction(),this.direct("goBack",()=>this.page.goBack(l))}async goForward(l){return this.recordInteraction(),this.direct("goForward",()=>this.page.goForward(l))}async click(l,s){return this.recordInteraction(),this.direct(`click ${l}`,()=>this.page.click(l,s))}async dblclick(l,s){return this.recordInteraction(),this.direct(`dblclick ${l}`,()=>this.page.dblclick(l,s))}async fill(l,s,i){return this.recordInteraction(),this.direct(`fill ${l}`,()=>this.page.fill(l,s,i))}async press(l,s,i){return this.recordInteraction(),this.direct(`press ${s} on ${l}`,()=>this.page.press(l,s,i))}async check(l,s){return this.recordInteraction(),this.direct(`check ${l}`,()=>this.page.check(l,s))}async uncheck(l,s){return this.recordInteraction(),this.direct(`uncheck ${l}`,()=>this.page.uncheck(l,s))}async selectOption(l,s,i){return this.recordInteraction(),this.direct(`selectOption ${l}`,()=>this.page.selectOption(l,s,i))}async hover(l,s){return this.recordInteraction(),this.direct(`hover ${l}`,()=>this.page.hover(l,s))}async type(l,s,i){return this.recordInteraction(),this.direct(`type into ${l}`,()=>this.page.type(l,s,i))}async setInputFiles(l,s,i){return this.recordInteraction(),this.page.setInputFiles(l,s,i)}async tap(l,s){return this.recordInteraction(),this.page.tap(l,s)}async dragAndDrop(l,s,i){return this.recordInteraction(),this.page.dragAndDrop(l,s,i)}getPlaywrightProjectConfig(){return this.testInfo.project}checkForActiveTracing(){let s=this.getPlaywrightProjectConfig().use.trace;this.traceMode=typeof s=="string"?s:s?.mode}registerPageEvents(){super.registerPageEvents();let l=this.injectedScriptManager;l&&(l.addTrackedFrame(this.page),this.page.on("framenavigated",s=>{l.onFrameNavigated(s)}))}checksumSelector(l){return this.checksumStepId=l,this.options.useChecksumSelectors&&this.setSelectorFallback(l),this.proxy}checksumAI(l,s,i){let f=this.addNewThought(l,"action",!!s);this.previousSteps.push({thought:f.thought,timestamp:Date.now()});let g=this.getPageGuid(this.page);return ed.setLastAction(g,l),s&&typeof s=="function"?this.test.step(l,async p=>{RP()&&await DP(this.page,l);try{return i?.withDialog&&this.pageInteractor.listenToDialog(),await s()}catch(h){if(f.children=[],!this.options.useChecksumAI.actions||i?.withDialog||i?.skipAutoRecovery)throw await this.parkOnTerminalFailure(l,h),h;this.setAIFallback(l,"action");try{return await this.initiateFallbackSequence({type:"action",error:h,method:"",args:[],testInfo:this.testInfo,step:p},{fallbackTypes:[Ji,nr]})}catch(n){throw this.testRunAnalytics.testRunError({failedThought:l,error:n?.message||"Unknown error"}),await this.parkOnTerminalFailure(l,n),n}}finally{this.pageInteractor.removeListener("dialog"),this.currentThought=this.currentThought?.parent}}):(RP()&&DP(this.page,l),this.options.useChecksumAI.actions&&!i?.skipAutoRecovery&&this.setAIFallback(l,"action"),this.proxy)}resolveAssetsFolder(l){return l.map(s=>Eo.join(Ds(Vn()),s))}getRuntimeOptions(){return this.options}addPwAnnotation(l){this.testInfo.annotations.push({type:l.type,description:`
240
- ${l.description}`})}onTestComplete(l){return this.testRunAnalytics.testRunEnd({success:l,autoRecoveryTriggered:this.hasUsedAutoRecovery,summaries:this.arSummaries}),this.monitorBridge.addChecksumTestMetadata({checksumTestId:this.checksumTestId,pwTestId:this.testInfo.testId,retry:this.testInfo.retry,type:"autoRecoveryMetadata",data:{autoRecoveryTriggered:this.hasUsedAutoRecovery,autoRecovered:this.hasSuccessfulAutoRecovery&&l}}),this.monitorBridge.addChecksumTestMetadata({checksumTestId:this.checksumTestId,pwTestId:this.testInfo.testId,retry:this.testInfo.retry,type:"autoRecoverySummaries",data:this.arSummaries}),this.cleanupMockData(),Promise.resolve()}async wrapInternalSteps(l,s=this.page){try{return s.mainFrame()._checksumInternal=!0,s._checksumInternal=!0,await l()}finally{s.mainFrame()._checksumInternal=!1,s._checksumInternal=!1}}async conditionallyWrapInternalSteps(l,s){return l?this.wrapInternalSteps(s):s()}async wrapNoLocationSteps(l){try{return this.testInfo._checksumNoLocation=!0,await l()}finally{this.testInfo._checksumNoLocation=!1}}findAllStepsRecursively(l,s,i=[]){for(let f of l){(f._stepId===s||f.stepId===s)&&i.push(f);let g=[f.steps,f._testInfoSteps,f._steps].filter(Boolean);for(let p of g)this.findAllStepsRecursively(p,s,i)}return i}makeChecksumStepFunction(l){return s=>{if(!l)return;let i=s._stepId||s.stepId;this.findAllStepsRecursively(s._testInfo._steps,i).forEach(g=>{g.error={message:"ChecksumStepError",stack:"Fallback Failed",cause:void 0}})}}async createChecksumStep(l){let s,i={box:!0,noLocation:!0,obtainStep:u(f=>{s=f},"obtainStep")};if(await this.step(l.title,this.makeChecksumStepFunction(l.withError),!1,i),s?.stepId&&this.arStepIds.push(s.stepId),!s)throw new Error("Checksum step was not created");return s}async step(l,s,i=!0,{obtainStep:f=void 0,box:g=!1,noLocation:p=void 0}={}){let h=this.testInfo._checksumNoLocation;try{this.testInfo._checksumInternal=i===!0,p!==void 0&&(this.testInfo._checksumNoLocation=p),await this.test.step(l,s??(()=>{}),{obtainStep:f,box:g})}finally{this.testInfo._checksumInternal=!1,this.testInfo._checksumNoLocation=h}}addErrorMessage(l,s){this.testInfo.addError(l,s)}async evaluateWithChecksum(l,s,i=!0){this.navigationPromise&&await this.navigationPromise;let f=this.page.evaluate.bind(this.page);return this.conditionallyWrapInternalSteps(i,()=>f(l,s))}getChecksumTestId(){return this.checksumTestId}addNewThought(l,s,i=!1){let f={thought:l,type:s,...i?{children:[]}:{}};if(!this.currentThought)this.highLevelThoughts.push(f);else if(this.currentThought.children)this.currentThought.children.push(f),f.parent=this.currentThought;else{let p=this.currentThought.parent;p?(p.children=p.children??[],p.children.push(f),f.parent=p):this.highLevelThoughts.push(f)}let g=f.parent;return g?f.id=`${g.id}.${g.children?.length??0}`:f.id=`${++this.thoughtsCounter}`,this.currentThought=f,f}buildThoughtsChainForFallback(l=this.highLevelThoughts){let s=[];return l.forEach(i=>{s.push(i.thought),i.children&&s.push(...this.buildThoughtsChainForFallback(i.children))}),s}compoundSelection(...l){let s=super.compoundSelection(...l);return s.setAnalytics(()=>this.testRunAnalytics),this.checksumStepId&&this.options.useChecksumSelectors&&this.setCompoundSelectorFallback(this.checksumStepId),s}setSelectorFallback(l){let s={checksumId:l,fileName:this.testInfo.file,testId:this.checksumTestId,apiKey:this.config.apiKey,apiURL:this.config.apiURL,timeout:kQ};this.pushFallback(this.constructFallback(Nd).init(s)),this.pushFallback(this.constructFallback(Rd).init(s))}setCompoundSelectorFallback(l){this.pushFallback(this.constructFallback(Dd).init({checksumId:l,fileName:this.testInfo.file,testId:this.checksumTestId,apiKey:this.config.apiKey,apiURL:this.config.apiURL,timeout:kQ}))}setAIFallback(l,s){let i=this.options.useChecksumAI.arVersion===1,f=u(()=>{let p=this.buildThoughtsChainForFallback(),h={title:this.testInfo.title},n={testFileName:this.testInfo.file,testId:this.testInfo.testId,testSuiteId:process.env.CHECKSUM_TEST_SUITE_ID||""},r={previous:p.slice(0,-1),failing:l,next:p.slice(1)},e={storyInfo:h,testIdentification:n,fallbackConfig:{arMode:this.options.useChecksumAI.arMode??"one_shot",overrideOptions:{...this.options.useChecksumAI.overrideOptions,...this.options.useChecksumAI.modelName&&!this.options.useChecksumAI.overrideOptions?.modelName?{modelName:this.options.useChecksumAI.modelName}:{}},markRecovered:this.options.useChecksumAI.markRecovered},thoughts:r,config:{apiURL:this.config.apiURL,apiKey:this.config.apiKey},type:s};return this.constructFallback(nr).init(e)},"createArFallback"),g=u(()=>{let p=typeof this.options.useChecksumAI=="object"?this.options.useChecksumAI:void 0,h=p?.arMode,n=p?.overrideOptions;return this.constructFallback(Ji).init({goal:this.testInfo.title,testFile:this.testInfo.file,apiKey:this.config.apiKey,apiURL:this.config.apiURL,testId:this.checksumTestId,thoughts:this.buildThoughtsChainForFallback(),...h!==void 0?{arMode:h}:{},...n!==void 0?{overrideOptions:n}:{},fallbackType:s})},"createAIFallback");return i?this.pushFallback(g()):this.pushFallback(f()),this.proxy}pushFallback(l){this.fallbacks.push(l),this.sortFallbacks()}handleAIFallback(l,s,i){let f=l.fallbackAnalyticsPayload.iterationSteps,g=f.length>0?i/f.length:0,p=s.fbResult??"failed";this.testRunAnalytics.testRunFallbackExecution({result:p,failedThought:l.getFailedThought(),summary:s.summary??"",stepsPayload:l.fallbackAnalyticsPayload,type:l.fallbackType,duration:i,avgDuration:g,success:["finish","soft_assertion"].includes(p)}),this.arResults.push({failedThought:l.getFailedThought(),result:p,...s.thought!==void 0?{thought:s.thought}:{}})}handleAutoRecovery(l,s,i,f){let g=i.stepsThoughts??[],p=g.length>0?f/g.length:0;this.testRunAnalytics.testRunAutoRecovery({failingThought:l.failingThought,type:s.type,finalThought:i.thought??"",result:i.fbResult??"failed",duration:f,avgStepDuration:p,stepsThoughts:g,version:"v1"})}async runFallback(l,s){let i=Date.now(),f=l.resolve(s),g=await Re(f,l.timeout),p=Date.now()-i;if(!g)throw this.hasSuccessfulAutoRecovery=!1,this.createChecksumStep({title:"Recovery Failed",withError:!0}),new Error("Fallback failed");l instanceof Ji&&(this.hasUsedAutoRecovery=!0,this.handleAIFallback(l,g,p)),l instanceof nr&&(this.hasUsedAutoRecovery=!0,this.handleAutoRecovery(l,s,g,p));let h=g.thought?`: ${g.thought}`:"";if(g.fbResult==="failed")throw this.hasSuccessfulAutoRecovery=!1,this.createChecksumStep({title:`Recovery Failed${h}`,withError:!0}),new Error("Fallback failed");if(g.fbResult==="hard_assertion")throw this.hasSuccessfulAutoRecovery=!1,this.createChecksumStep({title:`Recovery Failed${h}`,withError:!0}),new od(g.fbResult);this.hasUsedAutoRecovery&&(this.hasSuccessfulAutoRecovery=!0),l instanceof Ji&&g.summary&&this.arSummaries.push(g.summary),l instanceof nr&&g.thought&&this.arSummaries.push(g.thought),this.createChecksumStep({title:`Recovery Complete${h}`});let n=this.currentThought;if(n&&g.steps.length===1){let r=g.steps[0];r?.thought&&(n.thought=r.thought)}else n&&(n.children=g.steps.map((r,e)=>({id:`${n.id}.${e+1}`,thought:r.thought??"",type:r.type,parent:n})))}async runConditionallyWithinStep(l,s,i){return l?this.step(s,i):i()}parkOnTerminalFailure(l,s,i){return BP(this.page,{where:l,spec:this.testInfo.file,testInfo:this.testInfo,resume:i},s)}async onExecutionError(l,s){try{return await this.initiateFallbackSequence({...l,type:"action"})}catch(i){if(!this.currentThought){let{locator:h,method:n}=l;this.testRunAnalytics.testRunActionExecutionFailure({locator:h?.toString()??"",selector:h?._selector??"",method:n,checksumStepId:this.checksumStepId??"",error:i instanceof Error?i.toString():String(i)})}let{locator:f,method:g}=l;if(await this.parkOnTerminalFailure(`${g} ${f?.toString()??""}`.trim(),i,s===void 0||s===this.page.mainFrame()?{kind:"action",method:g}:void 0))return;throw i}}async initiateFallbackSequence(l,{fallbackTypes:s}={}){q(`[initiateFallbackSequence] with type: ${l.type}...`);let i=this.fallbacks.find(p=>p instanceof Ji);if(i){let p=i.getFailedThought(),h=this.variableStore.getActiveVariables();this.fallbacks.forEach(n=>{n.setThought(p),n.setVariables(h)})}let f=this.fallbacks.find(p=>p instanceof nr);if(f){let p=f.failingThought;this.fallbacks.forEach(h=>{h instanceof nr&&h.setVariables(this.variableStore.getActiveVariables()),h.setThought(p)})}let g=this.fallbacks;s&&(g=g.filter(p=>s.reduce((h,n)=>h||p instanceof n,!1))),g=g.filter(p=>p.canResolve(l));try{for(let p of g){let h=p.toString();h&&console.log(`Using ${h}`);try{await this.runConditionallyWithinStep(l.type!=="assertion"||!l.withChecksumAI,p.getRecoveryAttemptTitle(l),async()=>this.runFallback(p,l))}catch(n){if(l.withChecksumAI&&n.message==="fetch failed")throw new Error(gc);n instanceof od&&n.fallbackResult==="hard_assertion"&&qBe(l.error,"hard_assertion"),h&&console.log(`Failed to use ${h}`),p.cancel();continue}return!0}throw l.error}finally{this.resetFallbacks()}}resetFallbacks(){this.fallbacks=[this.constructFallback(Qd).init()]}async shutdown(){if(this.shouldRecordRRwebEvents()&&this.timeMachine){let l=this.timeMachine;try{await l.flushRRwebEventsToFile();let s=l.getRRwebFilePath();s&&this.monitorBridge.addAsset({type:"rrweb-recording",path:s,testId:this.checksumTestId,fileName:Eo.basename(s)})}catch(s){q("Error shutting down RRweb events recording",s)}q("Flushing analytics events......"),await this.testRunAnalytics.close()}}sortFallbacks(){let l=[Qd,Dd,Nd,Rd,Ji];this.fallbacks.sort((s,i)=>l.indexOf(s.constructor)-l.indexOf(i.constructor))}constructFallback(l){return new l(this.page,this.evaluateWithChecksum.bind(this),this,this.pageInteractor,{generateSelectionData:this.runMode!=="normal"},this,this._context)}async prepareForTestArtifacts(){if((this.options.useMockData||this.runMode==="refactor")&&await this.prepareAPIMock(),this.traceMode&&this.traceMode!=="off"){let l=await this.getTraceFilePath();l&&this.monitorBridge.addAsset({type:"trace",path:l,testId:this.checksumTestId,project:this.testInfo.project.name})}}getTraceFilePath(){try{return this.hasRuntimeStartedTrace?Promise.resolve(z_(kE(this.testInfo.file),this.checksumTestId).replace(".zip",".original.zip")):Promise.resolve(this.testInfo.outputPath("trace.zip"))}catch{return Promise.resolve(void 0)}}prepareMockData(){let l=q_(kE(this.testInfo.file)),s=Eo.join(l,`${this.checksumTestId}.har.zip`);if(!(0,$t.existsSync)(s))throw new Error("Could not find har file or zip file");let i=Eo.join(l,"tmp");(0,$t.existsSync)(i)||(0,$t.mkdirSync)(i);let f=(0,$t.readFileSync)(s),g=uq(new Uint8Array(f));for(let[h,n]of Object.entries(g)){if(h.endsWith("/"))continue;let r=Eo.join(i,h);(0,$t.mkdirSync)(Eo.dirname(r),{recursive:!0}),(0,$t.writeFileSync)(r,n),this.unzippedHarData.push(r)}let p=Eo.join(i,"test.har");if(!(0,$t.existsSync)(p))throw this.cleanupMockData(),new Error(`Could not find har file ${p} after unzipping ${s}`);return p}cleanupMockData(){this.unzippedHarData.forEach(s=>{(0,$t.rmSync)(s)});let l=this.unzippedHarData[0];l&&(0,$t.rmSync)(Eo.dirname(l),{recursive:!0,force:!0})}async prepareAPIMock(){let l={GET:0,POST:0,PUT:0,DELETE:0};try{let s=this.prepareMockData();await this.page.routeFromHAR(s,{url:"*/**",notFound:"fallback",update:!1});let i=this.page._routes[0].handler;await this.page.route("**/*",f=>{let g=f.request().headers(),p=f.request().method(),h=(l[p]??0)+1;l[p]=h,g["Checksum-Id"]=h.toString(),f.request()._applyFallbackOverrides({headers:g}),i(f)})}catch(s){q("Error setting up mock data",s.message)}}async loadAppSpecificRules(){this.appSpecificRules={};let l=Eo.join(Jc(Vn()),"settings.asr");if(!(0,$t.existsSync)(l)){q("Could not find ASR file");return}try{let s=await SE((0,$t.readFileSync)(l));this.appSpecificRules=JSON.parse(s.toString())||{}}catch(s){q("Could not read ASR file",s.message)}}addAutoRecoveryStepId(l){this.arStepIds.push(l)}};var s9=require("fs"),f9=require("module"),d9=require("path"),p9=require("vm"),g9=require("sucrase");function Rm(a){let o=(0,s9.readFileSync)(a,"utf8"),{code:l}=(0,g9.transform)(o,{transforms:["typescript","imports"],filePath:a}),s={},i={exports:s};(0,p9.runInThisContext)(`(function (exports, require, module, __filename, __dirname) {
240
+ ${l.description}`})}onTestComplete(l){return this.testRunAnalytics.testRunEnd({success:l,autoRecoveryTriggered:this.hasUsedAutoRecovery,summaries:this.arSummaries}),this.monitorBridge.addChecksumTestMetadata({checksumTestId:this.checksumTestId,pwTestId:this.testInfo.testId,retry:this.testInfo.retry,type:"autoRecoveryMetadata",data:{autoRecoveryTriggered:this.hasUsedAutoRecovery,autoRecovered:this.hasSuccessfulAutoRecovery&&l}}),this.monitorBridge.addChecksumTestMetadata({checksumTestId:this.checksumTestId,pwTestId:this.testInfo.testId,retry:this.testInfo.retry,type:"autoRecoverySummaries",data:this.arSummaries}),this.cleanupMockData(),Promise.resolve()}async wrapInternalSteps(l,s=this.page){try{return s.mainFrame()._checksumInternal=!0,s._checksumInternal=!0,await l()}finally{s.mainFrame()._checksumInternal=!1,s._checksumInternal=!1}}async conditionallyWrapInternalSteps(l,s){return l?this.wrapInternalSteps(s):s()}async wrapNoLocationSteps(l){try{return this.testInfo._checksumNoLocation=!0,await l()}finally{this.testInfo._checksumNoLocation=!1}}findAllStepsRecursively(l,s,i=[]){for(let f of l){(f._stepId===s||f.stepId===s)&&i.push(f);let g=[f.steps,f._testInfoSteps,f._steps].filter(Boolean);for(let p of g)this.findAllStepsRecursively(p,s,i)}return i}makeChecksumStepFunction(l){return s=>{if(!l)return;let i=s._stepId||s.stepId;this.findAllStepsRecursively(s._testInfo._steps,i).forEach(g=>{g.error={message:"ChecksumStepError",stack:"Fallback Failed",cause:void 0}})}}async createChecksumStep(l){let s,i={box:!0,noLocation:!0,obtainStep:u(f=>{s=f},"obtainStep")};if(await this.step(l.title,this.makeChecksumStepFunction(l.withError),!1,i),s?.stepId&&this.arStepIds.push(s.stepId),!s)throw new Error("Checksum step was not created");return s}async step(l,s,i=!0,{obtainStep:f=void 0,box:g=!1,noLocation:p=void 0}={}){let h=this.testInfo._checksumNoLocation;try{this.testInfo._checksumInternal=i===!0,p!==void 0&&(this.testInfo._checksumNoLocation=p),await this.test.step(l,s??(()=>{}),{obtainStep:f,box:g})}finally{this.testInfo._checksumInternal=!1,this.testInfo._checksumNoLocation=h}}addErrorMessage(l,s){this.testInfo.addError(l,s)}async evaluateWithChecksum(l,s,i=!0){this.navigationPromise&&await this.navigationPromise;let f=this.page.evaluate.bind(this.page);return this.conditionallyWrapInternalSteps(i,()=>f(l,s))}getChecksumTestId(){return this.checksumTestId}addNewThought(l,s,i=!1){let f={thought:l,type:s,...i?{children:[]}:{}};if(!this.currentThought)this.highLevelThoughts.push(f);else if(this.currentThought.children)this.currentThought.children.push(f),f.parent=this.currentThought;else{let p=this.currentThought.parent;p?(p.children=p.children??[],p.children.push(f),f.parent=p):this.highLevelThoughts.push(f)}let g=f.parent;return g?f.id=`${g.id}.${g.children?.length??0}`:f.id=`${++this.thoughtsCounter}`,this.currentThought=f,f}buildThoughtsChainForFallback(l=this.highLevelThoughts){let s=[];return l.forEach(i=>{s.push(i.thought),i.children&&s.push(...this.buildThoughtsChainForFallback(i.children))}),s}compoundSelection(...l){let s=super.compoundSelection(...l);return s.setAnalytics(()=>this.testRunAnalytics),this.checksumStepId&&this.options.useChecksumSelectors&&this.setCompoundSelectorFallback(this.checksumStepId),s}setSelectorFallback(l){let s={checksumId:l,fileName:this.testInfo.file,testId:this.checksumTestId,apiKey:this.config.apiKey,apiURL:this.config.apiURL,timeout:kQ};this.pushFallback(this.constructFallback(Nd).init(s)),this.pushFallback(this.constructFallback(Rd).init(s))}setCompoundSelectorFallback(l){this.pushFallback(this.constructFallback(Dd).init({checksumId:l,fileName:this.testInfo.file,testId:this.checksumTestId,apiKey:this.config.apiKey,apiURL:this.config.apiURL,timeout:kQ}))}setAIFallback(l,s){let i=this.options.useChecksumAI.arVersion===1,f=u(()=>{let p=this.buildThoughtsChainForFallback(),h={title:this.testInfo.title},n={testFileName:this.testInfo.file,testId:this.testInfo.testId,testSuiteId:process.env.CHECKSUM_TEST_SUITE_ID||""},r={previous:p.slice(0,-1),failing:l,next:p.slice(1)},e={storyInfo:h,testIdentification:n,fallbackConfig:{arMode:this.options.useChecksumAI.arMode??"one_shot",overrideOptions:{...this.options.useChecksumAI.overrideOptions,...this.options.useChecksumAI.modelName&&!this.options.useChecksumAI.overrideOptions?.modelName?{modelName:this.options.useChecksumAI.modelName}:{}},markRecovered:this.options.useChecksumAI.markRecovered},thoughts:r,config:{apiURL:this.config.apiURL,apiKey:this.config.apiKey},type:s};return this.constructFallback(nr).init(e)},"createArFallback"),g=u(()=>{let p=typeof this.options.useChecksumAI=="object"?this.options.useChecksumAI:void 0,h=p?.arMode,n=p?.overrideOptions;return this.constructFallback(Ji).init({goal:this.testInfo.title,testFile:this.testInfo.file,apiKey:this.config.apiKey,apiURL:this.config.apiURL,testId:this.checksumTestId,thoughts:this.buildThoughtsChainForFallback(),...h!==void 0?{arMode:h}:{},...n!==void 0?{overrideOptions:n}:{},fallbackType:s})},"createAIFallback");return i?this.pushFallback(g()):this.pushFallback(f()),this.proxy}pushFallback(l){this.fallbacks.push(l),this.sortFallbacks()}handleAIFallback(l,s,i){let f=l.fallbackAnalyticsPayload.iterationSteps,g=f.length>0?i/f.length:0,p=s.fbResult??"failed";this.testRunAnalytics.testRunFallbackExecution({result:p,failedThought:l.getFailedThought(),summary:s.summary??"",stepsPayload:l.fallbackAnalyticsPayload,type:l.fallbackType,duration:i,avgDuration:g,success:["finish","soft_assertion"].includes(p)}),this.arResults.push({failedThought:l.getFailedThought(),result:p,...s.thought!==void 0?{thought:s.thought}:{}})}handleAutoRecovery(l,s,i,f){let g=i.stepsThoughts??[],p=g.length>0?f/g.length:0;this.testRunAnalytics.testRunAutoRecovery({failingThought:l.failingThought,type:s.type,finalThought:i.thought??"",result:i.fbResult??"failed",duration:f,avgStepDuration:p,stepsThoughts:g,version:"v1"})}async runFallback(l,s){let i=Date.now(),f=l.resolve(s),g=await Re(f,l.timeout),p=Date.now()-i;if(!g)throw this.hasSuccessfulAutoRecovery=!1,this.createChecksumStep({title:"Recovery Failed",withError:!0}),new Error("Fallback failed");l instanceof Ji&&(this.hasUsedAutoRecovery=!0,this.handleAIFallback(l,g,p)),l instanceof nr&&(this.hasUsedAutoRecovery=!0,this.handleAutoRecovery(l,s,g,p));let h=g.thought?`: ${g.thought}`:"";if(g.fbResult==="failed")throw this.hasSuccessfulAutoRecovery=!1,this.createChecksumStep({title:`Recovery Failed${h}`,withError:!0}),new Error("Fallback failed");if(g.fbResult==="hard_assertion")throw this.hasSuccessfulAutoRecovery=!1,this.createChecksumStep({title:`Recovery Failed${h}`,withError:!0}),new od(g.fbResult);this.hasUsedAutoRecovery&&(this.hasSuccessfulAutoRecovery=!0),l instanceof Ji&&g.summary&&this.arSummaries.push(g.summary),l instanceof nr&&g.thought&&this.arSummaries.push(g.thought),this.createChecksumStep({title:`Recovery Complete${h}`});let n=this.currentThought;if(n&&g.steps.length===1){let r=g.steps[0];r?.thought&&(n.thought=r.thought)}else n&&(n.children=g.steps.map((r,e)=>({id:`${n.id}.${e+1}`,thought:r.thought??"",type:r.type,parent:n})))}async runConditionallyWithinStep(l,s,i){return l?this.step(s,i):i()}parkOnTerminalFailure(l,s,i){return BP(this.page,{where:l,spec:this.testInfo.file,testInfo:this.testInfo,resume:i},s)}async onExecutionError(l,s){try{return await this.initiateFallbackSequence({...l,type:"action"})}catch(i){if(!this.currentThought){let{locator:h,method:n}=l;this.testRunAnalytics.testRunActionExecutionFailure({locator:h?.toString()??"",selector:h?._selector??"",method:n,checksumStepId:this.checksumStepId??"",error:i instanceof Error?i.toString():String(i)})}let{locator:f,method:g}=l;if(await this.parkOnTerminalFailure(`${g} ${f?.toString()??""}`.trim(),i,s===void 0||s===this.page.mainFrame()?{kind:"action",method:g}:void 0))return;throw i}}async initiateFallbackSequence(l,{fallbackTypes:s}={}){q(`[initiateFallbackSequence] with type: ${l.type}...`);let i=this.fallbacks.find(p=>p instanceof Ji);if(i){let p=i.getFailedThought(),h=this.variableStore.getActiveVariables();this.fallbacks.forEach(n=>{n.setThought(p),n.setVariables(h)})}let f=this.fallbacks.find(p=>p instanceof nr);if(f){let p=f.failingThought;this.fallbacks.forEach(h=>{h instanceof nr&&h.setVariables(this.variableStore.getActiveVariables()),h.setThought(p)})}let g=this.fallbacks;s&&(g=g.filter(p=>s.reduce((h,n)=>h||p instanceof n,!1))),g=g.filter(p=>p.canResolve(l));try{for(let p of g){let h=p.toString();h&&console.log(`Using ${h}`);try{await this.runConditionallyWithinStep(l.type!=="assertion"||!l.withChecksumAI,p.getRecoveryAttemptTitle(l),async()=>this.runFallback(p,l))}catch(n){if(l.withChecksumAI&&n.message==="fetch failed")throw new Error(gc);n instanceof od&&n.fallbackResult==="hard_assertion"&&qBe(l.error,"hard_assertion"),h&&console.log(`Failed to use ${h}`),p.cancel();continue}return!0}throw l.error}finally{this.resetFallbacks()}}resetFallbacks(){this.fallbacks=[this.constructFallback(Qd).init()]}detachContextListeners(){this.pageInteractor.removeListener("page")}async shutdown(){if(this.detachContextListeners(),this.shouldRecordRRwebEvents()&&this.timeMachine){let l=this.timeMachine;try{await l.flushRRwebEventsToFile();let s=l.getRRwebFilePath();s&&this.monitorBridge.addAsset({type:"rrweb-recording",path:s,testId:this.checksumTestId,fileName:Eo.basename(s)})}catch(s){q("Error shutting down RRweb events recording",s)}q("Flushing analytics events......"),await this.testRunAnalytics.close()}}sortFallbacks(){let l=[Qd,Dd,Nd,Rd,Ji];this.fallbacks.sort((s,i)=>l.indexOf(s.constructor)-l.indexOf(i.constructor))}constructFallback(l){return new l(this.page,this.evaluateWithChecksum.bind(this),this,this.pageInteractor,{generateSelectionData:this.runMode!=="normal"},this,this._context)}async prepareForTestArtifacts(){if((this.options.useMockData||this.runMode==="refactor")&&await this.prepareAPIMock(),this.traceMode&&this.traceMode!=="off"){let l=await this.getTraceFilePath();l&&this.monitorBridge.addAsset({type:"trace",path:l,testId:this.checksumTestId,project:this.testInfo.project.name})}}getTraceFilePath(){try{return this.hasRuntimeStartedTrace?Promise.resolve(z_(kE(this.testInfo.file),this.checksumTestId).replace(".zip",".original.zip")):Promise.resolve(this.testInfo.outputPath("trace.zip"))}catch{return Promise.resolve(void 0)}}prepareMockData(){let l=q_(kE(this.testInfo.file)),s=Eo.join(l,`${this.checksumTestId}.har.zip`);if(!(0,$t.existsSync)(s))throw new Error("Could not find har file or zip file");let i=Eo.join(l,"tmp");(0,$t.existsSync)(i)||(0,$t.mkdirSync)(i);let f=(0,$t.readFileSync)(s),g=uq(new Uint8Array(f));for(let[h,n]of Object.entries(g)){if(h.endsWith("/"))continue;let r=Eo.join(i,h);(0,$t.mkdirSync)(Eo.dirname(r),{recursive:!0}),(0,$t.writeFileSync)(r,n),this.unzippedHarData.push(r)}let p=Eo.join(i,"test.har");if(!(0,$t.existsSync)(p))throw this.cleanupMockData(),new Error(`Could not find har file ${p} after unzipping ${s}`);return p}cleanupMockData(){this.unzippedHarData.forEach(s=>{(0,$t.rmSync)(s)});let l=this.unzippedHarData[0];l&&(0,$t.rmSync)(Eo.dirname(l),{recursive:!0,force:!0})}async prepareAPIMock(){let l={GET:0,POST:0,PUT:0,DELETE:0};try{let s=this.prepareMockData();await this.page.routeFromHAR(s,{url:"*/**",notFound:"fallback",update:!1});let i=this.page._routes[0].handler;await this.page.route("**/*",f=>{let g=f.request().headers(),p=f.request().method(),h=(l[p]??0)+1;l[p]=h,g["Checksum-Id"]=h.toString(),f.request()._applyFallbackOverrides({headers:g}),i(f)})}catch(s){q("Error setting up mock data",s.message)}}async loadAppSpecificRules(){this.appSpecificRules={};let l=Eo.join(Jc(Vn()),"settings.asr");if(!(0,$t.existsSync)(l)){q("Could not find ASR file");return}try{let s=await SE((0,$t.readFileSync)(l));this.appSpecificRules=JSON.parse(s.toString())||{}}catch(s){q("Could not read ASR file",s.message)}}addAutoRecoveryStepId(l){this.arStepIds.push(l)}};var s9=require("fs"),f9=require("module"),d9=require("path"),p9=require("vm"),g9=require("sucrase");function Rm(a){let o=(0,s9.readFileSync)(a,"utf8"),{code:l}=(0,g9.transform)(o,{transforms:["typescript","imports"],filePath:a}),s={},i={exports:s};(0,p9.runInThisContext)(`(function (exports, require, module, __filename, __dirname) {
241
241
  ${l}
242
242
  })`,{filename:a})(s,(0,f9.createRequire)(a),i,a,(0,d9.dirname)(a));let g=i.exports,p=g.default;return p===void 0?g:p}u(Rm,"requireChecksumConfig");var Nm=require("fs"),E9=require("module"),I9=require("node:util");var aa={defaultMerge:Symbol("deepmerge-ts: default merge"),skip:Symbol("deepmerge-ts: skip")},Xet={defaultMerge:aa.defaultMerge};function VBe(a,o){return o}u(VBe,"defaultMetaDataUpdater");function zBe(a,o){return a.filter(l=>l!==void 0)}u(zBe,"defaultFilterValues");var h9;(function(a){a[a.NOT=0]="NOT",a[a.RECORD=1]="RECORD",a[a.ARRAY=2]="ARRAY",a[a.SET=3]="SET",a[a.MAP=4]="MAP",a[a.OTHER=5]="OTHER"})(h9||(h9={}));function A9(a){return typeof a!="object"||a===null?0:Array.isArray(a)?2:KBe(a)?1:a instanceof Set?3:a instanceof Map?4:5}u(A9,"getObjectType");function YBe(a){let o=new Set;for(let l of a)for(let s of[...Object.keys(l),...Object.getOwnPropertySymbols(l)])o.add(s);return o}u(YBe,"getKeys");function $Be(a,o){return typeof a=="object"&&Object.prototype.propertyIsEnumerable.call(a,o)}u($Be,"objectHasProperty");function v9(a){let o=0,l=a[0]?.[Symbol.iterator]();return{[Symbol.iterator](){return{next(){do{if(l===void 0)return{done:!0,value:void 0};let s=l.next();if(s.done===!0){o+=1,l=a[o]?.[Symbol.iterator]();continue}return{done:!1,value:s.value}}while(!0)}}}}}u(v9,"getIterableOfIterables");var y9=["[object Object]","[object Module]"];function KBe(a){if(!y9.includes(Object.prototype.toString.call(a)))return!1;let{constructor:o}=a;if(o===void 0)return!0;let l=o.prototype;return!(l===null||typeof l!="object"||!y9.includes(Object.prototype.toString.call(l))||!l.hasOwnProperty("isPrototypeOf"))}u(KBe,"isRecord");function ZBe(a,o,l){let s={};for(let i of YBe(a)){let f=[];for(let h of a)$Be(h,i)&&f.push(h[i]);if(f.length===0)continue;let g=o.metaDataUpdater(l,{key:i,parents:a}),p=m9(f,o,g);p!==aa.skip&&(i==="__proto__"?Object.defineProperty(s,i,{value:p,configurable:!0,enumerable:!0,writable:!0}):s[i]=p)}return s}u(ZBe,"mergeRecords$1");function XBe(a){return a.flat()}u(XBe,"mergeArrays$1");function exe(a){return new Set(v9(a))}u(exe,"mergeSets$1");function txe(a){return new Map(v9(a))}u(txe,"mergeMaps$1");function nxe(a){return a.at(-1)}u(nxe,"mergeOthers$1");var Dm={mergeRecords:ZBe,mergeArrays:XBe,mergeSets:exe,mergeMaps:txe,mergeOthers:nxe};function b9(...a){return oxe({})(...a)}u(b9,"deepmerge");function oxe(a,o){let l=ixe(a,s);function s(...i){return m9(i,l,o)}return u(s,"customizedDeepmerge"),s}u(oxe,"deepmergeCustom");function ixe(a,o){return{defaultMergeFunctions:Dm,mergeFunctions:{...Dm,...Object.fromEntries(Object.entries(a).filter(([l,s])=>Object.hasOwn(Dm,l)).map(([l,s])=>s===!1?[l,Dm.mergeOthers]:[l,s]))},metaDataUpdater:a.metaDataUpdater??VBe,deepmerge:o,useImplicitDefaultMerging:a.enableImplicitDefaultMerging??!1,filterValues:a.filterValues===!1?void 0:a.filterValues??zBe,actions:aa}}u(ixe,"getUtils");function m9(a,o,l){let s=o.filterValues?.(a,l)??a;if(s.length===0)return;if(s.length===1)return TQ(s,o,l);let i=A9(s[0]);if(i!==0&&i!==5){for(let f=1;f<s.length;f++)if(A9(s[f])!==i)return TQ(s,o,l)}switch(i){case 1:return rxe(s,o,l);case 2:return axe(s,o,l);case 3:return cxe(s,o,l);case 4:return lxe(s,o,l);default:return TQ(s,o,l)}}u(m9,"mergeUnknowns");function rxe(a,o,l){let s=o.mergeFunctions.mergeRecords(a,o,l);return s===aa.defaultMerge||o.useImplicitDefaultMerging&&s===void 0&&o.mergeFunctions.mergeRecords!==o.defaultMergeFunctions.mergeRecords?o.defaultMergeFunctions.mergeRecords(a,o,l):s}u(rxe,"mergeRecords");function axe(a,o,l){let s=o.mergeFunctions.mergeArrays(a,o,l);return s===aa.defaultMerge||o.useImplicitDefaultMerging&&s===void 0&&o.mergeFunctions.mergeArrays!==o.defaultMergeFunctions.mergeArrays?o.defaultMergeFunctions.mergeArrays(a):s}u(axe,"mergeArrays");function cxe(a,o,l){let s=o.mergeFunctions.mergeSets(a,o,l);return s===aa.defaultMerge||o.useImplicitDefaultMerging&&s===void 0&&o.mergeFunctions.mergeSets!==o.defaultMergeFunctions.mergeSets?o.defaultMergeFunctions.mergeSets(a):s}u(cxe,"mergeSets");function lxe(a,o,l){let s=o.mergeFunctions.mergeMaps(a,o,l);return s===aa.defaultMerge||o.useImplicitDefaultMerging&&s===void 0&&o.mergeFunctions.mergeMaps!==o.defaultMergeFunctions.mergeMaps?o.defaultMergeFunctions.mergeMaps(a):s}u(lxe,"mergeMaps");function TQ(a,o,l){let s=o.mergeFunctions.mergeOthers(a,o,l);return s===aa.defaultMerge||o.useImplicitDefaultMerging&&s===void 0&&o.mergeFunctions.mergeOthers!==o.defaultMergeFunctions.mergeOthers?o.defaultMergeFunctions.mergeOthers(a):s}u(TQ,"mergeOthers");var O9=!1;function xm(a){O9=a}u(xm,"setLogToConsole");function q(...a){O9&&process.stdout.write(`${(0,I9.format)(...a)}
243
243
  `)}u(q,"log");function uxe(a,o){return a in o}u(uxe,"isLocatorMethod");async function k$(a,o,l,s=6e4){if(!uxe(o,a))return a;let i=u(()=>{let f=a[o];return typeof f=="function"?Reflect.apply(f,a,l):f},"executor");return s===null?i():Re(i(),s,"Execution timeout")}u(k$,"executePlaywrightMethodWithTimeout");function C$({envName:a,role:o}={}){let l=process.env.CHECKSUM_RUNTIME_ENV_OVERRIDE_NAME??a,s=process.env.CHECKSUM_RUNTIME_ENV_OVERRIDE_ROLE??o;return{...l!==void 0?{envName:l}:{},...s!==void 0?{role:s}:{}}}u(C$,"applyRuntimeEnvOverrides");function Qm(a){let o=process.env.CHECKSUM_RUNTIME_ENV_OVERRIDE_NAME;return a.environments?.find(({name:l})=>l===o)?.name??a.environments?.find(({default:l})=>l)?.name}u(Qm,"resolveTestingEnvironmentName");function w$(a,{role:o,environment:l}={},s=!1){let i;if(l&&(i=a.environments?.find(({name:p})=>l===p)),i??=a.environments?.find(({default:p})=>p),!i)throw new Error("Environment not found. Please make sure your environments are properly defined in the checksum.config.ts file.");let f=i.users,g;if(f&&(o!==void 0&&(g=f.find(p=>p.role===o)),g??=f.find(p=>p.default)),!g)throw new Error(`User not found. Please make sure the users array for the "${i.name}" environment is properly defined in the checksum.config.ts file.`);if(l&&i.name!==l){if(s)throw new Error(`Could not find environment with name "${l}" in config file`);console.warn(`Could not find environment with name "${l}" in config file, trying to use default environment`)}if(o&&g.role!==o){if(s)throw new Error(`Could not find user with role "${o}" for environment "${l}" in config file`);console.warn(`Could not find user with role "${o}" for environment "${l}" in config file, trying to login with environment's default user`)}return{environment:i,user:g}}u(w$,"resolveEnvironment");function sxe(a){let o=`${a??Vn()}/login.ts`;if(!(0,Nm.existsSync)(o))throw console.warn(`Could not locate the login.ts file. Please make sure your login file exists at ${o}`),new Error("Could not find login.ts file");try{return(0,E9.createRequire)(__filename)(o).default}catch(l){throw console.warn("Error loading login.ts file",l),l}}u(sxe,"requireLogin");async function fxe(a,o,{environment:l,user:s,config:i}){try{let f=u(()=>o(a,{environment:l,user:s,config:i}),"performLogin");"checksumAI"in a?await a.checksumAI(`Log in${s.role?` using ${s.role} role`:""}${l.name?` in ${l.name} environment`:""}`,f,{skipAutoRecovery:!0}):await f()}catch(f){throw console.warn(`The login method threw an exception, please check the login.ts file for the following error:
package/index.js CHANGED
@@ -146,7 +146,7 @@ ${f}`:r.stack}u(S4,"appendFetchStackTrace");U.exports.fetch=u(function(o,l=void
146
146
  `)[4]?.trim().match(/\(([^)]+)\)/);if(!(f&&f[1]))throw new Error;let h=f[1].split(":"),p=h.slice(0,-2).join(":"),g=h[h.length-2],i=`${k4.default.basename(p)}:${g}`;s&&(process.stdout.write(xC.default.format("\x1B[34m",i,"\x1B[0m",...l)+`
147
147
  `),setTimeout(()=>this.listeners.forEach(e=>e.onLog(...l)),0)),this.logStream&&this.logStream.write(`[${i}] ${l.map(e=>{if(typeof e=="object")try{return JSON.stringify(e,null,2)}catch{}return String(e)}).join(" ")}
148
148
  `)}catch{s&&process.stdout.write(xC.default.format(...l)+`
149
- `)}}shouldLog(o){switch(o){case"warning":return this.logLevel==="all"||this.logLevel==="warnings";case"error":return!0;case"info":return this.logLevel==="all";default:return!1}}addListener(o){this.listeners.push(o)}info(...o){this.log("info",...o)}warning(...o){this.log("warning",...o)}error(...o){this.log("error",...o)}setLogLevel(o){this.logLevel=o}setLogStream(o){this.logStream=o}},Ic=new DC,Ffe=Object.assign((...a)=>Ic.info(...a),{info:u((...a)=>Ic.info(...a),"info"),warning:u((...a)=>Ic.warning(...a),"warning"),error:u((...a)=>Ic.error(...a),"error"),setLogLevel:u(a=>Ic.setLogLevel(a),"setLogLevel"),setLogStream:u(a=>Ic.setLogStream(a),"setLogStream"),addLogListener:u(a=>Ic.addListener(a),"addLogListener")}),Oc=Ffe;var qs=require("node:perf_hooks");var Vs=class{constructor(o={}){this.options=o;this.priorityQueue=[];this.nonPriorityQueue=[];this.isRunning=!1;this.taskIndex=0;this.timeRunningTasks=0;this.timeGoingBack=0;this.tasksExecuted=0}static{u(this,"TaskTimeMachineQueue")}enqueue(o){let l=this.taskIndex++,s={...o,index:l,queuedAt:qs.performance.now()};if(o.priority)this.priorityQueue.push(s);else if(this.options.sortByTimestamp){let r=this.nonPriorityQueue.findIndex(f=>f.timestamp!==void 0&&o.timestamp!==void 0&&f.timestamp>o.timestamp);r===-1?this.nonPriorityQueue.push(s):this.nonPriorityQueue.splice(r,0,s)}else this.nonPriorityQueue.push(s);return l}popTask(){return this.priorityQueue.length>0?this.priorityQueue.shift():this.nonPriorityQueue.shift()}async runSingleTask(o,l){let s=qs.performance.now();try{if(this.options.logPerformance){let f=qs.performance.now()-o.queuedAt;Oc.info(`Running task, timestamp: ${o.timestamp} \x1B[36m${o.name}\x1B[0m, index: ${o.index}, was pending for ${f}ms`)}await l(o);let r=qs.performance.now()-s;this.timeRunningTasks+=r,this.options.logPerformance&&Oc.info("Finished running task, took",r,"ms.","Queue lengths:",`priority=${this.priorityQueue.length}`,`non-priority=${this.nonPriorityQueue.length}`),this.tasksExecuted++}catch(r){Oc.error("Task execution error:",r)}}async runTasks(o){if(!this.isRunning){this.isRunning=!0;try{for(;this.getQueueLength()>0;){let l=this.popTask();if(!l)break;await this.runSingleTask(l,o)}}finally{this.isRunning=!1,this.getQueueLength()>0&&this.options.logPerformance&&Oc.info("Accumulated time running tasks:",this.timeRunningTasks,"ms, from which time spent going back:",this.timeGoingBack)}}}getTasksAtTimestamp(o){return[...this.priorityQueue.filter(l=>l.timestamp===o),...this.nonPriorityQueue.filter(l=>l.timestamp===o)]}removeTasksAtTimestamp(o){this.priorityQueue=this.priorityQueue.filter(l=>l.timestamp!==o),this.nonPriorityQueue=this.nonPriorityQueue.filter(l=>l.timestamp!==o)}getQueueLength(){return this.priorityQueue.length+this.nonPriorityQueue.length}setTimeGoingBack(o){this.timeGoingBack=o}};var qDe=require("@playwright/test"),Ys=K(BC());function T4(a){if(!a)return;let{username:o,password:l,server:s}=a;return o&&l?new Ys.ProxyAgent({uri:`http://${o}:${l}@${s.replace("http://","")}`}):new Ys.ProxyAgent({uri:s})}u(T4,"makeWebProxyAgent");async function Mfe(a,o){let s=a.request().url();try{let f=await(0,Ys.fetch)(s,o?{dispatcher:o}:{}),h=f.status,p={};f.headers.forEach((c,d)=>p[d]=c),p["access-control-allow-origin"]="*";let g=parseInt(f.headers.get("content-length")||"0",10),n=25*1024*1024;if(g>n){await a.continue();return}if(!f.body){await a.fulfill({status:h,headers:p});return}let e=await f.arrayBuffer(),t=Buffer.from(e);await a.fulfill({status:h,headers:p,body:t})}catch{await a.continue()}}u(Mfe,"handleCorsRoute");async function P4(a,o,l){try{let s=a.page(),r=Je(s);if(l.has(r))return;l.add(r),await s.route(/^https?:\/\/(?!(?:localhost|127\.0\.0\.1|::1)).*/,f=>Mfe(f,o))}catch{}}u(P4,"preventCrossOriginErrors");var $De=require("@playwright/test");var zs=require("node:perf_hooks");async function B4(a,{shouldGoBack:o,shouldBatch:l,task:s,timestamp:r,beforeTimestamp:f,name:h,resolve:p,reject:g}){if(a.requireTimeMachineFrame().isDetached()&&g(),o){let e=zs.performance.now();await a.goBack(r,f),a.addTimeGoingBack(zs.performance.now()-e)}let n=x4(a,{taskForSafeRun:s,name:h,resolve:p,reject:g}),i=a.taskQueue.getQueueLength()>0&&l?Ufe(a,{firstTask:n,timestamp:r,name:h,resolve:p,reject:g}):[n];for(let e of i)await e()}u(B4,"runTaskWrapper");function x4(a,{taskForSafeRun:o,name:l,resolve:s,reject:r}){return async()=>{try{let f=zs.performance.now(),h=await He(o(a.requireTimeMachineFrame()),a.options.taskTimeout,()=>`Task execution timeout - ${l}, took ${zs.performance.now()-f}ms with timeout of ${a.options.taskTimeout}ms`);s(h)}catch(f){Oc.error("Task execution error:",f.message),r(f)}}}u(x4,"makeSafeRunTask");function Ufe(a,{firstTask:o,timestamp:l,name:s,resolve:r,reject:f}){let h=[o],p=a.taskQueue.getTasksAtTimestamp(l);return h.push(...p.map(({task:g})=>x4(a,{taskForSafeRun:u(()=>g({shouldGoBack:!1,shouldBatch:!1}),"taskForSafeRun"),name:s,resolve:r,reject:f}))),a.taskQueue.removeTasksAtTimestamp(l),h}u(Ufe,"collectBatchedTasks");var tRe=require("@playwright/test");var jfe="checksum is not defined";async function RC(a,o,{retriesLeft:l=3,retryWaitMS:s=1e3}={}){try{let{reducedHTML:r,currentChecksumId:f}=await o.evaluate(async({errorMessage:h,...p})=>{if(!window.checksum)throw new Error(h);return window.checksum.testGenerator.reduceHTML({},p)},{stopFlashingElementsDetection:!0,assignChecksumIdsToAllElements:!0,initialChecksumId:a.currentChecksumId,fromTimeMachine:!0,invalidateCache:!0,errorMessage:jfe});return a.currentChecksumId=f,{reducedHTML:r}}catch(r){if(l>0)return await ot(s),RC(a,o,{retriesLeft:l-1,retryWaitMS:s});throw r}}u(RC,"getReducedHTMLWithRetries");var aRe=require("@playwright/test");function QC({frameMsgBroker:a,recordingFrame:o,timeMachineFrame:l,handler:s}){let r="rrweb";if(!o)throw new Error("Recording frame is not initialized");a.subscribeToChannel(r,l,{originFrame:o,handler:s}),l.page().on("close",()=>a.unsubscribeFromChannel(r,l))}u(QC,"subscribeToRrwebEvents");var zg="checksum is not defined",$g=class a{constructor(o,l,s={headless:!0,logPerformance:!1,timestampBatchingEnabled:!1,sortByTimestamp:!1,taskTimeout:24e4,debugPort:void 0,frameMsgBrokerRegisterName:void 0}){this.frameMsgBroker=o;this.injectedScriptManager=l;this.options=s;this.currentTimestamp=0;this.currentBeforeTimestamp=!1;this.currentChecksumId="0";this.timeGoingBack=0;this.pagesWithCorsInterception=new Set;this.reducedHTMLCache=new Map;this.taskQueue=new Vs({sortByTimestamp:s.sortByTimestamp,logPerformance:s.logPerformance}),this.webProxyAgent=T4(s.webProxy)}static{u(this,"ChecksumTimeMachine")}requireTimeMachineFrame(){if(!this.timeMachineFrame)throw new Error("Time machine frame is not initialized");return this.timeMachineFrame}addTimeGoingBack(o){this.timeGoingBack+=o,this.taskQueue.setTimeGoingBack(this.timeGoingBack)}getPage(){return this.requireTimeMachineFrame().page()}getFrame(){return this.requireTimeMachineFrame()}hasReplayFrame(){return!!this.timeMachineFrame}async prepare(o,l,s){if(this.recordingFrame=o,await this.frameMsgBroker.register("live",o),this.options.recordOnly&&!l){this.prepareRecordOnly(o);return}l?this.timeMachineFrame=l:this.timeMachineFrame=await this.prepareBrowserContextAndFrame(),await P4(this.timeMachineFrame,this.webProxyAgent,this.pagesWithCorsInterception),this.options.frameMsgBrokerRegisterName&&await this.frameMsgBroker.register(this.options.frameMsgBrokerRegisterName,this.timeMachineFrame),s&&s(this.timeMachineFrame),await this.injectedScriptManager.addTrackedFrame(this.timeMachineFrame),this.timeMachineFrame.page().on("framenavigated",async r=>{await this.injectedScriptManager.onFrameNavigated(r)}),QC({frameMsgBroker:this.frameMsgBroker,recordingFrame:this.recordingFrame,timeMachineFrame:this.requireTimeMachineFrame(),handler:this.rrwebEventHandler.bind(this)}),this.taskQueue=new Vs({sortByTimestamp:this.options.sortByTimestamp,logPerformance:this.options.logPerformance}),await this.start()}prepareRecordOnly(o){QC({frameMsgBroker:this.frameMsgBroker,recordingFrame:o,timeMachineFrame:o,handler:this.rrwebEventHandler.bind(this)})}async start(){await this.requireTimeMachineFrame().evaluate(async o=>{if(!window.checksum)throw new Error(o);window.checksum.timeMachine.start({firstEventTimestamp:Date.now()})},zg)}setBrowserContext(o){this.timeMachineBrowserContext=o}async executeTask(o,l,{name:s,beforeTimestamp:r=!1,priority:f=!1}={}){return new Promise((h,p)=>{let g=u((n={shouldGoBack:!0,shouldBatch:this.options.timestampBatchingEnabled??!1})=>B4(this,{...n,task:o,timestamp:l,beforeTimestamp:r,name:s,resolve:h,reject:p}),"taskWrapper");this.taskQueue.enqueue({name:s,task:g,timestamp:r&&l!==void 0?l-1:l,priority:f}),this.runTasks()})}static{this.REDUCED_HTML_CACHE_MAX=20}executeReducedHTMLTask(o,{priority:l=!1}={}){let s=this.reducedHTMLCache.get(o);if(s){let r=new Lu(s);return Promise.resolve(r.getRrwebIdsReducedDomString())}return this.executeTask(async r=>{let h=(await RC(this,r)).reducedHTML;return h&&this.setReducedHTMLCache(o,h),new Lu(h).getRrwebIdsReducedDomString()},o,{name:"getReducedHTMLForTimestamp",priority:l})}setReducedHTMLCache(o,l){for(this.reducedHTMLCache.delete(o),this.reducedHTMLCache.set(o,l);this.reducedHTMLCache.size>a.REDUCED_HTML_CACHE_MAX;){let s=this.reducedHTMLCache.keys().next().value;if(s===void 0)break;this.reducedHTMLCache.delete(s)}}goBack(o,l=!1){return this.currentBeforeTimestamp===l&&this.currentTimestamp===o?Promise.resolve():(this.currentTimestamp=o,this.currentBeforeTimestamp=l,this.requireTimeMachineFrame().evaluate(({timestamp:s,beforeTimestamp:r,errorMessage:f})=>{if(!window.checksum)throw new Error(f);return s===void 0?window.checksum.timeMachine.goLive():window.checksum.timeMachine.goBack(s,{beforeTimestamp:r})},{timestamp:o,beforeTimestamp:l,errorMessage:zg}))}async runTasks(){await this.taskQueue.runTasks(async o=>{await o.task()})}async rrwebEventHandler(o){let l=JSON.stringify(o);if(this.timeMachineFrame)try{await this.timeMachineFrame.evaluate(function({eventsJSON:s,errorMessage:r}){if(!window.checksum)throw new Error(r);let f=JSON.parse(s);return window.checksum.timeMachine.handleEvents(f)},{eventsJSON:l,errorMessage:zg})}catch{}return l}async makeBrowserContext(){let o=[];this.options.debugPort&&o.push(`--remote-debugging-port=${this.options.debugPort}`);let{headless:l}=this.options,s=await D4.chromium.launch({...l!==void 0?{headless:l}:{},args:o});return this.timeMachineBrowserContext=await s.newContext({bypassCSP:!0}),this.timeMachineBrowserContext}async makeFrame(){if(!this.timeMachineBrowserContext)throw new Error("Time machine browser context is not initialized");return(await this.timeMachineBrowserContext.newPage()).mainFrame()}async prepareBrowserContextAndFrame(){return this.timeMachineBrowserContext||await this.makeBrowserContext(),this.makeFrame()}async toggleTimeMachineHandleEvents(o){try{await this.requireTimeMachineFrame().evaluate(({shouldHandleEvents:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);return window.checksum.timeMachine.setShouldHandleEvents(l)},{shouldHandleEvents:o,errorMessage:zg})}catch{}}};var Hfe=!0,si="checksum is not defined";async function R4(a,o,l){if(l?.selector)return{...l,selector:l.selector,locator:l.locator??"",clickOffset:l.position};if(!o)return a.logger.log(`[getSelectionDataForChecksumId] checksumid not provided (${o})`),{...l,selector:o,locator:`locator("${o}")`};let s=await Wfe(a,o);return Hfe&&s.invalid&&s.rrwebId&&(s=await Jfe(a,o,s)),s.selector||a.logger.log(`[getSelectionDataForChecksumId] Could not get selector for checksumid: ${o}. If checksumid is correct, try to change app rules preMapReducedHTMLSelectors to true`),s}u(R4,"getSelectionDataForChecksumId");function Wfe(a,o){return a.evaluateWithChecksum(async({checksumId:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);let{selector:r,locator:f,clickOffset:h,parentFramesSelectors:p,invalid:g,rrwebId:n}=await window.checksum.testGenerator.getSelectorForChecksumId(l),i=await window.checksum.testGenerator.getElementForChecksumId(l),e=i instanceof HTMLOptionElement&&i.value?i.value:void 0;return{selector:r,locator:f,clickOffset:h,selectOptionValue:e,parentFramesSelectors:p,invalid:g,rrwebId:n}},{checksumId:o,errorMessage:si})}u(Wfe,"fetchSelectorForChecksumId");async function Jfe(a,o,l){a.logger.log(`[getSelectionDataForChecksumId] Could not get selector for checksumid: ${o}. Trying to use time machine...`);let s=l;try{let r=await Gfe(a,l.rrwebId);s={...l,...r}}catch{a.logger.log(`[getSelectionDataForChecksumId] error using time machine to get selector for checksumid: ${o}`)}return a.logger.log(`[getSelectionDataForChecksumId] got selector: ${s.selector} for checksumid: ${o} from time machine`),s}u(Jfe,"applyTimeMachineFallback");async function Gfe(a,o){if(!a.rrwebEventAtLastReducedHTML)return;let l=a.getTimeMachine();return l?await l.executeTask(r=>r.evaluate(async({rrwebId:f,errorMessage:h})=>{if(!window.checksum)throw new Error(h);return window.checksum.testGenerator.getInspectedElementSelectionResultByRRwebId(f,{ignoredIframesSelectors:[".replayer-wrapper > iframe"],fromTimeMachine:!0})},{rrwebId:o,errorMessage:si}),a.rrwebEventAtLastReducedHTML.timestamp,{name:"getSelectionDataForRRwebIdAtReduceHTMLTime"})??void 0:void 0}u(Gfe,"getSelectionDataForRRwebIdAtReduceHTMLTime");async function Q4(a,o,l){return o?(await a.evaluateWithChecksum(async({selector:r,parentFramesSelectors:f,errorMessage:h})=>{if(!window.checksum)throw new Error(h);return window.checksum.testGenerator.getSelectionDataForSelector(r,f)},{selector:o,parentFramesSelectors:l,errorMessage:si}))?.esraMetadata:void 0}u(Q4,"getESRAForSelector");async function N4(a,o){return await a.evaluateWithChecksum(async({getMoreItemsId:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);return window.checksum.testGenerator.getMoreItemsForTemplate(l,{})},{getMoreItemsId:o,errorMessage:si})??{items:"",hasMoreItems:!1}}u(N4,"getMoreItemsForTemplate");function L4(a,o){return a.evaluateWithChecksum(async({checksumId:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);return window.checksum.testGenerator.scrollElementIntoViewByChecksumId(l)},{checksumId:o,errorMessage:si})}u(L4,"scrollElementIntoViewByChecksumId");function _4(a,o){return a.evaluateWithChecksum(async({rrwebId:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);return window.checksum.testGenerator.scrollElementIntoViewByRrwebId(l)},{rrwebId:o,errorMessage:si})}u(_4,"scrollElementIntoViewByRrwebId");function F4(a,o){return a.evaluateWithChecksum(async({rrwebId:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);return window.checksum.testGenerator.generateLocatorByRrwebId(l)},{rrwebId:o,errorMessage:si})}u(F4,"generateLocatorByRrwebId");function M4(a){return a.evaluateWithChecksum(async o=>{if(!window.checksum)throw new Error(o);return window.checksum.testGenerator.extractViewportHTML()},si)}u(M4,"getViewportHTML");function U4(a,o,l,s){return a.evaluateWithChecksum(async({rrwebId:r,direction:f,length:h,errorMessage:p})=>{if(!window.checksum)throw new Error(p);return window.checksum.testGenerator.scrollScrollableElement(r,f,h)},{rrwebId:o,direction:l,length:s,errorMessage:si})}u(U4,"scrollScrollableElement");var vQe=require("@playwright/test"),bQe=require("@playwright/test");var fQe=K(jH());function HH(a,o){let l=Math.max([...a].length,[...o].length);return l===0?1:1-ide(a,o)/l}u(HH,"levenshteinSimilarity");function ide(a,o){if(a===o)return 0;let l=[...a],s=[...o];if(l.length===0||s.length===0)return Math.max(l.length,s.length);let r=s.map((h,p)=>p+1),f=s.length;for(let[h,p]of l.entries()){let g=h,n=h+1,i=[];for(let[e,t]of r.entries()){let c=p===s[e]?0:1;n=Math.min(t+1,n+1,g+c),i.push(n),g=t}r=i,f=n}return f}u(ide,"levenshteinDistance");var $C=class{constructor(o){this.data=o;this.toJSON=u(()=>this.data,"toJSON")}static{u(this,"SimilarityRecord")}getSimilar(o){let l=null,s=-1/0;for(let[r,f]of Object.entries(this.data)){let h=HH(o,r);h>s&&(s=h,l=f)}return l}},th=class a extends $C{static{u(this,"RectangleIndex")}constructor(o){super(a.preprocessRectangles(o))}static{this.preprocessRectangles=u(o=>{let l=[...new Map([...o].map(r=>[JSON.stringify(r.vertices),r])).values()],s={};return l.forEach(r=>{let f=s[r.text]??[];f.push(r),f.sort((h,p)=>{let g=a.calculateArea(h.vertices),n=a.calculateArea(p.vertices);return g-n}),s[r.text]=f}),s},"preprocessRectangles")}static{this.calculateArea=u(o=>{let[l,s,,r]=o;if(!l||!s||!r)return 0;let f=Math.abs(s.x-l.x),h=Math.abs(r.y-l.y);return f*h},"calculateArea")}getRectangleByTextAndSizeRanking(o,l){let s=!l||!Number(l)?0:Number(l),r=this.getSimilar(o);if(!r||r.length===0)return null;let f=Math.min(Math.max(s,0),r.length-1);return r[f]??null}};var nh=class{constructor(){this.config={}}static{u(this,"PageInteractorAPI")}};var WH=require("path"),JH=require("fs");async function KC(a,o){if(!a.pageInteractorAPI)throw new Error("pageInteractorAPI is not defined");return new th(await a.pageInteractorAPI.getTextDetection(o))}u(KC,"getTextDetection");async function GH(a,o,l){try{if(!await o.evaluate(h=>h.tagName.toLowerCase()==="canvas"))throw new Error("Click attempted on a non-canvas element");let f=(await KC(a,await o.screenshot())).getRectangleByTextAndSizeRanking(l.canvasText,l.rectSizeIndex);if(!f)throw new Error(`Canvas click target not found for ${l.canvasText}`);a.logger.log(`Canvas click target: ${f}`),await a.actionGuardReturn(o.click({position:f.center}),"Canvas click could not be performed")}catch(s){throw a.logger.logError("Canvas click:",s.message),new Error("Canvas click action failed")}}u(GH,"canvasClick");function qH(a,o=!0,l=1e4){return new Promise(s=>{let f=0,h=u(()=>{if(a.activeDialog){let p=a.activeDialog;o&&(a.activeDialog=null),s(p)}else f>=l?s(null):(f+=1e3,setTimeout(h,1e3))},"checkDialog");h()})}u(qH,"waitForDialog");async function VH(a,o,l){if(!await o.evaluate(r=>r.tagName==="INPUT"&&r.getAttribute("type")==="file"))throw new Error("File upload action performed on non-file input element");let s=(l.files??[]).map(r=>(0,WH.join)(a.options.testAssetsDir,r)).filter(r=>(0,JH.existsSync)(r)?!0:(a.logger.log(`Upload file not found: ${r}. Filtering out.`),!1));if(!s.length)throw new Error("No files to upload");await a.actionGuardReturn(o.setInputFiles(s),"Set input files timeout")}u(VH,"performFileUploadAction");var SQe=require("@playwright/test"),kQe=require("@playwright/test");var rde="checksum is not defined";function cde(a){if(a.fileChooser){let o=a.fileChooser;return a.fileChooser=void 0,o}return null}u(cde,"getOpenedFileChooser");async function YH(a,o=[]){let l=cde(a);if(!l)return{};let s="fc_"+Math.random().toString(36).slice(2,4);return await a.evaluateWithChecksum(async([r,f,h])=>{if(!window.checksum)throw new Error(h);window.checksum.testGenerator.addForceIncludeElement(f,r)},[s,l.element(),rde]),{interruptionEvent:"fileUploadOpenedEvent",payload:{checksumid:s,customFiles:o}}}u(YH,"handleFileChooserEvent");async function zH(a,o,l){let s=o.querySelector(`[checksum-get-more-items='${l}']`);if(!s)throw new Error("Get more items root not found");let{items:r,hasMoreItems:f}=await a.getMoreItemsForTemplate(l);s.innerHTML=s.innerHTML+r,f||s.removeAttribute("checksum-get-more-items")}u(zH,"addMoreItemsToDom");async function ade(a,o){let l=Je(o),s=a.getLastActionForPage(l);return{id:l,url:o.url(),title:await o.title(),new:a.newPagesIds.includes(l),active:l===Je(a.getPage()),...s?{lastAction:s}:{}}}u(ade,"getPageInfo");async function $H(a){let o=a.getPage(),l=await Promise.all(o.context().pages().map(r=>ade(a,r))),s=a.getTimeMachine()?.getPage();return s&&s!==o&&(l=l.filter(r=>r.id!==Je(s))),a.newPagesIds=[],l}u($H,"getTabsInfo");var NQe=require("@playwright/test");async function KH(a,o,l){let s=a.getPage();a.loginFunction&&(await Promise.all([s.context().clearCookies(),s.evaluate(()=>localStorage.clear())]),await a.loginFunction(l??s,{...o!==void 0&&{role:o}}))}u(KH,"reauthenticate");function ZH(a){return a.map(o=>{if(o.fileName)return o.fileName;switch(o.mimeType){case"image/png":return"image_200x200.png";case"image/jpeg":return"image_200x200.jpg";case"application/pdf":return"document.pdf";case"text/csv":return"data.csv";default:return"file.txt"}})}u(ZH,"mapFileMIMETypeToFilename");function XH(a,o=!0){let l=a.fillValue;if(!l){let s=a.selector?.match(/(?<=value.*)('|").*/);s&&(l=s[0].slice(1,-1))}return typeof l!="string"&&(l="X"),o&&(a.fillValue=l),l}u(XH,"getActionFillValue");function eW(a,o){let l=o??a.options.actionTimeout;return l!==void 0?{timeout:l}:{}}u(eW,"actionTimeoutOption");function tW(a,o){let l=o??a.options.navigationTimeout;return l!==void 0?{timeout:l}:{}}u(tW,"navigationTimeoutOption");function nW(a,o,l,{isNavigation:s=!1,timeout:r}={}){return He(o,r??(s?a.options.navigationTimeout:a.options.actionTimeout),l)}u(nW,"actionGuardReturn");function oW(a,o,l=[]){return Cb(a.getFrame(),o??"",l)}u(oW,"makeLocator");function iW(host,locator){return eval("host.getFrame()."+locator)}u(iW,"makeLocatorFromLocator");async function rW(a,o){let l=await a.getPage().screenshot({type:"jpeg",scale:"css",timeout:5e3,...o});return{base64:`data:image/jpeg;base64,${l.toString("base64")}`,buffer:l}}u(rW,"takeScreenshot");function cW(a){return a.getFrame().url()}u(cW,"getCurrentURL");var ZQe=require("@playwright/test");var oh=class a{constructor(o){this.activeDialog=null;this.newPagesIds=[];this.listeners={dialog:null,filechooser:null,page:null};this.listenToContextPage=u(()=>{this.getPage().context().on("page",o=>{this.newPagesIds.push(o._guid)})},"listenToContextPage");this.listenToFileChooser=u(()=>{this.listeners.filechooser=async o=>{this.logger.log("File chooser event detected"),this.fileChooser=o},this.getPage().on("filechooser",this.listeners.filechooser)},"listenToFileChooser");this.evaluateWithChecksum=o.evaluateWithChecksum,this.getFrame=o.getFrame,this.getTimeMachine=o.getTimeMachine,this.logger=o.logger,this.options=o.options,this.pageInteractorAPI=o.pageInteractorAPI,this.loginFunction=o.loginFunction}static{u(this,"TestGenerationPageInteractorBase")}static{this.lastActions=new Map}static setLastAction(o,l){a.lastActions.set(o,l)}static getLastAction(o){return a.lastActions.get(o)}getPage(){return this.getFrame().page()}init(){this.listenToContextPage(),this.options.listenToFileChooser!==!1&&this.listenToFileChooser(),this.options.listenToDialog&&this.listenToDialog()}listenToDialog(){this.listeners.dialog=async o=>{this.activeDialog=o},this.getPage().on("dialog",this.listeners.dialog)}removeListener(o){try{switch(o){case"dialog":this.listeners.dialog&&(this.getPage().removeListener(o,this.listeners.dialog),this.listeners.dialog=null);break;case"filechooser":this.listeners.filechooser&&(this.getPage().off(o,this.listeners.filechooser),this.listeners.filechooser=null);break;case"page":this.listeners.page&&(this.getPage().context().off(o,this.listeners.page),this.listeners.page=null);break}}catch(l){this.logger.logError(`Error removing listener: ${o}`,l)}}getLastActionForPage(o){return a.getLastAction(o)}};var ude="checksum is not defined",tf=class extends oh{constructor(){super(...arguments);this.waitForDialog=u((l=!0,s=1e4)=>qH(this,l,s),"waitForDialog");this.performFileUploadAction=u(async(l,s)=>VH(this,l,s),"performFileUploadAction");this.getSelectionDataForAction=u(async(l,s)=>l.checksumid?this.getSelectionDataForChecksumId(l.checksumid,s):l.position?await this.evaluateWithChecksum(async([f,h,p])=>{if(!window.checksum)throw new Error(p);return window.checksum.testGenerator.getSelectorByPosition(f,h)},[l.position.x,l.position.y,ude])??{selector:"",locator:""}:l.selector?{selector:l.selector,locator:`locator("${l.selector}")`}:{selector:"",locator:""},"getSelectionDataForAction")}static{u(this,"TestGenerationPageInteractor")}reauthenticate(l,s){return KH(this,l,s)}mapFileMIMETypeToFilename(l){return ZH(l)}getActionFillValue(l,s=!0){return XH(l,s)}actionTimeoutOption(l){return eW(this,l)}navigationTimeoutOption(l){return tW(this,l)}actionGuardReturn(l,s,r={}){return nW(this,l,s,r)}makeLocator(l,s=[]){return oW(this,l,s)}makeLocatorFromLocator(l){return iW(this,l)}takeScreenshot(l){return rW(this,l)}getCurrentURL(){return cW(this)}async handleFileChooserEvent(l=[]){return YH(this,l)}async addMoreItemsToDom(l,s){return zH(this,l,s)}async getTabsInfo(){return $H(this)}async translateActionResponseToAgentPotentialAction(l,s=void 0,r={}){return sQ(this,l,s,r)}async performAction(l,s={}){return cQ(this,l,s)}getTextDetection(l){return KC(this,l)}canvasClick(l,s){return GH(this,l,s)}async getCurrentReducedHTML({retriesLeft:l=3,retryWaitMS:s=2e3,initialChecksumId:r="0",extractESRAForInterpretationRequiredElements:f=!1,stopFlashingElementsDetection:h=!1,assignChecksumIdsToAllElements:p}={}){try{return await aQ(this,{initialChecksumId:r,extractESRAForInterpretationRequiredElements:f,stopFlashingElementsDetection:h,assignChecksumIdsToAllElements:p})}catch(g){if(l>0)return this.logger.logError(`[getCurrentReducedHTML] Error: ${g.message}`),this.logger.logError(`Failed do obtain reduced HTML, trying again in ${s/1e3} seconds, ${l-1} to go.`),await ot(s),this.getCurrentReducedHTML({retriesLeft:l-1,retryWaitMS:s});throw g}}getActionEventCode(l){return GR[l]}getSelectionDataForChecksumId(l,s){return R4(this,l,s)}getESRAForSelector(l,s){return Q4(this,l,s)}getMoreItemsForTemplate(l){return N4(this,l)}scrollElementIntoViewByChecksumId(l){return L4(this,l)}scrollElementIntoViewByRrwebId(l){return _4(this,l)}generateLocatorByRrwebId(l){return F4(this,l)}getViewportHTML(){return M4(this)}scrollScrollableElement(l,s,r){return U4(this,l,s,r)}};var o$e=require("@playwright/test"),Qt=require("fs");var aW=require("module");var sde=(0,aW.createRequire)("/"),ol,fde,dde;try{ol=sde("worker_threads"),fde=ol.Worker,dde=ol.isMarkedAsUntransferable}catch{}var En=Uint8Array,nl=Uint16Array,pde=Int32Array,lW=new En([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),uW=new En([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),gde=new En([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),sW=u(function(a,o){for(var l=new nl(31),s=0;s<31;++s)l[s]=o+=1<<a[s-1];for(var r=new pde(l[30]),s=1;s<30;++s)for(var f=l[s];f<l[s+1];++f)r[f]=f-l[s]<<5|s;return{b:l,r}},"freb"),ol=sW(lW,2),fW=ol.b,hde=ol.r;fW[28]=258,hde[258]=28;var dW=sW(uW,0),Ade=dW.b,yNe=dW.r,tw=new nl(32768);for(Oe=0;Oe<32768;++Oe)fi=(Oe&43690)>>1|(Oe&21845)<<1,fi=(fi&52428)>>2|(fi&13107)<<2,fi=(fi&61680)>>4|(fi&3855)<<4,tw[Oe]=((fi&65280)>>8|(fi&255)<<8)>>1;var fi,Oe,nf=u((function(a,o,l){for(var s=a.length,r=0,f=new nl(o);r<s;++r)a[r]&&++f[a[r]-1];var h=new nl(o);for(r=1;r<o;++r)h[r]=h[r-1]+f[r-1]<<1;var p;if(l){p=new nl(1<<o);var g=15-o;for(r=0;r<s;++r)if(a[r])for(var n=r<<4|a[r],i=o-a[r],e=h[a[r]-1]++<<i,t=e|(1<<i)-1;e<=t;++e)p[tw[e]>>g]=n}else for(p=new nl(s),r=0;r<s;++r)a[r]&&(p[r]=tw[h[a[r]-1]++]>>15-a[r]);return p}),"hMap"),of=new En(288);for(Oe=0;Oe<144;++Oe)of[Oe]=8;var Oe;for(Oe=144;Oe<256;++Oe)of[Oe]=9;var Oe;for(Oe=256;Oe<280;++Oe)of[Oe]=7;var Oe;for(Oe=280;Oe<288;++Oe)of[Oe]=8;var Oe,pW=new En(32);for(Oe=0;Oe<32;++Oe)pW[Oe]=5;var Oe;var yde=nf(of,9,1);var vde=nf(pW,5,1),ZC=u(function(a){for(var o=a[0],l=1;l<a.length;++l)a[l]>o&&(o=a[l]);return o},"max"),ho=u(function(a,o,l){var s=o/8|0;return(a[s]|a[s+1]<<8)>>(o&7)&l},"bits"),XC=u(function(a,o){var l=o/8|0;return(a[l]|a[l+1]<<8|a[l+2]<<16)>>(o&7)},"bits16"),bde=u(function(a){return(a+7)/8|0},"shft"),ow=u(function(a,o,l){return(o==null||o<0)&&(o=0),(l==null||l>a.length)&&(l=a.length),new En(a.subarray(o,l))},"slc");var mde=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],mn=u(function(a,o,l){var s=new Error(o||mde[a]);if(s.code=a,Error.captureStackTrace&&Error.captureStackTrace(s,mn),!l)throw s;return s},"err"),Ede=u(function(a,o,l,s){var r=a.length,f=s?s.length:0;if(!r||o.f&&!o.l)return l||new En(0);var h=!l,p=h||o.i!=2,g=o.i;h&&(l=new En(r*3));var n=u(function(PR){var BR=l.length;if(PR>BR){var xR=new En(Math.max(BR*2,PR));xR.set(l),l=xR}},"cbuf"),i=o.f||0,e=o.p||0,t=o.b||0,c=o.l,d=o.d,A=o.m,y=o.n,v=r*8;do{if(!c){i=ho(a,e,1);var O=ho(a,e+1,3);if(e+=3,O)if(O==1)c=yde,d=vde,A=9,y=5;else if(O==2){var _=ho(a,e,31)+257,G=ho(a,e+10,15)+4,V=_+ho(a,e+5,31)+1;e+=14;for(var z=new En(V),Z=new En(19),T=0;T<G;++T)Z[gde[T]]=ho(a,e+T*3,7);e+=G*3;for(var st=ZC(Z),P=(1<<st)-1,m=nf(Z,st,1),T=0;T<V;){var Q=m[ho(a,e,P)];e+=Q&15;var I=Q>>4;if(I<16)z[T++]=I;else{var M=0,oe=0;for(I==16?(oe=3+ho(a,e,3),e+=2,M=z[T-1]):I==17?(oe=3+ho(a,e,7),e+=3):I==18&&(oe=11+ho(a,e,127),e+=7);oe--;)z[T++]=M}}var ie=z.subarray(0,_),fe=z.subarray(_);A=ZC(ie),y=ZC(fe),c=nf(ie,A,1),d=nf(fe,y,1)}else mn(1);else{var I=bde(e)+4,k=a[I-4]|a[I-3]<<8,B=I+k;if(B>r){g&&mn(0);break}p&&n(t+k),l.set(a.subarray(I,B),t),o.b=t+=k,o.p=e=B*8,o.f=i;continue}if(e>v){g&&mn(0);break}}p&&n(t+131072);for(var nt=(1<<A)-1,ft=(1<<y)-1,Be=e;;Be=e){var M=c[XC(a,e)&nt],me=M>>4;if(e+=M&15,e>v){g&&mn(0);break}if(M||mn(2),me<256)l[t++]=me;else if(me==256){Be=e,c=null;break}else{var Ee=me-254;if(me>264){var T=me-257,ye=lW[T];Ee=ho(a,e,(1<<ye)-1)+fW[T],e+=ye}var Le=d[XC(a,e)&ft],sn=Le>>4;Le||mn(3),e+=Le&15;var fe=Ade[sn];if(sn>3){var ye=uW[sn];fe+=XC(a,e)&(1<<ye)-1,e+=ye}if(e>v){g&&mn(0);break}p&&n(t+131072);var _d=t+Ee;if(t<fe){var TR=f-fe,FK=Math.min(fe,_d);for(TR+t<0&&mn(3);t<FK;++t)l[t]=s[TR+t]}for(;t<_d;++t)l[t]=l[t-fe]}}o.l=c,o.p=Be,o.b=t,o.f=i,c&&(i=1,o.m=A,o.d=d,o.n=y)}while(!i);return t!=l.length&&h?ow(l,0,t):l.subarray(0,t)},"inflt");var Ide=new En(0);var jo=u(function(a,o){return a[o]|a[o+1]<<8},"b2"),Wn=u(function(a,o){return(a[o]|a[o+1]<<8|a[o+2]<<16|a[o+3]<<24)>>>0},"b4"),ew=u(function(a,o){return Wn(a,o)+Wn(a,o+4)*4294967296},"b8");function Ode(a,o){return Ede(a,{i:2},o&&o.out,o&&o.dictionary)}u(Ode,"inflateSync");var nw=typeof TextDecoder<"u"&&new TextDecoder,Cde=0;try{nw.decode(Ide,{stream:!0}),Cde=1}catch{}var wde=u(function(a){for(var o="",l=0;;){var s=a[l++],r=(s>127)+(s>223)+(s>239);if(l+r>a.length)return{s:o,r:ow(a,l-1)};r?r==3?(s=((s&15)<<18|(a[l++]&63)<<12|(a[l++]&63)<<6|a[l++]&63)-65536,o+=String.fromCharCode(55296|s>>10,56320|s&1023)):r&1?o+=String.fromCharCode((s&31)<<6|a[l++]&63):o+=String.fromCharCode((s&15)<<12|(a[l++]&63)<<6|a[l++]&63):o+=String.fromCharCode(s)}},"dutf8");function Sde(a,o){if(o){for(var l="",s=0;s<a.length;s+=16384)l+=String.fromCharCode.apply(null,a.subarray(s,s+16384));return l}else{if(nw)return nw.decode(a);var r=wde(a),f=r.s,l=r.r;return l.length&&mn(8),f}}u(Sde,"strFromU8");var kde=u(function(a,o){return o+30+jo(a,o+26)+jo(a,o+28)},"slzh"),Tde=u(function(a,o,l){var s=jo(a,o+28),r=jo(a,o+30),f=Sde(a.subarray(o+46,o+46+s),!(jo(a,o+8)&2048)),h=o+46+s,p=Pde(a,h,r,l,Wn(a,o+20),Wn(a,o+24),Wn(a,o+42)),g=p[0],n=p[1],i=p[2];return[jo(a,o+10),g,n,f,h+r+jo(a,o+32),i]},"zh"),Pde=u(function(a,o,l,s,r,f,h){var p=r==4294967295,g=f==4294967295,n=h==4294967295,i=o+l,e=p+g+n;if(s&&e){for(;o+4<i;o+=4+jo(a,o+2))if(jo(a,o)==1)return[p?ew(a,o+4+8*g):r,g?ew(a,o+4):f,n?ew(a,o+4+8*(g+p)):h,1];s<2&&mn(13)}return[r,f,h,0]},"z64hs");function gW(a,o){for(var l={},s=a.length-22;Wn(a,s)!=101010256;--s)(!s||a.length-s>65558)&&mn(13);var r=jo(a,s+8);if(!r)return{};var f=Wn(a,s+16),h=Wn(a,s-20)==117853008;if(h){var p=Wn(a,s-12);h=Wn(a,p)==101075792,h&&(r=Wn(a,p+32),f=Wn(a,p+48))}for(var g=o&&o.filter,n=0;n<r;++n){var i=Tde(a,f,h),e=i[0],t=i[1],c=i[2],d=i[3],A=i[4],y=i[5],v=kde(a,y);f=A,(!g||g({name:d,size:t,originalSize:c,compression:e}))&&(e?e==8?l[d]=Ode(a.subarray(v,v+t),{out:new En(c)}):mn(14,"unknown compression type "+e):l[d]=ow(a,v,v+t))}return l}u(gW,"unzipSync");var no=K(require("path"));var rf=class extends Error{static{u(this,"ExpectError")}constructor(o){super("Fallback Exception Wrapper"),this.fallbackResult=o}};var CNe=require("@playwright/test");var il=class{constructor(o){this.options=o;this.health=u(async()=>fetch(`${this.options.apiURL}/client-api/runtime/api/health`,{headers:{ChecksumAppCode:this.options.apiKey}}).catch(o=>(console.error(o),null)),"health");this.getCanvasDetection=u(async o=>{try{let l=o.toString("base64");return await(await fetch(`${this.options.apiURL}/client-api/runtime/vision/text-detection`,{body:JSON.stringify({imageBuffer:l}),method:"POST",headers:{"Content-Type":"application/json",ChecksumAppCode:this.options.apiKey}})).json()}catch(l){return console.error(l),null}},"getCanvasDetection")}static{u(this,"ChecksumClient")}};var ih=class extends nh{constructor(l){super();this.config=l;this.getTextDetection=u(async l=>{let s=await this.api.getCanvasDetection(l);if(!s)throw new Error("No data returned from canvas detection");return s},"getTextDetection");this.config=l,this.api=new il({apiKey:l.apiKey,apiURL:l.apiURL})}static{u(this,"RuntimePageInteractorAPI")}};var HMe=require("@playwright/test");var hW=require("node:async_hooks");function rh(){return{current:!1}}u(rh,"createMuteRef");function ch(a,o){let l=a.catch.bind(a);return Object.defineProperty(a,"catch",{configurable:!0,writable:!0,value:u(s=>(o.current=!0,l(s)),"value")})}u(ch,"markActionPromise");var AW=new hW.AsyncLocalStorage;function yW(a){return AW.run(!0,a)}u(yW,"runInLocatorHandlerScope");function cf(){return AW.getStore()===!0}u(cf,"isInsideLocatorHandlerScope");var LMe=require("@playwright/test");var t2e=require("@playwright/test");var ah=class{constructor(o){this.options=o}static{u(this,"Action")}async handleError(o,l,s){let r=`Error in ${l} action during ${o} execution: ${s.message}`;throw new Error(r)}async guardedExecute(){try{return await(this.options.timeout!=null?He(this.execute(),this.options.timeout,"Execution timeout"):this.execute())}catch(o){return this.handleError(this.options.method,this.constructor.name,o)}}};function Bde(a,o){return a in o}u(Bde,"isLocatorMethod");var iw=class extends ah{static{u(this,"PlaywrightAction")}async execute(){let{locator:o,method:l,args:s}=this.options;if(Bde(l,o)){let r=o[l];return typeof r=="function"?Reflect.apply(r,o,s):r}return o}},rw=class extends ah{constructor(l,s){super(l);this.pageInteractor=s}static{u(this,"APIAction")}},cw=class extends rw{static{u(this,"CanvasClickAction")}constructor(o,l){super(o,l.pageInteractor)}async execute(){try{let{locator:o,args:l}=this.options,[s,r]=l,f=await o.screenshot({timeout:3e4}),p=(await this.pageInteractor.getTextDetection(f)).getRectangleByTextAndSizeRanking(s,r);if(!p)throw new Error("No matching text found");await o.click({position:p.center})}catch(o){throw new Error(`Error in canvas click action: ${o.message}`)}}},lh=class{static{u(this,"ActionFactory")}static{this.customActionMap={canvasClick:cw}}static isCustomAction(o){return o in this.customActionMap}static createAction(o,l){return this.isCustomAction(o.method)?new this.customActionMap[o.method]({...o,timeout:15e3},l):new iw(o)}};function rl(a,o){return Reflect.get(a,o)}u(rl,"readDynamicProperty");function vW(a,o,l){let s=rl(a,o);if(typeof s!="function")throw new Error(`Method ${o} is not a function`);return s.apply(a,l)}u(vW,"callDynamicMethod");function bW(a){if(typeof a=="object"&&a!==null&&"timeout"in a&&typeof a.timeout=="number")return a.timeout}u(bW,"extractTimeout");var uh=class a{constructor(o,l,s,r,f,h,p){this.frame=o;this.checksumPage=l;this.isReplMode=s;this.config=r;this.injectedScriptManager=f;this.getPageInteractor=h;this.onExecutionError=p;this.locatorStack=[];this.proxy=this.createFrameProxy(),this.checksumClient=new il({apiURL:this.config.apiURL,apiKey:this.config.apiKey})}static{u(this,"ChecksumFrame")}static init(o,l,s,r,f,h,p=!1){return new a(o,l,p,h,s,r,f).proxy}createFrameProxy(){return new Proxy(this,{get:u(function(l,s){return l.handleFrameMethod(s)},"get")})}handleFrameMethod(o){if(typeof o=="symbol")return;let l=rl(this,o);return typeof l=="function"?o==="constructor"?l:l.bind(this):[...Object.values(Pi),...Object.values(na)].includes(o)?(this.pushToLocatorStack([{type:o,base:this.frame}]),u(function(r,f){try{return this.executeLocator(r,f)}catch(h){throw this.popLocatorChain(),h}},"Locator").bind(this)):rl(this.frame,o)}page(){return this.checksumPage}compoundSelection(...o){try{let l=this.locatorStack.length?this.getCurrentLocatorInChain()?.base:this.proxy;return new cl(this.proxy,l).init(...o)}catch{throw new Error("Failed generating compound selector")}}async wrapInternalSteps(o,l=this.frame){try{return l._checksumInternal=!0,await o()}finally{l._checksumInternal=!1}}get navigationPromise(){return this.injectedScriptManager.getNavigationPromise(this.frame)}pushToLocatorStack(o){this.locatorStack.push(o)}getCurrentLocatorChain(){let o=this.locatorStack[this.locatorStack.length-1];if(!o){let l=[];return this.locatorStack.push(l),l}return o}popLocatorChain(){return this.locatorStack.pop()}getCurrentLocatorInChain(){let o=this.getCurrentLocatorChain();return o[o.length-1]}getLocator(o,l){let s=this.getCurrentLocatorInChain();if(!s)throw new Error("No locator in current chain");return vW(s.base,s.type,[o,l])}executeLocator(o,l){try{ne(`
149
+ `)}}shouldLog(o){switch(o){case"warning":return this.logLevel==="all"||this.logLevel==="warnings";case"error":return!0;case"info":return this.logLevel==="all";default:return!1}}addListener(o){this.listeners.push(o)}info(...o){this.log("info",...o)}warning(...o){this.log("warning",...o)}error(...o){this.log("error",...o)}setLogLevel(o){this.logLevel=o}setLogStream(o){this.logStream=o}},Ic=new DC,Ffe=Object.assign((...a)=>Ic.info(...a),{info:u((...a)=>Ic.info(...a),"info"),warning:u((...a)=>Ic.warning(...a),"warning"),error:u((...a)=>Ic.error(...a),"error"),setLogLevel:u(a=>Ic.setLogLevel(a),"setLogLevel"),setLogStream:u(a=>Ic.setLogStream(a),"setLogStream"),addLogListener:u(a=>Ic.addListener(a),"addLogListener")}),Oc=Ffe;var qs=require("node:perf_hooks");var Vs=class{constructor(o={}){this.options=o;this.priorityQueue=[];this.nonPriorityQueue=[];this.isRunning=!1;this.taskIndex=0;this.timeRunningTasks=0;this.timeGoingBack=0;this.tasksExecuted=0}static{u(this,"TaskTimeMachineQueue")}enqueue(o){let l=this.taskIndex++,s={...o,index:l,queuedAt:qs.performance.now()};if(o.priority)this.priorityQueue.push(s);else if(this.options.sortByTimestamp){let r=this.nonPriorityQueue.findIndex(f=>f.timestamp!==void 0&&o.timestamp!==void 0&&f.timestamp>o.timestamp);r===-1?this.nonPriorityQueue.push(s):this.nonPriorityQueue.splice(r,0,s)}else this.nonPriorityQueue.push(s);return l}popTask(){return this.priorityQueue.length>0?this.priorityQueue.shift():this.nonPriorityQueue.shift()}async runSingleTask(o,l){let s=qs.performance.now();try{if(this.options.logPerformance){let f=qs.performance.now()-o.queuedAt;Oc.info(`Running task, timestamp: ${o.timestamp} \x1B[36m${o.name}\x1B[0m, index: ${o.index}, was pending for ${f}ms`)}await l(o);let r=qs.performance.now()-s;this.timeRunningTasks+=r,this.options.logPerformance&&Oc.info("Finished running task, took",r,"ms.","Queue lengths:",`priority=${this.priorityQueue.length}`,`non-priority=${this.nonPriorityQueue.length}`),this.tasksExecuted++}catch(r){Oc.error("Task execution error:",r)}}async runTasks(o){if(!this.isRunning){this.isRunning=!0;try{for(;this.getQueueLength()>0;){let l=this.popTask();if(!l)break;await this.runSingleTask(l,o)}}finally{this.isRunning=!1,this.getQueueLength()>0&&this.options.logPerformance&&Oc.info("Accumulated time running tasks:",this.timeRunningTasks,"ms, from which time spent going back:",this.timeGoingBack)}}}getTasksAtTimestamp(o){return[...this.priorityQueue.filter(l=>l.timestamp===o),...this.nonPriorityQueue.filter(l=>l.timestamp===o)]}removeTasksAtTimestamp(o){this.priorityQueue=this.priorityQueue.filter(l=>l.timestamp!==o),this.nonPriorityQueue=this.nonPriorityQueue.filter(l=>l.timestamp!==o)}getQueueLength(){return this.priorityQueue.length+this.nonPriorityQueue.length}setTimeGoingBack(o){this.timeGoingBack=o}};var qDe=require("@playwright/test"),Ys=K(BC());function T4(a){if(!a)return;let{username:o,password:l,server:s}=a;return o&&l?new Ys.ProxyAgent({uri:`http://${o}:${l}@${s.replace("http://","")}`}):new Ys.ProxyAgent({uri:s})}u(T4,"makeWebProxyAgent");async function Mfe(a,o){let s=a.request().url();try{let f=await(0,Ys.fetch)(s,o?{dispatcher:o}:{}),h=f.status,p={};f.headers.forEach((c,d)=>p[d]=c),p["access-control-allow-origin"]="*";let g=parseInt(f.headers.get("content-length")||"0",10),n=25*1024*1024;if(g>n){await a.continue();return}if(!f.body){await a.fulfill({status:h,headers:p});return}let e=await f.arrayBuffer(),t=Buffer.from(e);await a.fulfill({status:h,headers:p,body:t})}catch{await a.continue()}}u(Mfe,"handleCorsRoute");async function P4(a,o,l){try{let s=a.page(),r=Je(s);if(l.has(r))return;l.add(r),await s.route(/^https?:\/\/(?!(?:localhost|127\.0\.0\.1|::1)).*/,f=>Mfe(f,o))}catch{}}u(P4,"preventCrossOriginErrors");var $De=require("@playwright/test");var zs=require("node:perf_hooks");async function B4(a,{shouldGoBack:o,shouldBatch:l,task:s,timestamp:r,beforeTimestamp:f,name:h,resolve:p,reject:g}){if(a.requireTimeMachineFrame().isDetached()&&g(),o){let e=zs.performance.now();await a.goBack(r,f),a.addTimeGoingBack(zs.performance.now()-e)}let n=x4(a,{taskForSafeRun:s,name:h,resolve:p,reject:g}),i=a.taskQueue.getQueueLength()>0&&l?Ufe(a,{firstTask:n,timestamp:r,name:h,resolve:p,reject:g}):[n];for(let e of i)await e()}u(B4,"runTaskWrapper");function x4(a,{taskForSafeRun:o,name:l,resolve:s,reject:r}){return async()=>{try{let f=zs.performance.now(),h=await He(o(a.requireTimeMachineFrame()),a.options.taskTimeout,()=>`Task execution timeout - ${l}, took ${zs.performance.now()-f}ms with timeout of ${a.options.taskTimeout}ms`);s(h)}catch(f){Oc.error("Task execution error:",f.message),r(f)}}}u(x4,"makeSafeRunTask");function Ufe(a,{firstTask:o,timestamp:l,name:s,resolve:r,reject:f}){let h=[o],p=a.taskQueue.getTasksAtTimestamp(l);return h.push(...p.map(({task:g})=>x4(a,{taskForSafeRun:u(()=>g({shouldGoBack:!1,shouldBatch:!1}),"taskForSafeRun"),name:s,resolve:r,reject:f}))),a.taskQueue.removeTasksAtTimestamp(l),h}u(Ufe,"collectBatchedTasks");var tRe=require("@playwright/test");var jfe="checksum is not defined";async function RC(a,o,{retriesLeft:l=3,retryWaitMS:s=1e3}={}){try{let{reducedHTML:r,currentChecksumId:f}=await o.evaluate(async({errorMessage:h,...p})=>{if(!window.checksum)throw new Error(h);return window.checksum.testGenerator.reduceHTML({},p)},{stopFlashingElementsDetection:!0,assignChecksumIdsToAllElements:!0,initialChecksumId:a.currentChecksumId,fromTimeMachine:!0,invalidateCache:!0,errorMessage:jfe});return a.currentChecksumId=f,{reducedHTML:r}}catch(r){if(l>0)return await ot(s),RC(a,o,{retriesLeft:l-1,retryWaitMS:s});throw r}}u(RC,"getReducedHTMLWithRetries");var aRe=require("@playwright/test");function QC({frameMsgBroker:a,recordingFrame:o,timeMachineFrame:l,handler:s}){let r="rrweb";if(!o)throw new Error("Recording frame is not initialized");a.subscribeToChannel(r,l,{originFrame:o,handler:s}),l.page().on("close",()=>a.unsubscribeFromChannel(r,l))}u(QC,"subscribeToRrwebEvents");var zg="checksum is not defined",$g=class a{constructor(o,l,s={headless:!0,logPerformance:!1,timestampBatchingEnabled:!1,sortByTimestamp:!1,taskTimeout:24e4,debugPort:void 0,frameMsgBrokerRegisterName:void 0}){this.frameMsgBroker=o;this.injectedScriptManager=l;this.options=s;this.currentTimestamp=0;this.currentBeforeTimestamp=!1;this.currentChecksumId="0";this.timeGoingBack=0;this.pagesWithCorsInterception=new Set;this.reducedHTMLCache=new Map;this.taskQueue=new Vs({sortByTimestamp:s.sortByTimestamp,logPerformance:s.logPerformance}),this.webProxyAgent=T4(s.webProxy)}static{u(this,"ChecksumTimeMachine")}requireTimeMachineFrame(){if(!this.timeMachineFrame)throw new Error("Time machine frame is not initialized");return this.timeMachineFrame}addTimeGoingBack(o){this.timeGoingBack+=o,this.taskQueue.setTimeGoingBack(this.timeGoingBack)}getPage(){return this.requireTimeMachineFrame().page()}getFrame(){return this.requireTimeMachineFrame()}hasReplayFrame(){return!!this.timeMachineFrame}async prepare(o,l,s){if(this.recordingFrame=o,await this.frameMsgBroker.register("live",o),this.options.recordOnly&&!l){this.prepareRecordOnly(o);return}l?this.timeMachineFrame=l:this.timeMachineFrame=await this.prepareBrowserContextAndFrame(),await P4(this.timeMachineFrame,this.webProxyAgent,this.pagesWithCorsInterception),this.options.frameMsgBrokerRegisterName&&await this.frameMsgBroker.register(this.options.frameMsgBrokerRegisterName,this.timeMachineFrame),s&&s(this.timeMachineFrame),await this.injectedScriptManager.addTrackedFrame(this.timeMachineFrame),this.timeMachineFrame.page().on("framenavigated",async r=>{await this.injectedScriptManager.onFrameNavigated(r)}),QC({frameMsgBroker:this.frameMsgBroker,recordingFrame:this.recordingFrame,timeMachineFrame:this.requireTimeMachineFrame(),handler:this.rrwebEventHandler.bind(this)}),this.taskQueue=new Vs({sortByTimestamp:this.options.sortByTimestamp,logPerformance:this.options.logPerformance}),await this.start()}prepareRecordOnly(o){QC({frameMsgBroker:this.frameMsgBroker,recordingFrame:o,timeMachineFrame:o,handler:this.rrwebEventHandler.bind(this)})}async start(){await this.requireTimeMachineFrame().evaluate(async o=>{if(!window.checksum)throw new Error(o);window.checksum.timeMachine.start({firstEventTimestamp:Date.now()})},zg)}setBrowserContext(o){this.timeMachineBrowserContext=o}async executeTask(o,l,{name:s,beforeTimestamp:r=!1,priority:f=!1}={}){return new Promise((h,p)=>{let g=u((n={shouldGoBack:!0,shouldBatch:this.options.timestampBatchingEnabled??!1})=>B4(this,{...n,task:o,timestamp:l,beforeTimestamp:r,name:s,resolve:h,reject:p}),"taskWrapper");this.taskQueue.enqueue({name:s,task:g,timestamp:r&&l!==void 0?l-1:l,priority:f}),this.runTasks()})}static{this.REDUCED_HTML_CACHE_MAX=20}executeReducedHTMLTask(o,{priority:l=!1}={}){let s=this.reducedHTMLCache.get(o);if(s){let r=new Lu(s);return Promise.resolve(r.getRrwebIdsReducedDomString())}return this.executeTask(async r=>{let h=(await RC(this,r)).reducedHTML;return h&&this.setReducedHTMLCache(o,h),new Lu(h).getRrwebIdsReducedDomString()},o,{name:"getReducedHTMLForTimestamp",priority:l})}setReducedHTMLCache(o,l){for(this.reducedHTMLCache.delete(o),this.reducedHTMLCache.set(o,l);this.reducedHTMLCache.size>a.REDUCED_HTML_CACHE_MAX;){let s=this.reducedHTMLCache.keys().next().value;if(s===void 0)break;this.reducedHTMLCache.delete(s)}}goBack(o,l=!1){return this.currentBeforeTimestamp===l&&this.currentTimestamp===o?Promise.resolve():(this.currentTimestamp=o,this.currentBeforeTimestamp=l,this.requireTimeMachineFrame().evaluate(({timestamp:s,beforeTimestamp:r,errorMessage:f})=>{if(!window.checksum)throw new Error(f);return s===void 0?window.checksum.timeMachine.goLive():window.checksum.timeMachine.goBack(s,{beforeTimestamp:r})},{timestamp:o,beforeTimestamp:l,errorMessage:zg}))}async runTasks(){await this.taskQueue.runTasks(async o=>{await o.task()})}async rrwebEventHandler(o){let l=JSON.stringify(o);if(this.timeMachineFrame)try{await this.timeMachineFrame.evaluate(function({eventsJSON:s,errorMessage:r}){if(!window.checksum)throw new Error(r);let f=JSON.parse(s);return window.checksum.timeMachine.handleEvents(f)},{eventsJSON:l,errorMessage:zg})}catch{}return l}async makeBrowserContext(){let o=[];this.options.debugPort&&o.push(`--remote-debugging-port=${this.options.debugPort}`);let{headless:l}=this.options,s=await D4.chromium.launch({...l!==void 0?{headless:l}:{},args:o});return this.timeMachineBrowserContext=await s.newContext({bypassCSP:!0}),this.timeMachineBrowserContext}async makeFrame(){if(!this.timeMachineBrowserContext)throw new Error("Time machine browser context is not initialized");return(await this.timeMachineBrowserContext.newPage()).mainFrame()}async prepareBrowserContextAndFrame(){return this.timeMachineBrowserContext||await this.makeBrowserContext(),this.makeFrame()}async toggleTimeMachineHandleEvents(o){try{await this.requireTimeMachineFrame().evaluate(({shouldHandleEvents:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);return window.checksum.timeMachine.setShouldHandleEvents(l)},{shouldHandleEvents:o,errorMessage:zg})}catch{}}};var Hfe=!0,si="checksum is not defined";async function R4(a,o,l){if(l?.selector)return{...l,selector:l.selector,locator:l.locator??"",clickOffset:l.position};if(!o)return a.logger.log(`[getSelectionDataForChecksumId] checksumid not provided (${o})`),{...l,selector:o,locator:`locator("${o}")`};let s=await Wfe(a,o);return Hfe&&s.invalid&&s.rrwebId&&(s=await Jfe(a,o,s)),s.selector||a.logger.log(`[getSelectionDataForChecksumId] Could not get selector for checksumid: ${o}. If checksumid is correct, try to change app rules preMapReducedHTMLSelectors to true`),s}u(R4,"getSelectionDataForChecksumId");function Wfe(a,o){return a.evaluateWithChecksum(async({checksumId:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);let{selector:r,locator:f,clickOffset:h,parentFramesSelectors:p,invalid:g,rrwebId:n}=await window.checksum.testGenerator.getSelectorForChecksumId(l),i=await window.checksum.testGenerator.getElementForChecksumId(l),e=i instanceof HTMLOptionElement&&i.value?i.value:void 0;return{selector:r,locator:f,clickOffset:h,selectOptionValue:e,parentFramesSelectors:p,invalid:g,rrwebId:n}},{checksumId:o,errorMessage:si})}u(Wfe,"fetchSelectorForChecksumId");async function Jfe(a,o,l){a.logger.log(`[getSelectionDataForChecksumId] Could not get selector for checksumid: ${o}. Trying to use time machine...`);let s=l;try{let r=await Gfe(a,l.rrwebId);s={...l,...r}}catch{a.logger.log(`[getSelectionDataForChecksumId] error using time machine to get selector for checksumid: ${o}`)}return a.logger.log(`[getSelectionDataForChecksumId] got selector: ${s.selector} for checksumid: ${o} from time machine`),s}u(Jfe,"applyTimeMachineFallback");async function Gfe(a,o){if(!a.rrwebEventAtLastReducedHTML)return;let l=a.getTimeMachine();return l?await l.executeTask(r=>r.evaluate(async({rrwebId:f,errorMessage:h})=>{if(!window.checksum)throw new Error(h);return window.checksum.testGenerator.getInspectedElementSelectionResultByRRwebId(f,{ignoredIframesSelectors:[".replayer-wrapper > iframe"],fromTimeMachine:!0})},{rrwebId:o,errorMessage:si}),a.rrwebEventAtLastReducedHTML.timestamp,{name:"getSelectionDataForRRwebIdAtReduceHTMLTime"})??void 0:void 0}u(Gfe,"getSelectionDataForRRwebIdAtReduceHTMLTime");async function Q4(a,o,l){return o?(await a.evaluateWithChecksum(async({selector:r,parentFramesSelectors:f,errorMessage:h})=>{if(!window.checksum)throw new Error(h);return window.checksum.testGenerator.getSelectionDataForSelector(r,f)},{selector:o,parentFramesSelectors:l,errorMessage:si}))?.esraMetadata:void 0}u(Q4,"getESRAForSelector");async function N4(a,o){return await a.evaluateWithChecksum(async({getMoreItemsId:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);return window.checksum.testGenerator.getMoreItemsForTemplate(l,{})},{getMoreItemsId:o,errorMessage:si})??{items:"",hasMoreItems:!1}}u(N4,"getMoreItemsForTemplate");function L4(a,o){return a.evaluateWithChecksum(async({checksumId:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);return window.checksum.testGenerator.scrollElementIntoViewByChecksumId(l)},{checksumId:o,errorMessage:si})}u(L4,"scrollElementIntoViewByChecksumId");function _4(a,o){return a.evaluateWithChecksum(async({rrwebId:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);return window.checksum.testGenerator.scrollElementIntoViewByRrwebId(l)},{rrwebId:o,errorMessage:si})}u(_4,"scrollElementIntoViewByRrwebId");function F4(a,o){return a.evaluateWithChecksum(async({rrwebId:l,errorMessage:s})=>{if(!window.checksum)throw new Error(s);return window.checksum.testGenerator.generateLocatorByRrwebId(l)},{rrwebId:o,errorMessage:si})}u(F4,"generateLocatorByRrwebId");function M4(a){return a.evaluateWithChecksum(async o=>{if(!window.checksum)throw new Error(o);return window.checksum.testGenerator.extractViewportHTML()},si)}u(M4,"getViewportHTML");function U4(a,o,l,s){return a.evaluateWithChecksum(async({rrwebId:r,direction:f,length:h,errorMessage:p})=>{if(!window.checksum)throw new Error(p);return window.checksum.testGenerator.scrollScrollableElement(r,f,h)},{rrwebId:o,direction:l,length:s,errorMessage:si})}u(U4,"scrollScrollableElement");var vQe=require("@playwright/test"),bQe=require("@playwright/test");var fQe=K(jH());function HH(a,o){let l=Math.max([...a].length,[...o].length);return l===0?1:1-ide(a,o)/l}u(HH,"levenshteinSimilarity");function ide(a,o){if(a===o)return 0;let l=[...a],s=[...o];if(l.length===0||s.length===0)return Math.max(l.length,s.length);let r=s.map((h,p)=>p+1),f=s.length;for(let[h,p]of l.entries()){let g=h,n=h+1,i=[];for(let[e,t]of r.entries()){let c=p===s[e]?0:1;n=Math.min(t+1,n+1,g+c),i.push(n),g=t}r=i,f=n}return f}u(ide,"levenshteinDistance");var $C=class{constructor(o){this.data=o;this.toJSON=u(()=>this.data,"toJSON")}static{u(this,"SimilarityRecord")}getSimilar(o){let l=null,s=-1/0;for(let[r,f]of Object.entries(this.data)){let h=HH(o,r);h>s&&(s=h,l=f)}return l}},th=class a extends $C{static{u(this,"RectangleIndex")}constructor(o){super(a.preprocessRectangles(o))}static{this.preprocessRectangles=u(o=>{let l=[...new Map([...o].map(r=>[JSON.stringify(r.vertices),r])).values()],s={};return l.forEach(r=>{let f=s[r.text]??[];f.push(r),f.sort((h,p)=>{let g=a.calculateArea(h.vertices),n=a.calculateArea(p.vertices);return g-n}),s[r.text]=f}),s},"preprocessRectangles")}static{this.calculateArea=u(o=>{let[l,s,,r]=o;if(!l||!s||!r)return 0;let f=Math.abs(s.x-l.x),h=Math.abs(r.y-l.y);return f*h},"calculateArea")}getRectangleByTextAndSizeRanking(o,l){let s=!l||!Number(l)?0:Number(l),r=this.getSimilar(o);if(!r||r.length===0)return null;let f=Math.min(Math.max(s,0),r.length-1);return r[f]??null}};var nh=class{constructor(){this.config={}}static{u(this,"PageInteractorAPI")}};var WH=require("path"),JH=require("fs");async function KC(a,o){if(!a.pageInteractorAPI)throw new Error("pageInteractorAPI is not defined");return new th(await a.pageInteractorAPI.getTextDetection(o))}u(KC,"getTextDetection");async function GH(a,o,l){try{if(!await o.evaluate(h=>h.tagName.toLowerCase()==="canvas"))throw new Error("Click attempted on a non-canvas element");let f=(await KC(a,await o.screenshot())).getRectangleByTextAndSizeRanking(l.canvasText,l.rectSizeIndex);if(!f)throw new Error(`Canvas click target not found for ${l.canvasText}`);a.logger.log(`Canvas click target: ${f}`),await a.actionGuardReturn(o.click({position:f.center}),"Canvas click could not be performed")}catch(s){throw a.logger.logError("Canvas click:",s.message),new Error("Canvas click action failed")}}u(GH,"canvasClick");function qH(a,o=!0,l=1e4){return new Promise(s=>{let f=0,h=u(()=>{if(a.activeDialog){let p=a.activeDialog;o&&(a.activeDialog=null),s(p)}else f>=l?s(null):(f+=1e3,setTimeout(h,1e3))},"checkDialog");h()})}u(qH,"waitForDialog");async function VH(a,o,l){if(!await o.evaluate(r=>r.tagName==="INPUT"&&r.getAttribute("type")==="file"))throw new Error("File upload action performed on non-file input element");let s=(l.files??[]).map(r=>(0,WH.join)(a.options.testAssetsDir,r)).filter(r=>(0,JH.existsSync)(r)?!0:(a.logger.log(`Upload file not found: ${r}. Filtering out.`),!1));if(!s.length)throw new Error("No files to upload");await a.actionGuardReturn(o.setInputFiles(s),"Set input files timeout")}u(VH,"performFileUploadAction");var SQe=require("@playwright/test"),kQe=require("@playwright/test");var rde="checksum is not defined";function cde(a){if(a.fileChooser){let o=a.fileChooser;return a.fileChooser=void 0,o}return null}u(cde,"getOpenedFileChooser");async function YH(a,o=[]){let l=cde(a);if(!l)return{};let s="fc_"+Math.random().toString(36).slice(2,4);return await a.evaluateWithChecksum(async([r,f,h])=>{if(!window.checksum)throw new Error(h);window.checksum.testGenerator.addForceIncludeElement(f,r)},[s,l.element(),rde]),{interruptionEvent:"fileUploadOpenedEvent",payload:{checksumid:s,customFiles:o}}}u(YH,"handleFileChooserEvent");async function zH(a,o,l){let s=o.querySelector(`[checksum-get-more-items='${l}']`);if(!s)throw new Error("Get more items root not found");let{items:r,hasMoreItems:f}=await a.getMoreItemsForTemplate(l);s.innerHTML=s.innerHTML+r,f||s.removeAttribute("checksum-get-more-items")}u(zH,"addMoreItemsToDom");async function ade(a,o){let l=Je(o),s=a.getLastActionForPage(l);return{id:l,url:o.url(),title:await o.title(),new:a.newPagesIds.includes(l),active:l===Je(a.getPage()),...s?{lastAction:s}:{}}}u(ade,"getPageInfo");async function $H(a){let o=a.getPage(),l=await Promise.all(o.context().pages().map(r=>ade(a,r))),s=a.getTimeMachine()?.getPage();return s&&s!==o&&(l=l.filter(r=>r.id!==Je(s))),a.newPagesIds=[],l}u($H,"getTabsInfo");var NQe=require("@playwright/test");async function KH(a,o,l){let s=a.getPage();a.loginFunction&&(await Promise.all([s.context().clearCookies(),s.evaluate(()=>localStorage.clear())]),await a.loginFunction(l??s,{...o!==void 0&&{role:o}}))}u(KH,"reauthenticate");function ZH(a){return a.map(o=>{if(o.fileName)return o.fileName;switch(o.mimeType){case"image/png":return"image_200x200.png";case"image/jpeg":return"image_200x200.jpg";case"application/pdf":return"document.pdf";case"text/csv":return"data.csv";default:return"file.txt"}})}u(ZH,"mapFileMIMETypeToFilename");function XH(a,o=!0){let l=a.fillValue;if(!l){let s=a.selector?.match(/(?<=value.*)('|").*/);s&&(l=s[0].slice(1,-1))}return typeof l!="string"&&(l="X"),o&&(a.fillValue=l),l}u(XH,"getActionFillValue");function eW(a,o){let l=o??a.options.actionTimeout;return l!==void 0?{timeout:l}:{}}u(eW,"actionTimeoutOption");function tW(a,o){let l=o??a.options.navigationTimeout;return l!==void 0?{timeout:l}:{}}u(tW,"navigationTimeoutOption");function nW(a,o,l,{isNavigation:s=!1,timeout:r}={}){return He(o,r??(s?a.options.navigationTimeout:a.options.actionTimeout),l)}u(nW,"actionGuardReturn");function oW(a,o,l=[]){return Cb(a.getFrame(),o??"",l)}u(oW,"makeLocator");function iW(host,locator){return eval("host.getFrame()."+locator)}u(iW,"makeLocatorFromLocator");async function rW(a,o){let l=await a.getPage().screenshot({type:"jpeg",scale:"css",timeout:5e3,...o});return{base64:`data:image/jpeg;base64,${l.toString("base64")}`,buffer:l}}u(rW,"takeScreenshot");function cW(a){return a.getFrame().url()}u(cW,"getCurrentURL");var ZQe=require("@playwright/test");var oh=class a{constructor(o){this.activeDialog=null;this.newPagesIds=[];this.listeners={dialog:null,filechooser:null,page:null};this.listenToContextPage=u(()=>{this.listeners.page=async o=>{this.newPagesIds.push(o._guid)},this.getPage().context().on("page",this.listeners.page)},"listenToContextPage");this.listenToFileChooser=u(()=>{this.listeners.filechooser=async o=>{this.logger.log("File chooser event detected"),this.fileChooser=o},this.getPage().on("filechooser",this.listeners.filechooser)},"listenToFileChooser");this.evaluateWithChecksum=o.evaluateWithChecksum,this.getFrame=o.getFrame,this.getTimeMachine=o.getTimeMachine,this.logger=o.logger,this.options=o.options,this.pageInteractorAPI=o.pageInteractorAPI,this.loginFunction=o.loginFunction}static{u(this,"TestGenerationPageInteractorBase")}static{this.lastActions=new Map}static setLastAction(o,l){a.lastActions.set(o,l)}static getLastAction(o){return a.lastActions.get(o)}getPage(){return this.getFrame().page()}init(){this.listenToContextPage(),this.options.listenToFileChooser!==!1&&this.listenToFileChooser(),this.options.listenToDialog&&this.listenToDialog()}listenToDialog(){this.listeners.dialog=async o=>{this.activeDialog=o},this.getPage().on("dialog",this.listeners.dialog)}removeListener(o){try{switch(o){case"dialog":this.listeners.dialog&&(this.getPage().removeListener(o,this.listeners.dialog),this.listeners.dialog=null);break;case"filechooser":this.listeners.filechooser&&(this.getPage().off(o,this.listeners.filechooser),this.listeners.filechooser=null);break;case"page":this.listeners.page&&(this.getPage().context().off(o,this.listeners.page),this.listeners.page=null);break}}catch(l){this.logger.logError(`Error removing listener: ${o}`,l)}}getLastActionForPage(o){return a.getLastAction(o)}};var ude="checksum is not defined",tf=class extends oh{constructor(){super(...arguments);this.waitForDialog=u((l=!0,s=1e4)=>qH(this,l,s),"waitForDialog");this.performFileUploadAction=u(async(l,s)=>VH(this,l,s),"performFileUploadAction");this.getSelectionDataForAction=u(async(l,s)=>l.checksumid?this.getSelectionDataForChecksumId(l.checksumid,s):l.position?await this.evaluateWithChecksum(async([f,h,p])=>{if(!window.checksum)throw new Error(p);return window.checksum.testGenerator.getSelectorByPosition(f,h)},[l.position.x,l.position.y,ude])??{selector:"",locator:""}:l.selector?{selector:l.selector,locator:`locator("${l.selector}")`}:{selector:"",locator:""},"getSelectionDataForAction")}static{u(this,"TestGenerationPageInteractor")}reauthenticate(l,s){return KH(this,l,s)}mapFileMIMETypeToFilename(l){return ZH(l)}getActionFillValue(l,s=!0){return XH(l,s)}actionTimeoutOption(l){return eW(this,l)}navigationTimeoutOption(l){return tW(this,l)}actionGuardReturn(l,s,r={}){return nW(this,l,s,r)}makeLocator(l,s=[]){return oW(this,l,s)}makeLocatorFromLocator(l){return iW(this,l)}takeScreenshot(l){return rW(this,l)}getCurrentURL(){return cW(this)}async handleFileChooserEvent(l=[]){return YH(this,l)}async addMoreItemsToDom(l,s){return zH(this,l,s)}async getTabsInfo(){return $H(this)}async translateActionResponseToAgentPotentialAction(l,s=void 0,r={}){return sQ(this,l,s,r)}async performAction(l,s={}){return cQ(this,l,s)}getTextDetection(l){return KC(this,l)}canvasClick(l,s){return GH(this,l,s)}async getCurrentReducedHTML({retriesLeft:l=3,retryWaitMS:s=2e3,initialChecksumId:r="0",extractESRAForInterpretationRequiredElements:f=!1,stopFlashingElementsDetection:h=!1,assignChecksumIdsToAllElements:p}={}){try{return await aQ(this,{initialChecksumId:r,extractESRAForInterpretationRequiredElements:f,stopFlashingElementsDetection:h,assignChecksumIdsToAllElements:p})}catch(g){if(l>0)return this.logger.logError(`[getCurrentReducedHTML] Error: ${g.message}`),this.logger.logError(`Failed do obtain reduced HTML, trying again in ${s/1e3} seconds, ${l-1} to go.`),await ot(s),this.getCurrentReducedHTML({retriesLeft:l-1,retryWaitMS:s});throw g}}getActionEventCode(l){return GR[l]}getSelectionDataForChecksumId(l,s){return R4(this,l,s)}getESRAForSelector(l,s){return Q4(this,l,s)}getMoreItemsForTemplate(l){return N4(this,l)}scrollElementIntoViewByChecksumId(l){return L4(this,l)}scrollElementIntoViewByRrwebId(l){return _4(this,l)}generateLocatorByRrwebId(l){return F4(this,l)}getViewportHTML(){return M4(this)}scrollScrollableElement(l,s,r){return U4(this,l,s,r)}};var o$e=require("@playwright/test"),Qt=require("fs");var aW=require("module");var sde=(0,aW.createRequire)("/"),ol,fde,dde;try{ol=sde("worker_threads"),fde=ol.Worker,dde=ol.isMarkedAsUntransferable}catch{}var En=Uint8Array,nl=Uint16Array,pde=Int32Array,lW=new En([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),uW=new En([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),gde=new En([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),sW=u(function(a,o){for(var l=new nl(31),s=0;s<31;++s)l[s]=o+=1<<a[s-1];for(var r=new pde(l[30]),s=1;s<30;++s)for(var f=l[s];f<l[s+1];++f)r[f]=f-l[s]<<5|s;return{b:l,r}},"freb"),ol=sW(lW,2),fW=ol.b,hde=ol.r;fW[28]=258,hde[258]=28;var dW=sW(uW,0),Ade=dW.b,yNe=dW.r,tw=new nl(32768);for(Oe=0;Oe<32768;++Oe)fi=(Oe&43690)>>1|(Oe&21845)<<1,fi=(fi&52428)>>2|(fi&13107)<<2,fi=(fi&61680)>>4|(fi&3855)<<4,tw[Oe]=((fi&65280)>>8|(fi&255)<<8)>>1;var fi,Oe,nf=u((function(a,o,l){for(var s=a.length,r=0,f=new nl(o);r<s;++r)a[r]&&++f[a[r]-1];var h=new nl(o);for(r=1;r<o;++r)h[r]=h[r-1]+f[r-1]<<1;var p;if(l){p=new nl(1<<o);var g=15-o;for(r=0;r<s;++r)if(a[r])for(var n=r<<4|a[r],i=o-a[r],e=h[a[r]-1]++<<i,t=e|(1<<i)-1;e<=t;++e)p[tw[e]>>g]=n}else for(p=new nl(s),r=0;r<s;++r)a[r]&&(p[r]=tw[h[a[r]-1]++]>>15-a[r]);return p}),"hMap"),of=new En(288);for(Oe=0;Oe<144;++Oe)of[Oe]=8;var Oe;for(Oe=144;Oe<256;++Oe)of[Oe]=9;var Oe;for(Oe=256;Oe<280;++Oe)of[Oe]=7;var Oe;for(Oe=280;Oe<288;++Oe)of[Oe]=8;var Oe,pW=new En(32);for(Oe=0;Oe<32;++Oe)pW[Oe]=5;var Oe;var yde=nf(of,9,1);var vde=nf(pW,5,1),ZC=u(function(a){for(var o=a[0],l=1;l<a.length;++l)a[l]>o&&(o=a[l]);return o},"max"),ho=u(function(a,o,l){var s=o/8|0;return(a[s]|a[s+1]<<8)>>(o&7)&l},"bits"),XC=u(function(a,o){var l=o/8|0;return(a[l]|a[l+1]<<8|a[l+2]<<16)>>(o&7)},"bits16"),bde=u(function(a){return(a+7)/8|0},"shft"),ow=u(function(a,o,l){return(o==null||o<0)&&(o=0),(l==null||l>a.length)&&(l=a.length),new En(a.subarray(o,l))},"slc");var mde=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],mn=u(function(a,o,l){var s=new Error(o||mde[a]);if(s.code=a,Error.captureStackTrace&&Error.captureStackTrace(s,mn),!l)throw s;return s},"err"),Ede=u(function(a,o,l,s){var r=a.length,f=s?s.length:0;if(!r||o.f&&!o.l)return l||new En(0);var h=!l,p=h||o.i!=2,g=o.i;h&&(l=new En(r*3));var n=u(function(PR){var BR=l.length;if(PR>BR){var xR=new En(Math.max(BR*2,PR));xR.set(l),l=xR}},"cbuf"),i=o.f||0,e=o.p||0,t=o.b||0,c=o.l,d=o.d,A=o.m,y=o.n,v=r*8;do{if(!c){i=ho(a,e,1);var O=ho(a,e+1,3);if(e+=3,O)if(O==1)c=yde,d=vde,A=9,y=5;else if(O==2){var _=ho(a,e,31)+257,G=ho(a,e+10,15)+4,V=_+ho(a,e+5,31)+1;e+=14;for(var z=new En(V),Z=new En(19),T=0;T<G;++T)Z[gde[T]]=ho(a,e+T*3,7);e+=G*3;for(var st=ZC(Z),P=(1<<st)-1,m=nf(Z,st,1),T=0;T<V;){var Q=m[ho(a,e,P)];e+=Q&15;var I=Q>>4;if(I<16)z[T++]=I;else{var M=0,oe=0;for(I==16?(oe=3+ho(a,e,3),e+=2,M=z[T-1]):I==17?(oe=3+ho(a,e,7),e+=3):I==18&&(oe=11+ho(a,e,127),e+=7);oe--;)z[T++]=M}}var ie=z.subarray(0,_),fe=z.subarray(_);A=ZC(ie),y=ZC(fe),c=nf(ie,A,1),d=nf(fe,y,1)}else mn(1);else{var I=bde(e)+4,k=a[I-4]|a[I-3]<<8,B=I+k;if(B>r){g&&mn(0);break}p&&n(t+k),l.set(a.subarray(I,B),t),o.b=t+=k,o.p=e=B*8,o.f=i;continue}if(e>v){g&&mn(0);break}}p&&n(t+131072);for(var nt=(1<<A)-1,ft=(1<<y)-1,Be=e;;Be=e){var M=c[XC(a,e)&nt],me=M>>4;if(e+=M&15,e>v){g&&mn(0);break}if(M||mn(2),me<256)l[t++]=me;else if(me==256){Be=e,c=null;break}else{var Ee=me-254;if(me>264){var T=me-257,ye=lW[T];Ee=ho(a,e,(1<<ye)-1)+fW[T],e+=ye}var Le=d[XC(a,e)&ft],sn=Le>>4;Le||mn(3),e+=Le&15;var fe=Ade[sn];if(sn>3){var ye=uW[sn];fe+=XC(a,e)&(1<<ye)-1,e+=ye}if(e>v){g&&mn(0);break}p&&n(t+131072);var _d=t+Ee;if(t<fe){var TR=f-fe,FK=Math.min(fe,_d);for(TR+t<0&&mn(3);t<FK;++t)l[t]=s[TR+t]}for(;t<_d;++t)l[t]=l[t-fe]}}o.l=c,o.p=Be,o.b=t,o.f=i,c&&(i=1,o.m=A,o.d=d,o.n=y)}while(!i);return t!=l.length&&h?ow(l,0,t):l.subarray(0,t)},"inflt");var Ide=new En(0);var jo=u(function(a,o){return a[o]|a[o+1]<<8},"b2"),Wn=u(function(a,o){return(a[o]|a[o+1]<<8|a[o+2]<<16|a[o+3]<<24)>>>0},"b4"),ew=u(function(a,o){return Wn(a,o)+Wn(a,o+4)*4294967296},"b8");function Ode(a,o){return Ede(a,{i:2},o&&o.out,o&&o.dictionary)}u(Ode,"inflateSync");var nw=typeof TextDecoder<"u"&&new TextDecoder,Cde=0;try{nw.decode(Ide,{stream:!0}),Cde=1}catch{}var wde=u(function(a){for(var o="",l=0;;){var s=a[l++],r=(s>127)+(s>223)+(s>239);if(l+r>a.length)return{s:o,r:ow(a,l-1)};r?r==3?(s=((s&15)<<18|(a[l++]&63)<<12|(a[l++]&63)<<6|a[l++]&63)-65536,o+=String.fromCharCode(55296|s>>10,56320|s&1023)):r&1?o+=String.fromCharCode((s&31)<<6|a[l++]&63):o+=String.fromCharCode((s&15)<<12|(a[l++]&63)<<6|a[l++]&63):o+=String.fromCharCode(s)}},"dutf8");function Sde(a,o){if(o){for(var l="",s=0;s<a.length;s+=16384)l+=String.fromCharCode.apply(null,a.subarray(s,s+16384));return l}else{if(nw)return nw.decode(a);var r=wde(a),f=r.s,l=r.r;return l.length&&mn(8),f}}u(Sde,"strFromU8");var kde=u(function(a,o){return o+30+jo(a,o+26)+jo(a,o+28)},"slzh"),Tde=u(function(a,o,l){var s=jo(a,o+28),r=jo(a,o+30),f=Sde(a.subarray(o+46,o+46+s),!(jo(a,o+8)&2048)),h=o+46+s,p=Pde(a,h,r,l,Wn(a,o+20),Wn(a,o+24),Wn(a,o+42)),g=p[0],n=p[1],i=p[2];return[jo(a,o+10),g,n,f,h+r+jo(a,o+32),i]},"zh"),Pde=u(function(a,o,l,s,r,f,h){var p=r==4294967295,g=f==4294967295,n=h==4294967295,i=o+l,e=p+g+n;if(s&&e){for(;o+4<i;o+=4+jo(a,o+2))if(jo(a,o)==1)return[p?ew(a,o+4+8*g):r,g?ew(a,o+4):f,n?ew(a,o+4+8*(g+p)):h,1];s<2&&mn(13)}return[r,f,h,0]},"z64hs");function gW(a,o){for(var l={},s=a.length-22;Wn(a,s)!=101010256;--s)(!s||a.length-s>65558)&&mn(13);var r=jo(a,s+8);if(!r)return{};var f=Wn(a,s+16),h=Wn(a,s-20)==117853008;if(h){var p=Wn(a,s-12);h=Wn(a,p)==101075792,h&&(r=Wn(a,p+32),f=Wn(a,p+48))}for(var g=o&&o.filter,n=0;n<r;++n){var i=Tde(a,f,h),e=i[0],t=i[1],c=i[2],d=i[3],A=i[4],y=i[5],v=kde(a,y);f=A,(!g||g({name:d,size:t,originalSize:c,compression:e}))&&(e?e==8?l[d]=Ode(a.subarray(v,v+t),{out:new En(c)}):mn(14,"unknown compression type "+e):l[d]=ow(a,v,v+t))}return l}u(gW,"unzipSync");var no=K(require("path"));var rf=class extends Error{static{u(this,"ExpectError")}constructor(o){super("Fallback Exception Wrapper"),this.fallbackResult=o}};var CNe=require("@playwright/test");var il=class{constructor(o){this.options=o;this.health=u(async()=>fetch(`${this.options.apiURL}/client-api/runtime/api/health`,{headers:{ChecksumAppCode:this.options.apiKey}}).catch(o=>(console.error(o),null)),"health");this.getCanvasDetection=u(async o=>{try{let l=o.toString("base64");return await(await fetch(`${this.options.apiURL}/client-api/runtime/vision/text-detection`,{body:JSON.stringify({imageBuffer:l}),method:"POST",headers:{"Content-Type":"application/json",ChecksumAppCode:this.options.apiKey}})).json()}catch(l){return console.error(l),null}},"getCanvasDetection")}static{u(this,"ChecksumClient")}};var ih=class extends nh{constructor(l){super();this.config=l;this.getTextDetection=u(async l=>{let s=await this.api.getCanvasDetection(l);if(!s)throw new Error("No data returned from canvas detection");return s},"getTextDetection");this.config=l,this.api=new il({apiKey:l.apiKey,apiURL:l.apiURL})}static{u(this,"RuntimePageInteractorAPI")}};var HMe=require("@playwright/test");var hW=require("node:async_hooks");function rh(){return{current:!1}}u(rh,"createMuteRef");function ch(a,o){let l=a.catch.bind(a);return Object.defineProperty(a,"catch",{configurable:!0,writable:!0,value:u(s=>(o.current=!0,l(s)),"value")})}u(ch,"markActionPromise");var AW=new hW.AsyncLocalStorage;function yW(a){return AW.run(!0,a)}u(yW,"runInLocatorHandlerScope");function cf(){return AW.getStore()===!0}u(cf,"isInsideLocatorHandlerScope");var LMe=require("@playwright/test");var t2e=require("@playwright/test");var ah=class{constructor(o){this.options=o}static{u(this,"Action")}async handleError(o,l,s){let r=`Error in ${l} action during ${o} execution: ${s.message}`;throw new Error(r)}async guardedExecute(){try{return await(this.options.timeout!=null?He(this.execute(),this.options.timeout,"Execution timeout"):this.execute())}catch(o){return this.handleError(this.options.method,this.constructor.name,o)}}};function Bde(a,o){return a in o}u(Bde,"isLocatorMethod");var iw=class extends ah{static{u(this,"PlaywrightAction")}async execute(){let{locator:o,method:l,args:s}=this.options;if(Bde(l,o)){let r=o[l];return typeof r=="function"?Reflect.apply(r,o,s):r}return o}},rw=class extends ah{constructor(l,s){super(l);this.pageInteractor=s}static{u(this,"APIAction")}},cw=class extends rw{static{u(this,"CanvasClickAction")}constructor(o,l){super(o,l.pageInteractor)}async execute(){try{let{locator:o,args:l}=this.options,[s,r]=l,f=await o.screenshot({timeout:3e4}),p=(await this.pageInteractor.getTextDetection(f)).getRectangleByTextAndSizeRanking(s,r);if(!p)throw new Error("No matching text found");await o.click({position:p.center})}catch(o){throw new Error(`Error in canvas click action: ${o.message}`)}}},lh=class{static{u(this,"ActionFactory")}static{this.customActionMap={canvasClick:cw}}static isCustomAction(o){return o in this.customActionMap}static createAction(o,l){return this.isCustomAction(o.method)?new this.customActionMap[o.method]({...o,timeout:15e3},l):new iw(o)}};function rl(a,o){return Reflect.get(a,o)}u(rl,"readDynamicProperty");function vW(a,o,l){let s=rl(a,o);if(typeof s!="function")throw new Error(`Method ${o} is not a function`);return s.apply(a,l)}u(vW,"callDynamicMethod");function bW(a){if(typeof a=="object"&&a!==null&&"timeout"in a&&typeof a.timeout=="number")return a.timeout}u(bW,"extractTimeout");var uh=class a{constructor(o,l,s,r,f,h,p){this.frame=o;this.checksumPage=l;this.isReplMode=s;this.config=r;this.injectedScriptManager=f;this.getPageInteractor=h;this.onExecutionError=p;this.locatorStack=[];this.proxy=this.createFrameProxy(),this.checksumClient=new il({apiURL:this.config.apiURL,apiKey:this.config.apiKey})}static{u(this,"ChecksumFrame")}static init(o,l,s,r,f,h,p=!1){return new a(o,l,p,h,s,r,f).proxy}createFrameProxy(){return new Proxy(this,{get:u(function(l,s){return l.handleFrameMethod(s)},"get")})}handleFrameMethod(o){if(typeof o=="symbol")return;let l=rl(this,o);return typeof l=="function"?o==="constructor"?l:l.bind(this):[...Object.values(Pi),...Object.values(na)].includes(o)?(this.pushToLocatorStack([{type:o,base:this.frame}]),u(function(r,f){try{return this.executeLocator(r,f)}catch(h){throw this.popLocatorChain(),h}},"Locator").bind(this)):rl(this.frame,o)}page(){return this.checksumPage}compoundSelection(...o){try{let l=this.locatorStack.length?this.getCurrentLocatorInChain()?.base:this.proxy;return new cl(this.proxy,l).init(...o)}catch{throw new Error("Failed generating compound selector")}}async wrapInternalSteps(o,l=this.frame){try{return l._checksumInternal=!0,await o()}finally{l._checksumInternal=!1}}get navigationPromise(){return this.injectedScriptManager.getNavigationPromise(this.frame)}pushToLocatorStack(o){this.locatorStack.push(o)}getCurrentLocatorChain(){let o=this.locatorStack[this.locatorStack.length-1];if(!o){let l=[];return this.locatorStack.push(l),l}return o}popLocatorChain(){return this.locatorStack.pop()}getCurrentLocatorInChain(){let o=this.getCurrentLocatorChain();return o[o.length-1]}getLocator(o,l){let s=this.getCurrentLocatorInChain();if(!s)throw new Error("No locator in current chain");return vW(s.base,s.type,[o,l])}executeLocator(o,l){try{ne(`
150
150
  Executing locator ${this.getCurrentLocatorInChain()?.type} with ${typeof o=="string"?`selector ${o}`:"locator"}`);try{o&&typeof o=="object"&&"has"in o&&this.popLocatorChain()}catch{}let s=this.getLocator(o,l);return new Proxy(s,{get:u((r,f)=>this.getLocatorMethod(s,r,f),"get")})}catch(s){ne("Failed to locate",s);return}}getLocatorMethod(o,l,s){return s==="then"?this.handleThen(o,l,s):s==="catch"?this.handleCatch(o):s==="finally"?this.handleFinally(o):s==="constructor"?u(function(...f){return this.popLocatorChain(),l.constructor(...f)},"Locator"):s in l&&typeof rl(l,s)!="function"||s===Symbol.toPrimitive||s in Object||s==="evaluate"?(this.popLocatorChain(),rl(l,s)):s==="compoundSelection"?function(...r){let f=this.compoundSelection(...r);return f.setBase(o),f}.bind(this):[...Object.values(Pi),...Object.values(na)].includes(s)?["or","and"].includes(s)?(ne("'Or' and 'And' locator are not supported, will execute normally"),this.popLocatorChain(),rl(l,s)):(this.getCurrentLocatorChain().push({type:s,base:o}),u(function(...f){return this.executeLocator(f[0],f[1])},"Locator").bind(this)):s==="page"?()=>(this.popLocatorChain(),this.proxy.page()):s==="bypassChecksum"?()=>(this.popLocatorChain(),l):u(function(...f){let h=rh(),p=this.executeLocatorAction(o,s,f,h).finally(()=>{this.popLocatorChain()});return ch(p,h)},"Locator").bind(this)}async executeLocatorAction(o,l,s,r){if(Array.from(s).some(n=>n?.bypassChecksum===!0))return vW(o,l,s);let f=o._selector;ne("Executing",l,f);let h=l==="_expect"?"assertion":"action",p=this.config.options?.consecutiveActionDelay??100;p>0&&h==="action"&&this.lastLocatorActionType==="action"&&(ne("Adding minimal wait between consecutive actions..."),await new Promise(n=>setTimeout(n,p))),this.lastLocatorActionType=h,ne("Running initial locator...");let g;try{this.navigationPromise&&await this.navigationPromise,await this.wrapInternalSteps(async()=>{try{ne("[executeLocatorAction] waitForFunction"),await this.frame.waitForFunction(()=>!!window.checksum,{timeout:5e3})}catch{ne("[executeLocatorAction] checksum libs not loaded")}});let n=this.getLocatorActionTimeout(h,l,s);return await lh.createAction({locator:o,method:l,args:s,...n!==void 0?{timeout:n}:{}},{api:this.checksumClient,pageInteractor:this.getPageInteractor()}).guardedExecute()}catch(n){ne("Failed initial execution. Exception:",n.message),g=n}if(r?.current)throw ne("Action failure muted by explicit .catch(), skipping fallback"),g;if(cf())throw ne("Action failed inside a locator handler, skipping fallback"),g;if(h==="action")return this.onExecutionError({error:g,locator:o,method:l,args:s},this.frame);throw g}setExpectConfiguration(o){this.expectConfiguration=o}getLocatorActionTimeout(o,l,s=[]){if(!this.isReplMode)try{if(o==="assertion"){let h=this.getAssertionTimeout(s);return ne(`Assertion timeout set to ${h}`),h}let r=["fill","dragTo"].includes(l)?1:0,f=bW(s[r]);return f!==void 0&&!isNaN(f)?f:3e4}catch{return 3e4}}getAssertionTimeout(o=[]){let l=bW(o[1]);if(l!==void 0)return l;if(this.expectConfiguration?.timeout!==void 0)return this.expectConfiguration.timeout;let s=this.testInfo._projectInternal?.expect?.timeout;return s!==void 0?s:3e4}handleThen(o,l,s){return(r,f)=>Promise.resolve(o).then(h=>{let p=r?r(h):h;return p instanceof Promise?p:this.getLocatorMethod(p,l,s)},h=>{if(f)return f(h);throw h})}handleCatch(o){return l=>Promise.resolve(o).catch(s=>{if(l)return l(s);throw s})}handleFinally(o){return l=>Promise.resolve(o).finally(l)}};var sh=class a{constructor(o,l,s,r,f){this.traits=o;this.isolatedMode=l;this.debugAnalytics=s;this.shouldLogToConsole=r;this.flushPromise=null;this.client=null;this.initialized=!1;this.config=f??{enabled:!0,debugMode:s,logToConsole:r}}static{u(this,"AbstractAnalytics")}async executeWithPromise(o){return this.flushPromise?this.flushPromise:(this.flushPromise=(async()=>{try{await o()}finally{this.flushPromise=null}})(),this.flushPromise)}static flattenEvent(o){let l=u((s,r=[])=>{if(s==null||typeof s!="object")return{};try{return Object.entries(s).reduce((f,[h,p])=>{let g=[...r,h],n=g.join(".");if(typeof p=="object"&&p!==null&&!Array.isArray(p)){let i=l(p,g);Object.assign(f,i)}else f[n]=p;return f},{})}catch{return{}}},"flattenDeep");return l(o)}get analyticsEnabled(){return this.isolatedMode&&!this.debugAnalytics?!1:this.config.enabled}get metadata(){return{...this.traits}}makeTableName(o){let l=this.debugAnalytics?"dev":"";return l?`${l}_${o}`:o}trackEventWithTable(o,l,s,r){if(r||this.shouldLogToConsole){let f=a.flattenEvent(o);console.log("Analytics event tracked:",{eventType:o.event,tableName:this.makeTableName(s),testSuiteRunId:l.testSuiteRunId,metadata:l,eventData:f,timestamp:new Date().toISOString()})}this.trackEventWithTableImpl(o,l,s,r)}trackEventWithTableImpl(o,l,s,r=!1){!this.analyticsEnabled||!this.config.enabled||(this.initialized||(this.initializeClient(),this.initialized=!0),this.safeExecute(()=>{let h={...a.flattenEvent(o),tableName:this.makeTableName(s),eventType:o.event,...l};this.sendEvent(h,s),(r||this.shouldLogToConsole)&&this.logEvent(o.event,h)},"tracking event"))}flushEvents(){return Promise.resolve()}async close(){!this.analyticsEnabled||!this.config.enabled||!this.initialized||await this.executeWithPromise(async()=>{await this.safeExecuteAsync(async()=>{await this.flushEvents(),this.shouldLogToConsoleEnabled&&console.log(`${this.getProviderName()} analytics session ended successfully`)},"closing analytics session")})}safeExecute(o,l){try{o()}catch(s){this.handleError(s,l)}}async safeExecuteAsync(o,l){try{await o()}catch(s){this.handleError(s,l)}}handleError(o,l){this.shouldLogToConsoleEnabled&&console.error(`Error ${l} in ${this.getProviderName()}:`,o.message)}logEvent(o,l){console.log(`${this.getProviderName()} event tracked: ${o}`,l)}get shouldLogToConsoleEnabled(){return this.shouldLogToConsole}};var TMe=require("@playwright/test");var rV=K(Kq());var hi=K(require("path")),gk=require("fs");var dk=require("path"),UA=require("fs");function Dme(a,o,l=10){let s=a;for(let r=0;r<l;r++){let f=(0,dk.join)(s,"package.json");if((0,UA.existsSync)(f))try{if(JSON.parse((0,UA.readFileSync)(f,"utf8")).name===o)return s}catch{}s=(0,dk.join)(s,"..")}}u(Dme,"findRepositoryRoot");function Zq(a,o=10){return Dme(a,"checksum-customer-engineering-workspace",o)}u(Zq,"findCustomerEngineeringRoot");var hk=K(Ob());var Gt=u((a,o)=>{if(a==null||a==="")return o?.default??!1;let l=a.toLowerCase().trim();return l==="true"?!0:l==="false"?!1:o?.default??!1},"parseBoolean");function Xq(a){if(a===void 0||a.trim()==="")return 5e7;let o=Number(a);return!Number.isInteger(o)||o<0?5e7:o}u(Xq,"resolveMaxRRwebBytes");function eV(a,o){return o>0&&a>o}u(eV,"isRRwebOverCap");function tV(a){return a.recordRRwebEventsToFile&&!!a.hostReports&&!a.disableRrwebRecording&&!a.disableTimeMachine}u(tV,"shouldRecordRRwebEvents");var Rme=__dirname,nV=hi.join(__dirname,".."),iV=(0,gk.existsSync)(nV)?nV:Rme;(0,hk.config)({path:hi.resolve(iV,".env")});var oV=Gt(process.env.CHECKSUM_RUNTIME_DEV_MODE);function Qme(){let a=__dirname;for(;!(0,gk.existsSync)(hi.join(a,"package.json"));)a=hi.join(a,"..");return a}u(Qme,"findRoot");var Sf=Qme(),Nme=Zq(Sf,10);(0,hk.config)({path:[iV,Nme].filter(a=>!!a).map(a=>hi.resolve(a,".env")),override:!1});var pk=Gt(process.env.CHECKSUM_RUNTIME_REPO_MODE),Lme=pk?hi.join(Sf,"package","pw-report-template.html"):hi.join(Sf,"pw-report-template.html"),_me=Gt(process.env.CHECKSUM_DEBUG_ANALYTICS),Fme=Gt(process.env.CHECKSUM_LOG_ANALYTICS_TO_CONSOLE),Mme=Xq(process.env.CHECKSUM_RUNTIME_RRWEB_MAX_BYTES),Ce={isDevMode:oV,isRepoMode:pk,CI:!!process.env.CI,checksumRootFolderBypass:pk&&process.env.CHECKSUM_RUNTIME_ROOT_FOLDER_BYPASS_FOR_REPO_MODE?process.env.CHECKSUM_RUNTIME_ROOT_FOLDER_BYPASS_FOR_REPO_MODE:process.env.CHECKSUM_RUNTIME_ROOT_FOLDER_BYPASS,logLevel:process.env.CHECKSUM_RUNTIME_LOG_LEVEL??"warnings",checksumScript:{source:process.env.CHECKSUM_RUNTIME_SCRIPT_SOURCE??(oV?"url":"file"),url:process.env.CHECKSUM_RUNTIME_SCRIPT_URL,path:Sf+"/checksumlib.js"},runtimeRoot:Sf,playwrightReporter:{htmlReportTemplatePath:Lme},bypassProxyForLocalhost:Gt(process.env.CHECKSUM_RUNTIME_BYPASS_PROXY_FOR_LOCALHOST),useCLIDebug:Gt(process.env.CHECKSUM_RUNTIME_USE_CLI_DEBUG),useRemoteDebugging:{enabled:Gt(process.env.CHECKSUM_RUNTIME_USE_REMOTE_DEBUGGING),port:parseInt(process.env.CHECKSUM_AGENT_RUNTIME_REMOTE_DEBUGGING_PORT??"9500")},testRun:{timeMachine:{headless:!Gt(process.env.CHECKSUM_RUNTIME_SHOW_RUNTIME_TIME_MACHINE),recordRRwebEventsToFile:Gt(process.env.CHECKSUM_RUNTIME_RECORD_RRWEB_EVENTS_TO_FILE,{default:!0}),maxRRwebBytes:Mme},monitoring:{debugAnalytics:_me,logToConsole:Fme,segment:{writeKey:process.env.CHECKSUM_RUNTIME_MONITORING_SEGMENT_WRITE_KEY??"TMuP8uorDj4QzJfNs0gEHDO7kHozVBOo",devWriteKey:process.env.CHECKSUM_RUNTIME_MONITORING_SEGMENT_DEV_WRITE_KEY??"gofHHwvdNHJNmb7KqACUmypZclVHEQ2l"}},autoRecovery:{verboseConsoleLog:Gt(process.env.CHECKSUM_RUNTIME_AUTO_RECOVERY_CONSOLE_LOG,{default:!1}),sessionTimeout:18e4},disableAutoRecovery:Gt(process.env.CHECKSUM_RUNTIME_DISABLE_AUTO_RECOVERY),disableHostReports:Gt(process.env.CHECKSUM_RUNTIME_DISABLE_HOST_REPORTS),disableTimeMachine:Gt(process.env.CHECKSUM_RUNTIME_DISABLE_TIME_MACHINE),disableRrwebRecording:Gt(process.env.CHECKSUM_RUNTIME_DISABLE_RRWEB_RECORDING),request:{userEmail:process.env.CHECKSUM_RUNTIME_REQUEST_USER_EMAIL,reason:process.env.CHECKSUM_RUNTIME_REQUEST_REASON},platform:{name:process.env.CHECKSUM_RUNTIME_PLATFORM_NAME,jobURL:process.env.CHECKSUM_RUNTIME_PLATFORM_JOB_URL,jobName:process.env.CHECKSUM_RUNTIME_PLATFORM_JOB_NAME},runType:process.env.CHECKSUM_RUNTIME_RUN_TYPE},buildTime:process.env.CHECKSUM_RUNTIME_BUILD_TIME??"unknown"};var jA=class extends sh{constructor(l,s){let r={writeKey:Ce.testRun.monitoring.segment.writeKey,enabled:!!Ce.testRun.monitoring.segment.writeKey,debugMode:Ce.testRun.monitoring.debugAnalytics,logToConsole:Ce.testRun.monitoring.logToConsole};super(l,s,Ce.testRun.monitoring.debugAnalytics,Ce.testRun.monitoring.logToConsole,r);this.traits=l}static{u(this,"SegmentRuntimeAnalytics")}initializeClient(){this.client??=new rV.default({writeKey:this.config.writeKey,flushAt:1,flushInterval:1e3})}sendEvent(l,s){this.client&&this.client.track({anonymousId:l.testSuiteRunId,event:l.eventType,properties:l})}async flushEvents(){this.client&&await He(this.client.flush(),2e4)}getProviderName(){return"Segment"}};var gr=class{static{u(this,"AnalyticsFactory")}static createFromConfig(o={},l=!1){return new jA(o,l)}};var $n=class a{static{u(this,"TestRunAnalytics")}constructor(o,l,s){this.analytics=gr.createFromConfig(o,l),this.isolatedMode=l,this.testInfo=s}static get maybeInstance(){return a.testRunInstance}static get isolatedMode(){return a.maybeInstance?.isolatedMode||!1}close(){this.analytics.close()}static getTestRunInstance(o,l,s){return a.maybeInstance||(a.testRunInstance=new a(o,l,s)),a.testRunInstance}static getCurrentTestInfo(){return a.maybeInstance?.testInfo}static getCurrentInstance(){return a.maybeInstance}getTestSuiteRunInfo(){return this.analytics.metadata}get tableName(){return"test_runs"}get metadata(){let o=this.testInfo;return{...this.analytics.metadata,checksumTestId:this.analytics.metadata.checksumTestId,filePath:o?.titlePath[0]||"unknown",retry:o?.retry||0,project:o?.project.name||"unknown",playwrightTestId:o?.testId||"unknown"}}event(o){this.analytics.trackEventWithTable(o,this.metadata,this.tableName)}testRunStart(){this.event({event:"Test Run Start",metadata:this.metadata})}testRunError(o){this.event({event:"Test Run Error",metadata:this.metadata,...o})}compoundSelectionFailure(o){this.event({event:"Compound Selection Failure",metadata:this.metadata,...o})}testRunEnd(o){this.event({event:"Test Run End",metadata:this.metadata,...o})}testRunActionExecutionFailure(o){this.event({event:"Test Run Action Execution Failure",metadata:this.metadata,...o})}testRunAssertionExecutionFailure(o){this.event({event:"Test Run Assertion Execution Failure",metadata:this.metadata,...o})}testRunFallbackExecution(o){this.event({event:"Test Run Fallback Execution",metadata:this.metadata,...o})}testRunAutoRecovery(o){this.event({event:"Test Run Auto Recovery",metadata:this.metadata,...o})}};var cl=class{constructor(o,l,s){this.frame=o;this.base=l;this.getAnalytics=s;this.LOCATORS_TIMEOUT=5e3;this.HANDLES_TIMEOUT=5e3;this.HANDLES_INTERVAL=300;this.locatorsChain=[];this.base??=this.frame}static{u(this,"CompoundSelectorLocator")}setBase(o){this.base=o}setAnalytics(o){this.getAnalytics=o}init(...o){return this.sanitizeArgs(...o),new Proxy(this,{get:u((l,s)=>s==="setBase"?function(...r){this.setBase(r[0])}.bind(this):s==="setAnalytics"?function(...r){this.setAnalytics(r[0])}.bind(this):this.handleLocatorChain(l,s),"get")})}getLocatorSelector(o){if(o)return o._selector}sanitizeArgs(...o){if(o.length===1&&typeof o[0]=="object"){if(typeof o[0].anchors!="function")throw new Error("Invalid compound selector format. Object must contain anchors property with a method value");this.anchorLocatorMethod=o[0].anchors,this.targetLocatorMethod=o[0].target;return}if(typeof o[0]!="function")throw new Error("Invalid compound selector format. First argument must be an object or a function");if(this.anchorLocatorMethod=o[0],o.length===2){if(typeof o[1]!="function")throw new Error("Invalid compound selector format. Second argument must be a function");this.targetLocatorMethod=o[1]}}async resolveLocator(){if(this.resolvedLocator)return this.resolvedLocator;ne("Waiting for locators..");let o=this.getLocatorsFromMethods();if(o.some(g=>!("_selector"in g)))throw new Error("Can't resolve at least one locator, make sure anchors and target are valid locators or strings");try{await Promise.all(o.map(async g=>He(g.first().waitFor({bypassChecksum:!0}),this.LOCATORS_TIMEOUT,"Waiting for compound selector locators timeout")))}catch(g){throw new Error(`Error while waiting for locators - ${g.message}`)}let l=await He(this.getElementHandles(o),this.HANDLES_TIMEOUT);ne(`Resolved to ${Ak(l)} elements from ${o.length} locators`);let s=this.getLocatorSelector(this.getLocatorsFromMethods(!1,!0,this.frame)[0]),r=await this.frame.evaluate(async({handles:g,targetSelector:n})=>window.checksum?.testGenerator.getCompoundSelector().select(g,n??""),{handles:l,targetSelector:s}),f=r?.[0];if(!r||r.length===0||f===void 0)throw new Error("Could not generate selectors from handles");ne(`Resolved compound selector to ${r.length} selectors`);let h=this.getBase(),p=h.locator(f);return r.slice(1,50).forEach(g=>{p=p.or(h.locator(g))}),this.locatorsChain.length&&this.locatorsChain.forEach(({name:g,args:n})=>{p=Reflect.get(p,g).apply(p,n)}),ne(`Compound locator selector: ${this.getLocatorSelector(p)}`),this.resolvedLocator=p,p}handleLocatorChain(o,l){if(typeof l=="symbol")return;if(l==="constructor")return u(function(...h){return this[l](...h)},"Locator");if(l==="toString")return()=>this.toString();let s=u(()=>new Proxy(o,{get:u((f,h)=>f.handleLocatorChain(f,h),"get")}),"createLocatorProxy");return l==="valueOf"?u(function(){return s()},"Locator"):l==="then"?(f,h)=>{this.resolveLocator().then(p=>f(p)).catch(h)}:Object.values([...Object.values(Pi),...Object.values(na)]).includes(l)?u(function(...h){return o.locatorsChain.push({name:l,args:h}),s()},"Locator"):l==="bypassChecksum"?()=>this.resolveLocator():u(function(...h){let p=rh();return ch(this.handleAction(l,h,p),p)},"Locator").bind(this)}async handleAction(o,l,s){try{if(typeof o=="symbol")return;if(!this.anchorLocatorMethod)throw new Error("Compound selection is missing anchor locators");let r=await this.resolveLocator();return await this.frame.executeLocatorAction(r,o,l,s)}catch(r){throw ne(`Failed to execute compound selection action: ${r}`),this.getAnalytics?.()?.compoundSelectionFailure({error:r.toString(),selector:this.toString()}),r}}async getElementHandles(o){ne("Resolving compound selector elements");let l,s,r,f,h=0,p=u(()=>{h=2},"resetSameHandlesCount");do{l=s;let g=[];s=g,await Promise.all(o.map(async n=>{let i=await n.elementHandles({bypassChecksum:!0});if(i.length===0)throw new Error(`No elements found for locator: ${this.getLocatorSelector(n)}`);g.push(i)})),r=Ak(g),f=l?Ak(l):0,ne(`Handles itteration, previous: ${l?f:"-"}, current: ${r}`),f!==r&&p(),await ot(this.HANDLES_INTERVAL)}while(!l||f!==r||--h>0);return s}getLocatorsFromMethods(o=!0,l=!0,s=this.getBase()){return(o&&this.anchorLocatorMethod?this.anchorLocatorMethod(s):[]).concat(l&&this.targetLocatorMethod?[this.targetLocatorMethod(s)]:[]).map(r=>typeof r=="string"?s.getByText(r):r)}getBase(){return this.base}toString(){return`CompoundSelection(${this.resolvedLocator?this.getLocatorSelector(this.resolvedLocator):`${this.anchorLocatorMethod?.toString()}, ${this.targetLocatorMethod?.toString()})`})`}},Ak=u(a=>a.reduce((o,l)=>o+l.length,0),"countHandleElements");var Ume="CHECKSUM_STEP_ANNOTATIONS";function yk(a=process.env[Ume]){return a==="1"||a==="true"}u(yk,"isStepAnnotationsEnabled");var jme={position:"bottom-right",duration:1e3,fontSize:20},Hme={duration:1500};function Wme(a){return a.screencast}u(Wme,"getScreencast");var cV=new WeakSet;async function vk(a,o){try{let l=Wme(a);if(!l)return;typeof l.showActions=="function"&&!cV.has(a)&&(cV.add(a),await l.showActions(jme)),typeof l.showChapter=="function"&&await l.showChapter(o,Hme)}catch{}}u(vk,"annotateStepStart");var eUe=require("@playwright/test");var kf=require("@playwright/test");function aV(a,o){let l;try{l=uV(o)}catch{l=lV(o)}return l(a,kf.expect)}u(aV,"evaluate");function lV(a){return new Function("page","expect",`return (async () => { ${a} })();`)}u(lV,"compile");function uV(a){return lV(`return (
151
151
  ${a}
152
152
  );`)}u(uV,"compileExpression");function sV(a,o){let l;try{l=uV(o)}catch(s){return Promise.reject(new Error(`a replacement must be a single expression, for example page.getByRole('button', { name: 'Save' }).click(): ${s instanceof Error?s.message:String(s)}`))}return l(a,kf.expect)}u(sV,"evaluateExpression");var Jme=new Set(["click","dblclick","fill","type","press","check","uncheck","hover","focus","blur","clear","tap","setInputFiles","scrollIntoViewIfNeeded","waitFor"]);function bk(a){let o=a;return typeof o=="object"&&o!==null&&typeof o.click=="function"&&typeof o._selector=="string"}u(bk,"isLocator");function fV(a,o){if(o)return o.kind==="action"?Jme.has(o.method)?l=>Gme(a,l):void 0:bk(o.subject)?l=>qme(a,o,l):void 0}u(fV,"repairFor");async function Gme(a,o){let l=await sV(a,o);if(l!==void 0)throw new Error(bk(l)?"the replacement evaluated to a locator but never acted on it; call the action, for example page.getByRole('button', { name: 'Save' }).click()":"an action replacement must perform the action and return nothing; this returned a value")}u(Gme,"repairAction");async function qme(a,o,l){let s=await sV(a,l);if(!bk(s))throw new Error("the replacement must evaluate to a Locator, for example page.getByRole('button', { name: 'Save' })");let r=o.timeout===void 0?kf.expect:kf.expect.configure({timeout:o.timeout}),f=o.negated?r(s).not:r(s),h=Reflect.get(f,o.matcher);if(typeof h!="function")throw new Error(`${o.matcher} is not a Locator matcher`);await h.apply(f,o.args)}u(qme,"repairAssertion");var gV=require("node:crypto"),hV=require("node:http");var Vme="CHECKSUM_HEAL_PROBE",Yme="CHECKSUM_HEAL_PROBE_PORT",zme="CHECKSUM_HEAL_PROBE_TIMEOUT_MS",Ek="CHECKSUM_HEAL_PROBE_TOKEN",$me="x-checksum-heal-probe-token",Kme="step,assertion,action",Zme="action,assertion",Xme=4099,eEe=900*1e3,tEe="CHECKSUM_HEAL_PROBE_TRY_TIMEOUT_MS",nEe=30*1e3;function AV(a=process.env[tEe]){let o=Number(a);return Number.isFinite(o)&&o>0?o:nEe}u(AV,"healProbeTryTimeoutMs");function oEe(a=process.env[Vme]){return a==="1"||a==="true"}u(oEe,"isHealProbeEnabled");function mk(a=process.env[Yme]){let o=Number(a);return Number.isInteger(o)&&o>0&&o<=65535?o:Xme}u(mk,"healProbePort");function iEe(a=process.env[zme]){let o=Number(a);return Number.isFinite(o)&&o>0?o:eEe}u(iEe,"healProbeTimeoutMs");var Tf=null,dV=0,pV=new WeakSet;function rEe(a){if(a.headers.origin!==void 0)return!1;let o=process.env[Ek]??"",l=a.headers[$me];if(!o||typeof l!="string")return!1;let s=Buffer.from(o),r=Buffer.from(l);return s.length===r.length&&(0,gV.timingSafeEqual)(s,r)}u(rEe,"isAuthorised");async function cEe(a,o){try{return aEe(await vV(aV(a,o)))}catch(l){return yV(l)}}u(cEe,"evaluateAgainstPage");function yV(a){let o=JA(a);return a instanceof HA?{ok:!1,unknown:!0,error:o}:/target (page|context|browser).*closed|target closed/i.test(o)?{ok:!1,gone:!0,error:o}:{ok:!1,error:o}}u(yV,"failed");function vV(a){let o=AV()+1e3;return Promise.race([a,new Promise((l,s)=>{setTimeout(()=>s(new HA(o)),o).unref()})])}u(vV,"withTimeout");var HA=class extends Error{static{u(this,"TimedOut")}constructor(o){super(`still running after ${o}ms; whether it worked is unknown`)}};function bV(a,o=0){if(a===null||typeof a!="object"||o>2)return!1;let l=Object.getPrototypeOf(a);return l!==Object.prototype&&l!==Array.prototype&&l!==null?!0:Object.values(a).some(s=>bV(s,o+1))}u(bV,"holdsAHandle");function aEe(a){let o=u(()=>({ok:!0,kind:"opaque",value:String(a)}),"opaque");if(a==null)return{ok:!0,kind:"value",value:null};if(bV(a))return o();try{return{ok:!0,kind:"value",value:JSON.parse(JSON.stringify(a))}}catch{return o()}}u(aEe,"serialize");function mV(a){return new Promise(o=>{let l="";a.on("data",s=>l+=s),a.on("end",()=>o(l))})}u(mV,"readBody");function lEe(a,o,l){mV(o).then(async s=>{let r;try{r=JSON.parse(s||"{}").expression}catch{l(400,{ok:!1,error:"body must be JSON"});return}if(typeof r!="string"||!r.trim()){l(400,{ok:!1,error:"expression is required"});return}l(200,await cEe(a,r))}).catch(s=>{l(500,{ok:!1,error:JA(s)})})}u(lEe,"handleTry");function uEe(a,o){if(o.operation!==a.operation)return{status:409,payload:{ok:!1,error:`operation ${String(o.operation)} is not the parked one (${a.operation})`}};if(!a.repair)return{status:409,payload:{ok:!1,unsupported:!0,error:`a failure at ${JSON.stringify(a.context.where)} cannot resume; edit the spec and rerun`}};let{expression:l}=o;return typeof l!="string"||!l.trim()?{status:400,payload:{ok:!1,error:"expression is required"}}:a.running?{status:409,payload:{ok:!1,error:"a repair already ran or is still running for this operation; if its outcome was not reported, stop and rerun"}}:{repair:a.repair,expression:l}}u(uEe,"checkRepair");function sEe(a,o,l){mV(o).then(async s=>{let r;try{r=JSON.parse(s||"{}")}catch{l(400,{ok:!1,error:"body must be JSON"});return}let f=uEe(a,r);if("status"in f){l(f.status,f.payload);return}a.running=!0;let h=f.repair(f.expression);h.catch(()=>{a.running=!1});try{await vV(h)}catch(p){l(200,yV(p));return}l(200,{ok:!0,resumed:!0,operation:a.operation},()=>{a.context.testInfo?.annotations.push({type:"checksum-heal-repair",description:`operation ${a.operation} at ${a.context.where}: ${f.expression}`}),console.warn(`[checksum] heal probe resumed operation ${a.operation} at ${JSON.stringify(a.context.where)}`),a.settle(!0)})}).catch(s=>{l(500,{ok:!1,error:JA(s)})})}u(sEe,"handleRepair");function fEe(a){return(o,l,s)=>{a.writeHead(o,{"Content-Type":"application/json"}),a.end(JSON.stringify(l),()=>s?.())}}u(fEe,"replyWith");function dEe(a,o,l){let{context:s}=a;if(!rEe(o)){l(401,{error:"unauthorised"});return}if(o.method==="GET"&&o.url==="/probe"){l(200,{parked:!0,parks:Kme,resumes:Zme,operation:a.operation,resumable:a.repair!==void 0,where:s.where,error:s.error,spec:s.spec});return}if(o.method==="POST"&&o.url==="/release"){l(200,{released:!0},()=>a.settle(!1));return}if(o.method==="POST"&&o.url==="/try"){lEe(a.page,o,l);return}if(o.method==="POST"&&o.url==="/repair"){sEe(a,o,l);return}l(404,{error:"not found"})}u(dEe,"handleProbeRequest");function pEe(a){return new Promise(o=>{if(!a){o();return}a.closeAllConnections(),a.close(()=>o())})}u(pEe,"closeAndFreePort");function gEe(a){let o=(0,hV.createServer)((l,s)=>{dEe(a,l,fEe(s))});return o.on("error",l=>{console.warn(`[checksum] heal probe could not listen on ${mk()}: ${l.message}`),a.settle(!1)}),o.listen(mk(),"127.0.0.1",()=>{console.warn(`[checksum] heal probe parked at ${JSON.stringify(a.context.where)} on port ${mk()}`)}),o}u(gEe,"listen");function hEe(a,o,l){let{testInfo:s}=o,r=s?.timeout??0,f=Date.now();s?.setTimeout(0),a.setDefaultTimeout(AV());let h;return new Promise(p=>{let g=!1,n=u(t=>{g||(g=!0,r&&s?.setTimeout(r+Date.now()-f),a.setDefaultTimeout(s?.project.use.actionTimeout??0),p(t))},"settle"),i={page:a,context:o,operation:l,repair:fV(a,o.resume),running:!1,settle:n};setTimeout(()=>n(!1),iEe()).unref(),h=gEe(i)}).finally(()=>pEe(h))}u(hEe,"park");function WA(a,o,l){return oEe()?process.env[Ek]?typeof l=="object"&&l!==null&&pV.has(l)?Promise.resolve(!1):Tf?Tf.then(()=>!1):(typeof l=="object"&&l!==null&&pV.add(l),dV+=1,Tf=hEe(a,{...o,error:JA(l)},dV).finally(()=>{Tf=null}),Tf):(console.warn(`[checksum] heal probe needs ${Ek}; not parking`),Promise.resolve(!1)):Promise.resolve(!1)}u(WA,"maybeParkOnFailure");function JA(a){return a instanceof Error?a.message:String(a)}u(JA,"message");var gUe=require("@playwright/test");var AEe={generateSelectionData:!1,navigationTimeout:30*1e3,actionTimeout:5*1e3},Jo=class{constructor(o,l,s,r,f,h,p){this.page=o;this.evaluateWithChecksum=l;this.checksumPage=s;this.pageInteractor=r;this.options=f;this.API_BASE_DOMAIN="https://api.checksum.ai";this.didCancel=!1;this.timeout=900*1e3;this.canResolveAssertion=!1;this.page=o,this.options={...AEe,...f},this.runtimePage=h,this.context=p}static{u(this,"AbstractFallback")}canResolve(o){return!(o.type==="assertion"&&!this.canResolveAssertion)}addMetadata(o){}cancel(){this.didCancel=!0}isCanceled(){return this.didCancel}async execute(o,l,s,r=6e4){return EV(o,l,s,r)}log(...o){ne(...o)}setThought(o){this.thought=o}setVariables(o){this.variables=o}get shouldSendToAnalytics(){return!0}getAnalyticsPayload(){return{}}toString(){return this.constructor.name}};var Ik=K(require("fs"));function yEe(a){return a.replace(/(\s*)try\s*\{([\s\S]*?)\}[\s\n]*catch\s*\(.*?\)\s*\{[\s\S]*?\}[\s\n]*\1testInfo\.status\s*=\s*["']failed["'];?/g,(o,l,s)=>s.trimEnd())}u(yEe,"removeTryCatchAndTestInfo");var Bl=class{static{u(this,"ErrorFormatter")}static toString(o,l){let s=IV(o,l);return Object.entries(s).map(([,r])=>`
@@ -237,11 +237,11 @@ ${r}`;return{success:!0,pages:s,message:f}}async switchPageHandler(l){if(!l.page
237
237
  `)?a:`${a}
238
238
  `)},"writeStderrLine");var cSe=u(a=>{let o=a.kind??"event",l=a.outcome?` ${a.outcome}`:"",s=typeof a.duration_ms=="number"?` ${a.duration_ms}ms`:"";return`${o}${l}${s}`.trim()},"defaultMessage"),aSe=u((a,o,l)=>{let s=Date.now(),r={timestamp:new Date().toISOString(),kind:a,...o},f=!1,h={set(p){return Object.assign(r,p),h},emit(p){f||(f=!0,p&&Object.assign(r,p),r.duration_ms===void 0&&(r.duration_ms=Date.now()-s),l(r))}};return h},"startHandle"),lSe=u((a={})=>{let o=a.decide??(()=>!0),l=a.deriveMessage??cSe,s=a.label??"[wide-event]",r=a.sink??(p=>iK(p)),f=u(p=>{if(!o(p))return;let g={severity:nK(p),message:p.message??l(p),...p};try{r(g)}catch(n){try{rK(`${s} emit failed: ${String(n)}`)}catch{}}},"emit");return{emit:f,emitWideEvent:u((p,g={})=>{f({timestamp:new Date().toISOString(),kind:p,...g})},"emitWideEvent"),wideEvent:u((p,g={})=>aSe(p,g,f),"wideEvent"),configureSink:u(p=>{r=p},"configureSink")}},"createWideEvents"),cK=u(a=>a==="true"||a==="1","truthy"),aK=u(()=>cK(process.env.CHECKSUM_WIDE_EVENTS)||cK(process.env.WIDE_EVENT_PRETTY),"wideEventsEnabled"),AR=lSe({decide:u(()=>aK(),"decide")}),uSe=AR.configureSink,yR=u((a,o={})=>AR.wideEvent(a,o),"wideEvent"),vR=u((a,o={})=>{AR.emitWideEvent(a,o)},"emitWideEvent"),Ld=u(a=>a instanceof Error?{type:a.name,message:a.message}:{type:"UnknownError",message:String(a)},"toErrorField");var Ti=class a extends Jo{static{u(this,"ARFallback")}static{this.API_BASE_ROUTE="/auto-recovery"}static{this.TIMEOUT_MS=12e4}getInitializationData(){if(!this.initializationData)throw new Error("ARFallback initialization data is not initialized");return this.initializationData}getAgent(){if(!this.agent)throw new Error("ARFallback agent is not initialized");return this.agent}getUtils(){if(!this.utils)throw new Error("ARFallback utils is not initialized");return this.utils}constructor(o,l,s,r,f,h,p){super(o,l,s,r,f,h,p),this.runtimePageContext=h}init(o){return this.initializationData=o,this}canResolve(o){return!0}get failingThought(){return this.getInitializationData().thoughts.failing}getRecoveryAttemptTitle(){switch(this.getInitializationData().type){case"action":return`Checksum Auto-Recovery: trying to achieve action "${this.failingThought}"...`;case"assertion":return`Checksum Auto-Recovery: trying to verify assertion "${this.failingThought}"...`;default:return`Checksum Auto-Recovery: trying to achieve action "${this.failingThought}"...`}}static async registerSession(o){let l=o.config.apiURL,s=o.config.apiKey,r=await fetch(`${l}${a.API_BASE_ROUTE}/register-auto-recovery-session`,{method:"POST",headers:{"Content-Type":"application/json",ChecksumAppCode:s},body:JSON.stringify({appName:o.testIdentification.testFileName,fallbackData:o})});return tK(r,{resource:"register-auto-recovery-session",requiredFields:["arConfig","sessionId"]})}async prepareSession(o){let l=this.getInitializationData(),s=await a.registerSession(l);this.utils=new ab({page:this.page,evaluateWithChecksum:this.evaluateWithChecksum,checksumPage:this.checksumPage,pageInteractor:this.pageInteractor,arConfig:s.arConfig,sessionId:s.sessionId,runtimeFallbackData:l,fallbackData:o,variableStore:this.variables??[],runtimePage:this.runtimePageContext,...this.context!==void 0?{context:this.context}:{}});try{this.agent=await lb.build(this.getUtils())}catch(r){let f=r instanceof Error?r.message:String(r);throw new Error(`Failed to prepare ARFallback: ${f}`)}}async resolve(o){let l,s=new Promise((h,p)=>{l=setTimeout(()=>{let g=this.getUtils();g.analytics.ARError({error:`Auto-recovery timed out after ${a.TIMEOUT_MS/1e3} seconds`});let n="Auto-Recovery attempt finished unsuccessfully";g.createChecksumStep({title:n,withError:!0}),g.addAutoRecoveryErrorToReport(n,!1),p(new Error(n))},a.TIMEOUT_MS)}),r=Date.now();await this.prepareSession(o);let f=yR("auto_recovery_session",{recovery:this.getUtils().analytics.metadata});this.getUtils().analytics.ARStart();try{let h=await Promise.race([this.getAgent().init(),s]);return clearTimeout(l),this.getUtils().analytics.ARFinish({duration:Date.now()-r}),f.emit({outcome:"success",result:h.result,steps_count:h.stepsThoughts.length,final_thought:h.finalThought}),{fbResult:h.result,thought:h.finalThought,stepsThoughts:h.stepsThoughts,steps:[]}}catch(h){throw clearTimeout(l),this.getUtils().analytics.ARFinish({duration:Date.now()-r}),f.emit({outcome:"error",error:Ld(h)}),h}}};var Wze=require("@playwright/test");var lK=u(a=>{let o=a.info();return o.annotations.some(l=>l.type==="bug")||o.tags.some(l=>l==="@bug")},"isKnownBugTest");var bR=1e3*30;function sSe(a,o){Reflect.set(a,"fallbackResult",o)}u(sSe,"setFallbackResult");var ub=class a extends qA{constructor(l,s="normal",r,f,h,p,g,n,i,e,t,c,d){super(l,r,t,()=>this.pageInteractor);this.page=l;this.runMode=s;this.testRunAnalytics=f;this.monitorBridge=h;this.testInfo=p;this.checksumTestId=g;this.test=n;this.options=i;this.isReplMode=e;this.config=t;this.pageInteractorAPI=c;this.appSpecificRules={};this.hasRuntimeStartedTrace=!1;this.unzippedHarData=[];this.fallbacks=[];this.hasUsedAutoRecovery=!1;this.hasSuccessfulAutoRecovery=!1;this.arSummaries=[];this.arStepIds=[];this.arResults=[];this.thoughtsCounter=0;this.highLevelThoughts=[];this.framesMsgBroker=new Fd;this.previousSteps=[];this.scriptLoadWrapper=u(async(l,s)=>(!this.isTimeMachineFrame(s)&&this.navigationPromise&&await this.navigationPromise,this.wrapInternalSteps(l,s.page())),"scriptLoadWrapper");this.scriptLoadCheck=u(async l=>l.evaluate(()=>!!window.checksum),"scriptLoadCheck");this.scriptLoadCallback=u(async l=>{await l.evaluate(({appSpecificRules:s,esraTimeout:r,sessionRecorder:f,showFrontendLogs:h,showTMSeeker:p,filesObserver:g,nativeDialogObserver:n,assertionsObserver:i,actionsObserver:e,recordOptions:t})=>{window.checksum?.testGenerator.init(s,{esraTimeout:r,showFrontendLogs:h,skipElementHighlighting:!0,...t!==void 0?{recordOptions:t}:{}},{assertionGenerator:!1,sessionRecorder:f,filesObserver:g,nativeDialogObserver:n,assertionsObserver:i,actionsObserver:e});try{p&&window.checksum?.timeMachine.openSeekbar()}catch{}},{appSpecificRules:this.appSpecificRules,esraTimeout:bR,sessionRecorder:!this.isTimeMachineFrame(l)&&!!this.timeMachine,showFrontendLogs:Ce.isDevMode,showTMSeeker:this.isTimeMachineFrame(l)&&process.env.CHECKSUM_SHOW_TIME_MACHINE==="true",filesObserver:!1,nativeDialogObserver:!1,assertionsObserver:!1,actionsObserver:!1}),ne(`[init] init script loaded for ${l.page().url()}`)},"scriptLoadCallback");uK(i.printLogs??!1);let A=this.config.options?.useChecksumAI;lK(n)&&typeof A=="object"&&A.skipTestsWithKnownBugs&&(console.log("Auto recovery will not run for this test as it is marked as a known bug"),A.actions=!1,A.assertions=!1,A.visualComparison=!1);let y=this.injectedScriptManager;if(!y)throw new Error("Injected script manager not initialized");y.setScriptLoadWrapper(this.scriptLoadWrapper).setScriptLoadCallback(this.scriptLoadCallback).setScriptLoadCheck(this.scriptLoadCheck);let v=ea({config:this.config}),O=this.getPlaywrightProjectConfig();if(this.pageInteractor=new tf({evaluateWithChecksum:this.evaluateWithChecksum.bind(this),getFrame:u(()=>this.page.mainFrame(),"getFrame"),getTimeMachine:u(()=>this.timeMachine,"getTimeMachine"),logger:{log:ne,logError:ne},options:{navigationTimeout:O.use.navigationTimeout,actionTimeout:O.use.actionTimeout,testAssetsDir:Nu(Pn()),waitActionDelay:1e3},pageInteractorAPI:this.pageInteractorAPI,loginFunction:v}),this.checkForActiveTracing(),this.resetFallbacks(),d&&(this.highLevelThoughts=d.highLevelThoughts??[],d.timeMachineBrowserContext!==void 0&&(this.timeMachineBrowserContext=d.timeMachineBrowserContext),d.variableStore!==void 0&&(this.variableStore=d.variableStore)),!this.options.disableTimeMachine){let I=this.shouldRecordRRwebEvents()?{recordRRwebEventsToFile:!0,recordRRwebEventsToFilePath:XR(this.checksumTestId,this.testInfo.retry)}:{};this.timeMachine=new GA(this.framesMsgBroker,y,{...I,maxRRwebBytes:Ce.testRun.timeMachine.maxRRwebBytes,headless:process.env.CHECKSUM_SHOW_TIME_MACHINE==="true"?!1:Ce.testRun.timeMachine.headless,webProxy:p.project.use.proxy,recordOnly:process.env.CHECKSUM_RUNTIME_TIME_MACHINE_REPLAY!=="true"}),this.timeMachineBrowserContext&&this.timeMachine.setTimeMachineBrowserContext(this.timeMachineBrowserContext)}}static{u(this,"RuntimePage")}static{this.recentlyInteracted=new Map}previousThoughtsAndTimestamps(){return this.previousSteps}static async init(l,s,r,f,h,p,g,n,i,e=!1){let t=!1,c=g;c||(c=HR(5),t=!0,console.warn(`Checksum test id was not defined for test "${p.title}" and was auto-generated. Please replace - "${p.title}" with -
239
239
  test(defineChecksumTest("${p.title}", "${c}"), async ({ page }) => {...`)),f.addTestInfo(c,p.testId,t),i.options!==void 0&&typeof i.options.useChecksumAI=="boolean"&&(i.options.useChecksumAI={actions:i.options.useChecksumAI,assertions:!1,visualComparison:!1});let d=new ih(i),A=new a(l,i.runMode,s,r,f,p,c,n,{useChecksumSelectors:!0,useChecksumAI:{actions:!0,assertions:!1},newAssertionsEnabled:i.runMode!=="normal",useMockData:!1,printLogs:!1,...i.options},e,i,d,{variableStore:h});return s.pages().length===0&&(n._checksum.expect.setPage(A),n._checksum.checksumAI.page=A,h.clearAll(),A.testRunAnalytics.testRunStart()),await A.asyncInit(),A.proxy}async asyncInit(l=!1){await this.loadAppSpecificRules(),await this.wrapInternalSteps(async()=>{await this.page.addInitScript(()=>{window.sessionStorage.setItem("checksumai:disable","true")})}),this.timeMachine&&(await this.timeMachine.prepare(this.page.mainFrame()),this.timeMachineBrowserContext=this.timeMachine.getTimeMachineBrowserContext()),this.pageInteractor.init(),l||await this.prepareForTestArtifacts()}async makePage(l){let s=new a(l,this.runMode,this._context,this.testRunAnalytics,this.monitorBridge,this.testInfo,this.checksumTestId,this.test,this.options,this.isReplMode,this.config,this.pageInteractorAPI,{highLevelThoughts:this.highLevelThoughts,...this.timeMachineBrowserContext!==void 0?{timeMachineBrowserContext:this.timeMachineBrowserContext}:{},variableStore:this.variableStore});return await s.asyncInit(!0),s.proxy}getTimeMachinePage(){return this.timeMachine?.getPage()}getFramesMessageBroker(){return this.framesMsgBroker}isTimeMachineFrame(l){return this.timeMachine?.hasReplayFrame()?l===this.timeMachine.getFrame():!1}shouldRecordRRwebEvents(){return tV({recordRRwebEventsToFile:Ce.testRun.timeMachine.recordRRwebEventsToFile,hostReports:this.config.options?.hostReports,disableRrwebRecording:this.options.disableRrwebRecording,disableTimeMachine:this.options.disableTimeMachine})}recordInteraction(){let l=this.getPageGuid(this.page);a.recentlyInteracted.set(l,Date.now())}async direct(l,s){try{return await s()}catch(r){throw await this.parkOnTerminalFailure(l,r),r}}async goto(l,s){return this.recordInteraction(),this.direct(`goto ${l}`,()=>this.page.goto(l,s))}async reload(l){return this.recordInteraction(),this.direct("reload",()=>this.page.reload(l))}async goBack(l){return this.recordInteraction(),this.direct("goBack",()=>this.page.goBack(l))}async goForward(l){return this.recordInteraction(),this.direct("goForward",()=>this.page.goForward(l))}async click(l,s){return this.recordInteraction(),this.direct(`click ${l}`,()=>this.page.click(l,s))}async dblclick(l,s){return this.recordInteraction(),this.direct(`dblclick ${l}`,()=>this.page.dblclick(l,s))}async fill(l,s,r){return this.recordInteraction(),this.direct(`fill ${l}`,()=>this.page.fill(l,s,r))}async press(l,s,r){return this.recordInteraction(),this.direct(`press ${s} on ${l}`,()=>this.page.press(l,s,r))}async check(l,s){return this.recordInteraction(),this.direct(`check ${l}`,()=>this.page.check(l,s))}async uncheck(l,s){return this.recordInteraction(),this.direct(`uncheck ${l}`,()=>this.page.uncheck(l,s))}async selectOption(l,s,r){return this.recordInteraction(),this.direct(`selectOption ${l}`,()=>this.page.selectOption(l,s,r))}async hover(l,s){return this.recordInteraction(),this.direct(`hover ${l}`,()=>this.page.hover(l,s))}async type(l,s,r){return this.recordInteraction(),this.direct(`type into ${l}`,()=>this.page.type(l,s,r))}async setInputFiles(l,s,r){return this.recordInteraction(),this.page.setInputFiles(l,s,r)}async tap(l,s){return this.recordInteraction(),this.page.tap(l,s)}async dragAndDrop(l,s,r){return this.recordInteraction(),this.page.dragAndDrop(l,s,r)}getPlaywrightProjectConfig(){return this.testInfo.project}checkForActiveTracing(){let s=this.getPlaywrightProjectConfig().use.trace;this.traceMode=typeof s=="string"?s:s?.mode}registerPageEvents(){super.registerPageEvents();let l=this.injectedScriptManager;l&&(l.addTrackedFrame(this.page),this.page.on("framenavigated",s=>{l.onFrameNavigated(s)}))}checksumSelector(l){return this.checksumStepId=l,this.options.useChecksumSelectors&&this.setSelectorFallback(l),this.proxy}checksumAI(l,s,r){let f=this.addNewThought(l,"action",!!s);this.previousSteps.push({thought:f.thought,timestamp:Date.now()});let h=this.getPageGuid(this.page);return tf.setLastAction(h,l),s&&typeof s=="function"?this.test.step(l,async p=>{yk()&&await vk(this.page,l);try{return r?.withDialog&&this.pageInteractor.listenToDialog(),await s()}catch(g){if(f.children=[],!this.options.useChecksumAI.actions||r?.withDialog||r?.skipAutoRecovery)throw await this.parkOnTerminalFailure(l,g),g;this.setAIFallback(l,"action");try{return await this.initiateFallbackSequence({type:"action",error:g,method:"",args:[],testInfo:this.testInfo,step:p},{fallbackTypes:[Ai,Ti]})}catch(n){throw this.testRunAnalytics.testRunError({failedThought:l,error:n?.message||"Unknown error"}),await this.parkOnTerminalFailure(l,n),n}}finally{this.pageInteractor.removeListener("dialog"),this.currentThought=this.currentThought?.parent}}):(yk()&&vk(this.page,l),this.options.useChecksumAI.actions&&!r?.skipAutoRecovery&&this.setAIFallback(l,"action"),this.proxy)}resolveAssetsFolder(l){return l.map(s=>no.join(Nu(Pn()),s))}getRuntimeOptions(){return this.options}addPwAnnotation(l){this.testInfo.annotations.push({type:l.type,description:`
240
- ${l.description}`})}onTestComplete(l){return this.testRunAnalytics.testRunEnd({success:l,autoRecoveryTriggered:this.hasUsedAutoRecovery,summaries:this.arSummaries}),this.monitorBridge.addChecksumTestMetadata({checksumTestId:this.checksumTestId,pwTestId:this.testInfo.testId,retry:this.testInfo.retry,type:"autoRecoveryMetadata",data:{autoRecoveryTriggered:this.hasUsedAutoRecovery,autoRecovered:this.hasSuccessfulAutoRecovery&&l}}),this.monitorBridge.addChecksumTestMetadata({checksumTestId:this.checksumTestId,pwTestId:this.testInfo.testId,retry:this.testInfo.retry,type:"autoRecoverySummaries",data:this.arSummaries}),this.cleanupMockData(),Promise.resolve()}async wrapInternalSteps(l,s=this.page){try{return s.mainFrame()._checksumInternal=!0,s._checksumInternal=!0,await l()}finally{s.mainFrame()._checksumInternal=!1,s._checksumInternal=!1}}async conditionallyWrapInternalSteps(l,s){return l?this.wrapInternalSteps(s):s()}async wrapNoLocationSteps(l){try{return this.testInfo._checksumNoLocation=!0,await l()}finally{this.testInfo._checksumNoLocation=!1}}findAllStepsRecursively(l,s,r=[]){for(let f of l){(f._stepId===s||f.stepId===s)&&r.push(f);let h=[f.steps,f._testInfoSteps,f._steps].filter(Boolean);for(let p of h)this.findAllStepsRecursively(p,s,r)}return r}makeChecksumStepFunction(l){return s=>{if(!l)return;let r=s._stepId||s.stepId;this.findAllStepsRecursively(s._testInfo._steps,r).forEach(h=>{h.error={message:"ChecksumStepError",stack:"Fallback Failed",cause:void 0}})}}async createChecksumStep(l){let s,r={box:!0,noLocation:!0,obtainStep:u(f=>{s=f},"obtainStep")};if(await this.step(l.title,this.makeChecksumStepFunction(l.withError),!1,r),s?.stepId&&this.arStepIds.push(s.stepId),!s)throw new Error("Checksum step was not created");return s}async step(l,s,r=!0,{obtainStep:f=void 0,box:h=!1,noLocation:p=void 0}={}){let g=this.testInfo._checksumNoLocation;try{this.testInfo._checksumInternal=r===!0,p!==void 0&&(this.testInfo._checksumNoLocation=p),await this.test.step(l,s??(()=>{}),{obtainStep:f,box:h})}finally{this.testInfo._checksumInternal=!1,this.testInfo._checksumNoLocation=g}}addErrorMessage(l,s){this.testInfo.addError(l,s)}async evaluateWithChecksum(l,s,r=!0){this.navigationPromise&&await this.navigationPromise;let f=this.page.evaluate.bind(this.page);return this.conditionallyWrapInternalSteps(r,()=>f(l,s))}getChecksumTestId(){return this.checksumTestId}addNewThought(l,s,r=!1){let f={thought:l,type:s,...r?{children:[]}:{}};if(!this.currentThought)this.highLevelThoughts.push(f);else if(this.currentThought.children)this.currentThought.children.push(f),f.parent=this.currentThought;else{let p=this.currentThought.parent;p?(p.children=p.children??[],p.children.push(f),f.parent=p):this.highLevelThoughts.push(f)}let h=f.parent;return h?f.id=`${h.id}.${h.children?.length??0}`:f.id=`${++this.thoughtsCounter}`,this.currentThought=f,f}buildThoughtsChainForFallback(l=this.highLevelThoughts){let s=[];return l.forEach(r=>{s.push(r.thought),r.children&&s.push(...this.buildThoughtsChainForFallback(r.children))}),s}compoundSelection(...l){let s=super.compoundSelection(...l);return s.setAnalytics(()=>this.testRunAnalytics),this.checksumStepId&&this.options.useChecksumSelectors&&this.setCompoundSelectorFallback(this.checksumStepId),s}setSelectorFallback(l){let s={checksumId:l,fileName:this.testInfo.file,testId:this.checksumTestId,apiKey:this.config.apiKey,apiURL:this.config.apiURL,timeout:bR};this.pushFallback(this.constructFallback(Rf).init(s)),this.pushFallback(this.constructFallback(xf).init(s))}setCompoundSelectorFallback(l){this.pushFallback(this.constructFallback(Df).init({checksumId:l,fileName:this.testInfo.file,testId:this.checksumTestId,apiKey:this.config.apiKey,apiURL:this.config.apiURL,timeout:bR}))}setAIFallback(l,s){let r=this.options.useChecksumAI.arVersion===1,f=u(()=>{let p=this.buildThoughtsChainForFallback(),g={title:this.testInfo.title},n={testFileName:this.testInfo.file,testId:this.testInfo.testId,testSuiteId:process.env.CHECKSUM_TEST_SUITE_ID||""},i={previous:p.slice(0,-1),failing:l,next:p.slice(1)},e={storyInfo:g,testIdentification:n,fallbackConfig:{arMode:this.options.useChecksumAI.arMode??"one_shot",overrideOptions:{...this.options.useChecksumAI.overrideOptions,...this.options.useChecksumAI.modelName&&!this.options.useChecksumAI.overrideOptions?.modelName?{modelName:this.options.useChecksumAI.modelName}:{}},markRecovered:this.options.useChecksumAI.markRecovered},thoughts:i,config:{apiURL:this.config.apiURL,apiKey:this.config.apiKey},type:s};return this.constructFallback(Ti).init(e)},"createArFallback"),h=u(()=>{let p=typeof this.options.useChecksumAI=="object"?this.options.useChecksumAI:void 0,g=p?.arMode,n=p?.overrideOptions;return this.constructFallback(Ai).init({goal:this.testInfo.title,testFile:this.testInfo.file,apiKey:this.config.apiKey,apiURL:this.config.apiURL,testId:this.checksumTestId,thoughts:this.buildThoughtsChainForFallback(),...g!==void 0?{arMode:g}:{},...n!==void 0?{overrideOptions:n}:{},fallbackType:s})},"createAIFallback");return r?this.pushFallback(h()):this.pushFallback(f()),this.proxy}pushFallback(l){this.fallbacks.push(l),this.sortFallbacks()}handleAIFallback(l,s,r){let f=l.fallbackAnalyticsPayload.iterationSteps,h=f.length>0?r/f.length:0,p=s.fbResult??"failed";this.testRunAnalytics.testRunFallbackExecution({result:p,failedThought:l.getFailedThought(),summary:s.summary??"",stepsPayload:l.fallbackAnalyticsPayload,type:l.fallbackType,duration:r,avgDuration:h,success:["finish","soft_assertion"].includes(p)}),this.arResults.push({failedThought:l.getFailedThought(),result:p,...s.thought!==void 0?{thought:s.thought}:{}})}handleAutoRecovery(l,s,r,f){let h=r.stepsThoughts??[],p=h.length>0?f/h.length:0;this.testRunAnalytics.testRunAutoRecovery({failingThought:l.failingThought,type:s.type,finalThought:r.thought??"",result:r.fbResult??"failed",duration:f,avgStepDuration:p,stepsThoughts:h,version:"v1"})}async runFallback(l,s){let r=Date.now(),f=l.resolve(s),h=await He(f,l.timeout),p=Date.now()-r;if(!h)throw this.hasSuccessfulAutoRecovery=!1,this.createChecksumStep({title:"Recovery Failed",withError:!0}),new Error("Fallback failed");l instanceof Ai&&(this.hasUsedAutoRecovery=!0,this.handleAIFallback(l,h,p)),l instanceof Ti&&(this.hasUsedAutoRecovery=!0,this.handleAutoRecovery(l,s,h,p));let g=h.thought?`: ${h.thought}`:"";if(h.fbResult==="failed")throw this.hasSuccessfulAutoRecovery=!1,this.createChecksumStep({title:`Recovery Failed${g}`,withError:!0}),new Error("Fallback failed");if(h.fbResult==="hard_assertion")throw this.hasSuccessfulAutoRecovery=!1,this.createChecksumStep({title:`Recovery Failed${g}`,withError:!0}),new rf(h.fbResult);this.hasUsedAutoRecovery&&(this.hasSuccessfulAutoRecovery=!0),l instanceof Ai&&h.summary&&this.arSummaries.push(h.summary),l instanceof Ti&&h.thought&&this.arSummaries.push(h.thought),this.createChecksumStep({title:`Recovery Complete${g}`});let n=this.currentThought;if(n&&h.steps.length===1){let i=h.steps[0];i?.thought&&(n.thought=i.thought)}else n&&(n.children=h.steps.map((i,e)=>({id:`${n.id}.${e+1}`,thought:i.thought??"",type:i.type,parent:n})))}async runConditionallyWithinStep(l,s,r){return l?this.step(s,r):r()}parkOnTerminalFailure(l,s,r){return WA(this.page,{where:l,spec:this.testInfo.file,testInfo:this.testInfo,resume:r},s)}async onExecutionError(l,s){try{return await this.initiateFallbackSequence({...l,type:"action"})}catch(r){if(!this.currentThought){let{locator:g,method:n}=l;this.testRunAnalytics.testRunActionExecutionFailure({locator:g?.toString()??"",selector:g?._selector??"",method:n,checksumStepId:this.checksumStepId??"",error:r instanceof Error?r.toString():String(r)})}let{locator:f,method:h}=l;if(await this.parkOnTerminalFailure(`${h} ${f?.toString()??""}`.trim(),r,s===void 0||s===this.page.mainFrame()?{kind:"action",method:h}:void 0))return;throw r}}async initiateFallbackSequence(l,{fallbackTypes:s}={}){ne(`[initiateFallbackSequence] with type: ${l.type}...`);let r=this.fallbacks.find(p=>p instanceof Ai);if(r){let p=r.getFailedThought(),g=this.variableStore.getActiveVariables();this.fallbacks.forEach(n=>{n.setThought(p),n.setVariables(g)})}let f=this.fallbacks.find(p=>p instanceof Ti);if(f){let p=f.failingThought;this.fallbacks.forEach(g=>{g instanceof Ti&&g.setVariables(this.variableStore.getActiveVariables()),g.setThought(p)})}let h=this.fallbacks;s&&(h=h.filter(p=>s.reduce((g,n)=>g||p instanceof n,!1))),h=h.filter(p=>p.canResolve(l));try{for(let p of h){let g=p.toString();g&&console.log(`Using ${g}`);try{await this.runConditionallyWithinStep(l.type!=="assertion"||!l.withChecksumAI,p.getRecoveryAttemptTitle(l),async()=>this.runFallback(p,l))}catch(n){if(l.withChecksumAI&&n.message==="fetch failed")throw new Error(hr);n instanceof rf&&n.fallbackResult==="hard_assertion"&&sSe(l.error,"hard_assertion"),g&&console.log(`Failed to use ${g}`),p.cancel();continue}return!0}throw l.error}finally{this.resetFallbacks()}}resetFallbacks(){this.fallbacks=[this.constructFallback(Qf).init()]}async shutdown(){if(this.shouldRecordRRwebEvents()&&this.timeMachine){let l=this.timeMachine;try{await l.flushRRwebEventsToFile();let s=l.getRRwebFilePath();s&&this.monitorBridge.addAsset({type:"rrweb-recording",path:s,testId:this.checksumTestId,fileName:no.basename(s)})}catch(s){ne("Error shutting down RRweb events recording",s)}ne("Flushing analytics events......"),await this.testRunAnalytics.close()}}sortFallbacks(){let l=[Qf,Df,Rf,xf,Ai];this.fallbacks.sort((s,r)=>l.indexOf(s.constructor)-l.indexOf(r.constructor))}constructFallback(l){return new l(this.page,this.evaluateWithChecksum.bind(this),this,this.pageInteractor,{generateSelectionData:this.runMode!=="normal"},this,this._context)}async prepareForTestArtifacts(){if((this.options.useMockData||this.runMode==="refactor")&&await this.prepareAPIMock(),this.traceMode&&this.traceMode!=="off"){let l=await this.getTraceFilePath();l&&this.monitorBridge.addAsset({type:"trace",path:l,testId:this.checksumTestId,project:this.testInfo.project.name})}}getTraceFilePath(){try{return this.hasRuntimeStartedTrace?Promise.resolve(eQ(Sb(this.testInfo.file),this.checksumTestId).replace(".zip",".original.zip")):Promise.resolve(this.testInfo.outputPath("trace.zip"))}catch{return Promise.resolve(void 0)}}prepareMockData(){let l=ZR(Sb(this.testInfo.file)),s=no.join(l,`${this.checksumTestId}.har.zip`);if(!(0,Qt.existsSync)(s))throw new Error("Could not find har file or zip file");let r=no.join(l,"tmp");(0,Qt.existsSync)(r)||(0,Qt.mkdirSync)(r);let f=(0,Qt.readFileSync)(s),h=gW(new Uint8Array(f));for(let[g,n]of Object.entries(h)){if(g.endsWith("/"))continue;let i=no.join(r,g);(0,Qt.mkdirSync)(no.dirname(i),{recursive:!0}),(0,Qt.writeFileSync)(i,n),this.unzippedHarData.push(i)}let p=no.join(r,"test.har");if(!(0,Qt.existsSync)(p))throw this.cleanupMockData(),new Error(`Could not find har file ${p} after unzipping ${s}`);return p}cleanupMockData(){this.unzippedHarData.forEach(s=>{(0,Qt.rmSync)(s)});let l=this.unzippedHarData[0];l&&(0,Qt.rmSync)(no.dirname(l),{recursive:!0,force:!0})}async prepareAPIMock(){let l={GET:0,POST:0,PUT:0,DELETE:0};try{let s=this.prepareMockData();await this.page.routeFromHAR(s,{url:"*/**",notFound:"fallback",update:!1});let r=this.page._routes[0].handler;await this.page.route("**/*",f=>{let h=f.request().headers(),p=f.request().method(),g=(l[p]??0)+1;l[p]=g,h["Checksum-Id"]=g.toString(),f.request()._applyFallbackOverrides({headers:h}),r(f)})}catch(s){ne("Error setting up mock data",s.message)}}async loadAppSpecificRules(){this.appSpecificRules={};let l=no.join(oa(Pn()),"settings.asr");if(!(0,Qt.existsSync)(l)){ne("Could not find ASR file");return}try{let s=await wb((0,Qt.readFileSync)(l));this.appSpecificRules=JSON.parse(s.toString())||{}}catch(s){ne("Could not read ASR file",s.message)}}addAutoRecoveryStepId(l){this.arStepIds.push(l)}};var sK=require("fs"),fK=require("module"),dK=require("path"),pK=require("vm"),gK=require("sucrase");function hK(a){let o=(0,sK.readFileSync)(a,"utf8"),{code:l}=(0,gK.transform)(o,{transforms:["typescript","imports"],filePath:a}),s={},r={exports:s};(0,pK.runInThisContext)(`(function (exports, require, module, __filename, __dirname) {
240
+ ${l.description}`})}onTestComplete(l){return this.testRunAnalytics.testRunEnd({success:l,autoRecoveryTriggered:this.hasUsedAutoRecovery,summaries:this.arSummaries}),this.monitorBridge.addChecksumTestMetadata({checksumTestId:this.checksumTestId,pwTestId:this.testInfo.testId,retry:this.testInfo.retry,type:"autoRecoveryMetadata",data:{autoRecoveryTriggered:this.hasUsedAutoRecovery,autoRecovered:this.hasSuccessfulAutoRecovery&&l}}),this.monitorBridge.addChecksumTestMetadata({checksumTestId:this.checksumTestId,pwTestId:this.testInfo.testId,retry:this.testInfo.retry,type:"autoRecoverySummaries",data:this.arSummaries}),this.cleanupMockData(),Promise.resolve()}async wrapInternalSteps(l,s=this.page){try{return s.mainFrame()._checksumInternal=!0,s._checksumInternal=!0,await l()}finally{s.mainFrame()._checksumInternal=!1,s._checksumInternal=!1}}async conditionallyWrapInternalSteps(l,s){return l?this.wrapInternalSteps(s):s()}async wrapNoLocationSteps(l){try{return this.testInfo._checksumNoLocation=!0,await l()}finally{this.testInfo._checksumNoLocation=!1}}findAllStepsRecursively(l,s,r=[]){for(let f of l){(f._stepId===s||f.stepId===s)&&r.push(f);let h=[f.steps,f._testInfoSteps,f._steps].filter(Boolean);for(let p of h)this.findAllStepsRecursively(p,s,r)}return r}makeChecksumStepFunction(l){return s=>{if(!l)return;let r=s._stepId||s.stepId;this.findAllStepsRecursively(s._testInfo._steps,r).forEach(h=>{h.error={message:"ChecksumStepError",stack:"Fallback Failed",cause:void 0}})}}async createChecksumStep(l){let s,r={box:!0,noLocation:!0,obtainStep:u(f=>{s=f},"obtainStep")};if(await this.step(l.title,this.makeChecksumStepFunction(l.withError),!1,r),s?.stepId&&this.arStepIds.push(s.stepId),!s)throw new Error("Checksum step was not created");return s}async step(l,s,r=!0,{obtainStep:f=void 0,box:h=!1,noLocation:p=void 0}={}){let g=this.testInfo._checksumNoLocation;try{this.testInfo._checksumInternal=r===!0,p!==void 0&&(this.testInfo._checksumNoLocation=p),await this.test.step(l,s??(()=>{}),{obtainStep:f,box:h})}finally{this.testInfo._checksumInternal=!1,this.testInfo._checksumNoLocation=g}}addErrorMessage(l,s){this.testInfo.addError(l,s)}async evaluateWithChecksum(l,s,r=!0){this.navigationPromise&&await this.navigationPromise;let f=this.page.evaluate.bind(this.page);return this.conditionallyWrapInternalSteps(r,()=>f(l,s))}getChecksumTestId(){return this.checksumTestId}addNewThought(l,s,r=!1){let f={thought:l,type:s,...r?{children:[]}:{}};if(!this.currentThought)this.highLevelThoughts.push(f);else if(this.currentThought.children)this.currentThought.children.push(f),f.parent=this.currentThought;else{let p=this.currentThought.parent;p?(p.children=p.children??[],p.children.push(f),f.parent=p):this.highLevelThoughts.push(f)}let h=f.parent;return h?f.id=`${h.id}.${h.children?.length??0}`:f.id=`${++this.thoughtsCounter}`,this.currentThought=f,f}buildThoughtsChainForFallback(l=this.highLevelThoughts){let s=[];return l.forEach(r=>{s.push(r.thought),r.children&&s.push(...this.buildThoughtsChainForFallback(r.children))}),s}compoundSelection(...l){let s=super.compoundSelection(...l);return s.setAnalytics(()=>this.testRunAnalytics),this.checksumStepId&&this.options.useChecksumSelectors&&this.setCompoundSelectorFallback(this.checksumStepId),s}setSelectorFallback(l){let s={checksumId:l,fileName:this.testInfo.file,testId:this.checksumTestId,apiKey:this.config.apiKey,apiURL:this.config.apiURL,timeout:bR};this.pushFallback(this.constructFallback(Rf).init(s)),this.pushFallback(this.constructFallback(xf).init(s))}setCompoundSelectorFallback(l){this.pushFallback(this.constructFallback(Df).init({checksumId:l,fileName:this.testInfo.file,testId:this.checksumTestId,apiKey:this.config.apiKey,apiURL:this.config.apiURL,timeout:bR}))}setAIFallback(l,s){let r=this.options.useChecksumAI.arVersion===1,f=u(()=>{let p=this.buildThoughtsChainForFallback(),g={title:this.testInfo.title},n={testFileName:this.testInfo.file,testId:this.testInfo.testId,testSuiteId:process.env.CHECKSUM_TEST_SUITE_ID||""},i={previous:p.slice(0,-1),failing:l,next:p.slice(1)},e={storyInfo:g,testIdentification:n,fallbackConfig:{arMode:this.options.useChecksumAI.arMode??"one_shot",overrideOptions:{...this.options.useChecksumAI.overrideOptions,...this.options.useChecksumAI.modelName&&!this.options.useChecksumAI.overrideOptions?.modelName?{modelName:this.options.useChecksumAI.modelName}:{}},markRecovered:this.options.useChecksumAI.markRecovered},thoughts:i,config:{apiURL:this.config.apiURL,apiKey:this.config.apiKey},type:s};return this.constructFallback(Ti).init(e)},"createArFallback"),h=u(()=>{let p=typeof this.options.useChecksumAI=="object"?this.options.useChecksumAI:void 0,g=p?.arMode,n=p?.overrideOptions;return this.constructFallback(Ai).init({goal:this.testInfo.title,testFile:this.testInfo.file,apiKey:this.config.apiKey,apiURL:this.config.apiURL,testId:this.checksumTestId,thoughts:this.buildThoughtsChainForFallback(),...g!==void 0?{arMode:g}:{},...n!==void 0?{overrideOptions:n}:{},fallbackType:s})},"createAIFallback");return r?this.pushFallback(h()):this.pushFallback(f()),this.proxy}pushFallback(l){this.fallbacks.push(l),this.sortFallbacks()}handleAIFallback(l,s,r){let f=l.fallbackAnalyticsPayload.iterationSteps,h=f.length>0?r/f.length:0,p=s.fbResult??"failed";this.testRunAnalytics.testRunFallbackExecution({result:p,failedThought:l.getFailedThought(),summary:s.summary??"",stepsPayload:l.fallbackAnalyticsPayload,type:l.fallbackType,duration:r,avgDuration:h,success:["finish","soft_assertion"].includes(p)}),this.arResults.push({failedThought:l.getFailedThought(),result:p,...s.thought!==void 0?{thought:s.thought}:{}})}handleAutoRecovery(l,s,r,f){let h=r.stepsThoughts??[],p=h.length>0?f/h.length:0;this.testRunAnalytics.testRunAutoRecovery({failingThought:l.failingThought,type:s.type,finalThought:r.thought??"",result:r.fbResult??"failed",duration:f,avgStepDuration:p,stepsThoughts:h,version:"v1"})}async runFallback(l,s){let r=Date.now(),f=l.resolve(s),h=await He(f,l.timeout),p=Date.now()-r;if(!h)throw this.hasSuccessfulAutoRecovery=!1,this.createChecksumStep({title:"Recovery Failed",withError:!0}),new Error("Fallback failed");l instanceof Ai&&(this.hasUsedAutoRecovery=!0,this.handleAIFallback(l,h,p)),l instanceof Ti&&(this.hasUsedAutoRecovery=!0,this.handleAutoRecovery(l,s,h,p));let g=h.thought?`: ${h.thought}`:"";if(h.fbResult==="failed")throw this.hasSuccessfulAutoRecovery=!1,this.createChecksumStep({title:`Recovery Failed${g}`,withError:!0}),new Error("Fallback failed");if(h.fbResult==="hard_assertion")throw this.hasSuccessfulAutoRecovery=!1,this.createChecksumStep({title:`Recovery Failed${g}`,withError:!0}),new rf(h.fbResult);this.hasUsedAutoRecovery&&(this.hasSuccessfulAutoRecovery=!0),l instanceof Ai&&h.summary&&this.arSummaries.push(h.summary),l instanceof Ti&&h.thought&&this.arSummaries.push(h.thought),this.createChecksumStep({title:`Recovery Complete${g}`});let n=this.currentThought;if(n&&h.steps.length===1){let i=h.steps[0];i?.thought&&(n.thought=i.thought)}else n&&(n.children=h.steps.map((i,e)=>({id:`${n.id}.${e+1}`,thought:i.thought??"",type:i.type,parent:n})))}async runConditionallyWithinStep(l,s,r){return l?this.step(s,r):r()}parkOnTerminalFailure(l,s,r){return WA(this.page,{where:l,spec:this.testInfo.file,testInfo:this.testInfo,resume:r},s)}async onExecutionError(l,s){try{return await this.initiateFallbackSequence({...l,type:"action"})}catch(r){if(!this.currentThought){let{locator:g,method:n}=l;this.testRunAnalytics.testRunActionExecutionFailure({locator:g?.toString()??"",selector:g?._selector??"",method:n,checksumStepId:this.checksumStepId??"",error:r instanceof Error?r.toString():String(r)})}let{locator:f,method:h}=l;if(await this.parkOnTerminalFailure(`${h} ${f?.toString()??""}`.trim(),r,s===void 0||s===this.page.mainFrame()?{kind:"action",method:h}:void 0))return;throw r}}async initiateFallbackSequence(l,{fallbackTypes:s}={}){ne(`[initiateFallbackSequence] with type: ${l.type}...`);let r=this.fallbacks.find(p=>p instanceof Ai);if(r){let p=r.getFailedThought(),g=this.variableStore.getActiveVariables();this.fallbacks.forEach(n=>{n.setThought(p),n.setVariables(g)})}let f=this.fallbacks.find(p=>p instanceof Ti);if(f){let p=f.failingThought;this.fallbacks.forEach(g=>{g instanceof Ti&&g.setVariables(this.variableStore.getActiveVariables()),g.setThought(p)})}let h=this.fallbacks;s&&(h=h.filter(p=>s.reduce((g,n)=>g||p instanceof n,!1))),h=h.filter(p=>p.canResolve(l));try{for(let p of h){let g=p.toString();g&&console.log(`Using ${g}`);try{await this.runConditionallyWithinStep(l.type!=="assertion"||!l.withChecksumAI,p.getRecoveryAttemptTitle(l),async()=>this.runFallback(p,l))}catch(n){if(l.withChecksumAI&&n.message==="fetch failed")throw new Error(hr);n instanceof rf&&n.fallbackResult==="hard_assertion"&&sSe(l.error,"hard_assertion"),g&&console.log(`Failed to use ${g}`),p.cancel();continue}return!0}throw l.error}finally{this.resetFallbacks()}}resetFallbacks(){this.fallbacks=[this.constructFallback(Qf).init()]}detachContextListeners(){this.pageInteractor.removeListener("page")}async shutdown(){if(this.detachContextListeners(),this.shouldRecordRRwebEvents()&&this.timeMachine){let l=this.timeMachine;try{await l.flushRRwebEventsToFile();let s=l.getRRwebFilePath();s&&this.monitorBridge.addAsset({type:"rrweb-recording",path:s,testId:this.checksumTestId,fileName:no.basename(s)})}catch(s){ne("Error shutting down RRweb events recording",s)}ne("Flushing analytics events......"),await this.testRunAnalytics.close()}}sortFallbacks(){let l=[Qf,Df,Rf,xf,Ai];this.fallbacks.sort((s,r)=>l.indexOf(s.constructor)-l.indexOf(r.constructor))}constructFallback(l){return new l(this.page,this.evaluateWithChecksum.bind(this),this,this.pageInteractor,{generateSelectionData:this.runMode!=="normal"},this,this._context)}async prepareForTestArtifacts(){if((this.options.useMockData||this.runMode==="refactor")&&await this.prepareAPIMock(),this.traceMode&&this.traceMode!=="off"){let l=await this.getTraceFilePath();l&&this.monitorBridge.addAsset({type:"trace",path:l,testId:this.checksumTestId,project:this.testInfo.project.name})}}getTraceFilePath(){try{return this.hasRuntimeStartedTrace?Promise.resolve(eQ(Sb(this.testInfo.file),this.checksumTestId).replace(".zip",".original.zip")):Promise.resolve(this.testInfo.outputPath("trace.zip"))}catch{return Promise.resolve(void 0)}}prepareMockData(){let l=ZR(Sb(this.testInfo.file)),s=no.join(l,`${this.checksumTestId}.har.zip`);if(!(0,Qt.existsSync)(s))throw new Error("Could not find har file or zip file");let r=no.join(l,"tmp");(0,Qt.existsSync)(r)||(0,Qt.mkdirSync)(r);let f=(0,Qt.readFileSync)(s),h=gW(new Uint8Array(f));for(let[g,n]of Object.entries(h)){if(g.endsWith("/"))continue;let i=no.join(r,g);(0,Qt.mkdirSync)(no.dirname(i),{recursive:!0}),(0,Qt.writeFileSync)(i,n),this.unzippedHarData.push(i)}let p=no.join(r,"test.har");if(!(0,Qt.existsSync)(p))throw this.cleanupMockData(),new Error(`Could not find har file ${p} after unzipping ${s}`);return p}cleanupMockData(){this.unzippedHarData.forEach(s=>{(0,Qt.rmSync)(s)});let l=this.unzippedHarData[0];l&&(0,Qt.rmSync)(no.dirname(l),{recursive:!0,force:!0})}async prepareAPIMock(){let l={GET:0,POST:0,PUT:0,DELETE:0};try{let s=this.prepareMockData();await this.page.routeFromHAR(s,{url:"*/**",notFound:"fallback",update:!1});let r=this.page._routes[0].handler;await this.page.route("**/*",f=>{let h=f.request().headers(),p=f.request().method(),g=(l[p]??0)+1;l[p]=g,h["Checksum-Id"]=g.toString(),f.request()._applyFallbackOverrides({headers:h}),r(f)})}catch(s){ne("Error setting up mock data",s.message)}}async loadAppSpecificRules(){this.appSpecificRules={};let l=no.join(oa(Pn()),"settings.asr");if(!(0,Qt.existsSync)(l)){ne("Could not find ASR file");return}try{let s=await wb((0,Qt.readFileSync)(l));this.appSpecificRules=JSON.parse(s.toString())||{}}catch(s){ne("Could not read ASR file",s.message)}}addAutoRecoveryStepId(l){this.arStepIds.push(l)}};var sK=require("fs"),fK=require("module"),dK=require("path"),pK=require("vm"),gK=require("sucrase");function hK(a){let o=(0,sK.readFileSync)(a,"utf8"),{code:l}=(0,gK.transform)(o,{transforms:["typescript","imports"],filePath:a}),s={},r={exports:s};(0,pK.runInThisContext)(`(function (exports, require, module, __filename, __dirname) {
241
241
  ${l}
242
242
  })`,{filename:a})(s,(0,fK.createRequire)(a),r,a,(0,dK.dirname)(a));let h=r.exports,p=h.default;return p===void 0?h:p}u(hK,"requireChecksumConfig");var fb=require("fs"),IK=require("module"),OK=require("node:util");var xr={defaultMerge:Symbol("deepmerge-ts: default merge"),skip:Symbol("deepmerge-ts: skip")},D$e={defaultMerge:xr.defaultMerge};function fSe(a,o){return o}u(fSe,"defaultMetaDataUpdater");function dSe(a,o){return a.filter(l=>l!==void 0)}u(dSe,"defaultFilterValues");var AK;(function(a){a[a.NOT=0]="NOT",a[a.RECORD=1]="RECORD",a[a.ARRAY=2]="ARRAY",a[a.SET=3]="SET",a[a.MAP=4]="MAP",a[a.OTHER=5]="OTHER"})(AK||(AK={}));function yK(a){return typeof a!="object"||a===null?0:Array.isArray(a)?2:hSe(a)?1:a instanceof Set?3:a instanceof Map?4:5}u(yK,"getObjectType");function pSe(a){let o=new Set;for(let l of a)for(let s of[...Object.keys(l),...Object.getOwnPropertySymbols(l)])o.add(s);return o}u(pSe,"getKeys");function gSe(a,o){return typeof a=="object"&&Object.prototype.propertyIsEnumerable.call(a,o)}u(gSe,"objectHasProperty");function bK(a){let o=0,l=a[0]?.[Symbol.iterator]();return{[Symbol.iterator](){return{next(){do{if(l===void 0)return{done:!0,value:void 0};let s=l.next();if(s.done===!0){o+=1,l=a[o]?.[Symbol.iterator]();continue}return{done:!1,value:s.value}}while(!0)}}}}}u(bK,"getIterableOfIterables");var vK=["[object Object]","[object Module]"];function hSe(a){if(!vK.includes(Object.prototype.toString.call(a)))return!1;let{constructor:o}=a;if(o===void 0)return!0;let l=o.prototype;return!(l===null||typeof l!="object"||!vK.includes(Object.prototype.toString.call(l))||!l.hasOwnProperty("isPrototypeOf"))}u(hSe,"isRecord");function ASe(a,o,l){let s={};for(let r of pSe(a)){let f=[];for(let g of a)gSe(g,r)&&f.push(g[r]);if(f.length===0)continue;let h=o.metaDataUpdater(l,{key:r,parents:a}),p=EK(f,o,h);p!==xr.skip&&(r==="__proto__"?Object.defineProperty(s,r,{value:p,configurable:!0,enumerable:!0,writable:!0}):s[r]=p)}return s}u(ASe,"mergeRecords$1");function ySe(a){return a.flat()}u(ySe,"mergeArrays$1");function vSe(a){return new Set(bK(a))}u(vSe,"mergeSets$1");function bSe(a){return new Map(bK(a))}u(bSe,"mergeMaps$1");function mSe(a){return a.at(-1)}u(mSe,"mergeOthers$1");var sb={mergeRecords:ASe,mergeArrays:ySe,mergeSets:vSe,mergeMaps:bSe,mergeOthers:mSe};function mK(...a){return ESe({})(...a)}u(mK,"deepmerge");function ESe(a,o){let l=ISe(a,s);function s(...r){return EK(r,l,o)}return u(s,"customizedDeepmerge"),s}u(ESe,"deepmergeCustom");function ISe(a,o){return{defaultMergeFunctions:sb,mergeFunctions:{...sb,...Object.fromEntries(Object.entries(a).filter(([l,s])=>Object.hasOwn(sb,l)).map(([l,s])=>s===!1?[l,sb.mergeOthers]:[l,s]))},metaDataUpdater:a.metaDataUpdater??fSe,deepmerge:o,useImplicitDefaultMerging:a.enableImplicitDefaultMerging??!1,filterValues:a.filterValues===!1?void 0:a.filterValues??dSe,actions:xr}}u(ISe,"getUtils");function EK(a,o,l){let s=o.filterValues?.(a,l)??a;if(s.length===0)return;if(s.length===1)return mR(s,o,l);let r=yK(s[0]);if(r!==0&&r!==5){for(let f=1;f<s.length;f++)if(yK(s[f])!==r)return mR(s,o,l)}switch(r){case 1:return OSe(s,o,l);case 2:return CSe(s,o,l);case 3:return wSe(s,o,l);case 4:return SSe(s,o,l);default:return mR(s,o,l)}}u(EK,"mergeUnknowns");function OSe(a,o,l){let s=o.mergeFunctions.mergeRecords(a,o,l);return s===xr.defaultMerge||o.useImplicitDefaultMerging&&s===void 0&&o.mergeFunctions.mergeRecords!==o.defaultMergeFunctions.mergeRecords?o.defaultMergeFunctions.mergeRecords(a,o,l):s}u(OSe,"mergeRecords");function CSe(a,o,l){let s=o.mergeFunctions.mergeArrays(a,o,l);return s===xr.defaultMerge||o.useImplicitDefaultMerging&&s===void 0&&o.mergeFunctions.mergeArrays!==o.defaultMergeFunctions.mergeArrays?o.defaultMergeFunctions.mergeArrays(a):s}u(CSe,"mergeArrays");function wSe(a,o,l){let s=o.mergeFunctions.mergeSets(a,o,l);return s===xr.defaultMerge||o.useImplicitDefaultMerging&&s===void 0&&o.mergeFunctions.mergeSets!==o.defaultMergeFunctions.mergeSets?o.defaultMergeFunctions.mergeSets(a):s}u(wSe,"mergeSets");function SSe(a,o,l){let s=o.mergeFunctions.mergeMaps(a,o,l);return s===xr.defaultMerge||o.useImplicitDefaultMerging&&s===void 0&&o.mergeFunctions.mergeMaps!==o.defaultMergeFunctions.mergeMaps?o.defaultMergeFunctions.mergeMaps(a):s}u(SSe,"mergeMaps");function mR(a,o,l){let s=o.mergeFunctions.mergeOthers(a,o,l);return s===xr.defaultMerge||o.useImplicitDefaultMerging&&s===void 0&&o.mergeFunctions.mergeOthers!==o.defaultMergeFunctions.mergeOthers?o.defaultMergeFunctions.mergeOthers(a):s}u(mR,"mergeOthers");var CK=!1;function uK(a){CK=a}u(uK,"setLogToConsole");function ne(...a){CK&&process.stdout.write(`${(0,OK.format)(...a)}
243
243
  `)}u(ne,"log");function kSe(a,o){return a in o}u(kSe,"isLocatorMethod");async function EV(a,o,l,s=6e4){if(!kSe(o,a))return a;let r=u(()=>{let f=a[o];return typeof f=="function"?Reflect.apply(f,a,l):f},"executor");return s===null?r():He(r(),s,"Execution timeout")}u(EV,"executePlaywrightMethodWithTimeout");function ER({envName:a,role:o}={}){let l=process.env.CHECKSUM_RUNTIME_ENV_OVERRIDE_NAME??a,s=process.env.CHECKSUM_RUNTIME_ENV_OVERRIDE_ROLE??o;return{...l!==void 0?{envName:l}:{},...s!==void 0?{role:s}:{}}}u(ER,"applyRuntimeEnvOverrides");function IR(a,{role:o,environment:l}={},s=!1){let r;if(l&&(r=a.environments?.find(({name:p})=>l===p)),r??=a.environments?.find(({default:p})=>p),!r)throw new Error("Environment not found. Please make sure your environments are properly defined in the checksum.config.ts file.");let f=r.users,h;if(f&&(o!==void 0&&(h=f.find(p=>p.role===o)),h??=f.find(p=>p.default)),!h)throw new Error(`User not found. Please make sure the users array for the "${r.name}" environment is properly defined in the checksum.config.ts file.`);if(l&&r.name!==l){if(s)throw new Error(`Could not find environment with name "${l}" in config file`);console.warn(`Could not find environment with name "${l}" in config file, trying to use default environment`)}if(o&&h.role!==o){if(s)throw new Error(`Could not find user with role "${o}" for environment "${l}" in config file`);console.warn(`Could not find user with role "${o}" for environment "${l}" in config file, trying to login with environment's default user`)}return{environment:r,user:h}}u(IR,"resolveEnvironment");function TSe(a){let o=`${a??Pn()}/login.ts`;if(!(0,fb.existsSync)(o))throw console.warn(`Could not locate the login.ts file. Please make sure your login file exists at ${o}`),new Error("Could not find login.ts file");try{return(0,IK.createRequire)(__filename)(o).default}catch(l){throw console.warn("Error loading login.ts file",l),l}}u(TSe,"requireLogin");async function PSe(a,o,{environment:l,user:s,config:r}){try{let f=u(()=>o(a,{environment:l,user:s,config:r}),"performLogin");"checksumAI"in a?await a.checksumAI(`Log in${s.role?` using ${s.role} role`:""}${l.name?` in ${l.name} environment`:""}`,f,{skipAutoRecovery:!0}):await f()}catch(f){throw console.warn(`The login method threw an exception, please check the login.ts file for the following error:
244
- `,f),f}}u(PSe,"proceedWithLogin");function ea(a){let{config:o,folder:l}=a,s=TSe(l);return async(r,{role:f,environment:h}={})=>{let{envName:p,role:g}=ER({...h!==void 0?{envName:h}:{},...f!==void 0?{role:f}:{}}),{environment:n,user:i}=IR(o,{...g!==void 0?{role:g}:{},...p!==void 0?{environment:p}:{}},a.throwIfEnvInfoInvalid);await PSe(r,s,{environment:n,user:i,config:o})}}u(ea,"makeUnboundLogin");function wK(a,{environmentName:o,userRole:l}){let s=ea(a);return r=>s(r,{environment:o,role:l})}u(wK,"makeBoundLogin");var oo;function VA(){if(oo)return oo;try{let a=(0,fb.existsSync)(`${Pn()}/checksum.config.ts`)?"checksum.config.ts":(0,fb.existsSync)(`${Pn()}/checksum.config.tmp.ts`)?"checksum.config.tmp.ts":void 0;if(a)return db(hK(`${Pn()}/${a}`))}catch{console.warn("Could not find checksum config file, will run with defaults")}return db()}u(VA,"loadChecksumConfig");function db(a={}){let o={apiKey:"",runMode:"normal",apiURL:"https://api.checksum.ai",options:{useChecksumSelectors:!0,useChecksumAI:{actions:!0,assertions:!1,skipTestsWithKnownBugs:!0},newAssertionsEnabled:!0,useMockData:!1,printLogs:!1,consecutiveActionDelay:100,hideReports:process.env.AUTHORIZE_REPORTS==="true"}};return a.options?.useChecksumAI?.visualComparison===void 0&&a.options?.useChecksumAI?.assertions&&(a.options.useChecksumAI.visualComparison=!0),oo=mK(o,a),process.env.CHECKSUM_API_URL&&(oo.apiURL=process.env.CHECKSUM_API_URL),Ce.testRun.disableAutoRecovery&&oo.options&&(oo.options.useChecksumAI={actions:!1,assertions:!1,visualComparison:!1}),Ce.testRun.disableHostReports&&oo.options&&(oo.options.hostReports=!1),oo.options&&(Ce.testRun.disableTimeMachine&&(oo.options.disableTimeMachine=!0),Ce.testRun.disableRrwebRecording&&(oo.options.disableRrwebRecording=!0)),oo}u(db,"getChecksumConfig");var hr="Checksum failed connecting to the server";var i6e=require("@playwright/test");async function SK(a){await a.body?.cancel().catch(()=>{})}u(SK,"drainBody");var BSe="http://127.0.0.1";async function OR(a,o){let l=o.fetchImpl??globalThis.fetch;try{let s=await l(`${BSe}:${o.port}/`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a),signal:AbortSignal.timeout(o.timeoutMs)});return await SK(s),s.ok?!0:(o.onError?.(new Error(`monitor rejected message with status ${s.status}`)),!1)}catch(s){return o.onError?.(s),!1}}u(OR,"postToMonitor");async function CR(a,o){return await OR(a,o)?!0:o.attempts<=1?!1:(await xSe(o.retryDelayMs),CR(a,{...o,attempts:o.attempts-1}))}u(CR,"postToMonitorWithRetry");function xSe(a){return new Promise(o=>{setTimeout(o,a)})}u(xSe,"sleep");var pb={uploadTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_TIMEOUT_MS",fallback:6e5,min:5e3,max:36e5},noProgressAbortMs:{env:"CHECKSUM_RUNTIME_UPLOAD_NO_PROGRESS_MS",fallback:6e4,min:5e3,max:6e5},assetDeadlineMs:{env:"CHECKSUM_RUNTIME_UPLOAD_ASSET_DEADLINE_MS",fallback:12e5,min:3e4,max:54e5},maxAttempts:{env:"CHECKSUM_RUNTIME_UPLOAD_MAX_ATTEMPTS",fallback:6,min:1,max:20},stallTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_STALL_TIMEOUT_MS",fallback:6e5,min:3e4,max:36e5},minProgressBytes:{env:"CHECKSUM_RUNTIME_UPLOAD_MIN_PROGRESS_BYTES",fallback:65536,min:1,max:67108864},finalizeBudgetMs:{env:"CHECKSUM_RUNTIME_UPLOAD_FINALIZE_BUDGET_MS",fallback:18e5,min:6e4,max:54e5},finalizeCeilingMs:{env:"CHECKSUM_RUNTIME_UPLOAD_FINALIZE_CEILING_MS",fallback:24e5,min:12e4,max:72e5},cliHardCapMs:{env:"CHECKSUM_RUNTIME_UPLOAD_CLI_HARD_CAP_MS",fallback:27e5,min:12e4,max:72e5},watchTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_WATCH_TIMEOUT_MS",fallback:12e4,min:5e3,max:18e5},ipcTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_IPC_TIMEOUT_MS",fallback:5e3,min:500,max:6e4},onEndFlushTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_ONEND_FLUSH_TIMEOUT_MS",fallback:5e3,min:500,max:6e4},resumableChunkBytes:{env:"CHECKSUM_RUNTIME_UPLOAD_RESUMABLE_CHUNK_BYTES",fallback:8388608,min:262144,max:268435456},connectTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_CONNECT_TIMEOUT_MS",fallback:1e4,min:1e3,max:6e4},headersTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_HEADERS_TIMEOUT_MS",fallback:3e5,min:5e3,max:18e5},bodyTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_BODY_TIMEOUT_MS",fallback:3e5,min:5e3,max:18e5},maxConcurrentUploads:{env:"CHECKSUM_RUNTIME_UPLOAD_MAX_CONCURRENT",fallback:15,min:1,max:64}};function DSe(a,o,l,s){if(a===void 0||a.trim()==="")return o;let r=Number(a);return Number.isInteger(r)?Math.min(s,Math.max(l,r)):o}u(DSe,"clampEnvInt");var RSe=[["cliHardCapMs",["finalizeCeilingMs"],.9],["finalizeCeilingMs",["finalizeBudgetMs"],1],["finalizeBudgetMs",["stallTimeoutMs","assetDeadlineMs","watchTimeoutMs"],1],["assetDeadlineMs",["uploadTimeoutMs"],1],["uploadTimeoutMs",["noProgressAbortMs"],.5]];function QSe(a){let o={...a},l=[];for(let[s,r,f]of RSe)for(let h of r){let p=Math.floor(o[s]*f);o[h]>p&&(l.push(`${pb[h].env} (${o[h]}ms) exceeds its bound under ${pb[s].env} (${o[s]}ms); using ${p}ms`),o[h]=p)}return{tunables:o,warnings:l}}u(QSe,"coerceScopeHierarchy");function NSe(a){let o={};for(let l of Object.keys(pb)){let s=pb[l];o[l]=DSe(a[s.env],s.fallback,s.min,s.max)}return o.resumableChunkBytes=Math.max(1,Math.floor(o.resumableChunkBytes/262144))*262144,QSe(o)}u(NSe,"resolveUploadTunablesDetailed");function wR(a){return NSe(a).tunables}u(wR,"resolveUploadTunables");var K$e=wR({});var LSe=4,kK=3,_Se=500,gb=class a{constructor(o){this.workerInfo=o;this.hasMonitor=!1;a.monitorAgentPort?this.hasMonitor=!0:ne("CHECKSUM_UPLOAD_AGENT_PORT is not defined"),this.sendPlaywrightConfig()}static{u(this,"TestRunMonitorBridge")}static{this.monitorAgentHost="http://localhost"}static{this.monitorAgentPort=process.env.CHECKSUM_UPLOAD_AGENT_PORT}static{this.playwrightConfigSent=!1}static{this.tunables=wR(process.env)}addAsset(o){this.signalUpload(o,["trace","har","rrweb-recording"].includes(o.type))}addChecksumTestMetadata(o){let l={type:"checksumTestMetadata",payload:o};this.sendMessage(l)}addTestInfo(o,l,s=!1){this.sendMessage({type:"testInfo",payload:{checksumTestId:o,pwTestId:l,usingChecksumTestIdPlaceholder:s}})}addSingleTestStats(o,l){this.sendMessage({type:"testStats",payload:{passed:o,healed:l}})}sendPlaywrightConfig(){if(a.playwrightConfigSent)return;let o=this.buildPlaywrightConfig();this.sendMessage({type:"playwrightConfig",payload:o}),a.playwrightConfigSent=!0}buildPlaywrightConfig(){let{use:o,testDir:l,testMatch:s,testIgnore:r,timeout:f,outputDir:h,retries:p}=this.workerInfo.project,{reporter:g,configFile:n,projects:i}=this.workerInfo.config,e=Object.keys(i).filter(t=>[o,l,s,r,f,h,p].includes(t)).reduce((t,c)=>({...t,[c]:i[Number(c)]}),{});return{reporter:g,...n!==void 0?{configFile:n}:{},filteredProjects:e,use:o,testDir:l,testMatch:s,testIgnore:r,timeout:f,outputDir:h,retries:p}}sendMessage(o){return this.hasMonitor&&a.monitorAgentPort?OR(o,{port:a.monitorAgentPort,timeoutMs:a.tunables.ipcTimeoutMs,onError:u(l=>ne("Failed to send message to test run monitor",o,l),"onError")}):void 0}async signalUpload(o,l=!1){let s=a.monitorAgentPort;if(!this.hasMonitor||!s)return;let r={type:"asset",payload:o,watch:l},f;await CR(r,{port:s,timeoutMs:a.tunables.ipcTimeoutMs*LSe,attempts:kK,retryDelayMs:_Se,onError:u(p=>{f=p,ne("Failed to register asset with test run monitor",r,p)},"onError")})||vR("asset_registration_failed",{test_suite_run_id:process.env.CHECKSUM_TEST_SUITE_ID,outcome:"error",asset_type:o.type,asset_path:o.path,attempts:kK,error:Ld(f)})}};var TK=require("@playwright/test"),PK=require("puppeteer-extra-plugin"),BK=require("module");var hb=(0,BK.createRequire)(__filename),Ab=class a{constructor(o){this.options=o;this.importPluginPackages()}static{u(this,"StealthProvider")}importPluginPackages(){a.pw??=hb("playwright-extra"),a.StealthPlugin??=hb("puppeteer-extra-plugin-stealth")}static createFreshInstance(){try{let{addExtra:o}=hb("playwright-extra");return o(a.pw.chromium)}catch(o){throw console.error("[StealthProvider] Error creating fresh instance:",o),o}}buildChromiumWithPlugins(o){let{project:l}=this.options,s=l.use.userAgent,r=l.use.playwrightExtra??[],f=a.StealthPlugin();if(r.push(f),this.isCustomUserAgent(s)){f.enabledEvasions.delete("user-agent-override");let g=hb("puppeteer-extra-plugin-stealth/evasions/user-agent-override")({userAgent:s});r.push(g)}let h=o??a.pw.chromium;return r.forEach((p,g)=>{try{!(p instanceof PK.PuppeteerExtraPlugin)&&p!==f&&console.warn(`Plugin at index ${g} in the project's checksum.config.ts file is not an instance of PuppeteerExtraPlugin.`),h.use(p)}catch(n){console.warn(n)}}),h}isCustomUserAgent(o){return o?!Object.values(TK.devices).some(l=>o===l.userAgent):!1}};function xK(a,o){return{testSuiteRunId:o,appName:"generic-app",commitHash:"generic-commit-hash",envName:"generic-env-name",branch:"generic-branch",checksumRuntimeVersion:a}}u(xK,"createDefaultTestSuiteRunInfo");var QK=require("crypto");var h6e=require("@playwright/test");var I6e=require("@playwright/test");function DK(a,o){return Reflect.get(a,o)}u(DK,"readDynamicProperty");var yb=class a{constructor(o){this.context=o;this._pages={};this._pagesInProgress=new Map;this._testAssets=null;this.pageGuidMap=new WeakMap;this.instanceId=++a.instanceCounter,this.proxy=this.createContextProxy()}static{u(this,"ChecksumBrowserContext")}static{this.instanceCounter=0}static{this.guidCounter=0}static makeContext(o){return new a(o).proxy}_rawContext(){return this.context}setTestAssets(o){this._testAssets=o,this.setupPageListener()}getTestAssets(){return this._testAssets}cleanup(){this._pagesInProgress.clear(),this._pages={}}async newPage(){let o=await this.context.newPage();return this.makePage(o)}async makePage(o){if(o._isChecksumPage===!0)return o;if(o.isClosed())throw new Error("Cannot initialize closed page");let l=this.getPageGuid(o),s=this.getPageByGuid(l);if(s)return s;let r=this._pagesInProgress.get(l);if(r)return r;let f=this._createPageInstance(o);this._pagesInProgress.set(l,f);try{let h=await f;return this._pagesInProgress.delete(l),this.addPage(h),h}catch(h){throw this._pagesInProgress.delete(l),h}}addPage(o){let l=this.getPageGuid(o);this._pages[l]=o,o.once("close",()=>{this.removePage(l)})}removePage(o){this._pages[o]&&delete this._pages[o]}async _createPageInstance(o){if(o.isClosed())throw new Error("Cannot initialize page: Page has already been closed");if(this._testAssets)try{return await ub.init(o,this.proxy,this._testAssets.testRunAnalytics,this._testAssets.monitorBridge,this._testAssets.variableStore,this._testAssets.testInfo,this._testAssets.checksumTestId,this._testAssets.test,this._testAssets.config,this._testAssets.isReplMode)}catch(l){throw new Error(`Failed to initialize RuntimePage: ${l instanceof Error?l.message:String(l)}. Test assets must be properly configured.`)}throw new Error("Cannot create page: Test assets not set. Use setTestAssets() before creating pages.")}createContextProxy(){return new Proxy(this,{get:u(function(l,s){return l.getContextMethod(s)},"get")})}setupPageListener(){this.context.on("page",async o=>{try{if(o.isClosed())return;await this.makePage(o)}catch(l){let s=l instanceof Error?l.message:String(l);if(s.includes("Page has already been closed")||s.includes("Target page, context or browser has been closed"))return;throw console.error("[ChecksumBrowserContext] Failed to initialize page created by application:",l),l}})}getPageGuid(o){let l=this.pageGuidMap.get(o);return l||(l=`page@checksumctx_${this.instanceId}_${++a.guidCounter}`,this.pageGuidMap.set(o,l)),l}getPageByGuid(o){return this._pages[o]}getAllPages(){return Object.values(this._pages)}getContextMethod(o){if(o in this){let s=DK(this,o);return typeof s=="function"?s.bind(this):s}let l=DK(this.context,o);return typeof l=="function"?l.bind(this.context):l}pages(){return this.getAllPages()}getPage(o){let l=this.getAllPages(),s=l[o];if(!s)throw new Error(`Page with index ${o} not found. Total pages: ${l.length}`);return s}};var SR={},NK=u((a,o,l={},s=!1)=>{let{environments:r}=o,f=r?.find(p=>p.default),h=a.extend({baseURL:f?.baseURL,bypassCSP:!0,permissions:u(async({},p,g)=>{await p(g.project.use.permissions)},"permissions"),proxy:u(async({proxy:p},g)=>{p?await g({...p,bypass:"127.0.0.1,localhost"}):await g(p)},"proxy"),browser:u(async({browser:p,launchOptions:g},n,i)=>{let e=u(()=>(i.project.use.playwrightExtra||[]).some(d=>d.constructor.name==="StealthPlugin"),"checkIfStealthPluginExists"),t=u(async()=>{let d=await(await new Ab({project:i.project}).buildChromiumWithPlugins()).launch(g);await n(d)},"launchBrowserWithStealthPlugin");Ce.useRemoteDebugging.enabled&&e()?await t():await n(p)},"browser"),launchOptions:u(async({launchOptions:p},g)=>{let n=p.args?[...p.args]:[],i=u(e=>{n.includes(e)||n.push(e)},"pushArg");l.useMockData&&i("--disable-web-security"),Ce.bypassProxyForLocalhost&&i("--proxy-bypass-list=localhost,127.0.0.1"),Ce.useRemoteDebugging.enabled&&i(`--remote-debugging-port=${Ce.useRemoteDebugging.port}`),await g({...p,args:n})},"launchOptions"),variableStore:u(async({},p)=>{let g=new Rl;await p(g)},"variableStore"),vs:u(async({variableStore:p},g)=>{await g(p)},"vs"),variablesStore:u(async({variableStore:p},g)=>{await g(p)},"variablesStore"),testRunAnalytics:u(async({},p,g)=>{let n=(()=>{try{if(process.env.CHECKSUM_TEST_SUITE_INFO)return JSON.parse(process.env.CHECKSUM_TEST_SUITE_INFO);throw new Error("Missing Checksum test suite info")}catch{return console.warn("\u26A0\uFE0F Warning: It seems like you ran the test suite directly via Playwright. This can lead to degraded functionality and unexpected issues. To ensure a fully supported and stable test run, please use: 'npx checksumai test'."),xK("playwright-run-version-unknown",(0,QK.randomUUID)())}})(),i=RK(g)??"",e=$n.getTestRunInstance({...n,checksumTestId:i},process.env.CHECKSUM_ISOLATED_MODE==="true",g);await p(e)},"testRunAnalytics"),monitorBridge:[async({},p,g)=>{let n=new gb(g);await p(n)},{scope:"worker"}],context:u(async({context:p,monitorBridge:g,variableStore:n,testRunAnalytics:i},e,t)=>{let c=yb.makeContext(p);c.setTestAssets({testRunAnalytics:i,monitorBridge:g,variableStore:n,testInfo:t,checksumTestId:RK(t),test:h,config:o,isReplMode:s}),await e(c),c.cleanup()},"context"),page:u(async({page:p,context:g},n,i)=>{let e=await g.makePage(p);Object.defineProperty(e.constructor,"name",{value:"Page"}),await n(e),typeof e.onTestComplete=="function"&&await e.onTestComplete(i.status==="passed"),typeof e.shutdown=="function"&&await e.shutdown()},"page")});return{test:h,defineChecksumTest:FSe}},"createChecksumTestExtension"),FSe=u((a,o,l)=>{let r=(new Error().stack?.split(`
244
+ `,f),f}}u(PSe,"proceedWithLogin");function ea(a){let{config:o,folder:l}=a,s=TSe(l);return async(r,{role:f,environment:h}={})=>{let{envName:p,role:g}=ER({...h!==void 0?{envName:h}:{},...f!==void 0?{role:f}:{}}),{environment:n,user:i}=IR(o,{...g!==void 0?{role:g}:{},...p!==void 0?{environment:p}:{}},a.throwIfEnvInfoInvalid);await PSe(r,s,{environment:n,user:i,config:o})}}u(ea,"makeUnboundLogin");function wK(a,{environmentName:o,userRole:l}){let s=ea(a);return r=>s(r,{environment:o,role:l})}u(wK,"makeBoundLogin");var oo;function VA(){if(oo)return oo;try{let a=(0,fb.existsSync)(`${Pn()}/checksum.config.ts`)?"checksum.config.ts":(0,fb.existsSync)(`${Pn()}/checksum.config.tmp.ts`)?"checksum.config.tmp.ts":void 0;if(a)return db(hK(`${Pn()}/${a}`))}catch{console.warn("Could not find checksum config file, will run with defaults")}return db()}u(VA,"loadChecksumConfig");function db(a={}){let o={apiKey:"",runMode:"normal",apiURL:"https://api.checksum.ai",options:{useChecksumSelectors:!0,useChecksumAI:{actions:!0,assertions:!1,skipTestsWithKnownBugs:!0},newAssertionsEnabled:!0,useMockData:!1,printLogs:!1,consecutiveActionDelay:100,hideReports:process.env.AUTHORIZE_REPORTS==="true"}};return a.options?.useChecksumAI?.visualComparison===void 0&&a.options?.useChecksumAI?.assertions&&(a.options.useChecksumAI.visualComparison=!0),oo=mK(o,a),process.env.CHECKSUM_API_URL&&(oo.apiURL=process.env.CHECKSUM_API_URL),Ce.testRun.disableAutoRecovery&&oo.options&&(oo.options.useChecksumAI={actions:!1,assertions:!1,visualComparison:!1}),Ce.testRun.disableHostReports&&oo.options&&(oo.options.hostReports=!1),oo.options&&(Ce.testRun.disableTimeMachine&&(oo.options.disableTimeMachine=!0),Ce.testRun.disableRrwebRecording&&(oo.options.disableRrwebRecording=!0)),oo}u(db,"getChecksumConfig");var hr="Checksum failed connecting to the server";var i6e=require("@playwright/test");async function SK(a){await a.body?.cancel().catch(()=>{})}u(SK,"drainBody");var BSe="http://127.0.0.1";async function OR(a,o){let l=o.fetchImpl??globalThis.fetch;try{let s=await l(`${BSe}:${o.port}/`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a),signal:AbortSignal.timeout(o.timeoutMs)});return await SK(s),s.ok?!0:(o.onError?.(new Error(`monitor rejected message with status ${s.status}`)),!1)}catch(s){return o.onError?.(s),!1}}u(OR,"postToMonitor");async function CR(a,o){return await OR(a,o)?!0:o.attempts<=1?!1:(await xSe(o.retryDelayMs),CR(a,{...o,attempts:o.attempts-1}))}u(CR,"postToMonitorWithRetry");function xSe(a){return new Promise(o=>{setTimeout(o,a)})}u(xSe,"sleep");var pb={uploadTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_TIMEOUT_MS",fallback:6e5,min:5e3,max:36e5},noProgressAbortMs:{env:"CHECKSUM_RUNTIME_UPLOAD_NO_PROGRESS_MS",fallback:6e4,min:5e3,max:6e5},assetDeadlineMs:{env:"CHECKSUM_RUNTIME_UPLOAD_ASSET_DEADLINE_MS",fallback:12e5,min:3e4,max:54e5},maxAttempts:{env:"CHECKSUM_RUNTIME_UPLOAD_MAX_ATTEMPTS",fallback:6,min:1,max:20},stallTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_STALL_TIMEOUT_MS",fallback:6e5,min:3e4,max:36e5},minProgressBytes:{env:"CHECKSUM_RUNTIME_UPLOAD_MIN_PROGRESS_BYTES",fallback:65536,min:1,max:67108864},finalizeBudgetMs:{env:"CHECKSUM_RUNTIME_UPLOAD_FINALIZE_BUDGET_MS",fallback:18e5,min:6e4,max:54e5},finalizeCeilingMs:{env:"CHECKSUM_RUNTIME_UPLOAD_FINALIZE_CEILING_MS",fallback:24e5,min:12e4,max:72e5},cliHardCapMs:{env:"CHECKSUM_RUNTIME_UPLOAD_CLI_HARD_CAP_MS",fallback:27e5,min:12e4,max:72e5},watchTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_WATCH_TIMEOUT_MS",fallback:12e4,min:5e3,max:18e5},ipcTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_IPC_TIMEOUT_MS",fallback:5e3,min:500,max:6e4},onEndFlushTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_ONEND_FLUSH_TIMEOUT_MS",fallback:5e3,min:500,max:6e4},resumableChunkBytes:{env:"CHECKSUM_RUNTIME_UPLOAD_RESUMABLE_CHUNK_BYTES",fallback:8388608,min:262144,max:268435456},connectTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_CONNECT_TIMEOUT_MS",fallback:1e4,min:1e3,max:6e4},headersTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_HEADERS_TIMEOUT_MS",fallback:3e5,min:5e3,max:18e5},bodyTimeoutMs:{env:"CHECKSUM_RUNTIME_UPLOAD_BODY_TIMEOUT_MS",fallback:3e5,min:5e3,max:18e5},maxConcurrentUploads:{env:"CHECKSUM_RUNTIME_UPLOAD_MAX_CONCURRENT",fallback:15,min:1,max:64}};function DSe(a,o,l,s){if(a===void 0||a.trim()==="")return o;let r=Number(a);return Number.isInteger(r)?Math.min(s,Math.max(l,r)):o}u(DSe,"clampEnvInt");var RSe=[["cliHardCapMs",["finalizeCeilingMs"],.9],["finalizeCeilingMs",["finalizeBudgetMs"],1],["finalizeBudgetMs",["stallTimeoutMs","assetDeadlineMs","watchTimeoutMs"],1],["assetDeadlineMs",["uploadTimeoutMs"],1],["uploadTimeoutMs",["noProgressAbortMs"],.5]];function QSe(a){let o={...a},l=[];for(let[s,r,f]of RSe)for(let h of r){let p=Math.floor(o[s]*f);o[h]>p&&(l.push(`${pb[h].env} (${o[h]}ms) exceeds its bound under ${pb[s].env} (${o[s]}ms); using ${p}ms`),o[h]=p)}return{tunables:o,warnings:l}}u(QSe,"coerceScopeHierarchy");function NSe(a){let o={};for(let l of Object.keys(pb)){let s=pb[l];o[l]=DSe(a[s.env],s.fallback,s.min,s.max)}return o.resumableChunkBytes=Math.max(1,Math.floor(o.resumableChunkBytes/262144))*262144,QSe(o)}u(NSe,"resolveUploadTunablesDetailed");function wR(a){return NSe(a).tunables}u(wR,"resolveUploadTunables");var K$e=wR({});var LSe=4,kK=3,_Se=500,gb=class a{constructor(o){this.workerInfo=o;this.hasMonitor=!1;a.monitorAgentPort?this.hasMonitor=!0:ne("CHECKSUM_UPLOAD_AGENT_PORT is not defined"),this.sendPlaywrightConfig()}static{u(this,"TestRunMonitorBridge")}static{this.monitorAgentHost="http://localhost"}static{this.monitorAgentPort=process.env.CHECKSUM_UPLOAD_AGENT_PORT}static{this.playwrightConfigSent=!1}static{this.tunables=wR(process.env)}addAsset(o){this.signalUpload(o,["trace","har","rrweb-recording"].includes(o.type))}addChecksumTestMetadata(o){let l={type:"checksumTestMetadata",payload:o};this.sendMessage(l)}addTestInfo(o,l,s=!1){this.sendMessage({type:"testInfo",payload:{checksumTestId:o,pwTestId:l,usingChecksumTestIdPlaceholder:s}})}addSingleTestStats(o,l){this.sendMessage({type:"testStats",payload:{passed:o,healed:l}})}sendPlaywrightConfig(){if(a.playwrightConfigSent)return;let o=this.buildPlaywrightConfig();this.sendMessage({type:"playwrightConfig",payload:o}),a.playwrightConfigSent=!0}buildPlaywrightConfig(){let{use:o,testDir:l,testMatch:s,testIgnore:r,timeout:f,outputDir:h,retries:p}=this.workerInfo.project,{reporter:g,configFile:n,projects:i}=this.workerInfo.config,e=Object.keys(i).filter(t=>[o,l,s,r,f,h,p].includes(t)).reduce((t,c)=>({...t,[c]:i[Number(c)]}),{});return{reporter:g,...n!==void 0?{configFile:n}:{},filteredProjects:e,use:o,testDir:l,testMatch:s,testIgnore:r,timeout:f,outputDir:h,retries:p}}sendMessage(o){return this.hasMonitor&&a.monitorAgentPort?OR(o,{port:a.monitorAgentPort,timeoutMs:a.tunables.ipcTimeoutMs,onError:u(l=>ne("Failed to send message to test run monitor",o,l),"onError")}):void 0}async signalUpload(o,l=!1){let s=a.monitorAgentPort;if(!this.hasMonitor||!s)return;let r={type:"asset",payload:o,watch:l},f;await CR(r,{port:s,timeoutMs:a.tunables.ipcTimeoutMs*LSe,attempts:kK,retryDelayMs:_Se,onError:u(p=>{f=p,ne("Failed to register asset with test run monitor",r,p)},"onError")})||vR("asset_registration_failed",{test_suite_run_id:process.env.CHECKSUM_TEST_SUITE_ID,outcome:"error",asset_type:o.type,asset_path:o.path,attempts:kK,error:Ld(f)})}};var TK=require("@playwright/test"),PK=require("puppeteer-extra-plugin"),BK=require("module");var hb=(0,BK.createRequire)(__filename),Ab=class a{constructor(o){this.options=o;this.importPluginPackages()}static{u(this,"StealthProvider")}importPluginPackages(){a.pw??=hb("playwright-extra"),a.StealthPlugin??=hb("puppeteer-extra-plugin-stealth")}static createFreshInstance(){try{let{addExtra:o}=hb("playwright-extra");return o(a.pw.chromium)}catch(o){throw console.error("[StealthProvider] Error creating fresh instance:",o),o}}buildChromiumWithPlugins(o){let{project:l}=this.options,s=l.use.userAgent,r=l.use.playwrightExtra??[],f=a.StealthPlugin();if(r.push(f),this.isCustomUserAgent(s)){f.enabledEvasions.delete("user-agent-override");let g=hb("puppeteer-extra-plugin-stealth/evasions/user-agent-override")({userAgent:s});r.push(g)}let h=o??a.pw.chromium;return r.forEach((p,g)=>{try{!(p instanceof PK.PuppeteerExtraPlugin)&&p!==f&&console.warn(`Plugin at index ${g} in the project's checksum.config.ts file is not an instance of PuppeteerExtraPlugin.`),h.use(p)}catch(n){console.warn(n)}}),h}isCustomUserAgent(o){return o?!Object.values(TK.devices).some(l=>o===l.userAgent):!1}};function xK(a,o){return{testSuiteRunId:o,appName:"generic-app",commitHash:"generic-commit-hash",envName:"generic-env-name",branch:"generic-branch",checksumRuntimeVersion:a}}u(xK,"createDefaultTestSuiteRunInfo");var QK=require("crypto");var h6e=require("@playwright/test");var I6e=require("@playwright/test");function DK(a,o){return Reflect.get(a,o)}u(DK,"readDynamicProperty");var yb=class a{constructor(o){this.context=o;this._pages={};this._pagesInProgress=new Map;this._testAssets=null;this.pageListener=null;this.pageGuidMap=new WeakMap;this.instanceId=++a.instanceCounter,this.proxy=this.createContextProxy()}static{u(this,"ChecksumBrowserContext")}static{this.instanceCounter=0}static{this.guidCounter=0}static makeContext(o){return new a(o).proxy}_rawContext(){return this.context}setTestAssets(o){this._testAssets=o,this.setupPageListener()}getTestAssets(){return this._testAssets}async cleanup(){this.pageListener&&(this.context.off("page",this.pageListener),this.pageListener=null),await Promise.allSettled(this._pagesInProgress.values()),await Promise.all(this.getAllPages().map(o=>(o.detachContextListeners(),o.isClosed()?void 0:o.close().catch(()=>{})))),this._pagesInProgress.clear(),this._pages={}}async newPage(){let o=await this.context.newPage();return this.makePage(o)}async makePage(o){if(o._isChecksumPage===!0)return o;if(o.isClosed())throw new Error("Cannot initialize closed page");let l=this.getPageGuid(o),s=this.getPageByGuid(l);if(s)return s;let r=this._pagesInProgress.get(l);if(r)return r;let f=this._createPageInstance(o);this._pagesInProgress.set(l,f);try{let h=await f;return this._pagesInProgress.delete(l),this.addPage(h),h}catch(h){throw this._pagesInProgress.delete(l),h}}addPage(o){let l=this.getPageGuid(o);this._pages[l]=o,o.once("close",()=>{this.removePage(l)})}removePage(o){this._pages[o]&&delete this._pages[o]}async _createPageInstance(o){if(o.isClosed())throw new Error("Cannot initialize page: Page has already been closed");if(this._testAssets)try{return await ub.init(o,this.proxy,this._testAssets.testRunAnalytics,this._testAssets.monitorBridge,this._testAssets.variableStore,this._testAssets.testInfo,this._testAssets.checksumTestId,this._testAssets.test,this._testAssets.config,this._testAssets.isReplMode)}catch(l){throw new Error(`Failed to initialize RuntimePage: ${l instanceof Error?l.message:String(l)}. Test assets must be properly configured.`)}throw new Error("Cannot create page: Test assets not set. Use setTestAssets() before creating pages.")}createContextProxy(){return new Proxy(this,{get:u(function(l,s){return l.getContextMethod(s)},"get")})}setupPageListener(){this.pageListener||(this.pageListener=async o=>{try{if(o.isClosed())return;await this.makePage(o)}catch(l){let s=l instanceof Error?l.message:String(l);if(s.includes("Page has already been closed")||s.includes("Target page, context or browser has been closed"))return;throw console.error("[ChecksumBrowserContext] Failed to initialize page created by application:",l),l}},this.context.on("page",this.pageListener))}getPageGuid(o){let l=this.pageGuidMap.get(o);return l||(l=`page@checksumctx_${this.instanceId}_${++a.guidCounter}`,this.pageGuidMap.set(o,l)),l}getPageByGuid(o){return this._pages[o]}getAllPages(){return Object.values(this._pages)}getContextMethod(o){if(o in this){let s=DK(this,o);return typeof s=="function"?s.bind(this):s}let l=DK(this.context,o);return typeof l=="function"?l.bind(this.context):l}pages(){return this.getAllPages()}getPage(o){let l=this.getAllPages(),s=l[o];if(!s)throw new Error(`Page with index ${o} not found. Total pages: ${l.length}`);return s}};var SR={},NK=u((a,o,l={},s=!1)=>{let{environments:r}=o,f=r?.find(p=>p.default),h=a.extend({baseURL:f?.baseURL,bypassCSP:!0,permissions:u(async({},p,g)=>{await p(g.project.use.permissions)},"permissions"),proxy:u(async({proxy:p},g)=>{p?await g({...p,bypass:"127.0.0.1,localhost"}):await g(p)},"proxy"),browser:u(async({browser:p,launchOptions:g},n,i)=>{let e=u(()=>(i.project.use.playwrightExtra||[]).some(d=>d.constructor.name==="StealthPlugin"),"checkIfStealthPluginExists"),t=u(async()=>{let d=await(await new Ab({project:i.project}).buildChromiumWithPlugins()).launch(g);await n(d)},"launchBrowserWithStealthPlugin");Ce.useRemoteDebugging.enabled&&e()?await t():await n(p)},"browser"),launchOptions:u(async({launchOptions:p},g)=>{let n=p.args?[...p.args]:[],i=u(e=>{n.includes(e)||n.push(e)},"pushArg");l.useMockData&&i("--disable-web-security"),Ce.bypassProxyForLocalhost&&i("--proxy-bypass-list=localhost,127.0.0.1"),Ce.useRemoteDebugging.enabled&&i(`--remote-debugging-port=${Ce.useRemoteDebugging.port}`),await g({...p,args:n})},"launchOptions"),variableStore:u(async({},p)=>{let g=new Rl;await p(g)},"variableStore"),vs:u(async({variableStore:p},g)=>{await g(p)},"vs"),variablesStore:u(async({variableStore:p},g)=>{await g(p)},"variablesStore"),testRunAnalytics:u(async({},p,g)=>{let n=(()=>{try{if(process.env.CHECKSUM_TEST_SUITE_INFO)return JSON.parse(process.env.CHECKSUM_TEST_SUITE_INFO);throw new Error("Missing Checksum test suite info")}catch{return console.warn("\u26A0\uFE0F Warning: It seems like you ran the test suite directly via Playwright. This can lead to degraded functionality and unexpected issues. To ensure a fully supported and stable test run, please use: 'npx checksumai test'."),xK("playwright-run-version-unknown",(0,QK.randomUUID)())}})(),i=RK(g)??"",e=$n.getTestRunInstance({...n,checksumTestId:i},process.env.CHECKSUM_ISOLATED_MODE==="true",g);await p(e)},"testRunAnalytics"),monitorBridge:[async({},p,g)=>{let n=new gb(g);await p(n)},{scope:"worker"}],context:u(async({context:p,monitorBridge:g,variableStore:n,testRunAnalytics:i},e,t)=>{let c=yb.makeContext(p);c.setTestAssets({testRunAnalytics:i,monitorBridge:g,variableStore:n,testInfo:t,checksumTestId:RK(t),test:h,config:o,isReplMode:s}),await e(c),await c.cleanup()},"context"),page:u(async({page:p,context:g},n,i)=>{let e=await g.makePage(p);Object.defineProperty(e.constructor,"name",{value:"Page"}),await n(e),typeof e.onTestComplete=="function"&&await e.onTestComplete(i.status==="passed"),typeof e.shutdown=="function"&&await e.shutdown()},"page")});return{test:h,defineChecksumTest:FSe}},"createChecksumTestExtension"),FSe=u((a,o,l)=>{let r=(new Error().stack?.split(`
245
245
  `)??[]).find(f=>f.includes(".checksum.spec.ts"));if(!r)throw new Error("Could not locate test location. Make sure test is run from valid checksum test file");return SR[r]=o,a},"defineChecksumTest");function RK(a){let{file:o,line:l}=a,s=Object.keys(SR).filter(f=>f.trim().includes(o.trim()));if(!s.length)return;let r=4;for(let f=0;f<r;f++)for(let h of s){let p;try{p=parseInt(h.split(":").reverse()[1]??"")}catch{continue}if(p-f===l)return SR[h]}}u(RK,"getCurrentTestIdFromMapping");var oKe=require("@playwright/test");var W6e=require("@playwright/test");var MSe=["toMatchSnapshot"],USe=["toBe","toBeCloseTo","toBeDefined","toBeFalsy","toBeGreaterThan","toBeGreaterThanOrEqual","toBeInstanceOf","toBeLessThan","toBeLessThanOrEqual","toBeNaN","toBeNull","toBeTruthy","toBeUndefined","toContain","toContainEqual","toEqual","toHaveLength","toHaveProperty","toMatch","toMatchObject","toStrictEqual","toThrow","toThrowError"],LK=[...USe,...MSe];var vb=class{constructor(o,l,s,r=!1,f=!1,h={}){this.page=o;this.subject=l;this.soft=r;this.skipAutoRecovery=f;this.configuration=h;this.fallbackEnabled=!1;this.withChecksumAI=!1;this.negated=!1;this.withChecksumAIMatcher=u(()=>(this.withChecksumAI=!0,Promise.reject(new Error)),"withChecksumAIMatcher");this.setThought(s)}static{u(this,"ExpectCallProxyHandler")}setThought(o){o&&(this.checksumAIThought=this.page.addNewThought(o,"assertion"),this.useChecksumAIOptions=this.page.getRuntimeOptions().useChecksumAI,this.useChecksumAIOptions.assertions&&(this.page.setAIFallback(o,"assertion"),this.fallbackEnabled=!0))}get(o,l,s){if(typeof l!="string")return Reflect.get(o,l);if(l==="checksumAI")return f=>(this.setThought(f),s);if(l==="withChecksumAI"||typeof Reflect.get(o,l)=="function"){let f=l==="withChecksumAI"?this.withChecksumAIMatcher:Reflect.get(o,l);return(...h)=>LK.includes(l)?(this.negated=!1,f.call(o,...h)):(this.inFlight=l==="withChecksumAI"?void 0:{kind:"assertion",matcher:l,args:h,negated:this.negated,subject:this.subject,timeout:this.configuration.timeout},this.checksumAIThought?this.executeMatcherWithinStep(f,o,...h):this.executeMatcher(f,o,...h))}l==="not"&&(this.negated=!this.negated);let r=Reflect.get(o,l);return new Proxy(r,this)}findNestedErrors(o,l){o.error&&o.infectParentStepsWithError&&l.push(o.error);for(let s of o.steps)this.findNestedErrors(s,l)}async callMatcher(o,l,...s){this.beforeMatcherCall();let r=o.call(l,...s),f=r instanceof Promise?await r:r;if(this.step){let h=[];if(this.step.error?h.push(this.step.error):this.findNestedErrors(this.step,h),h.length)throw h[0]}return f}executeMatcherWithinStep(o,l,...s){let r=this.checksumAIThought;if(!r)throw new Error("ExpectCallProxyHandler: checksumAIThought is not set");return this.page.step(r.thought,()=>this.callMatcher(o,l,...s).catch(this.onMatcherFailure.bind(this)),!1,{obtainStep:u(f=>this.step=f,"obtainStep")}).catch(f=>{if(!this.soft&&!(this.withChecksumAI&&f.message===hr))throw f}).finally(this.afterMatcherExecute.bind(this))}async executeMatcher(o,l,...s){try{return await this.callMatcher(o,l,...s)}catch(r){await this.onMatcherFailure(r);return}finally{this.afterMatcherExecute()}}beforeMatcherCall(){this.page.setExpectConfiguration(this.configuration)}afterMatcherExecute(){this.inFlight=void 0,this.negated=!1,this.checksumAIThought=void 0,this.fallbackEnabled=!1,this.withChecksumAI=!1,this.page.resetFallbacks(),this.page.setExpectConfiguration(void 0)}shouldInitiateFallback(o){return!(!this.fallbackEnabled||Reflect.get(o,"matcherResult")?.name==="toHaveScreenshot"&&!this.useChecksumAIOptions?.visualComparison)}parkOnTerminalFailure(o){return this.soft||cf()?Promise.resolve(!1):WA(this.page.bypassChecksum(),{where:this.checksumAIThought?.thought??"assertion",spec:this.page.testInfo.file,testInfo:this.page.testInfo,resume:this.inFlight},o)}async parkOrThrow(o){if(!await this.parkOnTerminalFailure(o))throw o}async onMatcherFailure(o){if(!this.shouldInitiateFallback(o)){ne("[onMatcherFailure] fallback disabled, continuing with error."),this.page.testRunAnalytics.testRunAssertionExecutionFailure({failedThought:this.checksumAIThought?.thought??"",error:o.message,matcher:o.matcherResult?.name}),await this.parkOrThrow(o);return}if(cf()){if(ne("[onMatcherFailure] assertion failed inside a locator handler, skipping fallback"),this.soft)return;throw o}if(ne("[onMatcherFailure] initiating fallback sequence with thought:",this.checksumAIThought?.thought),this.skipAutoRecovery){if(this.soft)return;await this.parkOrThrow(o);return}try{await this.page.initiateFallbackSequence({type:"assertion",error:o,withChecksumAI:this.withChecksumAI,testInfo:this.page.testInfo})}catch(l){if(this.soft)return;await this.parkOrThrow(l);return}throw this.soft=!0,o}};var bb=class a{constructor(o,l={}){this.page=o;this.configuration=l}static{u(this,"ExpectProxyHandler")}get(o,l){if(l==="setPage")return r=>{this.page=r};if(l==="extend")return(...r)=>{let f=o.extend(...r);return new Proxy(f,this)};if(l==="configure")return r=>{let f=o.configure(r);return new Proxy(f,new a(this.page,{...this.configuration,...r}))};if(l==="soft")return(...r)=>{let f=this.manipulateArgsAndExtractThought(r),h=o.soft(...r);return new Proxy(h,this.makeExpectCallProxyHandler(f,r[0],!0))};if(l==="poll")return(...r)=>{let f=this.manipulateArgsAndExtractThought(r),h=o.poll(...r);return new Proxy(h,this.makeExpectCallProxyHandler(f,r[0]))};if(l==="skipAutoRecovery")return new Proxy(()=>{},{apply:u((f,h,p)=>{let g=this.manipulateArgsAndExtractThought(p),n=o.apply(h,p);return new Proxy(n,this.makeExpectCallProxyHandler(g,p[0],void 0,!0))},"apply"),get:u((f,h)=>{let p=new Proxy(o,new a(this.page,{...this.configuration,skipAutoRecovery:!0}));return Reflect.get(p,h)},"get")});let s=Reflect.get(o,l);return s instanceof Function?s.bind(o):s}apply(o,l,s){let r=this.manipulateArgsAndExtractThought(s),f=o.apply(l,s);return new Proxy(f,this.makeExpectCallProxyHandler(r,s[0]))}makeExpectCallProxyHandler(o,l,s,r){if(!this.page)throw new Error("ExpectProxyHandler: page is not set");return new vb(this.page,l,o,s===!0?!0:this.configuration.soft,r===!0?!0:this.configuration.skipAutoRecovery,this.configuration)}manipulateArgsAndExtractThought(o){let l,s=o[1];if(typeof s=="string")l=s,o[1]=void 0;else if(s!==null&&typeof s=="object"){let r=s;if(r.checksumAI===!1){r.checksumAI=void 0;return}r.checksumAI&&typeof r.checksumAI=="string"?(l=r.checksumAI,r.checksumAI=void 0):r.message&&(l=r.message,r.message=void 0)}return l}};var mb=class a{constructor(o){this.expect=o;let l=new Proxy(this.expect,new bb);this.proxy=l}static{u(this,"ChecksumExpect")}static init(o){return new a(o).proxy}};var _K=require("@playwright/test");function jSe(a,o=VA()){let{options:l,apiKey:s,environments:r,defaultEnvironmentName:f}=o,h=r?.find(d=>d.default);if(f&&(h=r?.find(d=>d.name===f)),!h)throw new Error("No default environment found. Please set the default field to true on one of the environments in the checksum.config.ts file.");if(!h.baseURL)throw new Error("A baseURL is required. Please set the baseURL field in the default environment in the checksum.config.ts file.");if(!h.users?.find(d=>d.default))throw new Error("A default user within the default environment is required. Please set one of the default environment users as default in the checksum.config.ts file.");if(!s)throw new Error("An API key is required. Please set the apiKey field in the checksum.config.ts file.");let g=process.env.CHECKSUM_REPL==="true",{test:n,defineChecksumTest:i}=NK(a??_K.test,o,l,g),e=mb.init(n.expect),t=WSe();n._checksum={expect:e,checksumAI:t},g&&(n.beforeEach(()=>{n.setTimeout(0)}),n.afterEach(()=>new Promise(()=>{setInterval(()=>{},1e3)})));let c=u(({name:d,userRole:A})=>{let{envName:y,role:v}=ER({...d!==void 0?{envName:d}:{},...A!==void 0?{role:A}:{}}),{environment:O,user:I}=IR(o,{...y!==void 0?{environment:y}:{},...v!==void 0?{role:v}:{}},!0),k=wK({config:o,throwIfEnvInfoInvalid:!0},{environmentName:O.name,userRole:I.role});return{environment:O,user:I,login:k}},"getEnvironment");return{test:n,expect:e,login:ea({config:o}),defineChecksumTest:i,getEnvironment:c,checksumAI:t}}u(jSe,"init");var kR=u(a=>new Proxy(a,{apply:u(function(l,s,r){let f={...l.options,...r[2]};return l.page.checksumAI(r[0],r[1],f)},"apply"),get:u(function(l,s){return s==="withDialog"?(l.options.withDialog=!0,kR(a)):s==="skipAutoRecovery"?(l.options.skipAutoRecovery=!0,kR(a)):l[s]},"get"),set:u(function(l,s,r){return s!=="page"?!1:(l[s]=r,!!r)},"set")}),"makeChecksumAIProxy");function HSe(){}u(HSe,"checksumAICarrier");var WSe=u(()=>{let a=HSe.bind(null);return a.page=void 0,a.options={withDialog:!1,skipAutoRecovery:!1},kR(a)},"makeChecksumAI");0&&(module.exports={AutoRecoveryMode,RunMode,getChecksumConfig,getLogin,init});
246
246
  /*! Bundled license information:
247
247
 
package/package.json CHANGED
@@ -45,5 +45,5 @@
45
45
  "url": "https://github.com/checksum-ai/checksum-ai-monorepo/issues"
46
46
  },
47
47
  "homepage": "https://github.com/checksum-ai/checksum-ai-monorepo/tree/main/packages/runtime#readme",
48
- "version": "5.3.0"
48
+ "version": "5.3.1"
49
49
  }