@checksum-ai/runtime 2.0.14 → 2.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env +1 -1
- package/cli.js +1 -1
- package/index.js +1 -1
- package/package.json +1 -1
- package/pw-report-template.html +28 -27
- package/test-run-monitor.js +1 -1
- package/vtg-pw-bridge-runner.js +1 -1
package/.env
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
CHECKSUM_RUNTIME_BUILD_TIME=2026-01-
|
|
1
|
+
CHECKSUM_RUNTIME_BUILD_TIME=2026-01-30T08:33:00.794Z
|
package/cli.js
CHANGED
|
@@ -613,7 +613,7 @@ Result: ${JSON.stringify(S)}`);else T=S;let N;qSe(r)&&(N=r.id),!N&&Jin(m)&&(N=m.
|
|
|
613
613
|
|
|
614
614
|
${l}`;return{success:!0,pages:s,message:f}}async switchPageHandler(a){if(!a.pageId)return{success:!1,message:"pageId is required"};a.thought&&this.utils.createChecksumStep({title:a.thought});try{await this.utils.setActivePage(a.pageId);let s=await this.utils.captureApplicationState();return{success:!0,message:`Successfully switched to page ${a.pageId}`,appState:s}}catch(s){let l=s instanceof Error?s.message:String(s);return{success:!1,message:`Failed to switch to page ${a.pageId}: ${l}`}}}};e(uTt,"AutoRecoveryAgent");cTt=uTt});var z6r,lTt,bln=ss(()=>{"use strict";lmr();yOe();z6r=class z6r{constructor(r,a){this.sessionId=null;if(!Cpe.getCurrentTestInfo())throw new Error("TestRunAnalytics must be initialized with testInfo before RecoveryAnalytics can be used");let l=Cpe.getCurrentInstance();if(!l)throw new Error("TestRunAnalytics instance not found. Make sure TestRunAnalytics is initialized before creating RecoveryAnalytics");let f=l.getTestSuiteRunInfo();this.analytics=Qee.createFromConfig(f,Cpe.isolatedMode,!0),this.fallbackId=r,this.fallbackType=a}updateToSessionId(r){this.sessionId!==r&&(this.sessionId=r)}get tableName(){return"fallbacks"}get metadata(){return{...this.analytics.metadata,fallbackType:this.fallbackType,sessionId:this.sessionId||"unknown",fallbackId:this.fallbackId}}event(r){this.analytics.trackEventWithTable(r,this.metadata,this.tableName)}setFallbackType(r){this.fallbackType=r}aiFallbackStart(r){this.event({event:"AI Fallback Start",metadata:this.metadata,...r})}aiFallbackConfig(r){this.event({event:"AI Fallback Config",metadata:this.metadata,...r})}aiFallbackIterationResponse(r){this.event({event:"AI Fallback Iteration Response",metadata:this.metadata,...r})}aiFallbackAssertion(r){this.event({event:"AI Fallback Assertion Execution",metadata:this.metadata,...r})}aiFallbackChangeVariable(r){this.event({event:"AI Fallback Change Variable",metadata:this.metadata,...r})}aiFallbackSummary(r){this.event({event:"AI Fallback Summary",metadata:this.metadata,fallbackType:this.fallbackType,...r})}aiFallbackActionExecution(r){this.event({event:"AI Fallback Action Execution",metadata:this.metadata,...r})}aiFallbackActionExecutionFailure(r){this.event({event:"AI Fallback Action Execution Failure",metadata:this.metadata,...r})}aiFallbackEnd(r){this.event({event:"AI Fallback End",metadata:this.metadata,...r})}ARStart(){this.event({event:"Auto-Recovery Start",metadata:this.metadata})}ARConfig(r){this.event({event:"Auto-Recovery Config",metadata:this.metadata,...r})}ARGetState(r){this.event({event:"Auto-Recovery State",metadata:this.metadata,thought:r})}ARInvokeCode(r,a){this.event({event:"Auto-Recovery Invoke Code",metadata:this.metadata,thought:r,code:a})}ARFinalResult(r){this.event({event:"Auto-Recovery Final Result",metadata:this.metadata,...r})}autoRecoveryDisconnect(r){this.event({event:"Auto-Recovery Disconnect",metadata:this.metadata,...r})}ARFinish(r){this.event({event:"Auto-Recovery Finish",metadata:this.metadata,...r})}ARError(r){this.event({event:"Auto-Recovery Error",metadata:this.metadata,...r})}};e(z6r,"RecoveryAnalytics");lTt=z6r});var Eln=ss(()=>{"use strict"});function W6r(i){return i._guid}var Cln,Dln,dwe,pTt,Sln=ss(()=>{"use strict";Npr();Cln=require("fs"),Dln=Td(require("path"));bln();Eln();e(W6r,"getPageGuid");dwe=class dwe{constructor({page:r,evaluateWithChecksum:a,checksumPage:s,pageInteractor:l,arConfig:f,sessionId:m,runtimeFallbackData:A,fallbackData:E,variableStore:S,runtimePage:T,context:O}){this.reducedHtmlTimeoutMs=3e4;this.page=r,this.evaluateWithChecksum=a,this.checksumPage=s,this._pageInteractor=l,this.arConfig=f,this.sessionId=m,this.runtimeFallbackData=A,this.fallbackData=E,this.variableStore=S,this.runtimePage=T,this.context=O,this._activePageGuid=W6r(this.page),this._analytics=new lTt(this.sessionId,E.type)}get activePageGuid(){return this._activePageGuid}static async start(r){return new dwe({...r})}async getPageById(r){return(this.context||this.page.context()).pages().find(l=>W6r(l)===r)}async setActivePage(r){let a=await this.getPageById(r);if(!a||a.isClosed())throw new Error(`Page with ID ${r} is closed or not found`);this.page=a,this._activePageGuid=r}getMatcherResultFileData(r){let a=r.matcherResult;if((a==null?void 0:a.name)!=="toHaveScreenshot")return;let s=e((A,E=!0)=>{if(!A)return"";try{return(0,Cln.readFileSync)(A,E?"base64":"utf-8")}catch{return""}},"readFileSafe"),l=s(a==null?void 0:a.actual),f=s(a==null?void 0:a.diff),m=s(a==null?void 0:a.expected);if(!m)throw new Error("No expected file found for 'toHaveScreenshot'");return{...a,actual:l,diff:f,expected:m}}async getSelectionDataForChecksumId(r){return await this.evaluateWithChecksum(async s=>{let{selector:l,locator:f,clickOffset:m,parentFramesSelectors:A,invalid:E,rrwebId:S}=await window.checksum.testGenerator.getSelectorForChecksumId(s),T=await window.checksum.testGenerator.getElementForChecksumId(s),O=T instanceof HTMLOptionElement&&T.value?T.value:void 0;return{selector:l,locator:f,clickOffset:m,selectOptionValue:O,parentFramesSelectors:A,invalid:E,rrwebId:S}},r)}async getReducedHtml(r=dwe.currentChecksumId){if(this._pageInteractor.getCurrentURL()==="about:blank")return{reducedHTML:"Error: Page is about:blank. Cannot get reduced HTML - either wait or navigate to a valid page before continuing.",currentChecksumId:r};let{reducedHTML:a,currentChecksumId:s}=await this._pageInteractor.getCurrentReducedHTML({stopFlashingElementsDetection:!0,assignChecksumIdsToAllElements:!0,initialChecksumId:r});return dwe.currentChecksumId=s,{reducedHTML:a,currentChecksumId:s}}async getApplicationState(){let{reducedHTML:r}=await this.getReducedHtml();return{reducedHTML:r,screenshot:await this.getPageScreenshot()}}async capturePageState(r,a){let s=this.page,l=this._activePageGuid;try{this.page=r,this._activePageGuid=a;let{reducedHTML:f}=await this.getReducedHtml(),m=await this.getPageScreenshot();return{pageId:a,reducedHTML:f,screenshot:m,url:r.url()}}finally{this.page=s,this._activePageGuid=l}}async captureAllPagesState(){let a=(this.context||this.page.context()).pages(),s=[],l=[];for(let m of a){if(m.isClosed())continue;let A=W6r(m);try{let E=await this.capturePageState(m,A);s.push(E)}catch(E){let S=E instanceof Error?E.message:String(E);l.push({pageId:A,url:m.url(),error:S}),console.warn(`Failed to capture state for page ${A} (${m.url()}):`,E)}}let f={pages:s};return l.length>0&&(f.failures=l),f}async captureApplicationState(r,a){if(a)return await this.captureAllPagesState();if(r&&r!==this._activePageGuid){let s=await this.getPageById(r);if(!s||s.isClosed())throw new Error(`Page with ID ${r} is closed or not found`);let l=await this.capturePageState(s,r);return{reducedHTML:l.reducedHTML,screenshot:l.screenshot}}else return await this.getApplicationState()}async buildFallbackData(){let a=(this.context||this.page.context()).pages().filter(m=>!m.isClosed()).length,s=new Promise((m,A)=>setTimeout(()=>A(new Error(`getReducedHtml timeout after ${this.reducedHtmlTimeoutMs/1e3} seconds`)),this.reducedHtmlTimeoutMs)),{reducedHTML:l,currentChecksumId:f}=await Promise.race([this.getReducedHtml(),s]);return{storyInfo:this.runtimeFallbackData.storyInfo,testIdentification:this.runtimeFallbackData.testIdentification,fallbackConfig:this.runtimeFallbackData.fallbackConfig,thoughts:this.runtimeFallbackData.thoughts,errorData:{error:{name:this.fallbackData.error.name,message:this.fallbackData.error.message,stack:this.fallbackData.error.stack},errorFileContent:await this.getErrorFileContent(this.fallbackData.error)},applicationState:{reducedHTML:l,screenshot:await this.getPageScreenshot()},stepData:{matcher:this.getMatcherResultFileData(this.fallbackData.error)},currentChecksumId:f,failingStepThought:this.runtimeFallbackData.thoughts.failing,type:this.fallbackData.type,config:this.runtimeFallbackData.config,sessionId:this.sessionId,variableStore:this.variableStore.reduce((m,A)=>(m[`variablesStore.${A.name}`]=A.value,m),{}),arConfig:this.arConfig,multiPageContext:{pageCount:a,hasMultiplePages:a>1}}}async scrollToElement(r){r&&await this._pageInteractor.scrollElementIntoViewByChecksumId(r)}async getPageScreenshot(r=this.arConfig){try{return this.checksumPage.wrapInternalSteps(async()=>{var s;return(await this.page.screenshot({fullPage:!0,type:((s=r.modelConfig)==null?void 0:s.provider)==="anthropic"?"jpeg":"png"})).toString("base64")})}catch{return}}async getErrorFileContent(r){try{let a=Dln.default.dirname(this.runtimeFallbackData.testIdentification.testFileName);return RNe.toRecord(r,a)}catch{throw new Error("Error while getting error file content for AI fallback")}}async wait(){await this.page.waitForTimeout(5e3)}async preprocessCode(r){var q;let a=r,s=r,l=[],f=r.match(/getByChecksumId\([^)]+\)\.([a-zA-Z]+)\(([^)]*)\)/),m=f==null?void 0:f[1],A=f==null?void 0:f[2],E=/(?:page\.)?getByChecksumId\(['"]([^'"]+)['"]\)/,S=(q=r.match(E))==null?void 0:q[1];if(!S)throw new Error("Checksum ID not found in the code");let T=await this.getSelectionDataForChecksumId(S);if(!(T!=null&&T.locator)||T.invalid)throw new Error(`Locator or selector not found for checksumId: ${S}`);s=s.replace(E,T.locator);let O=/variables?Store\.([a-zA-Z_$][a-zA-Z0-9_$]*)/g,N=null;for(;(N=O.exec(r))!==null;){let Q=N[1],z=this.variableStore.find(se=>se.name===Q);z&&(l.push(z),s=s.replace(N[0],`"${z.value}"`))}return{originalCode:a,modifiedCode:s,usedVariables:l,checksumId:S,locator:T.locator,method:m,methodArgs:A}}async invokeCode(r){try{let a=await this.preprocessCode(r),{modifiedCode:s}=a,l=new Function("page",`return (async () => { return page.${s}; })()`),f;return await this.step(s,async()=>f=await l(this.page),!1,{box:!0,noLocation:!0,obtainStep:e(m=>{this.checksumPage.addAutoRecoveryStepId(m.stepId)},"obtainStep")}),{success:!0,result:f}}catch(a){throw console.log("Error while invoking code",a.message),a}}addAutoRecoveryErrorToReport(r,a){let s=this.runtimeFallbackData.thoughts.failing,l=a?`\u2705 "${s}" auto-recovered`:`\u274C "${s}" failed`;this.checksumPage.addPwAnnotation({type:l,description:r.replace(/^"(.*)"$/,"$1")}),a&&this.checksumPage.addErrorMessage(this.fallbackData.error,`${l}:
|
|
615
615
|
${r}`)}get createChecksumStep(){return r=>this.checksumPage.createChecksumStep(r)}get step(){return this.checksumPage.step.bind(this.checksumPage)}get runConditionallyWithinStep(){return(r,a,s)=>this.checksumPage.runConditionallyWithinStep(r,a,s)}async getScreenshotForElement(r){var a;try{let s=await this.getSelectionDataForChecksumId(r);if(!s)throw new Error(`Locator not found for checksumId: ${r}`);let l=((a=this.arConfig.modelConfig)==null?void 0:a.provider)==="anthropic"?"jpeg":"png";return(await this.page.locator(s.selector).screenshot({type:l})).toString("base64")}catch{throw new Error(`Failed to get screenshot for element: ${r}`)}}get analytics(){return this._analytics}get pageInteractor(){return this._pageInteractor}};e(dwe,"AutoRecoveryRuntimeIteratorUtils"),dwe.currentChecksumId="0";pTt=dwe});var s1e,o1e,wln=ss(()=>{"use strict";ope();HXe();Aln();Sln();FAe();s1e=class s1e extends Spe{constructor(r,a,s,l,f,m,A){super(r,a,s,l,f,m,A),this.runtimePageContext=m}init(r){var a;return this.initializationData=r,(a=this.initializationData.fallbackConfig).arMode??(a.arMode="fast"),this}canResolve(r){return!0}get failingThought(){return this.initializationData.thoughts.failing}getRecoveryAttemptTitle(){switch(this.initializationData.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}"...`}}static async registerSession(r){let a=r.config.apiURL,s=r.config.apiKey;return await(await fetch(`${a}${s1e.API_BASE_ROUTE}/register-auto-recovery-session`,{method:"POST",headers:{"Content-Type":"application/json",ChecksumAppCode:s},body:JSON.stringify({appName:r.testIdentification.testFileName,fallbackData:r})})).json()}async prepareSession(r){let a=await s1e.registerSession(this.initializationData);this.utils=new pTt({page:this.page,evaluateWithChecksum:this.evaluateWithChecksum,checksumPage:this.checksumPage,pageInteractor:this.pageInteractor,arConfig:a.arConfig,sessionId:a.sessionId,runtimeFallbackData:this.initializationData,fallbackData:r,variableStore:this.variables,runtimePage:this.runtimePageContext,context:this.context});try{this.agent=await cTt.build(this.utils)}catch(s){let l=s instanceof Error?s.message:String(s),f=s instanceof Error?s.stack:void 0;throw new Error(`Failed to prepare ARFallback: ${l}`)}}async resolve(r){let a=null,s=new Promise((f,m)=>{a=setTimeout(()=>{a=null,this.utils.analytics.ARError({error:`Auto-recovery timed out after ${s1e.TIMEOUT_MS/1e3} seconds`});let A="Auto-Recovery attempt finished unsuccessfully";this.utils.createChecksumStep({title:A,withError:!0}),this.utils.addAutoRecoveryErrorToReport(A,!1),m(new Error(A))},s1e.TIMEOUT_MS)}),l=Date.now();await this.prepareSession(r),this.utils.analytics.ARStart();try{let f=await Promise.race([this.agent.init(),s]);return a!==null&&(clearTimeout(a),a=null),this.utils.analytics.ARFinish({duration:Date.now()-l}),{fbResult:f.result,thought:f.finalThought,stepsThoughts:f.stepsThoughts,steps:[]}}catch(f){throw a!==null&&(clearTimeout(a),a=null),this.utils.analytics.ARFinish({duration:Date.now()-l}),f}}};e(s1e,"ARFallback"),s1e.API_BASE_ROUTE="/auto-recovery",s1e.TIMEOUT_MS=12e4;o1e=s1e});var Tln,kln=ss(()=>{"use strict";Tln=e(i=>{let r=i.info();return r.annotations.some(a=>a.type==="bug")||r.tags.some(a=>a==="@bug")},"isKnownBugTest")});var Iln={};aDe(Iln,{VtgUserStoryService:()=>fTt});var H6r,fTt,G6r=ss(()=>{"use strict";_S();Ez();tC();H6r=class H6r{constructor(r,a){this.apiService=r;this.config=a}getStory(){return this.story}getTestGenerationData(){return this.userStoryTestGeneration}hasTestGenerationData(){return!!this.userStoryTestGeneration}async fetchStory(r){if(Qh.vtg.useFakeStory){this.story={...Qh.vtg.fakeStory,id:"fake-story",environment:{name:void 0,userRole:void 0},internalTestId:"fake-internal-test-id"},Gv.info("Using fake flow data",this.story);return}if(!r)throw new Error("no story id provided");try{let s=await(await this.apiService.post(`test-generation/info/${r}`)).json();if(!(s!=null&&s.id))throw new Error(`Story ${r} not found`);let{id:l,title:f,steps:m,startUrl:A,userRole:E,environment:S,internalTestId:T,version:O,collectionName:N}=s;this.story={id:l,goal:f,instructions:m,url:A,internalTestId:T,environment:{userRole:E,name:S},version:O,collectionName:N}}catch(a){throw Gv.error(`Error fetching story by id ${r}:`,a),new Error(`Couldn't fetch story by id ${r}. Make sure the server is running and the story id is correct. Original error: ${JSON.stringify(a)}`)}}getEnvInfo(){return K6r(this.config,{role:this.story.environment.userRole,environment:this.story.environment.name})}async createTestGeneration(){if(!this.story.id)return;let r=await this.apiService.post(`test-generation/create/${this.story.id}`,{internalTestId:this.story.internalTestId}),{testGenerationId:a}=await r.json();return this.userStoryTestGeneration={testGenerationId:a},this.userStoryTestGeneration}setTestGenerationData(r){this.userStoryTestGeneration=r}};e(H6r,"VtgUserStoryService");fTt=H6r});var Y6r,ORe,X6r=ss(()=>{"use strict";Y6r=class Y6r{constructor(r,a){this.config=r;this.baseURL=r.apiURL+a}getBaseURL(){return this.baseURL}get(r){let a=`${this.baseURL}/${r}`;return fetch(a,{method:"GET",headers:{ChecksumAppCode:this.config.apiKey}})}put(r,a){return fetch(`${this.baseURL}/${r}`,{method:"PUT",headers:{"Content-Type":"application/json",ChecksumAppCode:this.config.apiKey},body:a?JSON.stringify(a):void 0})}post(r,a){return fetch(`${this.baseURL}/${r}`,{method:"POST",headers:{"Content-Type":"application/json",ChecksumAppCode:this.config.apiKey},body:a?JSON.stringify(a):void 0})}delete(r){return fetch(`${this.baseURL}/${r}`,{method:"DELETE",headers:{ChecksumAppCode:this.config.apiKey}})}putFile(r,a){return fetch(r,{method:"PUT",headers:{"Content-Type":a.type},body:a})}};e(Y6r,"RuntimeAPIService");ORe=Y6r});var Fln={};aDe(Fln,{VtgCloudAPIService:()=>BRe});var Z6r,BRe,dTt=ss(()=>{"use strict";X6r();Z6r=class Z6r extends ORe{constructor(a){super(a,"/client-api/runtime");this.config=a}};e(Z6r,"VtgCloudAPIService");BRe=Z6r});var p$,Oln,FK,eCr,c1e,Pln,Bln=ss(()=>{"use strict";yD();C6t();oK();FAe();rhe();I6t();ope();Cur();p$=require("fs"),Oln=Td(_pr()),FK=Td(require("path"));SUr();xpr();_S();Bzr();Rzr();Lzr();Mzr();jzr();Uen();Ez();Q2r();wln();hEr();kln();eCr=1e3*30,c1e=class c1e extends vet{constructor(a,s="normal",l,f,m,A,E,S,T,O,N,q,Q){var ue,le,_e;super(a,l,N,()=>this.pageInteractor,void 0);this.page=a;this.runMode=s;this.testRunAnalytics=f;this.monitorBridge=m;this.testInfo=A;this.checksumTestId=E;this.test=S;this.options=T;this.isReplMode=O;this.config=N;this.pageInteractorAPI=q;this.lastInteractionTime=Date.now();this.hasRuntimeStartedTrace=!1;this.unzippedHarData=[];this.fallbacks=[];this.hasUsedAutoRecovery=!1;this.arSummaries=[];this.arStepIds=[];this.arResults=[];this.failedSteps=[];this.thoughtsCounter=0;this.highLevelThoughts=[];this.framesMsgBroker=new kYe;this.previousSteps=[];this.scriptLoadWrapper=e(async(a,s)=>(!this.isTimeMachineFrame(s)&&this.navigationPromise&&await this.navigationPromise,this.wrapInternalSteps(a,s.page())),"scriptLoadWrapper");this.scriptLoadCheck=e(async a=>a.evaluate(()=>!!window.checksum),"scriptLoadCheck");this.scriptLoadCallback=e(async a=>{await a.evaluate(async({appSpecificRules:s,esraTimeout:l,sessionRecorder:f,showFrontendLogs:m,showTMSeeker:A,filesObserver:E,nativeDialogObserver:S,assertionsObserver:T,actionsObserver:O,recordOptions:N})=>{var q;(q=window.checksum)==null||q.testGenerator.init(s,{esraTimeout:l,showFrontendLogs:m,skipElementHighlighting:!0,recordOptions:N},{assertionGenerator:!1,sessionRecorder:f,filesObserver:E,nativeDialogObserver:S,assertionsObserver:T,actionsObserver:O});try{A&&window.checksum.timeMachine.openSeekbar()}catch{}},{appSpecificRules:this.appSpecificRules,esraTimeout:eCr,sessionRecorder:!!(!this.isTimeMachineFrame(a)&&(this.timeMachine||this.isVTG)),showFrontendLogs:Qh.isDevMode,showTMSeeker:this.isTimeMachineFrame(a)&&process.env.CHECKSUM_SHOW_TIME_MACHINE==="true",filesObserver:this.isVTG&&!this.isTimeMachineFrame(a),nativeDialogObserver:this.isVTG&&!this.isTimeMachineFrame(a),assertionsObserver:this.isVTG&&!this.isTimeMachineFrame(a),actionsObserver:this.isVTG&&!this.isTimeMachineFrame(a),recordOptions:this.isVTG?this.getVTGRecordOptions():void 0}),Gy(`[init] init script loaded for ${a.page().url()}`)},"scriptLoadCallback");_Tt(T.printLogs),this.isVTG&&(this.options={...this.options,useChecksumAI:{actions:!1,assertions:!1,arVersion:1,visualComparison:!1},useMockData:!1,useChecksumSelectors:!1,autoHealPRs:!1},Rln(this.page)),Tln(S)&&this.config.options.useChecksumAI.skipTestsWithKnownBugs&&(console.log("Auto recovery will not run for this test as it is marked as a known bug"),this.config.options.useChecksumAI.actions=!1,this.config.options.useChecksumAI.assertions=!1,this.config.options.useChecksumAI.visualComparison=!1),this.injectedScriptManager.setScriptLoadWrapper(this.scriptLoadWrapper).setScriptLoadCallback(this.scriptLoadCallback).setScriptLoadCheck(this.scriptLoadCheck);let z=tCr({config:this.config,throwIfAuthFailed:!0}),se=this.getPlaywrightProjectConfig();if(this.pageInteractor=new cDe(this.evaluateWithChecksum.bind(this),()=>this.page.mainFrame(),()=>this.timeMachine,{log:Gy,logError:Gy},{navigationTimeout:(ue=se.use)==null?void 0:ue.navigationTimeout,actionTimeout:(le=se.use)==null?void 0:le.actionTimeout,testAssetsDir:EYe(Cee()),waitActionDelay:1e3},this.pageInteractorAPI,z),this.checkForActiveTracing(),this.resetFallbacks(),Q&&(this.highLevelThoughts=Q.highLevelThoughts??[],this.timeMachineBrowserContext=Q.timeMachineBrowserContext,this.variableStore=Q.variableStore),Qh.testRun.timeMachine.active){let be=this.shouldRecordRRwebEvents()?{recordRRwebEventsToFile:!0,recordRRwebEventsToFilePath:jBr(this.checksumTestId,this.testInfo.retry)}:{};this.isVTG||(this.timeMachine=new nSt(this.framesMsgBroker,this.injectedScriptManager,{...be,headless:process.env.CHECKSUM_SHOW_TIME_MACHINE==="true"?!1:Qh.testRun.timeMachine.headless,webProxy:(_e=A.project.use)==null?void 0:_e.proxy}),this.timeMachineBrowserContext&&this.timeMachine.setTimeMachineBrowserContext(this.timeMachineBrowserContext))}}previousThoughtsAndTimestamps(){return this.previousSteps}static async init(a,s,l,f,m,A,E,S,T,O=!1){let N=!1;E||(E=await c1e.fetchVtgInternalTestId(T),E||(E=our(5),N=!0,console.warn(`Checksum test id was not defined for test "${A.title}" and was auto-generated. Please replace - "${A.title}" with -
|
|
616
|
-
test(defineChecksumTest("${A.title}", "${E}"), async ({ page }) => {...`))),f.addTestInfo(E,A.testId,N),T.options.useChecksumAI!==void 0&&typeof T.options.useChecksumAI=="boolean"&&(T.options.useChecksumAI={actions:T.options.useChecksumAI,assertions:!1,visualComparison:!1});let q=new fXe(T),Q=new c1e(a,T.runMode,s,l,f,A,E,S,{useChecksumSelectors:!0,useChecksumAI:{actions:!0,assertions:!1},newAssertionsEnabled:T.runMode!=="normal",useMockData:!1,printLogs:!1,...T.options},O,T,q,{variableStore:m});return S._checksum.expect.setPage(Q),S._checksum.checksumAI.page=Q,m.clearAll(),Q.testRunAnalytics.testRunStart(),await Q.asyncInit(),Q.proxy}static async fetchVtgInternalTestId(a){try{let s=process.env.CHECKSUM_VTG_TEST_FILE_RUN_CONFIG;if(!s)return;let l=JSON.parse(s);if(l.mode!=="start"||!l.storyId)return;let{VtgUserStoryService:f}=await Promise.resolve().then(()=>(G6r(),Iln)),{VtgCloudAPIService:m}=await Promise.resolve().then(()=>(dTt(),Fln)),A=new m(a),E=new f(A,a);await E.fetchStory(l.storyId);let S=E.getStory();return S==null?void 0:S.internalTestId}catch(s){console.warn("Failed to fetch VTG internalTestId from story:",s);return}}async asyncInit(a=!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(),a||await this.prepareForTestArtifacts();let s=FK.resolve(__dirname,"mock-auto-heal-agent.js");await this.page.addInitScript({path:s})}async makePage(a){let s=new c1e(a,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,timeMachineBrowserContext:this.timeMachineBrowserContext,variableStore:this.variableStore});return await s.asyncInit(!0),s.proxy}getTimeMachinePage(){var a;return(a=this.timeMachine)==null?void 0:a.getPage()}getFramesMessageBroker(){return this.framesMsgBroker}isTimeMachineFrame(a){var s;return a===((s=this.timeMachine)==null?void 0:s.getFrame())}shouldRecordRRwebEvents(){return Qh.testRun.timeMachine.recordRRwebEventsToFile&&this.config.options.hostReports}recordInteraction(){let a=this.getPageGuid(this.page);c1e.recentlyInteracted.set(a,Date.now()),this.lastInteractionTime=Date.now()}static getMostRecentPage(a){let s=a.pages(),l=s[0],f=0;for(let m of s){let A=m._guid,E=c1e.recentlyInteracted.get(A)||0;E>f&&(f=E,l=m)}return l}async goto(a,s){return this.recordInteraction(),this.page.goto(a,s)}async reload(a){return this.recordInteraction(),this.page.reload(a)}async goBack(a){return this.recordInteraction(),this.page.goBack(a)}async goForward(a){return this.recordInteraction(),this.page.goForward(a)}async click(a,s){return this.recordInteraction(),this.page.click(a,s)}async dblclick(a,s){return this.recordInteraction(),this.page.dblclick(a,s)}async fill(a,s,l){return this.recordInteraction(),this.page.fill(a,s,l)}async press(a,s,l){return this.recordInteraction(),this.page.press(a,s,l)}async check(a,s){return this.recordInteraction(),this.page.check(a,s)}async uncheck(a,s){return this.recordInteraction(),this.page.uncheck(a,s)}async selectOption(a,s,l){return this.recordInteraction(),this.page.selectOption(a,s,l)}async hover(a,s){return this.recordInteraction(),this.page.hover(a,s)}async type(a,s,l){return this.recordInteraction(),this.page.type(a,s,l)}async setInputFiles(a,s,l){return this.recordInteraction(),this.page.setInputFiles(a,s,l)}async tap(a,s){return this.recordInteraction(),this.page.tap(a,s)}async dragAndDrop(a,s,l){return this.recordInteraction(),this.page.dragAndDrop(a,s,l)}getPlaywrightProjectConfig(){return this.testInfo.project}checkForActiveTracing(){var l;let s=(l=this.getPlaywrightProjectConfig().use)==null?void 0:l.trace;this.traceMode=typeof s=="string"?s:s==null?void 0:s.mode}registerPageEvents(){super.registerPageEvents(),this.injectedScriptManager.addTrackedFrame(this.page),this.page.on("framenavigated",async a=>{this.injectedScriptManager.onFrameNavigated(a)})}checksumSelector(a){return this.checksumStepId=a,this.options.useChecksumSelectors&&this.setSelectorFallback(a),this.proxy}checksumAI(a,s,l){let f=this.addNewThought(a,"action",!!s);this.previousSteps.push({thought:f.thought,timestamp:Date.now()});let m=this.getPageGuid(this.page);return cDe.setLastAction(m,a),s&&typeof s=="function"?this.test.step(a,async A=>{var E;try{return l!=null&&l.withDialog&&this.pageInteractor.listenToDialog(),await s()}catch(S){if(f.children=[],!this.options.useChecksumAI.actions||l!=null&&l.withDialog||l!=null&&l.skipAutoRecovery)throw S;this.setAIFallback(a,"action");try{return await this.initiateFallbackSequence({type:"action",error:S,method:void 0,args:[],testInfo:this.testInfo,step:A},{fallbackTypes:[Ahe,o1e]})}catch(T){throw this.testRunAnalytics.testRunError({failedThought:a,error:(T==null?void 0:T.message)||"Unknown error"}),T}}finally{this.pageInteractor.removeListener("dialog"),this.currentThought=(E=this.currentThought)==null?void 0:E.parent}}):(this.options.useChecksumAI.actions&&!(l!=null&&l.skipAutoRecovery)&&this.setAIFallback(a,"action"),this.proxy)}resolveAssetsFolder(a){return a.map(s=>FK.join(EYe(Cee()),s))}getRuntimeOptions(){return this.options}addPwAnnotation(a){this.testInfo.annotations.push({type:a.type,description:`
|
|
616
|
+
test(defineChecksumTest("${A.title}", "${E}"), async ({ page }) => {...`))),f.addTestInfo(E,A.testId,N),T.options.useChecksumAI!==void 0&&typeof T.options.useChecksumAI=="boolean"&&(T.options.useChecksumAI={actions:T.options.useChecksumAI,assertions:!1,visualComparison:!1});let q=new fXe(T),Q=new c1e(a,T.runMode,s,l,f,A,E,S,{useChecksumSelectors:!0,useChecksumAI:{actions:!0,assertions:!1},newAssertionsEnabled:T.runMode!=="normal",useMockData:!1,printLogs:!1,...T.options},O,T,q,{variableStore:m});return s.pages().length<=1&&(S._checksum.expect.setPage(Q),S._checksum.checksumAI.page=Q,m.clearAll(),Q.testRunAnalytics.testRunStart()),await Q.asyncInit(),Q.proxy}static async fetchVtgInternalTestId(a){try{let s=process.env.CHECKSUM_VTG_TEST_FILE_RUN_CONFIG;if(!s)return;let l=JSON.parse(s);if(l.mode!=="start"||!l.storyId)return;let{VtgUserStoryService:f}=await Promise.resolve().then(()=>(G6r(),Iln)),{VtgCloudAPIService:m}=await Promise.resolve().then(()=>(dTt(),Fln)),A=new m(a),E=new f(A,a);await E.fetchStory(l.storyId);let S=E.getStory();return S==null?void 0:S.internalTestId}catch(s){console.warn("Failed to fetch VTG internalTestId from story:",s);return}}async asyncInit(a=!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(),a||await this.prepareForTestArtifacts();let s=FK.resolve(__dirname,"mock-auto-heal-agent.js");await this.page.addInitScript({path:s})}async makePage(a){let s=new c1e(a,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,timeMachineBrowserContext:this.timeMachineBrowserContext,variableStore:this.variableStore});return await s.asyncInit(!0),s.proxy}getTimeMachinePage(){var a;return(a=this.timeMachine)==null?void 0:a.getPage()}getFramesMessageBroker(){return this.framesMsgBroker}isTimeMachineFrame(a){var s;return a===((s=this.timeMachine)==null?void 0:s.getFrame())}shouldRecordRRwebEvents(){return Qh.testRun.timeMachine.recordRRwebEventsToFile&&this.config.options.hostReports}recordInteraction(){let a=this.getPageGuid(this.page);c1e.recentlyInteracted.set(a,Date.now()),this.lastInteractionTime=Date.now()}static getMostRecentPage(a){let s=a.pages(),l=s[0],f=0;for(let m of s){let A=m._guid,E=c1e.recentlyInteracted.get(A)||0;E>f&&(f=E,l=m)}return l}async goto(a,s){return this.recordInteraction(),this.page.goto(a,s)}async reload(a){return this.recordInteraction(),this.page.reload(a)}async goBack(a){return this.recordInteraction(),this.page.goBack(a)}async goForward(a){return this.recordInteraction(),this.page.goForward(a)}async click(a,s){return this.recordInteraction(),this.page.click(a,s)}async dblclick(a,s){return this.recordInteraction(),this.page.dblclick(a,s)}async fill(a,s,l){return this.recordInteraction(),this.page.fill(a,s,l)}async press(a,s,l){return this.recordInteraction(),this.page.press(a,s,l)}async check(a,s){return this.recordInteraction(),this.page.check(a,s)}async uncheck(a,s){return this.recordInteraction(),this.page.uncheck(a,s)}async selectOption(a,s,l){return this.recordInteraction(),this.page.selectOption(a,s,l)}async hover(a,s){return this.recordInteraction(),this.page.hover(a,s)}async type(a,s,l){return this.recordInteraction(),this.page.type(a,s,l)}async setInputFiles(a,s,l){return this.recordInteraction(),this.page.setInputFiles(a,s,l)}async tap(a,s){return this.recordInteraction(),this.page.tap(a,s)}async dragAndDrop(a,s,l){return this.recordInteraction(),this.page.dragAndDrop(a,s,l)}getPlaywrightProjectConfig(){return this.testInfo.project}checkForActiveTracing(){var l;let s=(l=this.getPlaywrightProjectConfig().use)==null?void 0:l.trace;this.traceMode=typeof s=="string"?s:s==null?void 0:s.mode}registerPageEvents(){super.registerPageEvents(),this.injectedScriptManager.addTrackedFrame(this.page),this.page.on("framenavigated",async a=>{this.injectedScriptManager.onFrameNavigated(a)})}checksumSelector(a){return this.checksumStepId=a,this.options.useChecksumSelectors&&this.setSelectorFallback(a),this.proxy}checksumAI(a,s,l){let f=this.addNewThought(a,"action",!!s);this.previousSteps.push({thought:f.thought,timestamp:Date.now()});let m=this.getPageGuid(this.page);return cDe.setLastAction(m,a),s&&typeof s=="function"?this.test.step(a,async A=>{var E;try{return l!=null&&l.withDialog&&this.pageInteractor.listenToDialog(),await s()}catch(S){if(f.children=[],!this.options.useChecksumAI.actions||l!=null&&l.withDialog||l!=null&&l.skipAutoRecovery)throw S;this.setAIFallback(a,"action");try{return await this.initiateFallbackSequence({type:"action",error:S,method:void 0,args:[],testInfo:this.testInfo,step:A},{fallbackTypes:[Ahe,o1e]})}catch(T){throw this.testRunAnalytics.testRunError({failedThought:a,error:(T==null?void 0:T.message)||"Unknown error"}),T}}finally{this.pageInteractor.removeListener("dialog"),this.currentThought=(E=this.currentThought)==null?void 0:E.parent}}):(this.options.useChecksumAI.actions&&!(l!=null&&l.skipAutoRecovery)&&this.setAIFallback(a,"action"),this.proxy)}resolveAssetsFolder(a){return a.map(s=>FK.join(EYe(Cee()),s))}getRuntimeOptions(){return this.options}addPwAnnotation(a){this.testInfo.annotations.push({type:a.type,description:`
|
|
617
617
|
${a.description}`})}async onTestComplete(a){this.testRunAnalytics.testRunEnd({success:a,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.hasUsedAutoRecovery&&a}}),this.monitorBridge.addChecksumTestMetadata({checksumTestId:this.checksumTestId,pwTestId:this.testInfo.testId,retry:this.testInfo.retry,type:"autoRecoverySummaries",data:this.arSummaries}),this.cleanupMockData()}async wrapInternalSteps(a,s=this.page){try{return s.mainFrame()._checksumInternal=!0,s._checksumInternal=!0,await a()}finally{s.mainFrame()._checksumInternal=!1,s._checksumInternal=!1}}async conditionallyWrapInternalSteps(a,s){return a?this.wrapInternalSteps(s):s()}async wrapNoLocationSteps(a){try{return this.testInfo._checksumNoLocation=!0,await a()}finally{this.testInfo._checksumNoLocation=!1}}findAllStepsRecursively(a,s,l=[]){for(let f of a){(f._stepId===s||f.stepId===s)&&l.push(f);let m=[f.steps,f._testInfoSteps,f._steps].filter(Boolean);for(let A of m)this.findAllStepsRecursively(A,s,l)}return l}makeChecksumStepFunction(a){return s=>{if(!a)return;let l=s._stepId||s.stepId;this.findAllStepsRecursively(s._testInfo._steps,l).forEach(m=>{m.error={message:"ChecksumStepError",stack:"Fallback Failed",cause:void 0}})}}async createChecksumStep(a){let s,l={box:!0,noLocation:!0,obtainStep:e(f=>{s=f},"obtainStep")};return await this.step(a.title,this.makeChecksumStepFunction(a.withError),!1,l),this.arStepIds.push(s.stepId),s}async step(a,s,l=!0,{obtainStep:f=void 0,box:m=!1,noLocation:A=void 0}={}){let E=this.testInfo._checksumNoLocation;try{this.testInfo._checksumInternal=l===!0,A!==void 0&&(this.testInfo._checksumNoLocation=A),await this.test.step(a,s||(()=>{}),{obtainStep:f,box:m})}finally{this.testInfo._checksumInternal=!1,this.testInfo._checksumNoLocation=E}}addErrorMessage(a,s){this.testInfo.addError(a,s)}async evaluateWithChecksum(a,s,l=!0){return this.navigationPromise&&await this.navigationPromise,this.conditionallyWrapInternalSteps(l,()=>this.page.evaluate(a,s))}getChecksumTestId(){return this.checksumTestId}addNewThought(a,s,l=!1){let f={id:void 0,thought:a,type:s,children:l?[]:void 0,parent:void 0};if(!this.currentThought)this.highLevelThoughts.push(f);else if(this.currentThought.children)this.currentThought.children.push(f),f.parent=this.currentThought;else{let m=this.currentThought.parent;m?(m.children.push(f),f.parent=m):this.highLevelThoughts.push(f)}return f.parent?f.id=`${f.parent.id}.${f.parent.children.length}`:f.id=`${++this.thoughtsCounter}`,this.currentThought=f,f}buildThoughtsChainForFallback(a=this.highLevelThoughts){let s=[];return a.forEach(l=>{s.push(l.thought),l.children&&s.push(...this.buildThoughtsChainForFallback(l.children))}),s}getVTGRecordOptions(){return{recordCanvas:!0,recordCrossOriginIframes:this.isVTG,sampling:{mousemove:!1},slimDOMOptions:"all"}}compoundSelection(...a){let s=super.compoundSelection(...a);return s.setAnalytics(()=>this.testRunAnalytics),this.checksumStepId&&this.options.useChecksumSelectors&&this.setCompoundSelectorFallback(this.checksumStepId),s}setSelectorFallback(a){let s={checksumId:a,fileName:this.testInfo.file,testId:this.checksumTestId,apiKey:this.config.apiKey,apiURL:this.config.apiURL,timeout:eCr};this.pushFallback(this.constructFallback(XXe).init(s)),this.pushFallback(this.constructFallback(KXe).init(s))}setCompoundSelectorFallback(a){this.pushFallback(this.constructFallback(YXe).init({checksumId:a,fileName:this.testInfo.file,testId:this.checksumTestId,apiKey:this.config.apiKey,apiURL:this.config.apiURL,timeout:eCr}))}setAIFallback(a,s){var A;let l=((A=this.options.useChecksumAI)==null?void 0:A.arVersion)===1,f=e(()=>{var q,Q;let E=this.buildThoughtsChainForFallback(),S={title:this.testInfo.title},T={testFileName:this.testInfo.file,testId:this.testInfo.testId,testSuiteId:process.env.CHECKSUM_TEST_SUITE_ID||""},O={previous:E.slice(0,-1),failing:a,next:E.slice(1)},N={storyInfo:S,testIdentification:T,fallbackConfig:{arMode:(q=this.options.useChecksumAI)==null?void 0:q.arMode,overrideOptions:(Q=this.options.useChecksumAI)==null?void 0:Q.overrideOptions},thoughts:O,config:{apiURL:this.config.apiURL,apiKey:this.config.apiKey},type:s};return this.constructFallback(o1e).init(N)},"createArFallback"),m=e(()=>{var E,S;return this.constructFallback(Ahe).init({goal:this.testInfo.title,testFile:this.testInfo.file,apiKey:this.config.apiKey,apiURL:this.config.apiURL,testId:this.checksumTestId,thoughts:this.buildThoughtsChainForFallback(),benchmark:Qh.benchmark,arMode:(E=this.options.useChecksumAI)==null?void 0:E.arMode,overrideOptions:(S=this.options.useChecksumAI)==null?void 0:S.overrideOptions,fallbackType:s})},"createAIFallback");return l?this.pushFallback(m()):this.pushFallback(f()),this.proxy}pushFallback(a){this.fallbacks.push(a),this.sortFallbacks()}handleAIFallback(a,s,l,f){let m=a.fallbackAnalyticsPayload.iterationSteps,A=m.length>0?f/m.length:0;this.testRunAnalytics.testRunFallbackExecution({result:l.fbResult,failedThought:a.getFailedThought(),summary:l.summary,stepsPayload:a.fallbackAnalyticsPayload,type:a.fallbackType??s.type,benchmark:Qh.benchmark.toString(),duration:f,avgDuration:A,success:["finish","soft_assertion"].includes(l.fbResult)}),this.arResults.push({failedThought:a.getFailedThought(),result:l.fbResult,thought:l.thought})}handleAutoRecovery(a,s,l,f){let m=l.stepsThoughts.length>0?f/l.stepsThoughts.length:0;this.testRunAnalytics.testRunAutoRecovery({failingThought:a.failingThought,type:s.type,finalThought:l.thought,result:l.fbResult,duration:f,avgStepDuration:m,stepsThoughts:l.stepsThoughts,version:"v1"})}async runFallback(a,s){let l=Date.now(),f=a.resolve(s),m=await U4(f,a.timeout),A=Date.now()-l;a instanceof Ahe&&(this.hasUsedAutoRecovery=!0,this.handleAIFallback(a,s,m,A)),a instanceof o1e&&(this.hasUsedAutoRecovery=!0,this.handleAutoRecovery(a,s,m,A));let E=m.thought?`: ${m.thought}`:"";if(!m||m.fbResult==="failed")throw this.createChecksumStep({title:`Recovery Failed${E}`,withError:!0}),new Error("Fallback failed");if(m.fbResult==="hard_assertion")throw this.createChecksumStep({title:`Recovery Failed${E}`,withError:!0}),new pXe(m.fbResult);if(a instanceof Ahe&&m.summary&&this.arSummaries.push(m.summary),a instanceof o1e&&m.thought&&this.arSummaries.push(m.thought),this.createChecksumStep({title:`Recovery Complete${E}`}),m.steps.length===1){let S=m.steps[0];S.thought&&(this.currentThought.thought=S.thought)}else this.currentThought.children=m.steps.map((S,T)=>({id:`${this.currentThought.id}.${T+1}`,thought:S.thought,type:S.type,children:void 0,parent:this.currentThought}))}async runConditionallyWithinStep(a,s,l){return a?await this.step(s,l):await l()}async onExecutionError(a){try{return await this.initiateFallbackSequence({type:"action",...a})}catch(s){if(!this.currentThought){let{locator:l,method:f}=a;this.testRunAnalytics.testRunActionExecutionFailure({locator:l.toString(),selector:l._selector,method:f,checksumStepId:this.checksumStepId,error:s.toString()})}throw s}}async initiateFallbackSequence(a,{fallbackTypes:s=void 0}={}){Gy(`[initiateFallbackSequence] with type: ${a.type}...`);let l=this.fallbacks.find(A=>A instanceof Ahe);if(l){let A=l.getFailedThought(),E=this.variableStore.getActiveVariables();this.fallbacks.forEach(S=>{S.setThought(A),S.setVariables(E)})}let f=this.fallbacks.find(A=>A instanceof o1e);if(f){let A=f.failingThought;this.fallbacks.forEach(E=>{E instanceof o1e&&E.setVariables(this.variableStore.getActiveVariables()),E.setThought(A)})}let m=this.fallbacks;s&&(m=m.filter(A=>s.reduce((E,S)=>E||A instanceof S,!1))),m=m.filter(A=>A.canResolve(a));try{for(let A of m){let E=A==null?void 0:A.toString();E&&console.log(`Using ${E}`);let S;try{let T=await this.runConditionallyWithinStep(a.type!=="assertion"||!a.withChecksumAI,A.getRecoveryAttemptTitle(a),async()=>await this.runFallback(A,a));S=!0}catch(T){if(S=!1,a.withChecksumAI&&T.message==="fetch failed")throw new Error(SOe);T instanceof pXe&&T.fallbackResult==="hard_assertion"&&(a.error.fallbackResult="hard_assertion"),E&&console.log(`Failed to use ${E}`),A.cancel();continue}return!0}throw a.error}finally{this.resetFallbacks()}}resetFallbacks(){this.fallbacks=[this.constructFallback(ZXe).init()]}async shutdown(){if(this.shouldRecordRRwebEvents()){try{await this.timeMachine.flushRRwebEventsToFile();let a=this.timeMachine.getRRwebFilePath();this.monitorBridge.addAsset({type:"rrweb-recording",path:a,testId:this.checksumTestId,fileName:FK.basename(a)})}catch(a){Gy("Error shutting down RRweb events recording",a)}if(this.testRunAnalytics)return Gy("Flushing analytics events......"),this.testRunAnalytics.close()}}sortFallbacks(){let a=[ZXe,YXe,XXe,KXe,Ahe];this.fallbacks.sort((s,l)=>a.indexOf(s.constructor)-a.indexOf(l.constructor))}constructFallback(a){return new a(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 s=await this.getTraceFilePath();s&&this.monitorBridge.addAsset({type:"trace",path:s,testId:this.checksumTestId,project:this.testInfo.project.name})}if(!1){let s=MBr(S6t(this.testInfo.file),this.checksumTestId);this.monitorBridge.addAsset({type:"har",path:s,testId:this.checksumTestId})}}async getTraceFilePath(){try{return this.hasRuntimeStartedTrace?UBr(S6t(this.testInfo.file),this.checksumTestId).replace(".zip",".original.zip"):this.testInfo.outputPath("trace.zip")}catch{return}}async prepareMockData(){let a=pur(S6t(this.testInfo.file)),s=FK.join(a,`${this.checksumTestId}.har.zip`);if(!(0,p$.existsSync)(s))throw new Error("Could not find har file or zip file");let l=FK.join(a,"tmp");(0,p$.existsSync)(l)||(0,p$.mkdirSync)(l);let f=(0,p$.readFileSync)(s),m=await(0,Oln.loadAsync)(f);for(let E of Object.keys(m.files)){let S=await m.file(E).async("string"),T=FK.join(l,E);(0,p$.writeFileSync)(T,S),this.unzippedHarData.push(T)}let A=FK.join(l,"test.har");if(!(0,p$.existsSync)(A))throw this.cleanupMockData(),new Error(`Could not find har file ${A} after unzipping ${s}`);return A}cleanupMockData(){this.unzippedHarData.forEach(a=>{(0,p$.rmSync)(a)}),this.unzippedHarData.length>0&&(0,p$.rmSync)(FK.dirname(this.unzippedHarData[0]),{recursive:!0,force:!0})}async prepareAPIMock(){let a={GET:0,POST:0,PUT:0,DELETE:0};try{let s=await this.prepareMockData();await this.page.routeFromHAR(s,{url:"*/**",notFound:"fallback",update:!1});let l=this.page._routes[0].handler;await this.page.route("**/*",f=>{let m=f.request().headers(),A=f.request().method();m["Checksum-Id"]=(++a[A]).toString(),f.request()._applyFallbackOverrides({headers:m}),l(f)})}catch(s){Gy("Error setting up mock data",s.message)}}async loadAppSpecificRules(){this.appSpecificRules={};let a=FK.join(sDe(Cee()),"settings.asr");if(!(0,p$.existsSync)(a)){Gy("Could not find ASR file");return}let{ungzip:s}=lur();try{let l=await s((0,p$.readFileSync)(a));this.appSpecificRules=JSON.parse(l)||{}}catch(l){Gy("Could not read ASR file",l.message)}}addAutoRecoveryStepId(a){this.arStepIds.push(a)}};e(c1e,"RuntimePage"),c1e.recentlyInteracted=new Map;Pln=c1e});function N6i(i,r){return r}function O6i(i,r){return i.filter(a=>a!==void 0)}function Mln(i){return typeof i!="object"||i===null?0:Array.isArray(i)?2:L6i(i)?1:i instanceof Set?3:i instanceof Map?4:5}function B6i(i){let r=new Set;for(let a of i)for(let s of[...Object.keys(a),...Object.getOwnPropertySymbols(a)])r.add(s);return r}function R6i(i,r){return typeof i=="object"&&Object.prototype.propertyIsEnumerable.call(i,r)}function Uln(i){var s;let r=0,a=(s=i[0])==null?void 0:s[Symbol.iterator]();return{[Symbol.iterator](){return{next(){var l;do{if(a===void 0)return{done:!0,value:void 0};let f=a.next();if(f.done===!0){r+=1,a=(l=i[r])==null?void 0:l[Symbol.iterator]();continue}return{done:!1,value:f.value}}while(!0)}}}}}function L6i(i){if(!jln.includes(Object.prototype.toString.call(i)))return!1;let{constructor:r}=i;if(r===void 0)return!0;let a=r.prototype;return!(a===null||typeof a!="object"||!jln.includes(Object.prototype.toString.call(a))||!a.hasOwnProperty("isPrototypeOf"))}function M6i(i,r,a){let s={};for(let l of B6i(i)){let f=[];for(let E of i)R6i(E,l)&&f.push(E[l]);if(f.length===0)continue;let m=r.metaDataUpdater(a,{key:l,parents:i}),A=qln(f,r,m);A!==Jbe.skip&&(l==="__proto__"?Object.defineProperty(s,l,{value:A,configurable:!0,enumerable:!0,writable:!0}):s[l]=A)}return s}function j6i(i){return i.flat()}function U6i(i){return new Set(Uln(i))}function Q6i(i){return new Map(Uln(i))}function q6i(i){return i.at(-1)}function Qln(...i){return $6i({})(...i)}function $6i(i,r){let a=V6i(i,s);function s(...l){return qln(l,a,r)}return e(s,"customizedDeepmerge"),s}function V6i(i,r){return{defaultMergeFunctions:mTt,mergeFunctions:{...mTt,...Object.fromEntries(Object.entries(i).filter(([a,s])=>Object.hasOwn(mTt,a)).map(([a,s])=>s===!1?[a,mTt.mergeOthers]:[a,s]))},metaDataUpdater:i.metaDataUpdater??N6i,deepmerge:r,useImplicitDefaultMerging:i.enableImplicitDefaultMerging??!1,filterValues:i.filterValues===!1?void 0:i.filterValues??O6i,actions:Jbe}}function qln(i,r,a){var f;let s=((f=r.filterValues)==null?void 0:f.call(r,i,a))??i;if(s.length===0)return;if(s.length===1)return rCr(s,r,a);let l=Mln(s[0]);if(l!==0&&l!==5){for(let m=1;m<s.length;m++)if(Mln(s[m])!==l)return rCr(s,r,a)}switch(l){case 1:return J6i(s,r,a);case 2:return z6i(s,r,a);case 3:return W6i(s,r,a);case 4:return H6i(s,r,a);default:return rCr(s,r,a)}}function J6i(i,r,a){let s=r.mergeFunctions.mergeRecords(i,r,a);return s===Jbe.defaultMerge||r.useImplicitDefaultMerging&&s===void 0&&r.mergeFunctions.mergeRecords!==r.defaultMergeFunctions.mergeRecords?r.defaultMergeFunctions.mergeRecords(i,r,a):s}function z6i(i,r,a){let s=r.mergeFunctions.mergeArrays(i,r,a);return s===Jbe.defaultMerge||r.useImplicitDefaultMerging&&s===void 0&&r.mergeFunctions.mergeArrays!==r.defaultMergeFunctions.mergeArrays?r.defaultMergeFunctions.mergeArrays(i):s}function W6i(i,r,a){let s=r.mergeFunctions.mergeSets(i,r,a);return s===Jbe.defaultMerge||r.useImplicitDefaultMerging&&s===void 0&&r.mergeFunctions.mergeSets!==r.defaultMergeFunctions.mergeSets?r.defaultMergeFunctions.mergeSets(i):s}function H6i(i,r,a){let s=r.mergeFunctions.mergeMaps(i,r,a);return s===Jbe.defaultMerge||r.useImplicitDefaultMerging&&s===void 0&&r.mergeFunctions.mergeMaps!==r.defaultMergeFunctions.mergeMaps?r.defaultMergeFunctions.mergeMaps(i):s}function rCr(i,r,a){let s=r.mergeFunctions.mergeOthers(i,r,a);return s===Jbe.defaultMerge||r.useImplicitDefaultMerging&&s===void 0&&r.mergeFunctions.mergeOthers!==r.defaultMergeFunctions.mergeOthers?r.defaultMergeFunctions.mergeOthers(i):s}var Jbe,h6a,Lln,jln,mTt,$ln=ss(()=>{Jbe={defaultMerge:Symbol("deepmerge-ts: default merge"),skip:Symbol("deepmerge-ts: skip")},h6a={defaultMerge:Jbe.defaultMerge};e(N6i,"defaultMetaDataUpdater");e(O6i,"defaultFilterValues");(function(i){i[i.NOT=0]="NOT",i[i.RECORD=1]="RECORD",i[i.ARRAY=2]="ARRAY",i[i.SET=3]="SET",i[i.MAP=4]="MAP",i[i.OTHER=5]="OTHER"})(Lln||(Lln={}));e(Mln,"getObjectType");e(B6i,"getKeys");e(R6i,"objectHasProperty");e(Uln,"getIterableOfIterables");jln=["[object Object]","[object Module]"];e(L6i,"isRecord");e(M6i,"mergeRecords$1");e(j6i,"mergeArrays$1");e(U6i,"mergeSets$1");e(Q6i,"mergeMaps$1");e(q6i,"mergeOthers$1");mTt={mergeRecords:M6i,mergeArrays:j6i,mergeSets:U6i,mergeMaps:Q6i,mergeOthers:q6i};e(Qln,"deepmerge");e($6i,"deepmergeCustom");e(V6i,"getUtils");e(qln,"mergeUnknowns");e(J6i,"mergeRecords");e(z6i,"mergeArrays");e(W6i,"mergeSets");e(H6i,"mergeMaps");e(rCr,"mergeOthers")});function _Tt(i){Vln=i}function Gy(...i){Vln&&console.log(...i)}async function kzr(i,r,a,s=6e4){if(!(r in i))return i;let l=e(()=>i[r](...a),"executor");return s===null?l():U4(l(),s,"Execution timeout")}function K6r(i,{role:r,environment:a}={},s=!1){var A,E;let l;if(a&&(l=(A=i.environments)==null?void 0:A.find(({name:S})=>a===S)),l||(l=(E=i.environments)==null?void 0:E.find(({default:S})=>S)),!l)throw new Error("Environment not found. Please make sure your environments are properly defined in the checksum.config.ts file.");let f=l.users,m;if(f&&(r!==void 0&&(m=f.find(S=>S.role===r)),m||(m=f.find(S=>S.default))),!m)throw new Error(`User not found. Please make sure the users array for the "${l.name}" environment is properly defined in the checksum.config.ts file.`);if(a&&l.name!==a){if(s)throw new Error(`Could not find environment with name "${a}" in config file`);console.warn(`Could not find environment with name "${a}" in config file, trying to use default environment`)}if(r&&m.role!==r){if(s)throw new Error(`Could not find user with role "${r}" for environment "${a}" in config file`);console.warn(`Could not find user with role "${r}" for environment "${a}" in config file, trying to login with environment's default user`)}return{environment:l,user:m}}function G6i(i){let r=`${i??Cee()}/login.ts`;if(!(0,hTt.existsSync)(r))throw console.warn(`Could not locate the login.ts file. Please make sure your login file exists at ${r}`),new Error("Could not find login.ts file");try{return require(r).default}catch(a){throw console.warn("Error loading login.ts file",a),a}}async function K6i(i,r,{environment:a,user:s,config:l}){try{let f=e(()=>r(i,{environment:a,user:s,config:l}),"performLogin");"checksumAI"in i?await i.checksumAI(`Log in${s!=null&&s.role?` using ${s.role} role`:""}${a!=null&&a.name?` in ${a.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:
|
|
618
618
|
`,f),f}}function tCr(i){let{config:r,folder:a,throwIfAuthFailed:s}=i,l=G6i(a);return async(f,{role:m,environment:A}={})=>{let{environment:E,user:S}=K6r(r,{role:m,environment:A},i.throwIfEnvInfoInvalid);if(s&&!S)throw new Error("Could not find user credentials matching the provided role and/or environment");await K6i(f,l,{environment:E,user:S,config:r})}}function Wen(){if(RRe)return RRe;try{let i=(0,hTt.existsSync)(`${Cee()}/checksum.config.ts`)?"checksum.config.ts":(0,hTt.existsSync)(`${Cee()}/checksum.config.tmp.ts`)?"checksum.config.tmp.ts":void 0;if(i)return gTt(require(`${Cee()}/${i}`).default)}catch{console.warn("Could not find checksum config file, will run with defaults")}return gTt()}function gTt(i={}){var a,s,l,f;let r={apiKey:void 0,runMode:"normal",apiURL:"https://api.checksum.ai",options:{useChecksumSelectors:!0,useChecksumAI:{actions:!0,assertions:!1,skipTestsWithKnownBugs:!0},newAssertionsEnabled:!0,useMockData:!1,printLogs:!1,hideReports:process.env.AUTHORIZE_REPORTS==="true"}};return((s=(a=i.options)==null?void 0:a.useChecksumAI)==null?void 0:s.visualComparison)===void 0&&((f=(l=i.options)==null?void 0:l.useChecksumAI)!=null&&f.assertions)&&(i.options.useChecksumAI.visualComparison=!0),RRe=Qln(r,i),Qh.testRun.disableAutoRecovery&&(RRe.options.useChecksumAI={actions:!1,assertions:!1,visualComparison:!1}),Qh.testRun.disableHostReports&&(RRe.options.hostReports=!1),RRe}function Rln(i){let r=e(a=>{a.on("dialog",s=>{})},"makeDialogHandler");i.context().pages().forEach(r),i.context().on("page",a=>{r(a)})}var hTt,Vln,RRe,SOe,Ez=ss(()=>{"use strict";Bln();yD();rhe();hTt=require("fs");_S();$ln();Vln=!1;e(_Tt,"setLogToConsole");e(Gy,"log");e(kzr,"executePlaywrightMethodWithTimeout");e(K6r,"resolveEnvironment");e(G6i,"requireLogin");e(K6i,"proceedWithLogin");e(tCr,"makeUnboundLogin");e(Wen,"loadChecksumConfig");e(gTt,"getChecksumConfig");e(Rln,"preventDialogAutoDismissal");SOe="Checksum failed connecting to the server"});var Hbe=zr(($6a,Yln)=>{var lCr=require("tty"),Gln,STt,Kln,X6i=((Kln=(STt=(Gln=lCr==null?void 0:lCr.WriteStream)==null?void 0:Gln.prototype)==null?void 0:STt.hasColors)==null?void 0:Kln.call(STt))??!1,uA=e((i,r)=>{if(!X6i)return l=>l;let a=`\x1B[${i}m`,s=`\x1B[${r}m`;return l=>{let f=l+"",m=f.indexOf(s);if(m===-1)return a+f+s;let A=a,E=0;for(;m!==-1;)A+=f.slice(E,m)+a,E=m+s.length,m=f.indexOf(s,E);return A+=f.slice(E)+s,A}},"format"),Qx={};Qx.reset=uA(0,0);Qx.bold=uA(1,22);Qx.dim=uA(2,22);Qx.italic=uA(3,23);Qx.underline=uA(4,24);Qx.overline=uA(53,55);Qx.inverse=uA(7,27);Qx.hidden=uA(8,28);Qx.strikethrough=uA(9,29);Qx.black=uA(30,39);Qx.red=uA(31,39);Qx.green=uA(32,39);Qx.yellow=uA(33,39);Qx.blue=uA(34,39);Qx.magenta=uA(35,39);Qx.cyan=uA(36,39);Qx.white=uA(37,39);Qx.gray=uA(90,39);Qx.bgBlack=uA(40,49);Qx.bgRed=uA(41,49);Qx.bgGreen=uA(42,49);Qx.bgYellow=uA(43,49);Qx.bgBlue=uA(44,49);Qx.bgMagenta=uA(45,49);Qx.bgCyan=uA(46,49);Qx.bgWhite=uA(47,49);Qx.bgGray=uA(100,49);Qx.redBright=uA(91,39);Qx.greenBright=uA(92,39);Qx.yellowBright=uA(93,39);Qx.blueBright=uA(94,39);Qx.magentaBright=uA(95,39);Qx.cyanBright=uA(96,39);Qx.whiteBright=uA(97,39);Qx.bgRedBright=uA(101,49);Qx.bgGreenBright=uA(102,49);Qx.bgYellowBright=uA(103,49);Qx.bgBlueBright=uA(104,49);Qx.bgMagentaBright=uA(105,49);Qx.bgCyanBright=uA(106,49);Qx.bgWhiteBright=uA(107,49);Yln.exports=Qx});var ipn=zr((hCa,npn)=>{"use strict";npn.exports=sCi;function aCi(i){let r={defaultWidth:0,output:process.stdout,tty:require("tty")};return i?(Object.keys(r).forEach(function(a){i[a]||(i[a]=r[a])}),i):r}e(aCi,"normalizeOpts");function sCi(i){let r=aCi(i);if(r.output.getWindowSize)return r.output.getWindowSize()[0]||r.defaultWidth;if(r.tty.getWindowSize)return r.tty.getWindowSize()[1]||r.defaultWidth;if(r.output.columns)return r.output.columns;if(process.env.CLI_WIDTH){let a=parseInt(process.env.CLI_WIDTH,10);if(!isNaN(a)&&a!==0)return a}return r.defaultWidth}e(sCi,"cliWidth")});var spn=zr((yCa,apn)=>{"use strict";apn.exports=({onlyFirst:i=!1}={})=>{let r=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(r,i?void 0:"g")}});var wTt=zr((vCa,opn)=>{"use strict";var oCi=spn();opn.exports=i=>typeof i=="string"?i.replace(oCi(),""):i});var upn=zr((xCa,fCr)=>{"use strict";var cpn=e(i=>Number.isNaN(i)?!1:i>=4352&&(i<=4447||i===9001||i===9002||11904<=i&&i<=12871&&i!==12351||12880<=i&&i<=19903||19968<=i&&i<=42182||43360<=i&&i<=43388||44032<=i&&i<=55203||63744<=i&&i<=64255||65040<=i&&i<=65049||65072<=i&&i<=65131||65281<=i&&i<=65376||65504<=i&&i<=65510||110592<=i&&i<=110593||127488<=i&&i<=127569||131072<=i&&i<=262141),"isFullwidthCodePoint");fCr.exports=cpn;fCr.exports.default=cpn});var ppn=zr((bCa,lpn)=>{"use strict";lpn.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});var dpn=zr((ECa,dCr)=>{"use strict";var cCi=wTt(),uCi=upn(),lCi=ppn(),fpn=e(i=>{if(typeof i!="string"||i.length===0||(i=cCi(i),i.length===0))return 0;i=i.replace(lCi()," ");let r=0;for(let a=0;a<i.length;a++){let s=i.codePointAt(a);s<=31||s>=127&&s<=159||s>=768&&s<=879||(s>65535&&a++,r+=uCi(s)?2:1)}return r},"stringWidth");dCr.exports=fpn;dCr.exports.default=fpn});var mpn=zr((DCa,_pn)=>{"use strict";_pn.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var _Cr=zr((SCa,gpn)=>{var ztt=mpn(),hpn={};for(let i of Object.keys(ztt))hpn[ztt[i]]=i;var Kg={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};gpn.exports=Kg;for(let i of Object.keys(Kg)){if(!("channels"in Kg[i]))throw new Error("missing channels property: "+i);if(!("labels"in Kg[i]))throw new Error("missing channel labels property: "+i);if(Kg[i].labels.length!==Kg[i].channels)throw new Error("channel and label counts mismatch: "+i);let{channels:r,labels:a}=Kg[i];delete Kg[i].channels,delete Kg[i].labels,Object.defineProperty(Kg[i],"channels",{value:r}),Object.defineProperty(Kg[i],"labels",{value:a})}Kg.rgb.hsl=function(i){let r=i[0]/255,a=i[1]/255,s=i[2]/255,l=Math.min(r,a,s),f=Math.max(r,a,s),m=f-l,A,E;f===l?A=0:r===f?A=(a-s)/m:a===f?A=2+(s-r)/m:s===f&&(A=4+(r-a)/m),A=Math.min(A*60,360),A<0&&(A+=360);let S=(l+f)/2;return f===l?E=0:S<=.5?E=m/(f+l):E=m/(2-f-l),[A,E*100,S*100]};Kg.rgb.hsv=function(i){let r,a,s,l,f,m=i[0]/255,A=i[1]/255,E=i[2]/255,S=Math.max(m,A,E),T=S-Math.min(m,A,E),O=e(function(N){return(S-N)/6/T+1/2},"diffc");return T===0?(l=0,f=0):(f=T/S,r=O(m),a=O(A),s=O(E),m===S?l=s-a:A===S?l=1/3+r-s:E===S&&(l=2/3+a-r),l<0?l+=1:l>1&&(l-=1)),[l*360,f*100,S*100]};Kg.rgb.hwb=function(i){let r=i[0],a=i[1],s=i[2],l=Kg.rgb.hsl(i)[0],f=1/255*Math.min(r,Math.min(a,s));return s=1-1/255*Math.max(r,Math.max(a,s)),[l,f*100,s*100]};Kg.rgb.cmyk=function(i){let r=i[0]/255,a=i[1]/255,s=i[2]/255,l=Math.min(1-r,1-a,1-s),f=(1-r-l)/(1-l)||0,m=(1-a-l)/(1-l)||0,A=(1-s-l)/(1-l)||0;return[f*100,m*100,A*100,l*100]};function pCi(i,r){return(i[0]-r[0])**2+(i[1]-r[1])**2+(i[2]-r[2])**2}e(pCi,"comparativeDistance");Kg.rgb.keyword=function(i){let r=hpn[i];if(r)return r;let a=1/0,s;for(let l of Object.keys(ztt)){let f=ztt[l],m=pCi(i,f);m<a&&(a=m,s=l)}return s};Kg.keyword.rgb=function(i){return ztt[i]};Kg.rgb.xyz=function(i){let r=i[0]/255,a=i[1]/255,s=i[2]/255;r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,a=a>.04045?((a+.055)/1.055)**2.4:a/12.92,s=s>.04045?((s+.055)/1.055)**2.4:s/12.92;let l=r*.4124+a*.3576+s*.1805,f=r*.2126+a*.7152+s*.0722,m=r*.0193+a*.1192+s*.9505;return[l*100,f*100,m*100]};Kg.rgb.lab=function(i){let r=Kg.rgb.xyz(i),a=r[0],s=r[1],l=r[2];a/=95.047,s/=100,l/=108.883,a=a>.008856?a**(1/3):7.787*a+16/116,s=s>.008856?s**(1/3):7.787*s+16/116,l=l>.008856?l**(1/3):7.787*l+16/116;let f=116*s-16,m=500*(a-s),A=200*(s-l);return[f,m,A]};Kg.hsl.rgb=function(i){let r=i[0]/360,a=i[1]/100,s=i[2]/100,l,f,m;if(a===0)return m=s*255,[m,m,m];s<.5?l=s*(1+a):l=s+a-s*a;let A=2*s-l,E=[0,0,0];for(let S=0;S<3;S++)f=r+1/3*-(S-1),f<0&&f++,f>1&&f--,6*f<1?m=A+(l-A)*6*f:2*f<1?m=l:3*f<2?m=A+(l-A)*(2/3-f)*6:m=A,E[S]=m*255;return E};Kg.hsl.hsv=function(i){let r=i[0],a=i[1]/100,s=i[2]/100,l=a,f=Math.max(s,.01);s*=2,a*=s<=1?s:2-s,l*=f<=1?f:2-f;let m=(s+a)/2,A=s===0?2*l/(f+l):2*a/(s+a);return[r,A*100,m*100]};Kg.hsv.rgb=function(i){let r=i[0]/60,a=i[1]/100,s=i[2]/100,l=Math.floor(r)%6,f=r-Math.floor(r),m=255*s*(1-a),A=255*s*(1-a*f),E=255*s*(1-a*(1-f));switch(s*=255,l){case 0:return[s,E,m];case 1:return[A,s,m];case 2:return[m,s,E];case 3:return[m,A,s];case 4:return[E,m,s];case 5:return[s,m,A]}};Kg.hsv.hsl=function(i){let r=i[0],a=i[1]/100,s=i[2]/100,l=Math.max(s,.01),f,m;m=(2-a)*s;let A=(2-a)*l;return f=a*l,f/=A<=1?A:2-A,f=f||0,m/=2,[r,f*100,m*100]};Kg.hwb.rgb=function(i){let r=i[0]/360,a=i[1]/100,s=i[2]/100,l=a+s,f;l>1&&(a/=l,s/=l);let m=Math.floor(6*r),A=1-s;f=6*r-m,m&1&&(f=1-f);let E=a+f*(A-a),S,T,O;switch(m){default:case 6:case 0:S=A,T=E,O=a;break;case 1:S=E,T=A,O=a;break;case 2:S=a,T=A,O=E;break;case 3:S=a,T=E,O=A;break;case 4:S=E,T=a,O=A;break;case 5:S=A,T=a,O=E;break}return[S*255,T*255,O*255]};Kg.cmyk.rgb=function(i){let r=i[0]/100,a=i[1]/100,s=i[2]/100,l=i[3]/100,f=1-Math.min(1,r*(1-l)+l),m=1-Math.min(1,a*(1-l)+l),A=1-Math.min(1,s*(1-l)+l);return[f*255,m*255,A*255]};Kg.xyz.rgb=function(i){let r=i[0]/100,a=i[1]/100,s=i[2]/100,l,f,m;return l=r*3.2406+a*-1.5372+s*-.4986,f=r*-.9689+a*1.8758+s*.0415,m=r*.0557+a*-.204+s*1.057,l=l>.0031308?1.055*l**(1/2.4)-.055:l*12.92,f=f>.0031308?1.055*f**(1/2.4)-.055:f*12.92,m=m>.0031308?1.055*m**(1/2.4)-.055:m*12.92,l=Math.min(Math.max(0,l),1),f=Math.min(Math.max(0,f),1),m=Math.min(Math.max(0,m),1),[l*255,f*255,m*255]};Kg.xyz.lab=function(i){let r=i[0],a=i[1],s=i[2];r/=95.047,a/=100,s/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,a=a>.008856?a**(1/3):7.787*a+16/116,s=s>.008856?s**(1/3):7.787*s+16/116;let l=116*a-16,f=500*(r-a),m=200*(a-s);return[l,f,m]};Kg.lab.xyz=function(i){let r=i[0],a=i[1],s=i[2],l,f,m;f=(r+16)/116,l=a/500+f,m=f-s/200;let A=f**3,E=l**3,S=m**3;return f=A>.008856?A:(f-16/116)/7.787,l=E>.008856?E:(l-16/116)/7.787,m=S>.008856?S:(m-16/116)/7.787,l*=95.047,f*=100,m*=108.883,[l,f,m]};Kg.lab.lch=function(i){let r=i[0],a=i[1],s=i[2],l;l=Math.atan2(s,a)*360/2/Math.PI,l<0&&(l+=360);let m=Math.sqrt(a*a+s*s);return[r,m,l]};Kg.lch.lab=function(i){let r=i[0],a=i[1],l=i[2]/360*2*Math.PI,f=a*Math.cos(l),m=a*Math.sin(l);return[r,f,m]};Kg.rgb.ansi16=function(i,r=null){let[a,s,l]=i,f=r===null?Kg.rgb.hsv(i)[2]:r;if(f=Math.round(f/50),f===0)return 30;let m=30+(Math.round(l/255)<<2|Math.round(s/255)<<1|Math.round(a/255));return f===2&&(m+=60),m};Kg.hsv.ansi16=function(i){return Kg.rgb.ansi16(Kg.hsv.rgb(i),i[2])};Kg.rgb.ansi256=function(i){let r=i[0],a=i[1],s=i[2];return r===a&&a===s?r<8?16:r>248?231:Math.round((r-8)/247*24)+232:16+36*Math.round(r/255*5)+6*Math.round(a/255*5)+Math.round(s/255*5)};Kg.ansi16.rgb=function(i){let r=i%10;if(r===0||r===7)return i>50&&(r+=3.5),r=r/10.5*255,[r,r,r];let a=(~~(i>50)+1)*.5,s=(r&1)*a*255,l=(r>>1&1)*a*255,f=(r>>2&1)*a*255;return[s,l,f]};Kg.ansi256.rgb=function(i){if(i>=232){let f=(i-232)*10+8;return[f,f,f]}i-=16;let r,a=Math.floor(i/36)/5*255,s=Math.floor((r=i%36)/6)/5*255,l=r%6/5*255;return[a,s,l]};Kg.rgb.hex=function(i){let a=(((Math.round(i[0])&255)<<16)+((Math.round(i[1])&255)<<8)+(Math.round(i[2])&255)).toString(16).toUpperCase();return"000000".substring(a.length)+a};Kg.hex.rgb=function(i){let r=i.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!r)return[0,0,0];let a=r[0];r[0].length===3&&(a=a.split("").map(A=>A+A).join(""));let s=parseInt(a,16),l=s>>16&255,f=s>>8&255,m=s&255;return[l,f,m]};Kg.rgb.hcg=function(i){let r=i[0]/255,a=i[1]/255,s=i[2]/255,l=Math.max(Math.max(r,a),s),f=Math.min(Math.min(r,a),s),m=l-f,A,E;return m<1?A=f/(1-m):A=0,m<=0?E=0:l===r?E=(a-s)/m%6:l===a?E=2+(s-r)/m:E=4+(r-a)/m,E/=6,E%=1,[E*360,m*100,A*100]};Kg.hsl.hcg=function(i){let r=i[1]/100,a=i[2]/100,s=a<.5?2*r*a:2*r*(1-a),l=0;return s<1&&(l=(a-.5*s)/(1-s)),[i[0],s*100,l*100]};Kg.hsv.hcg=function(i){let r=i[1]/100,a=i[2]/100,s=r*a,l=0;return s<1&&(l=(a-s)/(1-s)),[i[0],s*100,l*100]};Kg.hcg.rgb=function(i){let r=i[0]/360,a=i[1]/100,s=i[2]/100;if(a===0)return[s*255,s*255,s*255];let l=[0,0,0],f=r%1*6,m=f%1,A=1-m,E=0;switch(Math.floor(f)){case 0:l[0]=1,l[1]=m,l[2]=0;break;case 1:l[0]=A,l[1]=1,l[2]=0;break;case 2:l[0]=0,l[1]=1,l[2]=m;break;case 3:l[0]=0,l[1]=A,l[2]=1;break;case 4:l[0]=m,l[1]=0,l[2]=1;break;default:l[0]=1,l[1]=0,l[2]=A}return E=(1-a)*s,[(a*l[0]+E)*255,(a*l[1]+E)*255,(a*l[2]+E)*255]};Kg.hcg.hsv=function(i){let r=i[1]/100,a=i[2]/100,s=r+a*(1-r),l=0;return s>0&&(l=r/s),[i[0],l*100,s*100]};Kg.hcg.hsl=function(i){let r=i[1]/100,s=i[2]/100*(1-r)+.5*r,l=0;return s>0&&s<.5?l=r/(2*s):s>=.5&&s<1&&(l=r/(2*(1-s))),[i[0],l*100,s*100]};Kg.hcg.hwb=function(i){let r=i[1]/100,a=i[2]/100,s=r+a*(1-r);return[i[0],(s-r)*100,(1-s)*100]};Kg.hwb.hcg=function(i){let r=i[1]/100,s=1-i[2]/100,l=s-r,f=0;return l<1&&(f=(s-l)/(1-l)),[i[0],l*100,f*100]};Kg.apple.rgb=function(i){return[i[0]/65535*255,i[1]/65535*255,i[2]/65535*255]};Kg.rgb.apple=function(i){return[i[0]/255*65535,i[1]/255*65535,i[2]/255*65535]};Kg.gray.rgb=function(i){return[i[0]/100*255,i[0]/100*255,i[0]/100*255]};Kg.gray.hsl=function(i){return[0,0,i[0]]};Kg.gray.hsv=Kg.gray.hsl;Kg.gray.hwb=function(i){return[0,100,i[0]]};Kg.gray.cmyk=function(i){return[0,0,0,i[0]]};Kg.gray.lab=function(i){return[i[0],0,0]};Kg.gray.hex=function(i){let r=Math.round(i[0]/100*255)&255,s=((r<<16)+(r<<8)+r).toString(16).toUpperCase();return"000000".substring(s.length)+s};Kg.rgb.gray=function(i){return[(i[0]+i[1]+i[2])/3/255*100]}});var vpn=zr((TCa,ypn)=>{var TTt=_Cr();function fCi(){let i={},r=Object.keys(TTt);for(let a=r.length,s=0;s<a;s++)i[r[s]]={distance:-1,parent:null};return i}e(fCi,"buildGraph");function dCi(i){let r=fCi(),a=[i];for(r[i].distance=0;a.length;){let s=a.pop(),l=Object.keys(TTt[s]);for(let f=l.length,m=0;m<f;m++){let A=l[m],E=r[A];E.distance===-1&&(E.distance=r[s].distance+1,E.parent=s,a.unshift(A))}}return r}e(dCi,"deriveBFS");function _Ci(i,r){return function(a){return r(i(a))}}e(_Ci,"link");function mCi(i,r){let a=[r[i].parent,i],s=TTt[r[i].parent][i],l=r[i].parent;for(;r[l].parent;)a.unshift(r[l].parent),s=_Ci(TTt[r[l].parent][l],s),l=r[l].parent;return s.conversion=a,s}e(mCi,"wrapConversion");ypn.exports=function(i){let r=dCi(i),a={},s=Object.keys(r);for(let l=s.length,f=0;f<l;f++){let m=s[f];r[m].parent!==null&&(a[m]=mCi(m,r))}return a}});var Apn=zr((ICa,xpn)=>{var mCr=_Cr(),hCi=vpn(),URe={},gCi=Object.keys(mCr);function yCi(i){let r=e(function(...a){let s=a[0];return s==null?s:(s.length>1&&(a=s),i(a))},"wrappedFn");return"conversion"in i&&(r.conversion=i.conversion),r}e(yCi,"wrapRaw");function vCi(i){let r=e(function(...a){let s=a[0];if(s==null)return s;s.length>1&&(a=s);let l=i(a);if(typeof l=="object")for(let f=l.length,m=0;m<f;m++)l[m]=Math.round(l[m]);return l},"wrappedFn");return"conversion"in i&&(r.conversion=i.conversion),r}e(vCi,"wrapRounded");gCi.forEach(i=>{URe[i]={},Object.defineProperty(URe[i],"channels",{value:mCr[i].channels}),Object.defineProperty(URe[i],"labels",{value:mCr[i].labels});let r=hCi(i);Object.keys(r).forEach(s=>{let l=r[s];URe[i][s]=vCi(l),URe[i][s].raw=yCi(l)})});xpn.exports=URe});var wpn=zr((PCa,Spn)=>{"use strict";var bpn=e((i,r)=>(...a)=>`\x1B[${i(...a)+r}m`,"wrapAnsi16"),Epn=e((i,r)=>(...a)=>{let s=i(...a);return`\x1B[${38+r};5;${s}m`},"wrapAnsi256"),Cpn=e((i,r)=>(...a)=>{let s=i(...a);return`\x1B[${38+r};2;${s[0]};${s[1]};${s[2]}m`},"wrapAnsi16m"),kTt=e(i=>i,"ansi2ansi"),Dpn=e((i,r,a)=>[i,r,a],"rgb2rgb"),QRe=e((i,r,a)=>{Object.defineProperty(i,r,{get:e(()=>{let s=a();return Object.defineProperty(i,r,{value:s,enumerable:!0,configurable:!0}),s},"get"),enumerable:!0,configurable:!0})},"setLazyProperty"),hCr,qRe=e((i,r,a,s)=>{hCr===void 0&&(hCr=Apn());let l=s?10:0,f={};for(let[m,A]of Object.entries(hCr)){let E=m==="ansi16"?"ansi":m;m===r?f[E]=i(a,l):typeof A=="object"&&(f[E]=i(A[r],l))}return f},"makeDynamicStyles");function xCi(){let i=new Map,r={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};r.color.gray=r.color.blackBright,r.bgColor.bgGray=r.bgColor.bgBlackBright,r.color.grey=r.color.blackBright,r.bgColor.bgGrey=r.bgColor.bgBlackBright;for(let[a,s]of Object.entries(r)){for(let[l,f]of Object.entries(s))r[l]={open:`\x1B[${f[0]}m`,close:`\x1B[${f[1]}m`},s[l]=r[l],i.set(f[0],f[1]);Object.defineProperty(r,a,{value:s,enumerable:!1})}return Object.defineProperty(r,"codes",{value:i,enumerable:!1}),r.color.close="\x1B[39m",r.bgColor.close="\x1B[49m",QRe(r.color,"ansi",()=>qRe(bpn,"ansi16",kTt,!1)),QRe(r.color,"ansi256",()=>qRe(Epn,"ansi256",kTt,!1)),QRe(r.color,"ansi16m",()=>qRe(Cpn,"rgb",Dpn,!1)),QRe(r.bgColor,"ansi",()=>qRe(bpn,"ansi16",kTt,!0)),QRe(r.bgColor,"ansi256",()=>qRe(Epn,"ansi256",kTt,!0)),QRe(r.bgColor,"ansi16m",()=>qRe(Cpn,"rgb",Dpn,!0)),r}e(xCi,"assembleStyles");Object.defineProperty(Spn,"exports",{enumerable:!0,get:xCi})});var Ipn=zr((OCa,kpn)=>{"use strict";var Wtt=dpn(),ACi=wTt(),bCi=wpn(),yCr=new Set(["\x1B","\x9B"]),ECi=39,Tpn=e(i=>`${yCr.values().next().value}[${i}m`,"wrapAnsi"),CCi=e(i=>i.split(" ").map(r=>Wtt(r)),"wordLengths"),gCr=e((i,r,a)=>{let s=[...r],l=!1,f=Wtt(ACi(i[i.length-1]));for(let[m,A]of s.entries()){let E=Wtt(A);if(f+E<=a?i[i.length-1]+=A:(i.push(A),f=0),yCr.has(A))l=!0;else if(l&&A==="m"){l=!1;continue}l||(f+=E,f===a&&m<s.length-1&&(i.push(""),f=0))}!f&&i[i.length-1].length>0&&i.length>1&&(i[i.length-2]+=i.pop())},"wrapWord"),DCi=e(i=>{let r=i.split(" "),a=r.length;for(;a>0&&!(Wtt(r[a-1])>0);)a--;return a===r.length?i:r.slice(0,a).join(" ")+r.slice(a).join("")},"stringVisibleTrimSpacesRight"),SCi=e((i,r,a={})=>{if(a.trim!==!1&&i.trim()==="")return"";let s="",l="",f,m=CCi(i),A=[""];for(let[E,S]of i.split(" ").entries()){a.trim!==!1&&(A[A.length-1]=A[A.length-1].trimLeft());let T=Wtt(A[A.length-1]);if(E!==0&&(T>=r&&(a.wordWrap===!1||a.trim===!1)&&(A.push(""),T=0),(T>0||a.trim===!1)&&(A[A.length-1]+=" ",T++)),a.hard&&m[E]>r){let O=r-T,N=1+Math.floor((m[E]-O-1)/r);Math.floor((m[E]-1)/r)<N&&A.push(""),gCr(A,S,r);continue}if(T+m[E]>r&&T>0&&m[E]>0){if(a.wordWrap===!1&&T<r){gCr(A,S,r);continue}A.push("")}if(T+m[E]>r&&a.wordWrap===!1){gCr(A,S,r);continue}A[A.length-1]+=S}a.trim!==!1&&(A=A.map(DCi)),s=A.join(`
|
|
619
619
|
`);for(let[E,S]of[...s].entries()){if(l+=S,yCr.has(S)){let O=parseFloat(/\d[^m]*/.exec(s.slice(E,E+4)));f=O===ECi?null:O}let T=bCi.codes.get(Number(f));f&&T&&(s[E+1]===`
|
package/index.js
CHANGED
|
@@ -628,7 +628,7 @@ Result: ${JSON.stringify(C)}`);else w=C;let k;m7e(t)&&(k=t.id),!k&&KUn(f)&&(k=f.
|
|
|
628
628
|
|
|
629
629
|
${o}`;return{success:!0,pages:a,message:c}}async switchPageHandler(r){if(!r.pageId)return{success:!1,message:"pageId is required"};r.thought&&this.utils.createChecksumStep({title:r.thought});try{await this.utils.setActivePage(r.pageId);let a=await this.utils.captureApplicationState();return{success:!0,message:`Successfully switched to page ${r.pageId}`,appState:a}}catch(a){let o=a instanceof Error?a.message:String(a);return{success:!1,message:`Failed to switch to page ${r.pageId}: ${o}`}}}};e(_zt,"AutoRecoveryAgent");mzt=_zt});var FVr,hzt,vJn=Vt(()=>{"use strict";Mjt();Kdt();FVr=class FVr{constructor(t,r){this.sessionId=null;if(!rie.getCurrentTestInfo())throw new Error("TestRunAnalytics must be initialized with testInfo before RecoveryAnalytics can be used");let o=rie.getCurrentInstance();if(!o)throw new Error("TestRunAnalytics instance not found. Make sure TestRunAnalytics is initialized before creating RecoveryAnalytics");let c=o.getTestSuiteRunInfo();this.analytics=Vme.createFromConfig(c,rie.isolatedMode,!0),this.fallbackId=t,this.fallbackType=r}updateToSessionId(t){this.sessionId!==t&&(this.sessionId=t)}get tableName(){return"fallbacks"}get metadata(){return{...this.analytics.metadata,fallbackType:this.fallbackType,sessionId:this.sessionId||"unknown",fallbackId:this.fallbackId}}event(t){this.analytics.trackEventWithTable(t,this.metadata,this.tableName)}setFallbackType(t){this.fallbackType=t}aiFallbackStart(t){this.event({event:"AI Fallback Start",metadata:this.metadata,...t})}aiFallbackConfig(t){this.event({event:"AI Fallback Config",metadata:this.metadata,...t})}aiFallbackIterationResponse(t){this.event({event:"AI Fallback Iteration Response",metadata:this.metadata,...t})}aiFallbackAssertion(t){this.event({event:"AI Fallback Assertion Execution",metadata:this.metadata,...t})}aiFallbackChangeVariable(t){this.event({event:"AI Fallback Change Variable",metadata:this.metadata,...t})}aiFallbackSummary(t){this.event({event:"AI Fallback Summary",metadata:this.metadata,fallbackType:this.fallbackType,...t})}aiFallbackActionExecution(t){this.event({event:"AI Fallback Action Execution",metadata:this.metadata,...t})}aiFallbackActionExecutionFailure(t){this.event({event:"AI Fallback Action Execution Failure",metadata:this.metadata,...t})}aiFallbackEnd(t){this.event({event:"AI Fallback End",metadata:this.metadata,...t})}ARStart(){this.event({event:"Auto-Recovery Start",metadata:this.metadata})}ARConfig(t){this.event({event:"Auto-Recovery Config",metadata:this.metadata,...t})}ARGetState(t){this.event({event:"Auto-Recovery State",metadata:this.metadata,thought:t})}ARInvokeCode(t,r){this.event({event:"Auto-Recovery Invoke Code",metadata:this.metadata,thought:t,code:r})}ARFinalResult(t){this.event({event:"Auto-Recovery Final Result",metadata:this.metadata,...t})}autoRecoveryDisconnect(t){this.event({event:"Auto-Recovery Disconnect",metadata:this.metadata,...t})}ARFinish(t){this.event({event:"Auto-Recovery Finish",metadata:this.metadata,...t})}ARError(t){this.event({event:"Auto-Recovery Error",metadata:this.metadata,...t})}};e(FVr,"RecoveryAnalytics");hzt=FVr});var bJn=Vt(()=>{"use strict"});function NVr(i){return i._guid}var xJn,AJn,SFe,gzt,EJn=Vt(()=>{"use strict";a5r();xJn=require("fs"),AJn=sf(require("path"));vJn();bJn();e(NVr,"getPageGuid");SFe=class SFe{constructor({page:t,evaluateWithChecksum:r,checksumPage:a,pageInteractor:o,arConfig:c,sessionId:f,runtimeFallbackData:_,fallbackData:v,variableStore:C,runtimePage:w,context:T}){this.reducedHtmlTimeoutMs=3e4;this.page=t,this.evaluateWithChecksum=r,this.checksumPage=a,this._pageInteractor=o,this.arConfig=c,this.sessionId=f,this.runtimeFallbackData=_,this.fallbackData=v,this.variableStore=C,this.runtimePage=w,this.context=T,this._activePageGuid=NVr(this.page),this._analytics=new hzt(this.sessionId,v.type)}get activePageGuid(){return this._activePageGuid}static async start(t){return new SFe({...t})}async getPageById(t){return(this.context||this.page.context()).pages().find(o=>NVr(o)===t)}async setActivePage(t){let r=await this.getPageById(t);if(!r||r.isClosed())throw new Error(`Page with ID ${t} is closed or not found`);this.page=r,this._activePageGuid=t}getMatcherResultFileData(t){let r=t.matcherResult;if((r==null?void 0:r.name)!=="toHaveScreenshot")return;let a=e((_,v=!0)=>{if(!_)return"";try{return(0,xJn.readFileSync)(_,v?"base64":"utf-8")}catch{return""}},"readFileSafe"),o=a(r==null?void 0:r.actual),c=a(r==null?void 0:r.diff),f=a(r==null?void 0:r.expected);if(!f)throw new Error("No expected file found for 'toHaveScreenshot'");return{...r,actual:o,diff:c,expected:f}}async getSelectionDataForChecksumId(t){return await this.evaluateWithChecksum(async a=>{let{selector:o,locator:c,clickOffset:f,parentFramesSelectors:_,invalid:v,rrwebId:C}=await window.checksum.testGenerator.getSelectorForChecksumId(a),w=await window.checksum.testGenerator.getElementForChecksumId(a),T=w instanceof HTMLOptionElement&&w.value?w.value:void 0;return{selector:o,locator:c,clickOffset:f,selectOptionValue:T,parentFramesSelectors:_,invalid:v,rrwebId:C}},t)}async getReducedHtml(t=SFe.currentChecksumId){if(this._pageInteractor.getCurrentURL()==="about:blank")return{reducedHTML:"Error: Page is about:blank. Cannot get reduced HTML - either wait or navigate to a valid page before continuing.",currentChecksumId:t};let{reducedHTML:r,currentChecksumId:a}=await this._pageInteractor.getCurrentReducedHTML({stopFlashingElementsDetection:!0,assignChecksumIdsToAllElements:!0,initialChecksumId:t});return SFe.currentChecksumId=a,{reducedHTML:r,currentChecksumId:a}}async getApplicationState(){let{reducedHTML:t}=await this.getReducedHtml();return{reducedHTML:t,screenshot:await this.getPageScreenshot()}}async capturePageState(t,r){let a=this.page,o=this._activePageGuid;try{this.page=t,this._activePageGuid=r;let{reducedHTML:c}=await this.getReducedHtml(),f=await this.getPageScreenshot();return{pageId:r,reducedHTML:c,screenshot:f,url:t.url()}}finally{this.page=a,this._activePageGuid=o}}async captureAllPagesState(){let r=(this.context||this.page.context()).pages(),a=[],o=[];for(let f of r){if(f.isClosed())continue;let _=NVr(f);try{let v=await this.capturePageState(f,_);a.push(v)}catch(v){let C=v instanceof Error?v.message:String(v);o.push({pageId:_,url:f.url(),error:C}),console.warn(`Failed to capture state for page ${_} (${f.url()}):`,v)}}let c={pages:a};return o.length>0&&(c.failures=o),c}async captureApplicationState(t,r){if(r)return await this.captureAllPagesState();if(t&&t!==this._activePageGuid){let a=await this.getPageById(t);if(!a||a.isClosed())throw new Error(`Page with ID ${t} is closed or not found`);let o=await this.capturePageState(a,t);return{reducedHTML:o.reducedHTML,screenshot:o.screenshot}}else return await this.getApplicationState()}async buildFallbackData(){let r=(this.context||this.page.context()).pages().filter(f=>!f.isClosed()).length,a=new Promise((f,_)=>setTimeout(()=>_(new Error(`getReducedHtml timeout after ${this.reducedHtmlTimeoutMs/1e3} seconds`)),this.reducedHtmlTimeoutMs)),{reducedHTML:o,currentChecksumId:c}=await Promise.race([this.getReducedHtml(),a]);return{storyInfo:this.runtimeFallbackData.storyInfo,testIdentification:this.runtimeFallbackData.testIdentification,fallbackConfig:this.runtimeFallbackData.fallbackConfig,thoughts:this.runtimeFallbackData.thoughts,errorData:{error:{name:this.fallbackData.error.name,message:this.fallbackData.error.message,stack:this.fallbackData.error.stack},errorFileContent:await this.getErrorFileContent(this.fallbackData.error)},applicationState:{reducedHTML:o,screenshot:await this.getPageScreenshot()},stepData:{matcher:this.getMatcherResultFileData(this.fallbackData.error)},currentChecksumId:c,failingStepThought:this.runtimeFallbackData.thoughts.failing,type:this.fallbackData.type,config:this.runtimeFallbackData.config,sessionId:this.sessionId,variableStore:this.variableStore.reduce((f,_)=>(f[`variablesStore.${_.name}`]=_.value,f),{}),arConfig:this.arConfig,multiPageContext:{pageCount:r,hasMultiplePages:r>1}}}async scrollToElement(t){t&&await this._pageInteractor.scrollElementIntoViewByChecksumId(t)}async getPageScreenshot(t=this.arConfig){try{return this.checksumPage.wrapInternalSteps(async()=>{var a;return(await this.page.screenshot({fullPage:!0,type:((a=t.modelConfig)==null?void 0:a.provider)==="anthropic"?"jpeg":"png"})).toString("base64")})}catch{return}}async getErrorFileContent(t){try{let r=AJn.default.dirname(this.runtimeFallbackData.testIdentification.testFileName);return sVe.toRecord(t,r)}catch{throw new Error("Error while getting error file content for AI fallback")}}async wait(){await this.page.waitForTimeout(5e3)}async preprocessCode(t){var R;let r=t,a=t,o=[],c=t.match(/getByChecksumId\([^)]+\)\.([a-zA-Z]+)\(([^)]*)\)/),f=c==null?void 0:c[1],_=c==null?void 0:c[2],v=/(?:page\.)?getByChecksumId\(['"]([^'"]+)['"]\)/,C=(R=t.match(v))==null?void 0:R[1];if(!C)throw new Error("Checksum ID not found in the code");let w=await this.getSelectionDataForChecksumId(C);if(!(w!=null&&w.locator)||w.invalid)throw new Error(`Locator or selector not found for checksumId: ${C}`);a=a.replace(v,w.locator);let T=/variables?Store\.([a-zA-Z_$][a-zA-Z0-9_$]*)/g,k=null;for(;(k=T.exec(t))!==null;){let B=k[1],U=this.variableStore.find(W=>W.name===B);U&&(o.push(U),a=a.replace(k[0],`"${U.value}"`))}return{originalCode:r,modifiedCode:a,usedVariables:o,checksumId:C,locator:w.locator,method:f,methodArgs:_}}async invokeCode(t){try{let r=await this.preprocessCode(t),{modifiedCode:a}=r,o=new Function("page",`return (async () => { return page.${a}; })()`),c;return await this.step(a,async()=>c=await o(this.page),!1,{box:!0,noLocation:!0,obtainStep:e(f=>{this.checksumPage.addAutoRecoveryStepId(f.stepId)},"obtainStep")}),{success:!0,result:c}}catch(r){throw console.log("Error while invoking code",r.message),r}}addAutoRecoveryErrorToReport(t,r){let a=this.runtimeFallbackData.thoughts.failing,o=r?`\u2705 "${a}" auto-recovered`:`\u274C "${a}" failed`;this.checksumPage.addPwAnnotation({type:o,description:t.replace(/^"(.*)"$/,"$1")}),r&&this.checksumPage.addErrorMessage(this.fallbackData.error,`${o}:
|
|
630
630
|
${t}`)}get createChecksumStep(){return t=>this.checksumPage.createChecksumStep(t)}get step(){return this.checksumPage.step.bind(this.checksumPage)}get runConditionallyWithinStep(){return(t,r,a)=>this.checksumPage.runConditionallyWithinStep(t,r,a)}async getScreenshotForElement(t){var r;try{let a=await this.getSelectionDataForChecksumId(t);if(!a)throw new Error(`Locator not found for checksumId: ${t}`);let o=((r=this.arConfig.modelConfig)==null?void 0:r.provider)==="anthropic"?"jpeg":"png";return(await this.page.locator(a.selector).screenshot({type:o})).toString("base64")}catch{throw new Error(`Failed to get screenshot for element: ${t}`)}}get analytics(){return this._analytics}get pageInteractor(){return this._pageInteractor}};e(SFe,"AutoRecoveryRuntimeIteratorUtils"),SFe.currentChecksumId="0";gzt=SFe});var Lbe,Mbe,CJn=Vt(()=>{"use strict";jne();r0t();yJn();EJn();Eve();Lbe=class Lbe extends Wme{constructor(t,r,a,o,c,f,_){super(t,r,a,o,c,f,_),this.runtimePageContext=f}init(t){var r;return this.initializationData=t,(r=this.initializationData.fallbackConfig).arMode??(r.arMode="fast"),this}canResolve(t){return!0}get failingThought(){return this.initializationData.thoughts.failing}getRecoveryAttemptTitle(){switch(this.initializationData.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}"...`}}static async registerSession(t){let r=t.config.apiURL,a=t.config.apiKey;return await(await fetch(`${r}${Lbe.API_BASE_ROUTE}/register-auto-recovery-session`,{method:"POST",headers:{"Content-Type":"application/json",ChecksumAppCode:a},body:JSON.stringify({appName:t.testIdentification.testFileName,fallbackData:t})})).json()}async prepareSession(t){let r=await Lbe.registerSession(this.initializationData);this.utils=new gzt({page:this.page,evaluateWithChecksum:this.evaluateWithChecksum,checksumPage:this.checksumPage,pageInteractor:this.pageInteractor,arConfig:r.arConfig,sessionId:r.sessionId,runtimeFallbackData:this.initializationData,fallbackData:t,variableStore:this.variables,runtimePage:this.runtimePageContext,context:this.context});try{this.agent=await mzt.build(this.utils)}catch(a){let o=a instanceof Error?a.message:String(a),c=a instanceof Error?a.stack:void 0;throw new Error(`Failed to prepare ARFallback: ${o}`)}}async resolve(t){let r=null,a=new Promise((c,f)=>{r=setTimeout(()=>{r=null,this.utils.analytics.ARError({error:`Auto-recovery timed out after ${Lbe.TIMEOUT_MS/1e3} seconds`});let _="Auto-Recovery attempt finished unsuccessfully";this.utils.createChecksumStep({title:_,withError:!0}),this.utils.addAutoRecoveryErrorToReport(_,!1),f(new Error(_))},Lbe.TIMEOUT_MS)}),o=Date.now();await this.prepareSession(t),this.utils.analytics.ARStart();try{let c=await Promise.race([this.agent.init(),a]);return r!==null&&(clearTimeout(r),r=null),this.utils.analytics.ARFinish({duration:Date.now()-o}),{fbResult:c.result,thought:c.finalThought,stepsThoughts:c.stepsThoughts,steps:[]}}catch(c){throw r!==null&&(clearTimeout(r),r=null),this.utils.analytics.ARFinish({duration:Date.now()-o}),c}}};e(Lbe,"ARFallback"),Lbe.API_BASE_ROUTE="/auto-recovery",Lbe.TIMEOUT_MS=12e4;Mbe=Lbe});var wJn,SJn=Vt(()=>{"use strict";wJn=e(i=>{let t=i.info();return t.annotations.some(r=>r.type==="bug")||t.tags.some(r=>r==="@bug")},"isKnownBugTest")});var DJn={};CR(DJn,{VtgUserStoryService:()=>G_t});var OVr,G_t,BVr=Vt(()=>{"use strict";vT();fQ();qw();OVr=class OVr{constructor(t,r){this.apiService=t;this.config=r}getStory(){return this.story}getTestGenerationData(){return this.userStoryTestGeneration}hasTestGenerationData(){return!!this.userStoryTestGeneration}async fetchStory(t){if(V0.vtg.useFakeStory){this.story={...V0.vtg.fakeStory,id:"fake-story",environment:{name:void 0,userRole:void 0},internalTestId:"fake-internal-test-id"},tf.info("Using fake flow data",this.story);return}if(!t)throw new Error("no story id provided");try{let a=await(await this.apiService.post(`test-generation/info/${t}`)).json();if(!(a!=null&&a.id))throw new Error(`Story ${t} not found`);let{id:o,title:c,steps:f,startUrl:_,userRole:v,environment:C,internalTestId:w,version:T,collectionName:k}=a;this.story={id:o,goal:c,instructions:f,url:_,internalTestId:w,environment:{userRole:v,name:C},version:T,collectionName:k}}catch(r){throw tf.error(`Error fetching story by id ${t}:`,r),new Error(`Couldn't fetch story by id ${t}. Make sure the server is running and the story id is correct. Original error: ${JSON.stringify(r)}`)}}getEnvInfo(){return K_t(this.config,{role:this.story.environment.userRole,environment:this.story.environment.name})}async createTestGeneration(){if(!this.story.id)return;let t=await this.apiService.post(`test-generation/create/${this.story.id}`,{internalTestId:this.story.internalTestId}),{testGenerationId:r}=await t.json();return this.userStoryTestGeneration={testGenerationId:r},this.userStoryTestGeneration}setTestGenerationData(t){this.userStoryTestGeneration=t}};e(OVr,"VtgUserStoryService");G_t=OVr});var RVr,yzt,TJn=Vt(()=>{"use strict";RVr=class RVr{constructor(t,r){this.config=t;this.baseURL=t.apiURL+r}getBaseURL(){return this.baseURL}get(t){let r=`${this.baseURL}/${t}`;return fetch(r,{method:"GET",headers:{ChecksumAppCode:this.config.apiKey}})}put(t,r){return fetch(`${this.baseURL}/${t}`,{method:"PUT",headers:{"Content-Type":"application/json",ChecksumAppCode:this.config.apiKey},body:r?JSON.stringify(r):void 0})}post(t,r){return fetch(`${this.baseURL}/${t}`,{method:"POST",headers:{"Content-Type":"application/json",ChecksumAppCode:this.config.apiKey},body:r?JSON.stringify(r):void 0})}delete(t){return fetch(`${this.baseURL}/${t}`,{method:"DELETE",headers:{ChecksumAppCode:this.config.apiKey}})}putFile(t,r){return fetch(t,{method:"PUT",headers:{"Content-Type":r.type},body:r})}};e(RVr,"RuntimeAPIService");yzt=RVr});var kJn={};CR(kJn,{VtgCloudAPIService:()=>Y_t});var LVr,Y_t,MVr=Vt(()=>{"use strict";TJn();LVr=class LVr extends yzt{constructor(r){super(r,"/client-api/runtime");this.config=r}};e(LVr,"VtgCloudAPIService");Y_t=LVr});var Tz,IJn,wZ,jVr,jbe,vzt,UVr=Vt(()=>{"use strict";v7();BCn();JH();Eve();i4e();SRt();jne();YTr();Tz=require("fs"),IJn=sf(qkr()),wZ=sf(require("path"));F7n();Wkr();vT();Q5n();$5n();V5n();z5n();J5n();WRn();fQ();fMr();CJn();r$r();SJn();jVr=1e3*30,jbe=class jbe extends cJe{constructor(r,a="normal",o,c,f,_,v,C,w,T,k,R,B){var X,ne,ce;super(r,o,k,()=>this.pageInteractor,void 0);this.page=r;this.runMode=a;this.testRunAnalytics=c;this.monitorBridge=f;this.testInfo=_;this.checksumTestId=v;this.test=C;this.options=w;this.isReplMode=T;this.config=k;this.pageInteractorAPI=R;this.lastInteractionTime=Date.now();this.hasRuntimeStartedTrace=!1;this.unzippedHarData=[];this.fallbacks=[];this.hasUsedAutoRecovery=!1;this.arSummaries=[];this.arStepIds=[];this.arResults=[];this.failedSteps=[];this.thoughtsCounter=0;this.highLevelThoughts=[];this.framesMsgBroker=new I$e;this.previousSteps=[];this.scriptLoadWrapper=e(async(r,a)=>(!this.isTimeMachineFrame(a)&&this.navigationPromise&&await this.navigationPromise,this.wrapInternalSteps(r,a.page())),"scriptLoadWrapper");this.scriptLoadCheck=e(async r=>r.evaluate(()=>!!window.checksum),"scriptLoadCheck");this.scriptLoadCallback=e(async r=>{await r.evaluate(async({appSpecificRules:a,esraTimeout:o,sessionRecorder:c,showFrontendLogs:f,showTMSeeker:_,filesObserver:v,nativeDialogObserver:C,assertionsObserver:w,actionsObserver:T,recordOptions:k})=>{var R;(R=window.checksum)==null||R.testGenerator.init(a,{esraTimeout:o,showFrontendLogs:f,skipElementHighlighting:!0,recordOptions:k},{assertionGenerator:!1,sessionRecorder:c,filesObserver:v,nativeDialogObserver:C,assertionsObserver:w,actionsObserver:T});try{_&&window.checksum.timeMachine.openSeekbar()}catch{}},{appSpecificRules:this.appSpecificRules,esraTimeout:jVr,sessionRecorder:!!(!this.isTimeMachineFrame(r)&&(this.timeMachine||this.isVTG)),showFrontendLogs:V0.isDevMode,showTMSeeker:this.isTimeMachineFrame(r)&&process.env.CHECKSUM_SHOW_TIME_MACHINE==="true",filesObserver:this.isVTG&&!this.isTimeMachineFrame(r),nativeDialogObserver:this.isVTG&&!this.isTimeMachineFrame(r),assertionsObserver:this.isVTG&&!this.isTimeMachineFrame(r),actionsObserver:this.isVTG&&!this.isTimeMachineFrame(r),recordOptions:this.isVTG?this.getVTGRecordOptions():void 0}),Dv(`[init] init script loaded for ${r.page().url()}`)},"scriptLoadCallback");PJn(w.printLogs),this.isVTG&&(this.options={...this.options,useChecksumAI:{actions:!1,assertions:!1,arVersion:1,visualComparison:!1},useMockData:!1,useChecksumSelectors:!1,autoHealPRs:!1},bzt(this.page)),wJn(C)&&this.config.options.useChecksumAI.skipTestsWithKnownBugs&&(console.log("Auto recovery will not run for this test as it is marked as a known bug"),this.config.options.useChecksumAI.actions=!1,this.config.options.useChecksumAI.assertions=!1,this.config.options.useChecksumAI.visualComparison=!1),this.injectedScriptManager.setScriptLoadWrapper(this.scriptLoadWrapper).setScriptLoadCallback(this.scriptLoadCallback).setScriptLoadCheck(this.scriptLoadCheck);let U=Ube({config:this.config,throwIfAuthFailed:!0}),W=this.getPlaywrightProjectConfig();if(this.pageInteractor=new wve(this.evaluateWithChecksum.bind(this),()=>this.page.mainFrame(),()=>this.timeMachine,{log:Dv,logError:Dv},{navigationTimeout:(X=W.use)==null?void 0:X.navigationTimeout,actionTimeout:(ne=W.use)==null?void 0:ne.actionTimeout,testAssetsDir:Nft(Mne()),waitActionDelay:1e3},this.pageInteractorAPI,U),this.checkForActiveTracing(),this.resetFallbacks(),B&&(this.highLevelThoughts=B.highLevelThoughts??[],this.timeMachineBrowserContext=B.timeMachineBrowserContext,this.variableStore=B.variableStore),V0.testRun.timeMachine.active){let fe=this.shouldRecordRRwebEvents()?{recordRRwebEventsToFile:!0,recordRRwebEventsToFilePath:QCn(this.checksumTestId,this.testInfo.retry)}:{};this.isVTG||(this.timeMachine=new Zqt(this.framesMsgBroker,this.injectedScriptManager,{...fe,headless:process.env.CHECKSUM_SHOW_TIME_MACHINE==="true"?!1:V0.testRun.timeMachine.headless,webProxy:(ce=_.project.use)==null?void 0:ce.proxy}),this.timeMachineBrowserContext&&this.timeMachine.setTimeMachineBrowserContext(this.timeMachineBrowserContext))}}previousThoughtsAndTimestamps(){return this.previousSteps}static async init(r,a,o,c,f,_,v,C,w,T=!1){let k=!1;v||(v=await jbe.fetchVtgInternalTestId(w),v||(v=bRt(5),k=!0,console.warn(`Checksum test id was not defined for test "${_.title}" and was auto-generated. Please replace - "${_.title}" with -
|
|
631
|
-
test(defineChecksumTest("${_.title}", "${v}"), async ({ page }) => {...`))),c.addTestInfo(v,_.testId,k),w.options.useChecksumAI!==void 0&&typeof w.options.useChecksumAI=="boolean"&&(w.options.useChecksumAI={actions:w.options.useChecksumAI,assertions:!1,visualComparison:!1});let R=new iVe(w),B=new jbe(r,w.runMode,a,o,c,_,v,C,{useChecksumSelectors:!0,useChecksumAI:{actions:!0,assertions:!1},newAssertionsEnabled:w.runMode!=="normal",useMockData:!1,printLogs:!1,...w.options},T,w,R,{variableStore:f});return C._checksum.expect.setPage(B),C._checksum.checksumAI.page=B,f.clearAll(),B.testRunAnalytics.testRunStart(),await B.asyncInit(),B.proxy}static async fetchVtgInternalTestId(r){try{let a=process.env.CHECKSUM_VTG_TEST_FILE_RUN_CONFIG;if(!a)return;let o=JSON.parse(a);if(o.mode!=="start"||!o.storyId)return;let{VtgUserStoryService:c}=await Promise.resolve().then(()=>(BVr(),DJn)),{VtgCloudAPIService:f}=await Promise.resolve().then(()=>(MVr(),kJn)),_=new f(r),v=new c(_,r);await v.fetchStory(o.storyId);let C=v.getStory();return C==null?void 0:C.internalTestId}catch(a){console.warn("Failed to fetch VTG internalTestId from story:",a);return}}async asyncInit(r=!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(),r||await this.prepareForTestArtifacts();let a=wZ.resolve(__dirname,"mock-auto-heal-agent.js");await this.page.addInitScript({path:a})}async makePage(r){let a=new jbe(r,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,timeMachineBrowserContext:this.timeMachineBrowserContext,variableStore:this.variableStore});return await a.asyncInit(!0),a.proxy}getTimeMachinePage(){var r;return(r=this.timeMachine)==null?void 0:r.getPage()}getFramesMessageBroker(){return this.framesMsgBroker}isTimeMachineFrame(r){var a;return r===((a=this.timeMachine)==null?void 0:a.getFrame())}shouldRecordRRwebEvents(){return V0.testRun.timeMachine.recordRRwebEventsToFile&&this.config.options.hostReports}recordInteraction(){let r=this.getPageGuid(this.page);jbe.recentlyInteracted.set(r,Date.now()),this.lastInteractionTime=Date.now()}static getMostRecentPage(r){let a=r.pages(),o=a[0],c=0;for(let f of a){let _=f._guid,v=jbe.recentlyInteracted.get(_)||0;v>c&&(c=v,o=f)}return o}async goto(r,a){return this.recordInteraction(),this.page.goto(r,a)}async reload(r){return this.recordInteraction(),this.page.reload(r)}async goBack(r){return this.recordInteraction(),this.page.goBack(r)}async goForward(r){return this.recordInteraction(),this.page.goForward(r)}async click(r,a){return this.recordInteraction(),this.page.click(r,a)}async dblclick(r,a){return this.recordInteraction(),this.page.dblclick(r,a)}async fill(r,a,o){return this.recordInteraction(),this.page.fill(r,a,o)}async press(r,a,o){return this.recordInteraction(),this.page.press(r,a,o)}async check(r,a){return this.recordInteraction(),this.page.check(r,a)}async uncheck(r,a){return this.recordInteraction(),this.page.uncheck(r,a)}async selectOption(r,a,o){return this.recordInteraction(),this.page.selectOption(r,a,o)}async hover(r,a){return this.recordInteraction(),this.page.hover(r,a)}async type(r,a,o){return this.recordInteraction(),this.page.type(r,a,o)}async setInputFiles(r,a,o){return this.recordInteraction(),this.page.setInputFiles(r,a,o)}async tap(r,a){return this.recordInteraction(),this.page.tap(r,a)}async dragAndDrop(r,a,o){return this.recordInteraction(),this.page.dragAndDrop(r,a,o)}getPlaywrightProjectConfig(){return this.testInfo.project}checkForActiveTracing(){var o;let a=(o=this.getPlaywrightProjectConfig().use)==null?void 0:o.trace;this.traceMode=typeof a=="string"?a:a==null?void 0:a.mode}registerPageEvents(){super.registerPageEvents(),this.injectedScriptManager.addTrackedFrame(this.page),this.page.on("framenavigated",async r=>{this.injectedScriptManager.onFrameNavigated(r)})}checksumSelector(r){return this.checksumStepId=r,this.options.useChecksumSelectors&&this.setSelectorFallback(r),this.proxy}checksumAI(r,a,o){let c=this.addNewThought(r,"action",!!a);this.previousSteps.push({thought:c.thought,timestamp:Date.now()});let f=this.getPageGuid(this.page);return wve.setLastAction(f,r),a&&typeof a=="function"?this.test.step(r,async _=>{var v;try{return o!=null&&o.withDialog&&this.pageInteractor.listenToDialog(),await a()}catch(C){if(c.children=[],!this.options.useChecksumAI.actions||o!=null&&o.withDialog||o!=null&&o.skipAutoRecovery)throw C;this.setAIFallback(r,"action");try{return await this.initiateFallbackSequence({type:"action",error:C,method:void 0,args:[],testInfo:this.testInfo,step:_},{fallbackTypes:[Vve,Mbe]})}catch(w){throw this.testRunAnalytics.testRunError({failedThought:r,error:(w==null?void 0:w.message)||"Unknown error"}),w}}finally{this.pageInteractor.removeListener("dialog"),this.currentThought=(v=this.currentThought)==null?void 0:v.parent}}):(this.options.useChecksumAI.actions&&!(o!=null&&o.skipAutoRecovery)&&this.setAIFallback(r,"action"),this.proxy)}resolveAssetsFolder(r){return r.map(a=>wZ.join(Nft(Mne()),a))}getRuntimeOptions(){return this.options}addPwAnnotation(r){this.testInfo.annotations.push({type:r.type,description:`
|
|
631
|
+
test(defineChecksumTest("${_.title}", "${v}"), async ({ page }) => {...`))),c.addTestInfo(v,_.testId,k),w.options.useChecksumAI!==void 0&&typeof w.options.useChecksumAI=="boolean"&&(w.options.useChecksumAI={actions:w.options.useChecksumAI,assertions:!1,visualComparison:!1});let R=new iVe(w),B=new jbe(r,w.runMode,a,o,c,_,v,C,{useChecksumSelectors:!0,useChecksumAI:{actions:!0,assertions:!1},newAssertionsEnabled:w.runMode!=="normal",useMockData:!1,printLogs:!1,...w.options},T,w,R,{variableStore:f});return a.pages().length<=1&&(C._checksum.expect.setPage(B),C._checksum.checksumAI.page=B,f.clearAll(),B.testRunAnalytics.testRunStart()),await B.asyncInit(),B.proxy}static async fetchVtgInternalTestId(r){try{let a=process.env.CHECKSUM_VTG_TEST_FILE_RUN_CONFIG;if(!a)return;let o=JSON.parse(a);if(o.mode!=="start"||!o.storyId)return;let{VtgUserStoryService:c}=await Promise.resolve().then(()=>(BVr(),DJn)),{VtgCloudAPIService:f}=await Promise.resolve().then(()=>(MVr(),kJn)),_=new f(r),v=new c(_,r);await v.fetchStory(o.storyId);let C=v.getStory();return C==null?void 0:C.internalTestId}catch(a){console.warn("Failed to fetch VTG internalTestId from story:",a);return}}async asyncInit(r=!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(),r||await this.prepareForTestArtifacts();let a=wZ.resolve(__dirname,"mock-auto-heal-agent.js");await this.page.addInitScript({path:a})}async makePage(r){let a=new jbe(r,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,timeMachineBrowserContext:this.timeMachineBrowserContext,variableStore:this.variableStore});return await a.asyncInit(!0),a.proxy}getTimeMachinePage(){var r;return(r=this.timeMachine)==null?void 0:r.getPage()}getFramesMessageBroker(){return this.framesMsgBroker}isTimeMachineFrame(r){var a;return r===((a=this.timeMachine)==null?void 0:a.getFrame())}shouldRecordRRwebEvents(){return V0.testRun.timeMachine.recordRRwebEventsToFile&&this.config.options.hostReports}recordInteraction(){let r=this.getPageGuid(this.page);jbe.recentlyInteracted.set(r,Date.now()),this.lastInteractionTime=Date.now()}static getMostRecentPage(r){let a=r.pages(),o=a[0],c=0;for(let f of a){let _=f._guid,v=jbe.recentlyInteracted.get(_)||0;v>c&&(c=v,o=f)}return o}async goto(r,a){return this.recordInteraction(),this.page.goto(r,a)}async reload(r){return this.recordInteraction(),this.page.reload(r)}async goBack(r){return this.recordInteraction(),this.page.goBack(r)}async goForward(r){return this.recordInteraction(),this.page.goForward(r)}async click(r,a){return this.recordInteraction(),this.page.click(r,a)}async dblclick(r,a){return this.recordInteraction(),this.page.dblclick(r,a)}async fill(r,a,o){return this.recordInteraction(),this.page.fill(r,a,o)}async press(r,a,o){return this.recordInteraction(),this.page.press(r,a,o)}async check(r,a){return this.recordInteraction(),this.page.check(r,a)}async uncheck(r,a){return this.recordInteraction(),this.page.uncheck(r,a)}async selectOption(r,a,o){return this.recordInteraction(),this.page.selectOption(r,a,o)}async hover(r,a){return this.recordInteraction(),this.page.hover(r,a)}async type(r,a,o){return this.recordInteraction(),this.page.type(r,a,o)}async setInputFiles(r,a,o){return this.recordInteraction(),this.page.setInputFiles(r,a,o)}async tap(r,a){return this.recordInteraction(),this.page.tap(r,a)}async dragAndDrop(r,a,o){return this.recordInteraction(),this.page.dragAndDrop(r,a,o)}getPlaywrightProjectConfig(){return this.testInfo.project}checkForActiveTracing(){var o;let a=(o=this.getPlaywrightProjectConfig().use)==null?void 0:o.trace;this.traceMode=typeof a=="string"?a:a==null?void 0:a.mode}registerPageEvents(){super.registerPageEvents(),this.injectedScriptManager.addTrackedFrame(this.page),this.page.on("framenavigated",async r=>{this.injectedScriptManager.onFrameNavigated(r)})}checksumSelector(r){return this.checksumStepId=r,this.options.useChecksumSelectors&&this.setSelectorFallback(r),this.proxy}checksumAI(r,a,o){let c=this.addNewThought(r,"action",!!a);this.previousSteps.push({thought:c.thought,timestamp:Date.now()});let f=this.getPageGuid(this.page);return wve.setLastAction(f,r),a&&typeof a=="function"?this.test.step(r,async _=>{var v;try{return o!=null&&o.withDialog&&this.pageInteractor.listenToDialog(),await a()}catch(C){if(c.children=[],!this.options.useChecksumAI.actions||o!=null&&o.withDialog||o!=null&&o.skipAutoRecovery)throw C;this.setAIFallback(r,"action");try{return await this.initiateFallbackSequence({type:"action",error:C,method:void 0,args:[],testInfo:this.testInfo,step:_},{fallbackTypes:[Vve,Mbe]})}catch(w){throw this.testRunAnalytics.testRunError({failedThought:r,error:(w==null?void 0:w.message)||"Unknown error"}),w}}finally{this.pageInteractor.removeListener("dialog"),this.currentThought=(v=this.currentThought)==null?void 0:v.parent}}):(this.options.useChecksumAI.actions&&!(o!=null&&o.skipAutoRecovery)&&this.setAIFallback(r,"action"),this.proxy)}resolveAssetsFolder(r){return r.map(a=>wZ.join(Nft(Mne()),a))}getRuntimeOptions(){return this.options}addPwAnnotation(r){this.testInfo.annotations.push({type:r.type,description:`
|
|
632
632
|
${r.description}`})}async onTestComplete(r){this.testRunAnalytics.testRunEnd({success:r,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.hasUsedAutoRecovery&&r}}),this.monitorBridge.addChecksumTestMetadata({checksumTestId:this.checksumTestId,pwTestId:this.testInfo.testId,retry:this.testInfo.retry,type:"autoRecoverySummaries",data:this.arSummaries}),this.cleanupMockData()}async wrapInternalSteps(r,a=this.page){try{return a.mainFrame()._checksumInternal=!0,a._checksumInternal=!0,await r()}finally{a.mainFrame()._checksumInternal=!1,a._checksumInternal=!1}}async conditionallyWrapInternalSteps(r,a){return r?this.wrapInternalSteps(a):a()}async wrapNoLocationSteps(r){try{return this.testInfo._checksumNoLocation=!0,await r()}finally{this.testInfo._checksumNoLocation=!1}}findAllStepsRecursively(r,a,o=[]){for(let c of r){(c._stepId===a||c.stepId===a)&&o.push(c);let f=[c.steps,c._testInfoSteps,c._steps].filter(Boolean);for(let _ of f)this.findAllStepsRecursively(_,a,o)}return o}makeChecksumStepFunction(r){return a=>{if(!r)return;let o=a._stepId||a.stepId;this.findAllStepsRecursively(a._testInfo._steps,o).forEach(f=>{f.error={message:"ChecksumStepError",stack:"Fallback Failed",cause:void 0}})}}async createChecksumStep(r){let a,o={box:!0,noLocation:!0,obtainStep:e(c=>{a=c},"obtainStep")};return await this.step(r.title,this.makeChecksumStepFunction(r.withError),!1,o),this.arStepIds.push(a.stepId),a}async step(r,a,o=!0,{obtainStep:c=void 0,box:f=!1,noLocation:_=void 0}={}){let v=this.testInfo._checksumNoLocation;try{this.testInfo._checksumInternal=o===!0,_!==void 0&&(this.testInfo._checksumNoLocation=_),await this.test.step(r,a||(()=>{}),{obtainStep:c,box:f})}finally{this.testInfo._checksumInternal=!1,this.testInfo._checksumNoLocation=v}}addErrorMessage(r,a){this.testInfo.addError(r,a)}async evaluateWithChecksum(r,a,o=!0){return this.navigationPromise&&await this.navigationPromise,this.conditionallyWrapInternalSteps(o,()=>this.page.evaluate(r,a))}getChecksumTestId(){return this.checksumTestId}addNewThought(r,a,o=!1){let c={id:void 0,thought:r,type:a,children:o?[]:void 0,parent:void 0};if(!this.currentThought)this.highLevelThoughts.push(c);else if(this.currentThought.children)this.currentThought.children.push(c),c.parent=this.currentThought;else{let f=this.currentThought.parent;f?(f.children.push(c),c.parent=f):this.highLevelThoughts.push(c)}return c.parent?c.id=`${c.parent.id}.${c.parent.children.length}`:c.id=`${++this.thoughtsCounter}`,this.currentThought=c,c}buildThoughtsChainForFallback(r=this.highLevelThoughts){let a=[];return r.forEach(o=>{a.push(o.thought),o.children&&a.push(...this.buildThoughtsChainForFallback(o.children))}),a}getVTGRecordOptions(){return{recordCanvas:!0,recordCrossOriginIframes:this.isVTG,sampling:{mousemove:!1},slimDOMOptions:"all"}}compoundSelection(...r){let a=super.compoundSelection(...r);return a.setAnalytics(()=>this.testRunAnalytics),this.checksumStepId&&this.options.useChecksumSelectors&&this.setCompoundSelectorFallback(this.checksumStepId),a}setSelectorFallback(r){let a={checksumId:r,fileName:this.testInfo.file,testId:this.checksumTestId,apiKey:this.config.apiKey,apiURL:this.config.apiURL,timeout:jVr};this.pushFallback(this.constructFallback(s0t).init(a)),this.pushFallback(this.constructFallback(i0t).init(a))}setCompoundSelectorFallback(r){this.pushFallback(this.constructFallback(a0t).init({checksumId:r,fileName:this.testInfo.file,testId:this.checksumTestId,apiKey:this.config.apiKey,apiURL:this.config.apiURL,timeout:jVr}))}setAIFallback(r,a){var _;let o=((_=this.options.useChecksumAI)==null?void 0:_.arVersion)===1,c=e(()=>{var R,B;let v=this.buildThoughtsChainForFallback(),C={title:this.testInfo.title},w={testFileName:this.testInfo.file,testId:this.testInfo.testId,testSuiteId:process.env.CHECKSUM_TEST_SUITE_ID||""},T={previous:v.slice(0,-1),failing:r,next:v.slice(1)},k={storyInfo:C,testIdentification:w,fallbackConfig:{arMode:(R=this.options.useChecksumAI)==null?void 0:R.arMode,overrideOptions:(B=this.options.useChecksumAI)==null?void 0:B.overrideOptions},thoughts:T,config:{apiURL:this.config.apiURL,apiKey:this.config.apiKey},type:a};return this.constructFallback(Mbe).init(k)},"createArFallback"),f=e(()=>{var v,C;return this.constructFallback(Vve).init({goal:this.testInfo.title,testFile:this.testInfo.file,apiKey:this.config.apiKey,apiURL:this.config.apiURL,testId:this.checksumTestId,thoughts:this.buildThoughtsChainForFallback(),benchmark:V0.benchmark,arMode:(v=this.options.useChecksumAI)==null?void 0:v.arMode,overrideOptions:(C=this.options.useChecksumAI)==null?void 0:C.overrideOptions,fallbackType:a})},"createAIFallback");return o?this.pushFallback(f()):this.pushFallback(c()),this.proxy}pushFallback(r){this.fallbacks.push(r),this.sortFallbacks()}handleAIFallback(r,a,o,c){let f=r.fallbackAnalyticsPayload.iterationSteps,_=f.length>0?c/f.length:0;this.testRunAnalytics.testRunFallbackExecution({result:o.fbResult,failedThought:r.getFailedThought(),summary:o.summary,stepsPayload:r.fallbackAnalyticsPayload,type:r.fallbackType??a.type,benchmark:V0.benchmark.toString(),duration:c,avgDuration:_,success:["finish","soft_assertion"].includes(o.fbResult)}),this.arResults.push({failedThought:r.getFailedThought(),result:o.fbResult,thought:o.thought})}handleAutoRecovery(r,a,o,c){let f=o.stepsThoughts.length>0?c/o.stepsThoughts.length:0;this.testRunAnalytics.testRunAutoRecovery({failingThought:r.failingThought,type:a.type,finalThought:o.thought,result:o.fbResult,duration:c,avgStepDuration:f,stepsThoughts:o.stepsThoughts,version:"v1"})}async runFallback(r,a){let o=Date.now(),c=r.resolve(a),f=await fD(c,r.timeout),_=Date.now()-o;r instanceof Vve&&(this.hasUsedAutoRecovery=!0,this.handleAIFallback(r,a,f,_)),r instanceof Mbe&&(this.hasUsedAutoRecovery=!0,this.handleAutoRecovery(r,a,f,_));let v=f.thought?`: ${f.thought}`:"";if(!f||f.fbResult==="failed")throw this.createChecksumStep({title:`Recovery Failed${v}`,withError:!0}),new Error("Fallback failed");if(f.fbResult==="hard_assertion")throw this.createChecksumStep({title:`Recovery Failed${v}`,withError:!0}),new vdt(f.fbResult);if(r instanceof Vve&&f.summary&&this.arSummaries.push(f.summary),r instanceof Mbe&&f.thought&&this.arSummaries.push(f.thought),this.createChecksumStep({title:`Recovery Complete${v}`}),f.steps.length===1){let C=f.steps[0];C.thought&&(this.currentThought.thought=C.thought)}else this.currentThought.children=f.steps.map((C,w)=>({id:`${this.currentThought.id}.${w+1}`,thought:C.thought,type:C.type,children:void 0,parent:this.currentThought}))}async runConditionallyWithinStep(r,a,o){return r?await this.step(a,o):await o()}async onExecutionError(r){try{return await this.initiateFallbackSequence({type:"action",...r})}catch(a){if(!this.currentThought){let{locator:o,method:c}=r;this.testRunAnalytics.testRunActionExecutionFailure({locator:o.toString(),selector:o._selector,method:c,checksumStepId:this.checksumStepId,error:a.toString()})}throw a}}async initiateFallbackSequence(r,{fallbackTypes:a=void 0}={}){Dv(`[initiateFallbackSequence] with type: ${r.type}...`);let o=this.fallbacks.find(_=>_ instanceof Vve);if(o){let _=o.getFailedThought(),v=this.variableStore.getActiveVariables();this.fallbacks.forEach(C=>{C.setThought(_),C.setVariables(v)})}let c=this.fallbacks.find(_=>_ instanceof Mbe);if(c){let _=c.failingThought;this.fallbacks.forEach(v=>{v instanceof Mbe&&v.setVariables(this.variableStore.getActiveVariables()),v.setThought(_)})}let f=this.fallbacks;a&&(f=f.filter(_=>a.reduce((v,C)=>v||_ instanceof C,!1))),f=f.filter(_=>_.canResolve(r));try{for(let _ of f){let v=_==null?void 0:_.toString();v&&console.log(`Using ${v}`);let C;try{let w=await this.runConditionallyWithinStep(r.type!=="assertion"||!r.withChecksumAI,_.getRecoveryAttemptTitle(r),async()=>await this.runFallback(_,r));C=!0}catch(w){if(C=!1,r.withChecksumAI&&w.message==="fetch failed")throw new Error(B4e);w instanceof vdt&&w.fallbackResult==="hard_assertion"&&(r.error.fallbackResult="hard_assertion"),v&&console.log(`Failed to use ${v}`),_.cancel();continue}return!0}throw r.error}finally{this.resetFallbacks()}}resetFallbacks(){this.fallbacks=[this.constructFallback(o0t).init()]}async shutdown(){if(this.shouldRecordRRwebEvents()){try{await this.timeMachine.flushRRwebEventsToFile();let r=this.timeMachine.getRRwebFilePath();this.monitorBridge.addAsset({type:"rrweb-recording",path:r,testId:this.checksumTestId,fileName:wZ.basename(r)})}catch(r){Dv("Error shutting down RRweb events recording",r)}if(this.testRunAnalytics)return Dv("Flushing analytics events......"),this.testRunAnalytics.close()}}sortFallbacks(){let r=[o0t,a0t,s0t,i0t,Vve];this.fallbacks.sort((a,o)=>r.indexOf(a.constructor)-r.indexOf(o.constructor))}constructFallback(r){return new r(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 a=await this.getTraceFilePath();a&&this.monitorBridge.addAsset({type:"trace",path:a,testId:this.checksumTestId,project:this.testInfo.project.name})}if(!1){let a=qCn(ARt(this.testInfo.file),this.checksumTestId);this.monitorBridge.addAsset({type:"har",path:a,testId:this.checksumTestId})}}async getTraceFilePath(){try{return this.hasRuntimeStartedTrace?$Cn(ARt(this.testInfo.file),this.checksumTestId).replace(".zip",".original.zip"):this.testInfo.outputPath("trace.zip")}catch{return}}async prepareMockData(){let r=LTr(ARt(this.testInfo.file)),a=wZ.join(r,`${this.checksumTestId}.har.zip`);if(!(0,Tz.existsSync)(a))throw new Error("Could not find har file or zip file");let o=wZ.join(r,"tmp");(0,Tz.existsSync)(o)||(0,Tz.mkdirSync)(o);let c=(0,Tz.readFileSync)(a),f=await(0,IJn.loadAsync)(c);for(let v of Object.keys(f.files)){let C=await f.file(v).async("string"),w=wZ.join(o,v);(0,Tz.writeFileSync)(w,C),this.unzippedHarData.push(w)}let _=wZ.join(o,"test.har");if(!(0,Tz.existsSync)(_))throw this.cleanupMockData(),new Error(`Could not find har file ${_} after unzipping ${a}`);return _}cleanupMockData(){this.unzippedHarData.forEach(r=>{(0,Tz.rmSync)(r)}),this.unzippedHarData.length>0&&(0,Tz.rmSync)(wZ.dirname(this.unzippedHarData[0]),{recursive:!0,force:!0})}async prepareAPIMock(){let r={GET:0,POST:0,PUT:0,DELETE:0};try{let a=await this.prepareMockData();await this.page.routeFromHAR(a,{url:"*/**",notFound:"fallback",update:!1});let o=this.page._routes[0].handler;await this.page.route("**/*",c=>{let f=c.request().headers(),_=c.request().method();f["Checksum-Id"]=(++r[_]).toString(),c.request()._applyFallbackOverrides({headers:f}),o(c)})}catch(a){Dv("Error setting up mock data",a.message)}}async loadAppSpecificRules(){this.appSpecificRules={};let r=wZ.join(b9e(Mne()),"settings.asr");if(!(0,Tz.existsSync)(r)){Dv("Could not find ASR file");return}let{ungzip:a}=RTr();try{let o=await a((0,Tz.readFileSync)(r));this.appSpecificRules=JSON.parse(o)||{}}catch(o){Dv("Could not read ASR file",o.message)}}addAutoRecoveryStepId(r){this.arStepIds.push(r)}};e(jbe,"RuntimePage"),jbe.recentlyInteracted=new Map;vzt=jbe});function FCa(i,t){return t}function NCa(i,t){return i.filter(r=>r!==void 0)}function NJn(i){return typeof i!="object"||i===null?0:Array.isArray(i)?2:RCa(i)?1:i instanceof Set?3:i instanceof Map?4:5}function OCa(i){let t=new Set;for(let r of i)for(let a of[...Object.keys(r),...Object.getOwnPropertySymbols(r)])t.add(a);return t}function BCa(i,t){return typeof i=="object"&&Object.prototype.propertyIsEnumerable.call(i,t)}function BJn(i){var a;let t=0,r=(a=i[0])==null?void 0:a[Symbol.iterator]();return{[Symbol.iterator](){return{next(){var o;do{if(r===void 0)return{done:!0,value:void 0};let c=r.next();if(c.done===!0){t+=1,r=(o=i[t])==null?void 0:o[Symbol.iterator]();continue}return{done:!1,value:c.value}}while(!0)}}}}}function RCa(i){if(!OJn.includes(Object.prototype.toString.call(i)))return!1;let{constructor:t}=i;if(t===void 0)return!0;let r=t.prototype;return!(r===null||typeof r!="object"||!OJn.includes(Object.prototype.toString.call(r))||!r.hasOwnProperty("isPrototypeOf"))}function LCa(i,t,r){let a={};for(let o of OCa(i)){let c=[];for(let v of i)BCa(v,o)&&c.push(v[o]);if(c.length===0)continue;let f=t.metaDataUpdater(r,{key:o,parents:i}),_=RJn(c,t,f);_!==D7e.skip&&(o==="__proto__"?Object.defineProperty(a,o,{value:_,configurable:!0,enumerable:!0,writable:!0}):a[o]=_)}return a}function MCa(i){return i.flat()}function jCa(i){return new Set(BJn(i))}function UCa(i){return new Map(BJn(i))}function qCa(i){return i.at(-1)}function Azt(...i){return QCa({})(...i)}function QCa(i,t){let r=$Ca(i,a);function a(...o){return RJn(o,r,t)}return e(a,"customizedDeepmerge"),a}function $Ca(i,t){return{defaultMergeFunctions:xzt,mergeFunctions:{...xzt,...Object.fromEntries(Object.entries(i).filter(([r,a])=>Object.hasOwn(xzt,r)).map(([r,a])=>a===!1?[r,xzt.mergeOthers]:[r,a]))},metaDataUpdater:i.metaDataUpdater??FCa,deepmerge:t,useImplicitDefaultMerging:i.enableImplicitDefaultMerging??!1,filterValues:i.filterValues===!1?void 0:i.filterValues??NCa,actions:D7e}}function RJn(i,t,r){var c;let a=((c=t.filterValues)==null?void 0:c.call(t,i,r))??i;if(a.length===0)return;if(a.length===1)return qVr(a,t,r);let o=NJn(a[0]);if(o!==0&&o!==5){for(let f=1;f<a.length;f++)if(NJn(a[f])!==o)return qVr(a,t,r)}switch(o){case 1:return VCa(a,t,r);case 2:return zCa(a,t,r);case 3:return JCa(a,t,r);case 4:return WCa(a,t,r);default:return qVr(a,t,r)}}function VCa(i,t,r){let a=t.mergeFunctions.mergeRecords(i,t,r);return a===D7e.defaultMerge||t.useImplicitDefaultMerging&&a===void 0&&t.mergeFunctions.mergeRecords!==t.defaultMergeFunctions.mergeRecords?t.defaultMergeFunctions.mergeRecords(i,t,r):a}function zCa(i,t,r){let a=t.mergeFunctions.mergeArrays(i,t,r);return a===D7e.defaultMerge||t.useImplicitDefaultMerging&&a===void 0&&t.mergeFunctions.mergeArrays!==t.defaultMergeFunctions.mergeArrays?t.defaultMergeFunctions.mergeArrays(i):a}function JCa(i,t,r){let a=t.mergeFunctions.mergeSets(i,t,r);return a===D7e.defaultMerge||t.useImplicitDefaultMerging&&a===void 0&&t.mergeFunctions.mergeSets!==t.defaultMergeFunctions.mergeSets?t.defaultMergeFunctions.mergeSets(i):a}function WCa(i,t,r){let a=t.mergeFunctions.mergeMaps(i,t,r);return a===D7e.defaultMerge||t.useImplicitDefaultMerging&&a===void 0&&t.mergeFunctions.mergeMaps!==t.defaultMergeFunctions.mergeMaps?t.defaultMergeFunctions.mergeMaps(i):a}function qVr(i,t,r){let a=t.mergeFunctions.mergeOthers(i,t,r);return a===D7e.defaultMerge||t.useImplicitDefaultMerging&&a===void 0&&t.mergeFunctions.mergeOthers!==t.defaultMergeFunctions.mergeOthers?t.defaultMergeFunctions.mergeOthers(i):a}var D7e,Y9s,FJn,OJn,xzt,QVr=Vt(()=>{D7e={defaultMerge:Symbol("deepmerge-ts: default merge"),skip:Symbol("deepmerge-ts: skip")},Y9s={defaultMerge:D7e.defaultMerge};e(FCa,"defaultMetaDataUpdater");e(NCa,"defaultFilterValues");(function(i){i[i.NOT=0]="NOT",i[i.RECORD=1]="RECORD",i[i.ARRAY=2]="ARRAY",i[i.SET=3]="SET",i[i.MAP=4]="MAP",i[i.OTHER=5]="OTHER"})(FJn||(FJn={}));e(NJn,"getObjectType");e(OCa,"getKeys");e(BCa,"objectHasProperty");e(BJn,"getIterableOfIterables");OJn=["[object Object]","[object Module]"];e(RCa,"isRecord");e(LCa,"mergeRecords$1");e(MCa,"mergeArrays$1");e(jCa,"mergeSets$1");e(UCa,"mergeMaps$1");e(qCa,"mergeOthers$1");xzt={mergeRecords:LCa,mergeArrays:MCa,mergeSets:jCa,mergeMaps:UCa,mergeOthers:qCa};e(Azt,"deepmerge");e(QCa,"deepmergeCustom");e($Ca,"getUtils");e(RJn,"mergeUnknowns");e(VCa,"mergeRecords");e(zCa,"mergeArrays");e(JCa,"mergeSets");e(WCa,"mergeMaps");e(qVr,"mergeOthers")});function PJn(i){LJn=i}function Dv(...i){LJn&&console.log(...i)}async function R5n(i,t,r,a=6e4){if(!(t in i))return i;let o=e(()=>i[t](...r),"executor");return a===null?o():fD(o(),a,"Execution timeout")}function K_t(i,{role:t,environment:r}={},a=!1){var _,v;let o;if(r&&(o=(_=i.environments)==null?void 0:_.find(({name:C})=>r===C)),o||(o=(v=i.environments)==null?void 0:v.find(({default:C})=>C)),!o)throw new Error("Environment not found. Please make sure your environments are properly defined in the checksum.config.ts file.");let c=o.users,f;if(c&&(t!==void 0&&(f=c.find(C=>C.role===t)),f||(f=c.find(C=>C.default))),!f)throw new Error(`User not found. Please make sure the users array for the "${o.name}" environment is properly defined in the checksum.config.ts file.`);if(r&&o.name!==r){if(a)throw new Error(`Could not find environment with name "${r}" in config file`);console.warn(`Could not find environment with name "${r}" in config file, trying to use default environment`)}if(t&&f.role!==t){if(a)throw new Error(`Could not find user with role "${t}" for environment "${r}" in config file`);console.warn(`Could not find user with role "${t}" for environment "${r}" in config file, trying to login with environment's default user`)}return{environment:o,user:f}}function HCa(i){let t=`${i??Mne()}/login.ts`;if(!(0,Ezt.existsSync)(t))throw console.warn(`Could not locate the login.ts file. Please make sure your login file exists at ${t}`),new Error("Could not find login.ts file");try{return require(t).default}catch(r){throw console.warn("Error loading login.ts file",r),r}}async function GCa(i,t,{environment:r,user:a,config:o}){try{let c=e(()=>t(i,{environment:r,user:a,config:o}),"performLogin");"checksumAI"in i?await i.checksumAI(`Log in${a!=null&&a.role?` using ${a.role} role`:""}${r!=null&&r.name?` in ${r.name} environment`:""}`,c,{skipAutoRecovery:!0}):await c()}catch(c){throw console.warn(`The login method threw an exception, please check the login.ts file for the following error:
|
|
633
633
|
`,c),c}}function Ube(i){let{config:t,folder:r,throwIfAuthFailed:a}=i,o=HCa(r);return async(c,{role:f,environment:_}={})=>{let{environment:v,user:C}=K_t(t,{role:f,environment:_},i.throwIfEnvInfoInvalid);if(a&&!C)throw new Error("Could not find user credentials matching the provided role and/or environment");await GCa(c,o,{environment:v,user:C,config:t})}}function MJn(i,{environmentName:t,userRole:r}){let a=Ube(i);return o=>a(o,{environment:t,role:r})}function sQt(){if(gWe)return gWe;try{let i=(0,Ezt.existsSync)(`${Mne()}/checksum.config.ts`)?"checksum.config.ts":(0,Ezt.existsSync)(`${Mne()}/checksum.config.tmp.ts`)?"checksum.config.tmp.ts":void 0;if(i)return Czt(require(`${Mne()}/${i}`).default)}catch{console.warn("Could not find checksum config file, will run with defaults")}return Czt()}function Czt(i={}){var r,a,o,c;let t={apiKey:void 0,runMode:"normal",apiURL:"https://api.checksum.ai",options:{useChecksumSelectors:!0,useChecksumAI:{actions:!0,assertions:!1,skipTestsWithKnownBugs:!0},newAssertionsEnabled:!0,useMockData:!1,printLogs:!1,hideReports:process.env.AUTHORIZE_REPORTS==="true"}};return((a=(r=i.options)==null?void 0:r.useChecksumAI)==null?void 0:a.visualComparison)===void 0&&((c=(o=i.options)==null?void 0:o.useChecksumAI)!=null&&c.assertions)&&(i.options.useChecksumAI.visualComparison=!0),gWe=Azt(t,i),V0.testRun.disableAutoRecovery&&(gWe.options.useChecksumAI={actions:!1,assertions:!1,visualComparison:!1}),V0.testRun.disableHostReports&&(gWe.options.hostReports=!1),gWe}function bzt(i){let t=e(r=>{r.on("dialog",a=>{})},"makeDialogHandler");i.context().pages().forEach(t),i.context().on("page",r=>{t(r)})}var Ezt,LJn,gWe,B4e,fQ=Vt(()=>{"use strict";UVr();v7();i4e();Ezt=require("fs");vT();QVr();LJn=!1;e(PJn,"setLogToConsole");e(Dv,"log");e(R5n,"executePlaywrightMethodWithTimeout");e(K_t,"resolveEnvironment");e(HCa,"requireLogin");e(GCa,"proceedWithLogin");e(Ube,"makeUnboundLogin");e(MJn,"makeBoundLogin");e(sQt,"loadChecksumConfig");e(Czt,"getChecksumConfig");e(bzt,"preventDialogAutoDismissal");B4e="Checksum failed connecting to the server"});var I7e=gr((PPs,zJn)=>{var YVr=require("tty"),$Jn,Fzt,VJn,XCa=((VJn=(Fzt=($Jn=YVr==null?void 0:YVr.WriteStream)==null?void 0:$Jn.prototype)==null?void 0:Fzt.hasColors)==null?void 0:VJn.call(Fzt))??!1,Ux=e((i,t)=>{if(!XCa)return o=>o;let r=`\x1B[${i}m`,a=`\x1B[${t}m`;return o=>{let c=o+"",f=c.indexOf(a);if(f===-1)return r+c+a;let _=r,v=0;for(;f!==-1;)_+=c.slice(v,f)+r,v=f+a.length,f=c.indexOf(a,v);return _+=c.slice(v)+a,_}},"format"),vx={};vx.reset=Ux(0,0);vx.bold=Ux(1,22);vx.dim=Ux(2,22);vx.italic=Ux(3,23);vx.underline=Ux(4,24);vx.overline=Ux(53,55);vx.inverse=Ux(7,27);vx.hidden=Ux(8,28);vx.strikethrough=Ux(9,29);vx.black=Ux(30,39);vx.red=Ux(31,39);vx.green=Ux(32,39);vx.yellow=Ux(33,39);vx.blue=Ux(34,39);vx.magenta=Ux(35,39);vx.cyan=Ux(36,39);vx.white=Ux(37,39);vx.gray=Ux(90,39);vx.bgBlack=Ux(40,49);vx.bgRed=Ux(41,49);vx.bgGreen=Ux(42,49);vx.bgYellow=Ux(43,49);vx.bgBlue=Ux(44,49);vx.bgMagenta=Ux(45,49);vx.bgCyan=Ux(46,49);vx.bgWhite=Ux(47,49);vx.bgGray=Ux(100,49);vx.redBright=Ux(91,39);vx.greenBright=Ux(92,39);vx.yellowBright=Ux(93,39);vx.blueBright=Ux(94,39);vx.magentaBright=Ux(95,39);vx.cyanBright=Ux(96,39);vx.whiteBright=Ux(97,39);vx.bgRedBright=Ux(101,49);vx.bgGreenBright=Ux(102,49);vx.bgYellowBright=Ux(103,49);vx.bgBlueBright=Ux(104,49);vx.bgMagentaBright=Ux(105,49);vx.bgCyanBright=Ux(106,49);vx.bgWhiteBright=Ux(107,49);zJn.exports=vx});var XJn=gr((iFs,YJn)=>{"use strict";YJn.exports=swa;function awa(i){let t={defaultWidth:0,output:process.stdout,tty:require("tty")};return i?(Object.keys(t).forEach(function(r){i[r]||(i[r]=t[r])}),i):t}e(awa,"normalizeOpts");function swa(i){let t=awa(i);if(t.output.getWindowSize)return t.output.getWindowSize()[0]||t.defaultWidth;if(t.tty.getWindowSize)return t.tty.getWindowSize()[1]||t.defaultWidth;if(t.output.columns)return t.output.columns;if(process.env.CLI_WIDTH){let r=parseInt(process.env.CLI_WIDTH,10);if(!isNaN(r)&&r!==0)return r}return t.defaultWidth}e(swa,"cliWidth")});var eWn=gr((sFs,ZJn)=>{"use strict";ZJn.exports=({onlyFirst:i=!1}={})=>{let t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,i?void 0:"g")}});var Nzt=gr((oFs,tWn)=>{"use strict";var owa=eWn();tWn.exports=i=>typeof i=="string"?i.replace(owa(),""):i});var nWn=gr((uFs,ZVr)=>{"use strict";var rWn=e(i=>Number.isNaN(i)?!1:i>=4352&&(i<=4447||i===9001||i===9002||11904<=i&&i<=12871&&i!==12351||12880<=i&&i<=19903||19968<=i&&i<=42182||43360<=i&&i<=43388||44032<=i&&i<=55203||63744<=i&&i<=64255||65040<=i&&i<=65049||65072<=i&&i<=65131||65281<=i&&i<=65376||65504<=i&&i<=65510||110592<=i&&i<=110593||127488<=i&&i<=127569||131072<=i&&i<=262141),"isFullwidthCodePoint");ZVr.exports=rWn;ZVr.exports.default=rWn});var aWn=gr((lFs,iWn)=>{"use strict";iWn.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});var oWn=gr((pFs,ezr)=>{"use strict";var uwa=Nzt(),cwa=nWn(),lwa=aWn(),sWn=e(i=>{if(typeof i!="string"||i.length===0||(i=uwa(i),i.length===0))return 0;i=i.replace(lwa()," ");let t=0;for(let r=0;r<i.length;r++){let a=i.codePointAt(r);a<=31||a>=127&&a<=159||a>=768&&a<=879||(a>65535&&r++,t+=cwa(a)?2:1)}return t},"stringWidth");ezr.exports=sWn;ezr.exports.default=sWn});var cWn=gr((dFs,uWn)=>{"use strict";uWn.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var tzr=gr((mFs,pWn)=>{var X_t=cWn(),lWn={};for(let i of Object.keys(X_t))lWn[X_t[i]]=i;var gy={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};pWn.exports=gy;for(let i of Object.keys(gy)){if(!("channels"in gy[i]))throw new Error("missing channels property: "+i);if(!("labels"in gy[i]))throw new Error("missing channel labels property: "+i);if(gy[i].labels.length!==gy[i].channels)throw new Error("channel and label counts mismatch: "+i);let{channels:t,labels:r}=gy[i];delete gy[i].channels,delete gy[i].labels,Object.defineProperty(gy[i],"channels",{value:t}),Object.defineProperty(gy[i],"labels",{value:r})}gy.rgb.hsl=function(i){let t=i[0]/255,r=i[1]/255,a=i[2]/255,o=Math.min(t,r,a),c=Math.max(t,r,a),f=c-o,_,v;c===o?_=0:t===c?_=(r-a)/f:r===c?_=2+(a-t)/f:a===c&&(_=4+(t-r)/f),_=Math.min(_*60,360),_<0&&(_+=360);let C=(o+c)/2;return c===o?v=0:C<=.5?v=f/(c+o):v=f/(2-c-o),[_,v*100,C*100]};gy.rgb.hsv=function(i){let t,r,a,o,c,f=i[0]/255,_=i[1]/255,v=i[2]/255,C=Math.max(f,_,v),w=C-Math.min(f,_,v),T=e(function(k){return(C-k)/6/w+1/2},"diffc");return w===0?(o=0,c=0):(c=w/C,t=T(f),r=T(_),a=T(v),f===C?o=a-r:_===C?o=1/3+t-a:v===C&&(o=2/3+r-t),o<0?o+=1:o>1&&(o-=1)),[o*360,c*100,C*100]};gy.rgb.hwb=function(i){let t=i[0],r=i[1],a=i[2],o=gy.rgb.hsl(i)[0],c=1/255*Math.min(t,Math.min(r,a));return a=1-1/255*Math.max(t,Math.max(r,a)),[o,c*100,a*100]};gy.rgb.cmyk=function(i){let t=i[0]/255,r=i[1]/255,a=i[2]/255,o=Math.min(1-t,1-r,1-a),c=(1-t-o)/(1-o)||0,f=(1-r-o)/(1-o)||0,_=(1-a-o)/(1-o)||0;return[c*100,f*100,_*100,o*100]};function pwa(i,t){return(i[0]-t[0])**2+(i[1]-t[1])**2+(i[2]-t[2])**2}e(pwa,"comparativeDistance");gy.rgb.keyword=function(i){let t=lWn[i];if(t)return t;let r=1/0,a;for(let o of Object.keys(X_t)){let c=X_t[o],f=pwa(i,c);f<r&&(r=f,a=o)}return a};gy.keyword.rgb=function(i){return X_t[i]};gy.rgb.xyz=function(i){let t=i[0]/255,r=i[1]/255,a=i[2]/255;t=t>.04045?((t+.055)/1.055)**2.4:t/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,a=a>.04045?((a+.055)/1.055)**2.4:a/12.92;let o=t*.4124+r*.3576+a*.1805,c=t*.2126+r*.7152+a*.0722,f=t*.0193+r*.1192+a*.9505;return[o*100,c*100,f*100]};gy.rgb.lab=function(i){let t=gy.rgb.xyz(i),r=t[0],a=t[1],o=t[2];r/=95.047,a/=100,o/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,a=a>.008856?a**(1/3):7.787*a+16/116,o=o>.008856?o**(1/3):7.787*o+16/116;let c=116*a-16,f=500*(r-a),_=200*(a-o);return[c,f,_]};gy.hsl.rgb=function(i){let t=i[0]/360,r=i[1]/100,a=i[2]/100,o,c,f;if(r===0)return f=a*255,[f,f,f];a<.5?o=a*(1+r):o=a+r-a*r;let _=2*a-o,v=[0,0,0];for(let C=0;C<3;C++)c=t+1/3*-(C-1),c<0&&c++,c>1&&c--,6*c<1?f=_+(o-_)*6*c:2*c<1?f=o:3*c<2?f=_+(o-_)*(2/3-c)*6:f=_,v[C]=f*255;return v};gy.hsl.hsv=function(i){let t=i[0],r=i[1]/100,a=i[2]/100,o=r,c=Math.max(a,.01);a*=2,r*=a<=1?a:2-a,o*=c<=1?c:2-c;let f=(a+r)/2,_=a===0?2*o/(c+o):2*r/(a+r);return[t,_*100,f*100]};gy.hsv.rgb=function(i){let t=i[0]/60,r=i[1]/100,a=i[2]/100,o=Math.floor(t)%6,c=t-Math.floor(t),f=255*a*(1-r),_=255*a*(1-r*c),v=255*a*(1-r*(1-c));switch(a*=255,o){case 0:return[a,v,f];case 1:return[_,a,f];case 2:return[f,a,v];case 3:return[f,_,a];case 4:return[v,f,a];case 5:return[a,f,_]}};gy.hsv.hsl=function(i){let t=i[0],r=i[1]/100,a=i[2]/100,o=Math.max(a,.01),c,f;f=(2-r)*a;let _=(2-r)*o;return c=r*o,c/=_<=1?_:2-_,c=c||0,f/=2,[t,c*100,f*100]};gy.hwb.rgb=function(i){let t=i[0]/360,r=i[1]/100,a=i[2]/100,o=r+a,c;o>1&&(r/=o,a/=o);let f=Math.floor(6*t),_=1-a;c=6*t-f,f&1&&(c=1-c);let v=r+c*(_-r),C,w,T;switch(f){default:case 6:case 0:C=_,w=v,T=r;break;case 1:C=v,w=_,T=r;break;case 2:C=r,w=_,T=v;break;case 3:C=r,w=v,T=_;break;case 4:C=v,w=r,T=_;break;case 5:C=_,w=r,T=v;break}return[C*255,w*255,T*255]};gy.cmyk.rgb=function(i){let t=i[0]/100,r=i[1]/100,a=i[2]/100,o=i[3]/100,c=1-Math.min(1,t*(1-o)+o),f=1-Math.min(1,r*(1-o)+o),_=1-Math.min(1,a*(1-o)+o);return[c*255,f*255,_*255]};gy.xyz.rgb=function(i){let t=i[0]/100,r=i[1]/100,a=i[2]/100,o,c,f;return o=t*3.2406+r*-1.5372+a*-.4986,c=t*-.9689+r*1.8758+a*.0415,f=t*.0557+r*-.204+a*1.057,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,c=c>.0031308?1.055*c**(1/2.4)-.055:c*12.92,f=f>.0031308?1.055*f**(1/2.4)-.055:f*12.92,o=Math.min(Math.max(0,o),1),c=Math.min(Math.max(0,c),1),f=Math.min(Math.max(0,f),1),[o*255,c*255,f*255]};gy.xyz.lab=function(i){let t=i[0],r=i[1],a=i[2];t/=95.047,r/=100,a/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;let o=116*r-16,c=500*(t-r),f=200*(r-a);return[o,c,f]};gy.lab.xyz=function(i){let t=i[0],r=i[1],a=i[2],o,c,f;c=(t+16)/116,o=r/500+c,f=c-a/200;let _=c**3,v=o**3,C=f**3;return c=_>.008856?_:(c-16/116)/7.787,o=v>.008856?v:(o-16/116)/7.787,f=C>.008856?C:(f-16/116)/7.787,o*=95.047,c*=100,f*=108.883,[o,c,f]};gy.lab.lch=function(i){let t=i[0],r=i[1],a=i[2],o;o=Math.atan2(a,r)*360/2/Math.PI,o<0&&(o+=360);let f=Math.sqrt(r*r+a*a);return[t,f,o]};gy.lch.lab=function(i){let t=i[0],r=i[1],o=i[2]/360*2*Math.PI,c=r*Math.cos(o),f=r*Math.sin(o);return[t,c,f]};gy.rgb.ansi16=function(i,t=null){let[r,a,o]=i,c=t===null?gy.rgb.hsv(i)[2]:t;if(c=Math.round(c/50),c===0)return 30;let f=30+(Math.round(o/255)<<2|Math.round(a/255)<<1|Math.round(r/255));return c===2&&(f+=60),f};gy.hsv.ansi16=function(i){return gy.rgb.ansi16(gy.hsv.rgb(i),i[2])};gy.rgb.ansi256=function(i){let t=i[0],r=i[1],a=i[2];return t===r&&r===a?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(a/255*5)};gy.ansi16.rgb=function(i){let t=i%10;if(t===0||t===7)return i>50&&(t+=3.5),t=t/10.5*255,[t,t,t];let r=(~~(i>50)+1)*.5,a=(t&1)*r*255,o=(t>>1&1)*r*255,c=(t>>2&1)*r*255;return[a,o,c]};gy.ansi256.rgb=function(i){if(i>=232){let c=(i-232)*10+8;return[c,c,c]}i-=16;let t,r=Math.floor(i/36)/5*255,a=Math.floor((t=i%36)/6)/5*255,o=t%6/5*255;return[r,a,o]};gy.rgb.hex=function(i){let r=(((Math.round(i[0])&255)<<16)+((Math.round(i[1])&255)<<8)+(Math.round(i[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};gy.hex.rgb=function(i){let t=i.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let r=t[0];t[0].length===3&&(r=r.split("").map(_=>_+_).join(""));let a=parseInt(r,16),o=a>>16&255,c=a>>8&255,f=a&255;return[o,c,f]};gy.rgb.hcg=function(i){let t=i[0]/255,r=i[1]/255,a=i[2]/255,o=Math.max(Math.max(t,r),a),c=Math.min(Math.min(t,r),a),f=o-c,_,v;return f<1?_=c/(1-f):_=0,f<=0?v=0:o===t?v=(r-a)/f%6:o===r?v=2+(a-t)/f:v=4+(t-r)/f,v/=6,v%=1,[v*360,f*100,_*100]};gy.hsl.hcg=function(i){let t=i[1]/100,r=i[2]/100,a=r<.5?2*t*r:2*t*(1-r),o=0;return a<1&&(o=(r-.5*a)/(1-a)),[i[0],a*100,o*100]};gy.hsv.hcg=function(i){let t=i[1]/100,r=i[2]/100,a=t*r,o=0;return a<1&&(o=(r-a)/(1-a)),[i[0],a*100,o*100]};gy.hcg.rgb=function(i){let t=i[0]/360,r=i[1]/100,a=i[2]/100;if(r===0)return[a*255,a*255,a*255];let o=[0,0,0],c=t%1*6,f=c%1,_=1-f,v=0;switch(Math.floor(c)){case 0:o[0]=1,o[1]=f,o[2]=0;break;case 1:o[0]=_,o[1]=1,o[2]=0;break;case 2:o[0]=0,o[1]=1,o[2]=f;break;case 3:o[0]=0,o[1]=_,o[2]=1;break;case 4:o[0]=f,o[1]=0,o[2]=1;break;default:o[0]=1,o[1]=0,o[2]=_}return v=(1-r)*a,[(r*o[0]+v)*255,(r*o[1]+v)*255,(r*o[2]+v)*255]};gy.hcg.hsv=function(i){let t=i[1]/100,r=i[2]/100,a=t+r*(1-t),o=0;return a>0&&(o=t/a),[i[0],o*100,a*100]};gy.hcg.hsl=function(i){let t=i[1]/100,a=i[2]/100*(1-t)+.5*t,o=0;return a>0&&a<.5?o=t/(2*a):a>=.5&&a<1&&(o=t/(2*(1-a))),[i[0],o*100,a*100]};gy.hcg.hwb=function(i){let t=i[1]/100,r=i[2]/100,a=t+r*(1-t);return[i[0],(a-t)*100,(1-a)*100]};gy.hwb.hcg=function(i){let t=i[1]/100,a=1-i[2]/100,o=a-t,c=0;return o<1&&(c=(a-o)/(1-o)),[i[0],o*100,c*100]};gy.apple.rgb=function(i){return[i[0]/65535*255,i[1]/65535*255,i[2]/65535*255]};gy.rgb.apple=function(i){return[i[0]/255*65535,i[1]/255*65535,i[2]/255*65535]};gy.gray.rgb=function(i){return[i[0]/100*255,i[0]/100*255,i[0]/100*255]};gy.gray.hsl=function(i){return[0,0,i[0]]};gy.gray.hsv=gy.gray.hsl;gy.gray.hwb=function(i){return[0,100,i[0]]};gy.gray.cmyk=function(i){return[0,0,0,i[0]]};gy.gray.lab=function(i){return[i[0],0,0]};gy.gray.hex=function(i){let t=Math.round(i[0]/100*255)&255,a=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(a.length)+a};gy.rgb.gray=function(i){return[(i[0]+i[1]+i[2])/3/255*100]}});var dWn=gr((hFs,fWn)=>{var Ozt=tzr();function fwa(){let i={},t=Object.keys(Ozt);for(let r=t.length,a=0;a<r;a++)i[t[a]]={distance:-1,parent:null};return i}e(fwa,"buildGraph");function dwa(i){let t=fwa(),r=[i];for(t[i].distance=0;r.length;){let a=r.pop(),o=Object.keys(Ozt[a]);for(let c=o.length,f=0;f<c;f++){let _=o[f],v=t[_];v.distance===-1&&(v.distance=t[a].distance+1,v.parent=a,r.unshift(_))}}return t}e(dwa,"deriveBFS");function mwa(i,t){return function(r){return t(i(r))}}e(mwa,"link");function _wa(i,t){let r=[t[i].parent,i],a=Ozt[t[i].parent][i],o=t[i].parent;for(;t[o].parent;)r.unshift(t[o].parent),a=mwa(Ozt[t[o].parent][o],a),o=t[o].parent;return a.conversion=r,a}e(_wa,"wrapConversion");fWn.exports=function(i){let t=dwa(i),r={},a=Object.keys(t);for(let o=a.length,c=0;c<o;c++){let f=a[c];t[f].parent!==null&&(r[f]=_wa(f,t))}return r}});var _Wn=gr((yFs,mWn)=>{var rzr=tzr(),hwa=dWn(),AWe={},gwa=Object.keys(rzr);function ywa(i){let t=e(function(...r){let a=r[0];return a==null?a:(a.length>1&&(r=a),i(r))},"wrappedFn");return"conversion"in i&&(t.conversion=i.conversion),t}e(ywa,"wrapRaw");function vwa(i){let t=e(function(...r){let a=r[0];if(a==null)return a;a.length>1&&(r=a);let o=i(r);if(typeof o=="object")for(let c=o.length,f=0;f<c;f++)o[f]=Math.round(o[f]);return o},"wrappedFn");return"conversion"in i&&(t.conversion=i.conversion),t}e(vwa,"wrapRounded");gwa.forEach(i=>{AWe[i]={},Object.defineProperty(AWe[i],"channels",{value:rzr[i].channels}),Object.defineProperty(AWe[i],"labels",{value:rzr[i].labels});let t=hwa(i);Object.keys(t).forEach(a=>{let o=t[a];AWe[i][a]=vwa(o),AWe[i][a].raw=ywa(o)})});mWn.exports=AWe});var xWn=gr((bFs,bWn)=>{"use strict";var hWn=e((i,t)=>(...r)=>`\x1B[${i(...r)+t}m`,"wrapAnsi16"),gWn=e((i,t)=>(...r)=>{let a=i(...r);return`\x1B[${38+t};5;${a}m`},"wrapAnsi256"),yWn=e((i,t)=>(...r)=>{let a=i(...r);return`\x1B[${38+t};2;${a[0]};${a[1]};${a[2]}m`},"wrapAnsi16m"),Bzt=e(i=>i,"ansi2ansi"),vWn=e((i,t,r)=>[i,t,r],"rgb2rgb"),EWe=e((i,t,r)=>{Object.defineProperty(i,t,{get:e(()=>{let a=r();return Object.defineProperty(i,t,{value:a,enumerable:!0,configurable:!0}),a},"get"),enumerable:!0,configurable:!0})},"setLazyProperty"),nzr,CWe=e((i,t,r,a)=>{nzr===void 0&&(nzr=_Wn());let o=a?10:0,c={};for(let[f,_]of Object.entries(nzr)){let v=f==="ansi16"?"ansi":f;f===t?c[v]=i(r,o):typeof _=="object"&&(c[v]=i(_[t],o))}return c},"makeDynamicStyles");function bwa(){let i=new Map,t={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};t.color.gray=t.color.blackBright,t.bgColor.bgGray=t.bgColor.bgBlackBright,t.color.grey=t.color.blackBright,t.bgColor.bgGrey=t.bgColor.bgBlackBright;for(let[r,a]of Object.entries(t)){for(let[o,c]of Object.entries(a))t[o]={open:`\x1B[${c[0]}m`,close:`\x1B[${c[1]}m`},a[o]=t[o],i.set(c[0],c[1]);Object.defineProperty(t,r,{value:a,enumerable:!1})}return Object.defineProperty(t,"codes",{value:i,enumerable:!1}),t.color.close="\x1B[39m",t.bgColor.close="\x1B[49m",EWe(t.color,"ansi",()=>CWe(hWn,"ansi16",Bzt,!1)),EWe(t.color,"ansi256",()=>CWe(gWn,"ansi256",Bzt,!1)),EWe(t.color,"ansi16m",()=>CWe(yWn,"rgb",vWn,!1)),EWe(t.bgColor,"ansi",()=>CWe(hWn,"ansi16",Bzt,!0)),EWe(t.bgColor,"ansi256",()=>CWe(gWn,"ansi256",Bzt,!0)),EWe(t.bgColor,"ansi16m",()=>CWe(yWn,"rgb",vWn,!0)),t}e(bwa,"assembleStyles");Object.defineProperty(bWn,"exports",{enumerable:!0,get:bwa})});var CWn=gr((AFs,EWn)=>{"use strict";var Z_t=oWn(),xwa=Nzt(),Awa=xWn(),azr=new Set(["\x1B","\x9B"]),Ewa=39,AWn=e(i=>`${azr.values().next().value}[${i}m`,"wrapAnsi"),Cwa=e(i=>i.split(" ").map(t=>Z_t(t)),"wordLengths"),izr=e((i,t,r)=>{let a=[...t],o=!1,c=Z_t(xwa(i[i.length-1]));for(let[f,_]of a.entries()){let v=Z_t(_);if(c+v<=r?i[i.length-1]+=_:(i.push(_),c=0),azr.has(_))o=!0;else if(o&&_==="m"){o=!1;continue}o||(c+=v,c===r&&f<a.length-1&&(i.push(""),c=0))}!c&&i[i.length-1].length>0&&i.length>1&&(i[i.length-2]+=i.pop())},"wrapWord"),wwa=e(i=>{let t=i.split(" "),r=t.length;for(;r>0&&!(Z_t(t[r-1])>0);)r--;return r===t.length?i:t.slice(0,r).join(" ")+t.slice(r).join("")},"stringVisibleTrimSpacesRight"),Swa=e((i,t,r={})=>{if(r.trim!==!1&&i.trim()==="")return"";let a="",o="",c,f=Cwa(i),_=[""];for(let[v,C]of i.split(" ").entries()){r.trim!==!1&&(_[_.length-1]=_[_.length-1].trimLeft());let w=Z_t(_[_.length-1]);if(v!==0&&(w>=t&&(r.wordWrap===!1||r.trim===!1)&&(_.push(""),w=0),(w>0||r.trim===!1)&&(_[_.length-1]+=" ",w++)),r.hard&&f[v]>t){let T=t-w,k=1+Math.floor((f[v]-T-1)/t);Math.floor((f[v]-1)/t)<k&&_.push(""),izr(_,C,t);continue}if(w+f[v]>t&&w>0&&f[v]>0){if(r.wordWrap===!1&&w<t){izr(_,C,t);continue}_.push("")}if(w+f[v]>t&&r.wordWrap===!1){izr(_,C,t);continue}_[_.length-1]+=C}r.trim!==!1&&(_=_.map(wwa)),a=_.join(`
|
|
634
634
|
`);for(let[v,C]of[...a].entries()){if(o+=C,azr.has(C)){let T=parseFloat(/\d[^m]*/.exec(a.slice(v,v+4)));c=T===Ewa?null:T}let w=Awa.codes.get(Number(c));c&&w&&(a[v+1]===`
|