@testim/testim-cli 4.73.0 → 4.74.0
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/cli.js +2 -2
- package/cli.js.map +3 -3
- package/npm-shrinkwrap.json +267 -291
- package/package.json +3 -3
package/cli.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#! /usr/bin/env node
|
|
2
|
-
"use strict";var PT=Object.create;var Hn=Object.defineProperty;var kT=Object.getOwnPropertyDescriptor;var OT=Object.getOwnPropertyNames;var _T=Object.getPrototypeOf,LT=Object.prototype.hasOwnProperty;var T=(s,e)=>()=>(s&&(e=s(s=0)),e);var G=(s,e)=>{for(var t in e)Hn(s,t,{get:e[t],enumerable:!0})},Vp=(s,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of OT(e))!LT.call(s,n)&&n!==t&&Hn(s,n,{get:()=>e[n],enumerable:!(r=kT(e,n))||r.enumerable});return s};var E=(s,e,t)=>(t=s!=null?PT(_T(s)):{},Vp(e||!s||!s.__esModule?Hn(t,"default",{value:s,enumerable:!0}):t,s)),ye=s=>Vp(Hn({},"__esModule",{value:!0}),s);var je={};G(je,{log:()=>M,measure:()=>NT});function M(...s){if(!qp)return;let e=Date.now();console.log(`${e-DT} ${e-Hp} `,...s),Hp=e}function NT(s,e){if(!qp)return;let t=Date.now();try{s()}finally{console.log(e||s.name,"took",Date.now()-t)}}var qp,DT,Hp,$e=T(()=>{"use strict";qp=process.env.MEASURE_TESTIM_CLI_PERFORMANCE,DT=Date.now(),Hp=Date.now()});var Na,zt,Ma,Dr=T(()=>{"use strict";Na={NULL:"\uE000",Unidentified:"\uE000",Cancel:"\uE001",Help:"\uE002","Back space":"\uE003",Backspace:"\uE003",Tab:"\uE004",Clear:"\uE005",Return:"\uE006",Enter:"\uE007",Shift:"\uE008",Control:"\uE009",Alt:"\uE00A",Pause:"\uE00B",Escape:"\uE00C",Space:"\uE00D"," ":"\uE00D",Pageup:"\uE00E",PageUp:"\uE00E",Page_Up:"\uE00E",Pagedown:"\uE00F",PageDown:"\uE00F",Page_Down:"\uE00F",End:"\uE010",Home:"\uE011","Left arrow":"\uE012",Arrow_Left:"\uE012",ArrowLeft:"\uE012","Up arrow":"\uE013",Arrow_Up:"\uE013",ArrowUp:"\uE013","Right arrow":"\uE014",Arrow_Right:"\uE014",ArrowRight:"\uE014","Down arrow":"\uE015",Arrow_Down:"\uE015",ArrowDown:"\uE015",Insert:"\uE016",Delete:"\uE017",Semicolon:"\uE018",Equals:"\uE019","Numpad 0":"\uE01A","Numpad 1":"\uE01B","Numpad 2":"\uE01C","Numpad 3":"\uE01D","Numpad 4":"\uE01E","Numpad 5":"\uE01F","Numpad 6":"\uE020","Numpad 7":"\uE021","Numpad 8":"\uE022","Numpad 9":"\uE023",Multiply:"\uE024",Add:"\uE025",Separator:"\uE026",Subtract:"\uE027",Decimal:"\uE028",Divide:"\uE029",F1:"\uE031",F2:"\uE032",F3:"\uE033",F4:"\uE034",F5:"\uE035",F6:"\uE036",F7:"\uE037",F8:"\uE038",F9:"\uE039",F10:"\uE03A",F11:"\uE03B",F12:"\uE03C",Command:"\uE03D",Meta:"\uE03D",Zenkaku_Hankaku:"\uE040",ZenkakuHankaku:"\uE040"},zt="element-6066-11e4-a52e-4f735466cecf",Ma=79});function re(s=16){let e="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890",t="";for(let r=0;r<s;r++){let n=Math.floor(Math.random()*e.length);t+=e[n]}return t}function qe(s,e,t,r,n){let o="";return n=n?encodeURIComponent(n):"master",e&&t&&(o=`${s}/#/project/${e}/branch/${n}/test/${t}`,r&&(o+=`?result-id=${r}`)),o}function Ua(s,e){return`Basic ${Buffer.from(`${s}:${e}`).toString("base64")}`}function We(s){let e=/^(https?:\/\/)/i,t=new RegExp("^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$","i");return e.test(s)||t.test(s)}var Fa=T(()=>{"use strict"});var ja,zp,Kp,Zn=T(()=>{ja={ngrok:"4.3.3",webpack:"5.74.0",playwright:"0.12.1",puppeteer:"2.1.1","selenium-webdriver":"3.6.0","v8-to-istanbul":"9.1.0","istanbul-lib-coverage":"3.2.0","@bcoe/v8-coverage":"0.2.3","convert-source-map":"1.7.0",multer:"1.4.5-lts.1"},zp={"@applitools/eyes-sdk-core":"13.11.32","@applitools/spec-driver-webdriverio":"1.4.29","
|
|
2
|
+
"use strict";var PT=Object.create;var Hn=Object.defineProperty;var kT=Object.getOwnPropertyDescriptor;var OT=Object.getOwnPropertyNames;var _T=Object.getPrototypeOf,LT=Object.prototype.hasOwnProperty;var T=(s,e)=>()=>(s&&(e=s(s=0)),e);var G=(s,e)=>{for(var t in e)Hn(s,t,{get:e[t],enumerable:!0})},Vp=(s,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of OT(e))!LT.call(s,n)&&n!==t&&Hn(s,n,{get:()=>e[n],enumerable:!(r=kT(e,n))||r.enumerable});return s};var E=(s,e,t)=>(t=s!=null?PT(_T(s)):{},Vp(e||!s||!s.__esModule?Hn(t,"default",{value:s,enumerable:!0}):t,s)),ye=s=>Vp(Hn({},"__esModule",{value:!0}),s);var je={};G(je,{log:()=>M,measure:()=>NT});function M(...s){if(!qp)return;let e=Date.now();console.log(`${e-DT} ${e-Hp} `,...s),Hp=e}function NT(s,e){if(!qp)return;let t=Date.now();try{s()}finally{console.log(e||s.name,"took",Date.now()-t)}}var qp,DT,Hp,$e=T(()=>{"use strict";qp=process.env.MEASURE_TESTIM_CLI_PERFORMANCE,DT=Date.now(),Hp=Date.now()});var Na,zt,Ma,Dr=T(()=>{"use strict";Na={NULL:"\uE000",Unidentified:"\uE000",Cancel:"\uE001",Help:"\uE002","Back space":"\uE003",Backspace:"\uE003",Tab:"\uE004",Clear:"\uE005",Return:"\uE006",Enter:"\uE007",Shift:"\uE008",Control:"\uE009",Alt:"\uE00A",Pause:"\uE00B",Escape:"\uE00C",Space:"\uE00D"," ":"\uE00D",Pageup:"\uE00E",PageUp:"\uE00E",Page_Up:"\uE00E",Pagedown:"\uE00F",PageDown:"\uE00F",Page_Down:"\uE00F",End:"\uE010",Home:"\uE011","Left arrow":"\uE012",Arrow_Left:"\uE012",ArrowLeft:"\uE012","Up arrow":"\uE013",Arrow_Up:"\uE013",ArrowUp:"\uE013","Right arrow":"\uE014",Arrow_Right:"\uE014",ArrowRight:"\uE014","Down arrow":"\uE015",Arrow_Down:"\uE015",ArrowDown:"\uE015",Insert:"\uE016",Delete:"\uE017",Semicolon:"\uE018",Equals:"\uE019","Numpad 0":"\uE01A","Numpad 1":"\uE01B","Numpad 2":"\uE01C","Numpad 3":"\uE01D","Numpad 4":"\uE01E","Numpad 5":"\uE01F","Numpad 6":"\uE020","Numpad 7":"\uE021","Numpad 8":"\uE022","Numpad 9":"\uE023",Multiply:"\uE024",Add:"\uE025",Separator:"\uE026",Subtract:"\uE027",Decimal:"\uE028",Divide:"\uE029",F1:"\uE031",F2:"\uE032",F3:"\uE033",F4:"\uE034",F5:"\uE035",F6:"\uE036",F7:"\uE037",F8:"\uE038",F9:"\uE039",F10:"\uE03A",F11:"\uE03B",F12:"\uE03C",Command:"\uE03D",Meta:"\uE03D",Zenkaku_Hankaku:"\uE040",ZenkakuHankaku:"\uE040"},zt="element-6066-11e4-a52e-4f735466cecf",Ma=79});function re(s=16){let e="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890",t="";for(let r=0;r<s;r++){let n=Math.floor(Math.random()*e.length);t+=e[n]}return t}function qe(s,e,t,r,n){let o="";return n=n?encodeURIComponent(n):"master",e&&t&&(o=`${s}/#/project/${e}/branch/${n}/test/${t}`,r&&(o+=`?result-id=${r}`)),o}function Ua(s,e){return`Basic ${Buffer.from(`${s}:${e}`).toString("base64")}`}function We(s){let e=/^(https?:\/\/)/i,t=new RegExp("^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$","i");return e.test(s)||t.test(s)}var Fa=T(()=>{"use strict"});var ja,zp,Kp,Zn=T(()=>{ja={ngrok:"4.3.3",webpack:"5.74.0",playwright:"0.12.1",puppeteer:"2.1.1","selenium-webdriver":"3.6.0","v8-to-istanbul":"9.1.0","istanbul-lib-coverage":"3.2.0","@bcoe/v8-coverage":"0.2.3","convert-source-map":"1.7.0",multer:"1.4.5-lts.1"},zp={"@applitools/eyes-sdk-core":"13.11.32","@applitools/spec-driver-webdriverio":"1.4.29","@segment/analytics-node":"1.3.0","@types/unzip-stream":"0.3.2",ajv:"6.12.6","body-parser":"1.20.1",chalk:"4.1.2","chrome-launcher":"0.15.0",commander:"10.0.0",compression:"1.7.4","coralogix-logger":"1.1.28",cors:"2.8.5","data-uri-to-buffer":"2.0.2",dayjs:"1.11.8",express:"4.17.3",fkill:"7.2.1","form-data":"3.0.0","https-proxy-agent":"7.0.2","istanbul-lib-report":"3.0.0","istanbul-reports":"3.1.5",jimp:"0.22.10",jsonwebtoken:"9.0.0",linkedom:"0.15.3",lodash:"4.17.21","memory-fs":"0.5.0",ms:"2.1.2",npm:"8.19.2","object-hash":"3.0.0",ora:"5.4.1","p-limit":"4.0.0","p-retry":"4.6.2",pako:"1.0.11",portfinder:"1.0.28","promise-queue":"2.2.5",prompts:"2.4.2","proxy-agent":"6.3.1","rox-node":"4.9.18",semver:"7.5.4","serialize-error":"7.0.1","socket.io-client":"4.6.2","source-map-support":"0.5.19",superagent:"3.8.3","superagent-proxy":"3.0.0","test-exclude":"6.0.0","ua-parser-js":"0.7.33","unzip-stream":"0.3.1","validate-npm-package-name":"3.0.0",webdriverio:"7.24.0",winston:"3.6.0","winston-transport":"4.5.0",ws:"8.5.0",xml2js:"0.6.2",yaml:"2.2.2"},Kp={node:">= 16.0.0"}});var Ds,Jp,Yp,eo,Xp,to,Ns,Qp,me,Zp,ed,ro,Oe,$a,td,so,rd,RR,sd,xR,nd,od,Nr,id,ad,cd,ld,ud,pd,dd,md,fd,gd,hd,Ms,yd,bd,Td,Wa,le=T(()=>{"use strict";Ds=process.env.SERVICES_HOST||"https://services.testim.io",Jp="https://testimstatic.blob.core.windows.net",Yp="https://tstresultfiles.azureedge.net";process.env.GATEWAY_URL&&(process.env.CORALOGIX_URL=`${process.env.GATEWAY_URL}/testim/coralogix/api/v1/logs`,process.env.SERVICES_HOST=`${process.env.GATEWAY_URL}/testim/services`,process.env.EXTENSION_SERVICES_HOST=process.env.TUNNEL_GATEWAY?process.env.SERVICES_HOST:Ds,Ds=process.env.SERVICES_HOST);eo=parseInt(process.env.DISABLE_AGENT_ORIGIN_CHECK||"0",10),Xp=parseInt(process.env.DISABLE_DEBUGGER_INFINITE_TIMEOUT||"0",10),to=parseInt(process.env.OVERRIDE_TIMEOUTS||"0",10),Ns=process.env.EDITOR_URL,Qp=process.env.WEBSOCKET_HOST||`${Ds}/ws`,me=Ds,Zp=parseInt(process.env.LOGGER_CONSOLE||"0",10),ed=parseInt(process.env.LOGGER_DEBUG||"0",10),ro=parseInt(process.env.WEBDRIVER_DEBUG||"0",10),Oe=parseInt(process.env.IS_ON_PREM||"0",10),$a=process.env.REQUESTS_QUEUE_SIZE?parseInt(process.env.REQUESTS_QUEUE_SIZE,10):void 0,td=parseInt(process.env.DEBUG_MODE||"0",10),so=process.env.TESTIM_CONCURRENT_WORKER_COUNT?parseInt(process.env.TESTIM_CONCURRENT_WORKER_COUNT,10):null,rd=process.env.ROLLOUT_KEY||"5b5560729601aa6484276518",RR=parseInt(process.env.DF_ENABLE_VIDEO||"0",10),sd=parseInt(process.env.START_WORKER_DELAY_MS||"1500",10),xR=process.env.APPIUM_VERSION||"1.10.1",nd=process.env.GATEWAY_URL,od=process.env.EXTENSION_SERVICES_HOST||Ds,Nr=process.env.GATEWAY_URL?`${process.env.GATEWAY_URL}/testim/blob`:Jp,id=process.env.GATEWAY_URL?`${process.env.GATEWAY_URL}/testim/edge`:Yp,ad=Jp,cd=Yp,ld=5*60*1e3,ud=40,pd=process.env.TMA_BASE_API_URL||"http://127.0.0.1:8585/api",dd=process.env.HEADSPIN_MOBILE_DEVICES_API_URL||"https://api-dev.headspin.io/v0",md=process.env.HEADSPIN_MOBILE_APPS_API_URL||"https://api-dev.headspin.io/v1",fd=process.env.TDC_MOBILE_DEVICES_API_URL||"https://api.tdc.tricentis-cloud.com/v0",gd=process.env.TDC_MOBILE_APPS_API_URL||"https://api.tdc.tricentis-cloud.com/v1",hd=process.env.TVC_MOBILE_API_URL||"https://api.waldo.com",Ms=process.env.BROWSERSTACK_APPS_API_URL||"https://api-cloud.browserstack.com/app-automate",yd=process.env.SAUCE_LABS_US_APPS_API_URL||"https://api.us-west-1.saucelabs.com/v1",bd=process.env.SAUCE_LABS_EU_APPS_API_URL||"https://api.eu-central-1.saucelabs.com/v1",Td=process.env.P_CLOUDY_DEFAULT_TEST_DURATION||60,Wa=process.env.P_CLOUDY_DEFAULT_ANDROID_DEVICE_NAME||"samsung"});var Va={};G(Va,{CoralogixTransport:()=>Mr});var xe,wd,FT,BT,Mr,Ga=T(()=>{"use strict";xe=require("coralogix-logger"),wd=E(require("winston-transport")),FT={debug:xe.Severity.debug,silly:xe.Severity.verbose,verbose:xe.Severity.verbose,silent:xe.Severity.verbose,info:xe.Severity.info,http:xe.Severity.info,warn:xe.Severity.warning,warning:xe.Severity.warning,error:xe.Severity.error,critical:xe.Severity.critical,crit:xe.Severity.critical},BT=["err","error","reason","e"],Mr=class extends wd.default{constructor(t){t=Object.assign({},Mr.options,t);super(t);this.options=t,this.logger=new xe.CoralogixLogger(t.category||""),this.name="Coralogix Transport",t.timestamp&&(this.timestamp=t.timestamp)}log(t,r){let{category:n,level:o,message:i,meta:a={},...l}=t,c=Object.assign({},a,this.options.extraFields,l),d=new xe.Log;d.severity=FT[o],d.text=i,d.category=n,c.className&&(d.className=c.className),c.methodName&&(d.methodName=c.methodName),c.threadId&&(d.threadId=c.threadId),delete c.className,delete c.methodName,delete c.threadId,delete c.category,delete c.level,delete c.message;let m=!1;a instanceof Error&&(m=!0,c.msg=a.message+a.stack,i&&(c.msg=`${i}
|
|
3
3
|
${c.msg}`));for(let u of BT)a[u]instanceof Error&&(c[u]={message:a[u].message,stack:a[u].stack,name:a[u].name,type:a[u].type,cause:a[u].cause,...a[u]});Object.keys(c).length>0&&(i&&!m&&(c.msg=i),d.text=c),this.logger.addLog(d),r(null,!0)}waitForFlush(){return this.logger.waitForFlush()}static configure(t){xe.CoralogixLogger.configure(t),Mr.options=t}}});var Ya={};G(Ya,{getLogger:()=>A,setExecutionId:()=>za,setProjectId:()=>Ka,setProxyUri:()=>Ja});function WT(){let s=[],e=()=>Promise.resolve();if(!Oe){let{CoralogixTransport:t}=(Ga(),ye(Va));t.configure(Sd);let r=new t({category:"ROOT"});s.push(r),e=()=>r.waitForFlush()}return Zp&&s.push(new St.transports.Console({format:St.format.combine(St.format.colorize(),St.format.simple())})),[s,e]}function za(s){Ha=s}function Ka(s){Id=s}function Ja(s){if(Oe||!s)return;let{CoralogixTransport:e}=(Ga(),ye(Va));e.configure({...Sd,proxyUri:s})}function vd(s){return{projectId:Id,time:new Date().toISOString(),...Ha&&!s&&{executionId:Ha}}}function A(s){return new qa(zT.child({category:s}))}var Ed,St,jT,$T,Sd,VT,GT,HT,qT,zT,Ha,Id,qa,$=T(()=>{"use strict";Ed=E(require("os")),St=E(require("winston"));le();B();jT=Ed.hostname(),$T=dt(),Sd={privateKey:"d0eb01da-f966-1663-63c6-8871225d7c39",applicationName:"testim",subsystemName:"runner"};[VT,GT]=WT(),HT=ed?"debug":"info",qT={release:Boolean(!0),branch:"production"},zT=St.createLogger({levels:St.config.syslog.levels,level:HT,transports:VT,defaultMeta:{name:"runner",hostname:jT,nodeVersion:process.version,runnerVersion:$T,...qT}}),Ha=null,Id=null;qa=class{constructor(e){this._logger=e;this.debug=this.debug.bind(this),this.info=this.info.bind(this),this.warn=this.warn.bind(this),this.error=this.error.bind(this),this.fatal=this.fatal.bind(this)}debug(e,t={}){this.innerLog("debug",e,t)}info(e,t={}){this.innerLog("info",e,t)}warn(e,t={}){this.innerLog("warning",e,t)}error(e,t={}){this.innerLog("error",e,t)}fatal(e,t={}){this.innerLog("crit",e,t)}innerLog(e,t,r={}){let{executionId:n}=r;try{this._logger.log(e,Object.assign({meta:r,message:t},vd(n)))}catch(o){try{this._logger.log("crit",Object.assign({message:`failed to log message ${o.message}, ${o.stack}`},vd(n)))}catch{}}}waitForFlush(){return GT()}}});var ao,Ur,C,Kt,fr,It,no,Fr,ne,Us,ze,Jt,Rt,oo,Br,jr,$r,io,Fs,z=T(()=>{"use strict";ao=require("p-retry"),Ur=class extends Error{constructor(){super(...arguments);this.name="NoArgsError"}},C=class extends Error{constructor(){super(...arguments);this.name="ArgError"}},Kt=class extends Error{constructor(){super(...arguments);this.name="StopRunOnError"}},fr=class extends Error{constructor(t,r){super(t);this.type=r}},It=class extends ao.AbortError{},no=class extends ao.AbortError{},Fr=class extends ao.AbortError{},ne=class extends Error{},Us=class extends Error{},ze=class extends Error{constructor(){super(...arguments);this.name="GridError"}toString(){return this.message}},Jt=class extends ze{constructor(){super(...arguments);this.name="GridConcurrencyError"}},Rt=class extends Error{constructor(){super(...arguments);this.name="NpmPackageError"}},oo=class extends Error{constructor(){super(...arguments);this.message="selenium driver crashed";this.name="SeleniumCrashError"}},Br=class extends Error{},jr=class extends Error{constructor(t){super();this.innerStack=t}},$r=class extends Error{constructor(t){super(`Testim had missing write access to ${t}`);this.path=t}},io=class extends Error{constructor(e){super(`Package for CLI action need to have a CommonJS export which the package ${e} does not have`)}},Fs=class extends Error{constructor(e=!1){let t="not implemented";e&&(t="should be implemented on descendant"),super(t)}}});function Xa(s){return!!s&&(typeof s=="object"||typeof s=="function")&&typeof s.then=="function"&&typeof s.catch=="function"}function oe(s){return(0,Ad.setTimeout)(s)}function Qa(s,e){let t=new Promise((r,n)=>{e.onabort=()=>{n(e.reason)}});return Promise.race([s,t])}function ce(s,e,t="Timeout Error"){to&&!Rd&&(Rd=!0,console.log("Debugger connected - timeouts were overridden to 10 minutes to improve debugging"));let r=new ne(t);return e=to?Number(to)||6e5:e,Promise.race([s,oe(e).then(()=>{throw r})])}async function ie(s,e,{concurrency:t}={}){if(t){xd||=(await import("p-limit")).default;let r=xd(t);return await Promise.all(Array.from(s,(n,o)=>r(()=>e(n,o))))}return await Promise.all(Array.from(s,e))}function Yt(s){return new Promise((e,t)=>{s((r,n)=>r?t(r):e(n))})}var Ad,Rd,xd,Za=T(()=>{"use strict";Ad=require("timers/promises");z();le();Rd=!1});var js,Cd,KT,Bs,Pd,JT,YT,kd,Od=T(()=>{"use strict";js=E(require("lodash"));le();Cd=require("dns");$();Za();KT=A("http-request-counters"),Bs=!1,Pd=async()=>{if(Oe)return!0;let s=["www.google.com","www.facebook.com","www.microsoft.com","testim.io"];try{let e=Boolean(await ie(s,t=>Cd.promises.lookup(t)));return e||(Bs=!0),e}catch{return KT.error("network connectivity test failed"),Bs=!0,!1}},JT=js.throttle(Pd,10*1e3),YT=60*1e3*15,kd=()=>{let s={call:new Map,success:new Map,fail:new Map};function e(n,o){let i=n.get(o)||0;n.set(o,i+1),setTimeout(()=>{let a=n.get(o)||1;n.set(o,a-1)},YT)}function t(n,o=n.name){return async function(...i){e(s.call,o);try{let a=await n.call(null,...i);return e(s.success,o),a}catch(a){throw e(s.fail,o),Bs||JT(),a}}}async function r(){if(Bs||!await Pd())return!1;let n=js.sum([...s.fail.values()]),o=js.sum([...s.call.values()]);return n<o*.1}return r.counters=s,t.counters=s,t.isNetworkHealthy=r,t.didNetworkConnectivityTestFail=()=>Bs,t}});var tt={};G(tt,{deleteFullRes:()=>tw,deleteReq:()=>$s,didNetworkConnectivityTestFail:()=>ac,download:()=>oc,get:()=>Ee,getFullRes:()=>sw,getText:()=>Vs,head:()=>nw,isNetworkHealthy:()=>ic,post:()=>Ge,postForm:()=>Ws,postFullRes:()=>rw,postText:()=>sc,put:()=>nc});function QT(){return global.caFileContent}function ZT(s,e){let t=[];s.on("data",r=>{t.push(r)}),s.on("end",()=>{e(null,Buffer.concat(t))})}function ew(){return!xt.default.Request.prototype.proxy&&global.SuperagentProxy&&global.SuperagentProxy(xt.default),global.proxyUri}function gr(s,e=!1){let t=QT();t&&s.ca(t);let r=!e&&ew();r&&s.proxy(r)}async function _d(s,e={},t={},r=Wr){let n=xt.default.delete(s).send(e).timeout(r).set(t);return gr(n),await n}async function tc(s,e,t={},r=Wr,n=0){let o=xt.default.post(s).send(e).timeout(r).set(t);gr(o),n&&o.retry(n);try{return await o}catch(i){throw i.url=s,i.originalRequestTimeout=r,i.additionalSetHeaders=t,i}}async function rc(s,e,t={},r=Wr,{isBinary:n=!1,skipProxy:o=!1}={}){let i=xt.default.get(s).query(e||{}).timeout(r).set(t);return n&&i.buffer(!0),gr(i,o),await i}var xt,ec,Ve,Wr,XT,Nt,$s,tw,Ge,rw,Ws,Vs,sc,Ee,sw,nw,nc,oc,ic,ac,Ke=T(()=>{"use strict";xt=E(require("superagent"));$();Od();ec=A("http-request"),Ve=kd(),Wr=parseInt(process.env.DEFAULT_REQUEST_TIMEOUT||"0",10)||3e4,XT=6e4;Nt=(s,e,t)=>{throw ec.error(s,{...t,error:e}),e};$s=Ve(async(s,e,t,r)=>{try{let n=await _d(s,e,t,r);return n.type==="text/plain"?n.text:n.body}catch(n){return Nt("failed to delete request",n,{url:s})}});tw=Ve(_d),Ge=Ve(async({url:s,body:e,headers:t,timeout:r,retry:n})=>{try{let o=await tc(s,e,t,r,n);return o.type==="text/plain"?o.text:o.body}catch(o){return Nt("failed to post request",o,{url:s})}});rw=Ve(tc),Ws=Ve(async(s,e,t,r={},n=Wr)=>{let o=xt.default.post(s).type("form").timeout(n).set(r);o.field(e),Object.entries(t).forEach(([i,a])=>{o.attach(i,a.buffer,a.fileName)}),gr(o);try{let i=await o;return i.type==="text/plain"?i.text:i.body}catch(i){return Nt("failed to post request",i,{url:s})}});Vs=Ve(async(s,e,t)=>{try{return(await rc(s,e,t)).text}catch(r){return Nt("failed to getText request",r,{url:s,query:e})}}),sc=Ve(async({url:s,body:e,headers:t,timeout:r,retry:n})=>{try{return(await tc(s,e,t,r,n)).text}catch(o){return Nt("failed to post request",o,{url:s})}}),Ee=Ve(async(s,e,t,r,n)=>{try{return(await rc(s,e,t,r,n)).body}catch(o){return Nt("failed to get request",o,{url:s,query:e})}}),sw=Ve((s,e,t,r)=>rc(s,e,t,r)),nw=Ve(async s=>{let e=xt.default.head(s).timeout(Wr);gr(e);try{return await e}catch(t){return Nt("failed to head request",t,{url:s})}}),nc=Ve(async(s,e,t={},r=Wr)=>{let n=xt.default.put(s).send(e).timeout(r).set(t);gr(n);try{return(await n).body}catch(o){return Nt("failed to put request",o,{url:s})}}),oc=Ve(async s=>{ec.info("start to download",{url:s});let e=xt.default.get(s).timeout(XT).buffer(!0).parse(ZT);gr(e);try{let t=await e;return ec.info("finished to download",{url:s}),t}catch(t){return Nt("failed to download",t,{url:s})}}),ic=Ve.isNetworkHealthy,ac=Ve.didNetworkConnectivityTestFail});function mt(){let s;return require.main?(require.main.filename.includes("/src")||require.main.filename.includes("\\src")?s=Mt.resolve(__dirname,"../../"):s=Mt.resolve(__dirname,""),s):process.cwd()}function co(s,e){return We(s)?e||Mt.join(process.cwd(),s.replace(/^.*[\\/]/,"")):e||Mt.basename(s)}function dt(){try{return require(`${__dirname}/package.json`).version}catch{return""}}function iw(){try{return Kp.node}catch{return""}}async function Nd(s,e,t=!0){let r=await rt.promises.readdir(s,{withFileTypes:!0});await rt.promises.mkdir(e,{recursive:t});for(let n of r){let o=Mt.join(s,n.name),i=Mt.join(e,n.name);n.isDirectory()?await Nd(o,i):await rt.promises.copyFile(o,i)}}async function ge(s){try{return await rt.promises.access(s),!0}catch(e){if(e.code==="ENOENT")return!1;throw e}}var Mt,Ld,Dd,rt,ow,Ut,Je,lo,cc,st,lc,Md=T(()=>{"use strict";Mt=E(require("path"));Fa();Zn();Ld=E(require("unzip-stream")),Dd=E(require("p-retry")),rt=require("fs"),ow=3;Ut=async s=>{let e=await Promise.resolve().then(()=>(Ke(),tt));return(0,Dd.default)(()=>e.download(s),{retries:ow,factor:1})},Je=async(s,e)=>{let t=await Ut(s);return rt.promises.writeFile(e,t.body)};lo=async(s,e)=>{let t=co(s,e);return We(s)?Je(s,t):rt.promises.copyFile(s,t)},cc=async s=>We(s)?Ut(s):rt.promises.readFile(s),st=async(s,e)=>await(0,rt.createReadStream)(s).pipe(Ld.Extract({path:e})),lc=s=>(0,rt.statSync)(s).size/1e6});var Ft={};G(Ft,{APPIUM_SESSION_MESSAGE:()=>fc,CLI_MODE:()=>Y,MOBILE_APP_SOURCE:()=>uo,MOBILE_RUN_SKIP_REASON:()=>mc,gridMessages:()=>ft,gridTypes:()=>O,mobileWeb:()=>pc,runnerStatus:()=>uc,runnerTestStatus:()=>pe,socketEventTypes:()=>At,stepResult:()=>Hs,test:()=>dc,testRunStatus:()=>Gs,testStatus:()=>Ye,timeoutMessages:()=>Fe});var Fe,Gs,uc,pe,Ye,ft,pc,dc,At,Y,O,Hs,uo,mc,fc,ae=T(()=>{"use strict";Fe={GET_BROWSER_TIMEOUT_MSG:"get-browser-timeout",TEST_START_TIMEOUT_MSG:"test-start-timeout",TEST_COMPLETE_TIMEOUT_MSG:"test-complete-timeout"},Gs={COMPLETED:"completed",RUNNING:"running"},uc={RUNNING:"RUNNING",SKIPPED:"SKIPPED",FINISHED:"FINISHED",ABORTED:"ABORTED",QUEUED:"QUEUED",TIMEOUT:"TIMEOUT"},pe={PASSED:"PASSED",FAILED:"FAILED",ABORTED:"ABORTED",SKIPPED:"SKIPPED",QUEUED:"QUEUED",PENDING:"PENDING"},Ye={DRAFT:"draft",EVALUATING:"evaluating",ACTIVE:"active",QUARANTINE:"quarantine"},ft={NOT_FOUND:"The specified grid is not available",UNKNOWN:"Test couldn't get browser - unknown error"},pc={MOBILE_WEB_REMOTE_RUN_HEADER_SPACING:50},dc={HIDDEN_PARAM:"TST_HIDDEN_PARAM"},At={TEST_RESULT_CREATED:"test-result-created",TEST_RESULT_UPDATED:"test-result-updated",REMOTE_STEP_SAVED:"remote-step-saved"},Y={EXTENSION:"extension",SELENIUM:"selenium",APPIUM:"appium"},O={TESTIM_ENTERPRISE:"testimEnterprise",TESTIM:"testim",LAMBDATEST:"testimLambdaTest",DEVICE_FARM:"testimDF",HYBRID:"testimHybrid",BROWSERSTACK:"browserstack",SAUCELABS:"saucelabs",TESTIM_HEADSPIN:"testimHeadspin",TESTIM_TDC:"testimTDC",TESTIM_TVC:"testimTVC",P_CLOUDY:"pcloudy"},Hs={SETUP_TIMEOUT:"setup-timeout",NETWORK_ERROR:"network-error",GRID_ERROR:"grid-error",SELENIUM_ERROR:"selenium-error",BROWSER_CLOSED:"browser-closed",MOBILE_SESSION_ERROR:"mobile-session-error",UNKNOWN_ERROR:"unknown-error"},uo={FROM_LIBRARY:"from-library",FROM_DEVICE:"from-device"},mc={APP_FROM_DEVICE:"app-from-device",VIRTUAL_BUILD:"virtual-build"},fc={APP_NOT_EXIST_ON_DEVICE:"used to start the app doesn't exist or cannot be launched",APP_NEVER_STARTED:"never started",DEVICE_OS_VERSION_TOO_LOW:"DeviceOSVersionTooLow",TIMEOUT_ERROR:"Timeout awaiting 'request'",SAUCELABS_APP_IS_NOT_INSTALLED:"Original error: 'app' option is required for reinstall"}});function qs(s,e){var t,r,n;return((t=s.testConfigNames)!=null&&t.length||(r=s.testConfigIds)!=null&&r.length||s.testPlan.length||s.testPlanIds.length)&&!s.browser?[...new Set(e.map(o=>{var i;return(i=o.runConfig)==null?void 0:i.browserValue}))]:[(n=s.browser)==null?void 0:n.toLowerCase()]}function aw(){let{argv:s}=process;if(s.includes("--remoteRunId"))return{remoteRunId:s[s.indexOf("--remoteRunId")+1],projectId:s[s.indexOf("--project")+1],token:s[s.indexOf("--token")+1]}}var zs,Ud,Xe,cw,lw,uw,pw,dw,gc,hc,Fd=T(()=>{"use strict";ae();zs=s=>{var e,t;return Boolean(((e=s.testPlan)==null?void 0:e.length)||((t=s.testPlanIds)==null?void 0:t.length))},Ud=s=>Boolean(s.resultId&&s.source==="remote-run"),Xe=(s,e)=>s.testStatus===Ye.QUARANTINE&&!Ud(e)&&!e.runQuarantinedTests;cw=s=>Boolean(s.loginMode),lw=s=>Boolean(s.tunnelOnlyMode),uw=s=>Boolean(s.createPrefechedData),pw=s=>Boolean(s.installLazyDepsMode),dw=s=>Boolean(s.agentMode),gc=(s,e)=>{s.forEach((t,r)=>{e.has(t)&&(s[r]=`--${t}`)})},hc=s=>{let e=[];return Object.entries(s).forEach(([t,r])=>{r&&e.push(`--${t}`,r)}),e}});function mo(s=0){return po.default.duration(s).format("HH:mm:ss.SSS")}function yc(s=0){return po.default.duration(s).asSeconds()}var po,Bd,jd=T(()=>{"use strict";po=E(require("dayjs")),Bd=E(require("dayjs/plugin/duration"));po.default.extend(Bd.default)});var Ks,Vr,Js,$d,Gr,Wd=T(()=>{"use strict";ae();Ks=s=>!(!s||"fileName"in s),Vr=(s,e)=>e===O.TESTIM_TVC?!1:s&&"fileName"in s?s.fileName.endsWith(".app"):!1,Js=s=>{var e,t;return((e=s.projectData)==null?void 0:e.type)==="ios"||((t=s.projectData)==null?void 0:t.type)==="android"},$d=s=>s===O.TESTIM_TVC,Gr=(s,e)=>$d(e)||!s.flags.allowAppFromDeviceRuns.isEnabled()});function bc(s=4e3){let e=process.memoryUsage(),t=r=>Math.round(r/1024/1024*100)/100;return{isOverThreshold:t(e.rss)>s,rss:`${t(e.rss)} MB -> Resident Set Size - total memory allocated for the process execution`,heapTotal:`${t(e.heapTotal)} MB -> total size of the allocated heap`,heapUsed:`${t(e.heapUsed)} MB -> actual memory used during the execution`,external:`${t(e.external)} MB -> V8 external memory`}}var Vd=T(()=>{"use strict"});var J={};G(J,{OSS:()=>Hr,TESTIM_BROWSER_DIR:()=>Bt,buildBasicHeader:()=>Ua,calcPercentile:()=>ho,copyDir:()=>Nd,delay:()=>oe,doesPathExist:()=>ge,download:()=>Ut,downloadAndSave:()=>Je,extractElementId:()=>Le,getArgsOnRemoteRunFailure:()=>aw,getBrowserInfo:()=>fw,getCdpAddressForHost:()=>yr,getCliLocation:()=>mt,getDuration:()=>mo,getDurationSec:()=>yc,getEnginesVersion:()=>iw,getEnvironmentGitBranch:()=>hr,getLocalFileSizeInMB:()=>lc,getMemorySnapshot:()=>bc,getPlanType:()=>go,getRunConfigByBrowserName:()=>Ys,getRunnerVersion:()=>dt,getSource:()=>lo,getSourceAsBuffer:()=>cc,getSourcePath:()=>co,getTestUrl:()=>qe,getUniqBrowsers:()=>qs,groupTestsByRetries:()=>wc,guid:()=>re,hasTestPlanFlag:()=>zs,isAgentMode:()=>dw,isAppFromDevice:()=>Ks,isAppFromDeviceDisabled:()=>Gr,isCreatePrefetchedDataMode:()=>uw,isInstallLazyDepsMode:()=>pw,isLoginMode:()=>cw,isMobileProject:()=>Js,isPromise:()=>Xa,isQuarantineAndNotRemoteRun:()=>Xe,isRemoteRun:()=>Ud,isTestimVirtualGrid:()=>$d,isTunnelOnlyMode:()=>lw,isURL:()=>We,promiseAbort:()=>Qa,promiseFromCallback:()=>Yt,promiseMap:()=>ie,promiseTimeout:()=>ce,removePropertyFromObject:()=>fo,replaceArgsWithNoDashes:()=>gc,shouldBlockVirtualIosBuild:()=>Vr,spreadObjectToArgs:()=>hc,unzipFile:()=>st});function fw(s){return s=s.toLowerCase(),Tc.find(e=>e.browserValue===s)}function Ys(s,e,t){s=s==null?void 0:s.toLowerCase();let r=Tc.find(o=>o.browserName.toLowerCase()===s||s.includes(o.synonyms))||Tc[0],n=Hr.find(o=>o.osName==="Windows 10");return e&&(e.platform?n=Hr.find(o=>o.sl.platform===e.platform):e.platformName&&(n=Hr.find(o=>o.sl.platformName===e.platformName))),t&&(t.os_version?n=Hr.find(o=>o.bs.os_version===t.os_version):t.platform&&(n=Hr.find(o=>o.bs.platform===t.platform))),qr.merge(r,n)}function hr(){return process.env.GIT_BRANCH||process.env.CIRCLE_BRANCH||process.env.TRAVIS_BRANCH||process.env.CI_BRANCH}function fo(s,e,t){for(let r in s)Object.hasOwn(s,r)&&(t(r,e)?delete s[r]:typeof s[r]=="object"&&fo(s[r],e,t))}function Le(s){return s.ELEMENT||s[zt]}function go(s){s||={};let e=Date.now(),t=s.expireAt||s.expireAT;return s.plan!=="free"?"pro":t?t<e?"free":"trial":"free"}function wc(s=[]){return qr.chain(s).groupBy(e=>e.originalTestResultId||e.resultId).values().reduce((e,t)=>{if(!t)return e;if(t.length===1)return e.push(t[0]),e;let r=t.slice().sort((o,i)=>{let a=typeof o.retryCount=="number"?o.retryCount:1,l=typeof i.retryCount=="number"?i.retryCount:1;return a===l?o.startTime-i.startTime:(o.retryCount??0)-(i.retryCount??0)}),n=qr.cloneDeep(r.at(-1));return n&&(n.retryTestResults=r,e.push(n)),e},[]).compact().value()}async function yr(s,e){let t=await Promise.resolve().then(()=>(Ke(),tt));try{return(await t.get(`http://${s}/json/version`,void 0,void 0,e)).webSocketDebuggerUrl}catch{throw new Error("unable to connect to devtools server")}}var Gd,qr,Hd,mw,Bt,Hr,Tc,ho,B=T(()=>{"use strict";Gd=E(require("os")),qr=E(require("lodash")),Hd=E(require("path"));Dr();Md();Fd();jd();Fa();Za();Wd();Vd();mw=Gd.homedir(),Bt=Hd.join(mw,".testim-browser-profile"),Hr=[{osName:"Linux",bs:{os:"LINUX"},sl:{platform:"Linux"}},{osName:"Windows 11",bs:{os:"WINDOWS",os_version:"11"},sl:{platform:"Windows 11"}},{osName:"Windows 10",bs:{os:"WINDOWS",os_version:"10"},sl:{platform:"Windows 10"}},{osName:"Windows 8",bs:{os:"WINDOWS",os_version:"8"},sl:{platform:"Windows 8"}},{osName:"Windows 8.1",bs:{os:"WINDOWS",os_version:"8.1"},sl:{platform:"Windows 8.1"}},{osName:"Windows 7",bs:{os:"WINDOWS",os_version:"7"},sl:{platform:"Windows 7"}},{osName:"Windows XP",bs:{os:"WINDOWS",os_version:"XP"},sl:{platform:"Windows XP"}},{osName:"macOS Sonoma",bs:{os:"OS X",os_version:"Sonoma",safari_version:"17"},sl:{}},{osName:"macOS Ventura",bs:{os:"OS X",os_version:"Ventura",safari_version:"16.5"},sl:{platform:"macOS 13",safari_version:"latest"}},{osName:"macOS Monterey",bs:{os:"OS X",os_version:"Monterey",safari_version:"15.6"},sl:{platform:"macOS 12",safari_version:"latest"}},{osName:"macOS Big Sur",bs:{os:"OS X",os_version:"Big Sur",safari_version:"14.1"},sl:{platform:"macOS 11",safari_version:"latest"}},{osName:"macOS Catalina",bs:{os:"OS X",os_version:"Catalina",safari_version:"13.1"},sl:{platform:"macOS 10.15",safari_version:"latest"}},{osName:"macOS Mojave",bs:{os:"OS X",os_version:"Mojave",safari_version:"12.1"},sl:{platform:"macOS 10.14",safari_version:"latest"}},{osName:"macOS High Sierra",bs:{os:"OS X",os_version:"High Sierra",safari_version:"11.1"},sl:{platform:"macOS 10.13",safari_version:"latest"}},{osName:"macOS Sierra",bs:{os:"OS X",os_version:"Sierra",safari_version:"10.1"},sl:{platform:"macOS 10.12",safari_version:"latest"}},{osName:"OS X El Capitan",bs:{os:"OS X",os_version:"El Capitan",safari_version:"9.1"},sl:{platform:"OS X 10.11",safari_version:"latest"}},{osName:"OS X Yosemite",bs:{os:"OS X",os_version:"Yosemite",safari_version:"8"},sl:{platform:"OS X 10.10",safari_version:"latest"}},{osName:"OS X Mavericks",bs:{os:"OS X",os_version:"Mavericks",safari_version:"7.1"},sl:{platform:"OS X 10.9",safari_version:"latest"}},{osName:"OS X Mountain Lion",bs:{os:"OS X",os_version:"Mountain Lion",safari_version:"6.2"},sl:{platform:"OS X 10.8",safari_version:"latest"}},{osName:"OS X Lion",bs:{os:"OS X",os_version:"Lion",safari_version:"6"},sl:{}},{osName:"OS X Snow Leopard",bs:{os:"OS X",os_version:"Snow Leopard",safari_version:"5.1"},sl:{}},{osName:"iOS",bs:{platform:"MAC"},sl:{platformName:"iOS",appiumVersion:"1.6.4"}},{osName:"Android",bs:{platform:"ANDROID"},sl:{platformName:"Android",appiumVersion:"1.6.4"}}],Tc=[{browserName:"Chrome",bs:{browser:"Chrome",browser_version:"112"},sl:{browserName:"chrome",version:"94.0"},browserValue:"chrome"},{browserName:"Firefox",bs:{browser:"Firefox",browser_version:"89"},sl:{browserName:"firefox",version:"89.0"},browserValue:"firefox"},{browserName:"Safari",bs:{browser:"Safari"},sl:{browserName:"safari"},browserValue:"safari"},{browserName:"Edge Chromium",bs:{browser:"Edge",browser_version:"112"},sl:{browserName:"MicrosoftEdge",version:"94"},synonyms:["edge-chromium"],browserValue:"edge-chromium",seleniumName:"MicrosoftEdge"},{browserName:"Browser",bs:{},sl:{browserName:"Browser"},browserValue:"browser"},{browserName:"Android",bs:{browserName:"android"},sl:{},browserValue:"android"},{browserName:"iPad",bs:{browserName:"iPad"},sl:{},browserValue:"ipad"},{browserName:"iPhone",bs:{browserName:"iPhone"},sl:{},browserValue:"iphone"}];ho=(s,e)=>{if(s.length===0)return 0;if(typeof e!="number")throw new TypeError("p must be a number");if(s=[...s].sort((r,n)=>r-n),e<=0)return s[0];if(e>=100)return s.at(-1);let t=Math.ceil(s.length*(e/100))-1;return s[t]}});var vc={};G(vc,{$schema:()=>gw,default:()=>ww,definitions:()=>hw,properties:()=>Tw,required:()=>bw,type:()=>yw});var gw,hw,yw,bw,Tw,ww,qd=T(()=>{gw="http://json-schema.org/draft-07/schema#",hw={request:{type:"object",required:["url"],additionalProperties:!1,properties:{url:{type:"string"},method:{type:"string",pattern:"^GET$|^HEAD$|^POST$|^PUT$|^DELETE$|^CONNECT$|^OPTIONS$|^TRACE$|^PATCH$"}}},header:{type:"object",required:["name","value"],additionalProperties:!1,properties:{name:{type:"string"},value:{type:"string"}}},cookie:{type:"object",required:["name","value"],additionalProperties:!1,properties:{name:{type:"string"},value:{type:"string"},path:{type:"string"},domain:{type:"string"},expires:{type:"string",format:"date-time"},httpOnly:{type:"boolean"},secure:{type:"boolean"}}},response:{type:"object",required:["status"],additionalProperties:!1,properties:{status:{type:"integer",minimum:100,exclusiveMaximum:600},headers:{type:"array",items:{$ref:"#/definitions/header"}},cookies:{type:"array",items:{$ref:"#/definitions/cookie"}},content:{type:"object",required:["text"],additionalProperties:!1,properties:{text:{type:"string"}}}}},redirectResponse:{type:"object",required:["redirectUrl"],additionalProperties:!1,properties:{redirectUrl:{type:"string"}}},passthroughResponse:{type:"object",required:["passthrough"],additionalProperties:!1,properties:{passthrough:{type:"boolean",enum:[!0]}}},entry:{type:"object",required:["request","response"],additionalProperties:!1,properties:{request:{$ref:"#/definitions/request"},response:{oneOf:[{$ref:"#/definitions/response"},{$ref:"#/definitions/redirectResponse"},{$ref:"#/definitions/passthroughResponse"}]},maxHits:{type:"integer",minimum:1}}}},yw="object",bw=["entries"],Tw={version:{type:"string",enum:["1.2","1.2.0"]},creator:{type:"string"},entries:{type:"array",items:{$ref:"#/definitions/entry"}}},ww={$schema:gw,definitions:hw,type:yw,required:bw,properties:Tw}});async function Zd(){try{return await ce(yo.promises.readFile(vo()).then(async s=>{let e=await Qd;return Sw(e,s)}),3e4)}catch{return{}}}function Sw(s,e){let t=e.slice(0,16),r=e.slice(16),n=Buffer.from(s),o=Kr.createDecipheriv("aes-256-cbc",Buffer.concat([n,Buffer.alloc(32)],32),t),i=o.update(r);return JSON.parse(Buffer.concat([i,o.final()]))}function gt(s,e,t=vw,r=void 0){return async()=>{if(!Jd)return await s();let n=e;r&&(e+=JSON.stringify(r));let o=await Iw(e);if(o)return Xs.debug("cache hit:",{fnName:e}),o;if(Xs.debug("cache miss:",{fnName:e}),!Yd)throw new Error(`Attempted to rebuild cache for ${n}. cache miss is not allowed with current run configuration`);let i=await s();return i&&await Rw(e,i,t),i}}async function Iw(s){let t=(await Eo)[s];if(!t)return;let{value:r,expiry:n}=t;if(!(n<Date.now())&&r)return r}async function Rw(s,e,t){if(Ec)throw Xs.error("calling set after waitForSave is not allowed",{key:s,ttl:t}),new Error("calling set after waitForSave is not allowed");try{let r=await Eo;r[s]={value:e,expiry:Date.now()+t},Xd=new Promise(n=>{wo=n}),Ew(r)}catch{Xs.error("failed updating cache")}}async function Jr(){let s=await Eo;Object.keys(s).forEach(e=>{delete s[e]})}function em(s){Jd=s}function xw(s=!0){Yd=s}async function tm(){try{return Ec=!0,await Xd}finally{Ec=!1}}function rm(s){To=s,Eo=Zd()}var yo,bo,Kr,zd,Xs,To,Kd,wo,Jd,Yd,Ec,Xd,Qd,vw,vo,Eo,Ew,sm,nm,ZR,om,jt=T(()=>{"use strict";yo=E(require("fs")),bo=E(require("path")),Kr=E(require("crypto"));B();zd=require("lodash");$();Xs=A("local cache"),To=bo.resolve(mt(),"testim-cache"),Jd=!0,Yd=!0,Ec=!1,Xd=new Promise(s=>{wo=s}),Qd=new Promise(s=>{Kd=s}),vw=1e3*60*60*3,vo=()=>bo.resolve(bo.resolve(To,"testim.cache"));Eo=Zd(),Ew=(0,zd.debounce)(async s=>{let e;try{let t=await Qd,r=Kr.randomBytes(16),n=JSON.stringify(s),o=Buffer.from(t),i=Kr.createCipheriv("aes-256-cbc",Buffer.concat([o,Buffer.alloc(32)],32),r),a=Buffer.concat([r,i.update(n),i.final()]);await ge(To)||await yo.promises.mkdir(To,{recursive:!0}),await yo.promises.writeFile(vo(),a)}catch(t){Xs.error("failed saving cache",{err:t}),e=t}wo(e?{success:!1,error:e}:{success:!0})},200);sm=Kd,nm=em.bind(void 0,!1),ZR=em.bind(void 0,!0),om=()=>xw(!1)});function So(){return{cliLocation:mt(),userInfo:Yr.userInfo(),platform:Yr.platform(),release:Yr.release()}}var Yr,Sc=T(()=>{"use strict";Yr=E(require("os"));B()});function Aw(s){try{return Io.resolve(Io.dirname(require.resolve(`${s}/package.json`)),require(`${s}/package.json`).main||"")}catch(e){if(e.code==="ERR_PACKAGE_PATH_NOT_EXPORTED")return require.resolve(s);throw e}}function Qt(s){let e=Aw(s);return require(e)}var Io,Qs=T(()=>{"use strict";Io=E(require("path"))});function Cw(s){let t=/EACCES[^']+'(.+)'/.exec(s);return t===null?!1:t[1]}function Pw(s){return/The "to" argument must be of type string./.exec(s)}function lm(s,e,t){let r=Cw(s),n=Pw(s);return r||n?(cm.info("Failed to install package due to insufficient write access",{...So(),package:t,path:r}),console.error(`
|
|
4
4
|
|
|
5
5
|
Testim failed installing the package ${t||""} due to insufficient permissions.
|
|
@@ -13,7 +13,7 @@ Testim had missing write access to ${r||e}
|
|
|
13
13
|
- installed where chromedriver expects it (see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver#requirements).
|
|
14
14
|
- exists in your PATH environment variables.
|
|
15
15
|
3. Try adding --chrome-binary-location flag to Testim CLI specifying the exact location of chrome binary in your computer (e.g on Windows "C:/Program Files/Google/Chrome/Application/chrome.exe").
|
|
16
|
-
4. You can always use a standalone Selenium grid and providing it's details with the --host and --port flags (see https://www.npmjs.com/package/selenium-standalone)`)),n.fail(a),i}}async function Nw(){let s=`${Nr}/extension/sessionPlayer_LATEST_RELEASE`;return(await Ut(s)).body.toString("utf8")}async function Mw(s,e){if(!We(s)||We(s)&&e||Oe)return s;let t=await Nw();return`${s}-${t}`}function Oc(){let s=mt();return Qr.resolve(s,"testim-bin")}function Uw(){let s=Oc();return Qr.resolve(s,"sessionPlayer.zip")}async function xm(s,e,t=!1){try{return await lo(s,e),await st(e,Oc())}catch(r){if(t)throw r;return await xm(s,e,!0)}}async function wr(s,e){Co.info("prepare player",{location:s,canary:e});let t=Uw();return gt(async()=>{let r=await Mw(s,e);return await xm(r,t),{}},"preparePlayer",Rm,[s,e,t])()}var Em,Sm,Qr,Im,Co,Rm,Cc,vm,Zr=T(()=>{"use strict";Em=E(require("ms")),Sm=E(require("fs")),Qr=E(require("path"));le();jt();Im=require("serialize-error");$();Sc();z();B();Co=A("prepare runner and testim start"),Rm=(0,Em.default)("0.5 day"),Cc=16,vm=`The size of the custom extension is more than ${Cc}MB`});function Fw(){let s=en.type().toLowerCase();return s==="darwin"?en.arch()==="arm"?"mac_arm":"mac":s==="windows_nt"?en.arch()==="x64"?"win64":"win32":"linux"}async function ko(){let s=Fw(),e="https://storage.googleapis.com/chromium-browser-snapshots",t={linux:"Linux_x64",mac:"Mac",mac_arm:"Mac_Arm",win32:"Win",win64:"Win_x64"};if(!(s in t))throw new C(`Unsupported platform: ${s}`);let r=parseInt(tn,10)>591479?"chrome-win":"chrome-win32",n={linux:"chrome-linux",mac:"chrome-mac",mac_arm:"chrome-mac",win32:r,win64:r},o={linux:"chrome",mac:"Chromium.app/Contents/MacOS/Chromium",mac_arm:"Chromium.app/Contents/MacOS/Chromium",win32:"chrome.exe",win64:"chrome.exe"},i=`${e}/${t[s]}/${tn}/${n[s]}.zip`,a=Po.join(_c,n[s]),l=`${a}.zip`,c=Po.join(a,o[s]);if(await ge(c))return c;if(!await ge(l)){let m=(0,Lc.default)("Downloading Chromium").start();try{await Am.promises.mkdir(_c),await Je(i,l)}catch(u){let f=`Failed to download Chromium: ${u.message}`;throw m.fail(f),new Error(f)}m.succeed()}let d=(0,Lc.default)("Extracting Chromium").start();try{await st(l,_c)}catch(m){let u=`Failed to extract Chromium: ${m.message}`;throw d.fail(u),new Error(u)}return d.succeed(),c}var Am,en,Po,Lc,tn,_c,Dc=T(()=>{"use strict";Am=E(require("fs")),en=E(require("os")),Po=E(require("path")),Lc=E(require("ora"));z();B();tn="1000968",_c=Po.join(Bt,`chrome-${tn}`)});async function Pm(s,e){return vr=s,Fc=e,await Nc()}function km(s,e){vr=e.projectId,Fc=e.token,rn=e.userAccessKey,nt=s.token,nn=Bc(nt),on=s.refreshToken,Mc=s.ngrokToken,Uc=s.isNgrokWhitelisted}function Bw(s=vr,e=Fc){return gt(()=>(sn.info("request to get cli token from server"),Ge({url:`${me}/auth/token`,body:{projectId:s,token:e}})),"getTokenV3",Cm*10,{projectId:s,token:e})()}async function jw(){sn.info("request to refresh JWT cli token from server");let s=await Ge({url:`${me}/auth/refreshToken`,body:{token:nt,refreshToken:on}});return nt=s.token,nn=Bc(nt),s.refreshToken&&(on=s.refreshToken),nt}async function Nc(){try{let s=await Bw();return sn.info("successfully get cli token from server"),nt=s.token,nn=Bc(nt),on=s.refreshToken,Mc=s.ngrokToken,Uc=s.isNgrokWhitelisted,nt}catch(s){throw s.message.includes("Unauthorized")?new C("Error trying to retrieve CLI token. Your CLI token and project might not match. Please make sure to pass `--project` and `--token` that match to each other or make sure they match in your ~/.testim file."):(sn.error(`While trying to retrieve CLI token. caught error: ${s}`,{projectId:vr}),new C(`While trying to retrieve CLI token, caught error: ${s}`))}}function Bc(s){return require("jsonwebtoken").decode(s).exp*1e3}async function Zt(){if(!nn)return Nc();if(nn<Date.now()+4*Cm)try{return await jw()}catch(s){return sn.error("failed to refresh token, executing fallback",s),Nc()}return nt}function Oo(){return on}function $t(){return nt?{uid:require("jsonwebtoken").decode(nt).id,ngrokToken:Mc,isNgrokWhitelisted:Uc}:{}}async function _o(){if(!rn||!vr)return;if(await jc({userAccessKey:rn,projectId:vr}))return rn;let e=`user access key "${rn}" is invalid for project "${vr}"`;throw new C(e)}var sn,nt,nn,on,Mc,Uc,vr,Fc,rn,Cm,Ct=T(()=>{"use strict";le();Ke();jt();z();$();he();sn=A("testim-custom-token"),vr=null,Fc=null,Cm=5*60*1e3});var Om={};G(Om,{isCi:()=>es});var es,Lo=T(()=>{"use strict";es=Boolean(process.env.CI||process.env.CONTINUOUS_INTEGRATION||process.env.BUILD_NUMBER||process.env.RUN_ID||!1)});var Ae={};G(Ae,{addTestRetry:()=>pl,clearTestResult:()=>cl,deleteCloudflareTunnel:()=>gl,fetchLambdatestConfig:()=>ol,forceUpdateCloudflareTunnelRoutes:()=>fl,getAllGrids:()=>nl,getAppDetails:()=>Yc,getApplitoolsIntegrationData:()=>dl,getBrowserStackSessionMetaData:()=>Yw,getCloudflareTunnel:()=>ml,getEditorUrl:()=>zw,getGridById:()=>No,getGridByName:()=>rl,getHybridGridProvider:()=>tl,getLabFeaturesByProjectId:()=>il,getMobileDevicesFromGrid:()=>yl,getRealData:()=>al,getS3Artifact:()=>cn,getS3ArtifactText:()=>Wc,getSuiteTestList:()=>Jc,getTestPlan:()=>qw,getTestPlanTestList:()=>Kc,getTestResults:()=>Sr,getUsageForCurrentBillingPeriod:()=>Xc,initializeUserWithAuth:()=>sl,isTestResultCompleted:()=>Qc,keepAliveCompanySlots:()=>El,keepAliveGrid:()=>Zc,loadSfdcCredential:()=>Vc,loadTest:()=>Gc,releaseCompanySlot:()=>wl,releaseGridSlot:()=>el,reportExecutionFinished:()=>Do,reportExecutionStarted:()=>zc,requestCompanySlot:()=>Tl,saveRemoteStep:()=>ll,saveTestPlanResult:()=>Hc,updateCompanySlot:()=>vl,updateExecutionTests:()=>qc,updateRemoteRunFailure:()=>hl,updateTestDataArtifact:()=>Uo,updateTestResult:()=>Mo,updateTestStatus:()=>Er,uploadAppToGrid:()=>bl,uploadRunDataArtifact:()=>ul,validateUserAccessKey:()=>jc});async function ts(){let s=await Zt();if(!s)throw new Error("Failed to get token from server");return{Authorization:`Bearer ${s}`}}async function De({url:s,body:e,headers:t={},timeout:r,retry:n}){let o=await ts(),i=Object.assign({},t,o);return Ge({url:`${me}${s||""}`,body:e,headers:i,timeout:r,retry:n})}async function Vw(s,e,t,r={},n=void 0){let o=await ts(),i=Object.assign({},r,o);return await Ws(`${me}${s||""}`,e,t,i,n)}async function an(s,e){let t=await ts();return await nc(`${me}${s||""}`,e,t)}async function Gw(s,e){let t=await ts();return await $s(`${me}${s||""}`,e,t)}async function Hw(s,e){let t=await ts();return await Vs(`${me}${s||""}`,e||void 0,t)}async function Se(s,e,t,r){let n=await ts();return await Ee(`${me}${s||""}`,e||void 0,n,r,t)}function cn(s,e){return(0,Z.default)(()=>Se(`/storage${s}`,null,{isBinary:!0},e),{retries:ee,factor:1})}function Wc(s){return(0,Z.default)(()=>Hw(`/storage${s}`))}async function qw(s,e){let t=n=>n==null?[]:typeof n=="string"&&JSON.parse(n)||n;return(await(0,Z.default)(()=>Se("/testPlan",{projectId:s,name:e.join(",")}),{retries:ee,factor:1})).map(({testConfigIds:n,beforeAllLabels:o,testLabels:i,afterAllLabels:a,...l})=>Object.assign(l,{testConfigIds:t(n),beforeAllLabels:t(o),testLabels:t(i),afterAllLabels:t(a)}))}async function Vc({branch:s,projectId:e}){let t=await(0,Z.default)(()=>Se(`/branch/branchData/${s}`,{projectId:e}),{retries:ee,factor:1});return t==null?void 0:t.sfdcCredential}function Gc({testId:s,branch:e,projectId:t,skipSharedSteps:r=!1,useBranchMap:n=!0}){return(0,Z.default)(()=>Se(`/test/${s}`,{projectId:t,branch:e,skipSharedSteps:r,useBranchMap:n}),{retries:ee,factor:1})}function Hc(s,e,t){return(0,Z.default)(()=>De({url:"/testPlan/result",body:{projectId:s,testPlanId:e,result:t}}),{retries:ee,factor:1})}function Er(s,e,t,r,n,o,i=ee){return(0,Z.default)(()=>an("/result/run/test",{runId:e,testId:t,resultId:r,status:n,projectId:s,runnerVersion:$w,...o}),{retries:i,factor:1})}function qc(s,e,t,r,n,o,i,a){return(0,Z.default)(()=>an("/result/run/tests",{runId:s,runnerStatuses:e,status:t,reason:r,success:n,startTime:o,endTime:i,projectId:a}),{retries:ee,factor:1})}async function zc({executionId:s,projectId:e,labels:t,startTime:r,executions:n,config:o,resultLabels:i,remoteRunId:a,localRunUserId:l,isLocalRun:c,intersections:d}){let{isCi:m}=await Promise.resolve().then(()=>(Lo(),Om));return De({timeout:9e4,url:"/result/run",body:{runId:s,projectId:e,labels:t,startTime:r,execution:n,status:"RUNNING",config:o,resultLabels:i,remoteRunId:a,intersections:d,metadata:{isCiRun:m,localRunUserId:l,isLocalRun:c}},retry:3})}function Do(s,e,t,r,n={},o=void 0,i=void 0){let a=Date.now();return(0,Z.default)(()=>an("/result/run",{runId:e,projectId:t,endTime:a,status:s,success:r,tmsOptions:n,remoteRunId:o,resultExtraData:i}),{retries:ee,factor:1})}async function Kc(s,e,t,r,n){return(0,Z.default)(()=>De({url:"/testPlan/list",body:{projectId:s,names:e,planIds:t,branch:r,intersections:n},timeout:12e4}),{retries:ee,factor:1})}function Jc({projectId:s,labels:e,testIds:t,testNames:r,testConfigNames:n,suiteNames:o,suiteIds:i,branch:a,rerunFailedByRunId:l,testConfigIds:c,intersections:d}){return(0,Z.default)(()=>De({url:"/suite/v2/list",body:{projectId:s,labels:e,testIds:t,testNames:r,testConfigNames:n,suiteNames:o,suiteIds:i,branch:a,rerunFailedByRunId:l,testConfigIds:c,intersections:d}}),{retries:ee,factor:1})}async function Yc({appId:s,projectId:e}){try{return await(0,Z.default)(()=>Se(`/mobile-app/app/${s}?projectId=${e}`),{retries:ee,factor:1})}catch(t){Pt.error("failed getting application details",{appId:s,error:t});return}}async function Xc(s){try{return await(0,Z.default)(()=>Se(`/plan/project/${s}/usage-current-billing-period`),{retries:ee,factor:1})}catch(e){Pt.error("failed getting usage for current billing period",{projectId:s,error:e});return}}function Qc(s,e,t){return(0,Z.default)(()=>Se(`/result/${s}/isComplete`,{projectId:e,testRetryKey:t}),{retries:ee,factor:1})}function Sr(s,e,t,r){return(0,Z.default)(()=>Se(`/test/v2/${s}/result/${e}`,{projectId:t,branch:r}),{retries:ee,factor:1})}function Zc(s,e){return De({url:`/grid/keep-alive?reqId=${re()}`,body:{projectId:s,slots:e},timeout:1e4})}function el(s,e,t,r,n){return De({url:`/grid/release?reqId=${re()}`,body:{companyId:s,projectId:e,slotId:t,gridId:r,browser:n}})}function tl(s){return De({url:"/grid/hybrid/provider",body:s})}function rl(s,e,t,r,n){return(0,Z.default)(()=>Se("/grid/name",{companyId:s,projectId:e,name:t,browser:r,executionId:n,reqId:re()}),{retries:ee,factor:1})}function No(s,e,t,r,n){return(0,Z.default)(()=>Se(`/grid/${t}`,{companyId:s,projectId:e,browser:r,executionId:n,reqId:re()}),{retries:ee,factor:1})}async function sl({projectId:s,token:e,branchName:t,lightweightMode:r,localGrid:n,gridId:o,grid:i}){var a,l;try{return await(0,Z.default)(()=>Ge({url:`${me}/executions/initialize`,body:{projectId:s,token:e,branchName:t||"master",lightweightMode:r,localGrid:n,gridId:o,gridName:i}}),{retries:ee,factor:1})}catch(c){throw Pt.error("error initializing info from server",c),(a=c==null?void 0:c.message)!=null&&a.includes("Bad Request")?new C("Error trying to retrieve CLI token. Your CLI token and project might not match. Please make sure to pass `--project` and `--token` that match to each other or make sure they match in your ~/.testim file."):(l=c==null?void 0:c.code)!=null&&l.includes("ENOTFOUND")?new C("Due to network connectivity issues, Testim CLI has been unable to connect to the Testim backend."):c}}async function zw(){if(Ns)return{editorUrl:Ns};try{return await(0,Z.default)(()=>Se("/system-info/editor-url"),{retries:ee,onFailedAttempt:s=>{if(s.attemptNumber>=ee)throw s},factor:1})}catch{return Pt.error("cannot retrieve editor-url from server"),{editorUrl:"https://app.testim.io"}}}function nl(s){return(0,Z.default)(()=>Se("/grid",{companyId:s}),{retries:ee,factor:1})}function al(s,e,t){return(0,Z.default)(()=>Se(`/real-data/${e}?${t}&projectId=${s}`),{retries:ee,factor:1})}function Mo(s,e,t,r,n){return(0,Z.default)(()=>De({url:"/result/test",body:{projectId:s,resultId:e,testId:t,testResult:r,remoteRunId:n}}),{retries:ee,factor:1})}function cl(s,e,t,r){return(0,Z.default)(()=>De({url:"/result/test/clear",body:{projectId:s,resultId:e,testId:t,testResult:r}}),{retries:ee,factor:1})}function ll(s,e,t,r){return(0,Z.default)(()=>De({url:"/remoteStep",body:{projectId:s,resultId:e,stepId:t,remoteStep:r}}),{retries:ee,factor:1})}function Kw(s){return s.startsWith("/")?s:`/${s}`}function Jw(s,e,t){let r=Kw(s);return t&&(r=`/${t}${r}`),e&&(r=`/${e}${r}`),r}async function Lm(s,e,t,r,n,o="application/octet-stream"){let i=null;o==="application/json"&&(i=".json");let a=`${n}_${re()}${i||""}`,l=`${e}/${t}/${a}`,c=Jw(l,"test-result-artifacts",s),d=Buffer.from(_m.gzip(r,{level:3})),m={file:{fileName:a,buffer:d}};return await(0,Z.default)(()=>Vw(`/storage${c}`,{},m,{"X-Asset-Encoding":"gzip"}),{retries:ee,factor:1}),c}function pl({projectId:s,runId:e,testId:t,newResultId:r,originalTestResultId:n,previousTestResultId:o,testResult:i}){return(0,Z.default)(()=>De({url:"/result/test/retry",body:{projectId:s,newResultId:r,originalTestResultId:n,previousTestResultId:o,testId:t,runId:e,testResult:i}}),{retries:ee,factor:1})}async function dl(s){try{return await Se(`/integration/applitools/v3/connected?projectId=${s}`)}catch(e){return Pt.warn("could'nt get applitools integration data.",{err:e}),{}}}async function ml(s,e){try{return await an("/tunnel",{companyId:s,routes:e})}catch(t){return Pt.warn("could'nt get tunnel.",{err:t}),{}}}async function fl(s,e){try{return await De({url:`/tunnel/${e}`,body:{companyId:s}})}catch(t){Pt.warn("could'nt get tunnel.",{err:t});return}}async function gl(s,e){try{return await Gw(`/tunnel/${e}`,{companyId:s})}catch(t){Pt.warn("could'nt get tunnel.",{err:t});return}}function hl(s){return Ge({url:`${me}/result/remoteRunFailure`,body:s})}async function yl({projectId:s,projectType:e,gridId:t,companyId:r,selectors:n}){let o=`${Ww}/mobileDevices/${t}/${r}?projectType=${e}`;o=n?`${o}&selectors=${encodeURIComponent(n)}`:o;try{return await(0,Z.default)(()=>Se(o,{projectId:s}),{retries:ee,factor:1})}catch(i){return Pt.warn("could'nt get devices from headspin grid.",{err:i}),null}}async function bl({projectId:s,gridId:e,app:t,timeout:r}){return(0,Z.default)(()=>De({url:`/mobile-app/app/upload-to-grid?projectId=${s}&gridId=${e}`,body:t,timeout:r}),{retries:ee,factor:1})}async function Tl(s,e){return(0,Z.default)(()=>De({url:"/slot-management/request-slot",body:{companyId:s,projectId:e}}),{retries:ee,factor:1})}async function wl(s,e,t){return(0,Z.default)(()=>De({url:"/slot-management/release-slot",body:{companyId:s,projectId:e,slotId:t}}),{retries:ee,factor:1})}async function vl(s,e,t){return(0,Z.default)(()=>an("/slot-management/update-slot",{slotId:t.slotId,companyId:s,projectId:e,slot:t}),{retries:ee,factor:1})}function El(s,e,t){return De({url:`/slot-management/keep-alive?reqId=${re()}`,body:{slots:t,companyId:s,projectId:e},timeout:1e4})}async function Yw(s,e){return await Ee(`${Ms}/sessions/${s}`,void 0,{Authorization:`Basic ${Buffer.from(`${e.user}:${e.key}`).toString("base64")}`})}async function jc(s){try{return await Se("/v2/project/validateUserAccessKey",s),!0}catch(e){return Pt.error("error validating user access key",{error:e}),!1}}var er,_m,Z,$c,$w,Pt,ee,Ww,ol,il,ul,Uo,he=T(()=>{"use strict";er=E(require("lodash")),_m=E(require("pako"));B();le();ae();Ke();Ct();Z=E(require("p-retry")),$c=E(require("object-hash"));z();$();$w=dt(),Pt=A("testim service api"),ee=3,Ww="/grid";ol=async()=>(0,Z.default)(()=>Se("/grid/lt/config"),{retries:ee,factor:1}),il=async s=>(0,Z.default)(()=>Se(`/labFeature/v2/project/${s}`),{retries:ee,factor:1});ul=er.memoize(async(s,e,t,r)=>{if(!er.isEmpty(r))return await Lm(s,e,t,JSON.stringify(r),"test-run-data","application/json")},(s,e,t,r)=>`${(0,$c.default)(r)}:${e}:${t}`),Uo=er.memoize(async(s,e,t,r,n)=>!r||er.isEmpty(r)?void 0:await Lm(s,e,t,JSON.stringify((()=>{let i=er.clone(r);if(n!=null&&n.hiddenParams){let{hiddenParams:a}=n;(a||[]).forEach(l=>{i[l]&&Object.assign(i,{[l]:dc.HIDDEN_PARAM})})}return i})()),"test-test-data","application/json"),(s,e,t,r)=>`${(0,$c.default)(r)}:${e}:${t}`)});var tr={};G(tr,{getSessionPlayer:()=>se,options:()=>Il});var Fo,Il,Sl,se,Te=T(()=>{"use strict";Fo=require("path"),Il={playerPath:void 0},se=()=>{if(Sl)return Sl;let s=($e(),ye(je));s.log("getSessionPlayerRequire start");let{getSessionPlayerFolder:e}=(Zr(),ye(Zs)),t=e(),r=Il.playerPath?(0,Fo.resolve)(Il.playerPath,"src/background/sessionPlayerInit.ts"):(0,Fo.join)(t,"sessionPlayer.js"),n=require(r);return s.log("getSessionPlayerRequire end"),Sl=n,n}});function Zw(s){process.nextTick(()=>{if([Y.SELENIUM,Y.APPIUM].includes(s))try{(Te(),ye(tr)).getSessionPlayer()}catch{}})}async function ln(s){let{project:e,token:t,userAccessKey:r,lightweightMode:n,useLocalChromeDriver:o,useChromeLauncher:i,mode:a,gridId:l,grid:c}=s,d=Boolean(n==null?void 0:n.general),m=Boolean(o||i),u=d?Qw:Xw;M("before initializeUserWithAuth");let f=await gt(async()=>(Zw(a),await sl({projectId:e,token:t,branchName:s.branch,lightweightMode:n,localGrid:m,gridId:l,grid:c})),"initializeUserWithAuth",u,{project:e,token:t,branchName:s.branch,lightweightModeGeneral:d,localGrid:m,gridId:l,grid:c})();return M("after initializeUserWithAuth"),km(f.authData,{projectId:e,token:t,userAccessKey:r}),f}var Xw,Qw,Dm=T(()=>{"use strict";$e();he();jt();Ct();ae();Xw=1e3*60*5,Qw=1e3*60*60*10});async function Um(s){var r;let e=Promise.resolve();s.useLocalChromeDriver&&(s.chromeBinaryLocation=s.downloadBrowser?await ko():s.chromeBinaryLocation,e=Tr({projectId:s.project,userId:s.user},{chromeBinaryLocation:s.chromeBinaryLocation},Boolean((r=s.lightweightMode)==null?void 0:r.general)),s.useLocalChromeDriver=!0),!s.playerRequirePath&&s.mode!==Y.EXTENSION&&await wr(s.playerLocation,s.canary),s.mode===Y.EXTENSION&&!s.ext&&await kc(s.extensionLocation);let t;if(s.installCustomExtension){let n=Boolean(s.useLocalChromeDriver||s.useChromeLauncher);t=await Pc(s.installCustomExtension,n)}return await e,t}async function Fm(s){var i;ev.info("prepare MockNetwork",{location:s});let e=await cc(s),t=Buffer.isBuffer(e)?e:e.body;if(t.byteLength>Nm*1e6)throw new Error(`${Rl} exceeded ${Nm}MB`);let r;try{r=JSON.parse(t.toString("utf-8"))}catch(a){throw new Error(`${Rl} cannot be parsed.${Bo.EOL}${a}`)}let n=new Mm.default;if(!n.validate(vc,r)){let a=(i=n.errors)==null?void 0:i.map((l,c)=>`${++c}) ${l.dataPath} ${l.message}`).join(Bo.EOL);throw new Error(`${Rl} is malformed.${Bo.EOL}${a}`)}return r.entries}var Bo,Mm,Nm,Rl,ev,xl=T(()=>{"use strict";Bo=E(require("os"));B();qd();Zr();Mm=E(require("ajv"));ae();Dc();Dm();Nm=1,Rl="JSON file supplied to --mock-network-pattern",ev=($(),ye(Ya)).getLogger("prepare runner")});function jm(s,e=process){async function t(r){await ce(ie(Bm,async n=>n()),1e4).catch(()=>null),s(r)}e.on("uncaughtException",async r=>{un.error("Caught exception",{err:r}),console.log("Uncaught exception"),r.message&&console.log("Message =",r.message),r.reason&&console.log("Reason =",r.reason),await t(r)}),e.on("unhandledRejection",r=>{var n;if(un.fatal("Caught unhandled promise rejection",r),!((n=r==null?void 0:r.message)!=null&&n.includes("ENOTFOUND x-api.rollout.io")))throw r}),e.on("rejectionHandled",()=>{un.error("Caught rejection handled")}),e.once("SIGTERM",()=>{let r="Runner aborted - SIGTERM event",n=new Error(r);throw un.error(r),t(n),n}),e.once("SIGINT",()=>{let r="Runner aborted - SIGINT event",n=new Error(r);throw un.error(r),t(n),n}),e.once("exit",r=>{s(r)})}function rs(s){Bm.push(s)}var un,Bm,pn=T(()=>{"use strict";$();B();un=A("process-handler"),Bm=[]});var W,qm,iv,av,cv,Hm,$o,kl,N,fe=T(()=>{"use strict";W=E(require("rox-node"));$();B();le();qm=A("FeatureFlagsService"),iv=!Oe&&!0&&!nd,av=2e4,cv=60*60*24,Hm=["labs","disabled","enabled"],$o=class extends W.default.Variant{constructor(e="disabled"){super(e,Hm)}getValue(){let e=super.getValue();return Hm.includes(e)?e:(qm.warn('unexpected value for lab feature flag. Falling back to value "labs"',{featureFlagName:this.name,value:e}),"labs")}},kl=class{constructor(){this.flags={useNewWSCLI:new W.default.Flag,useSafariWebdriverVisibilityChecks:new W.default.Flag,useClickimVisibilityChecks:new W.default.Flag,runGetElementCodeInAut:new W.default.Flag,enableFrameSwitchOptimization:new W.default.Flag,maximumJsResultSize:new W.default.Configuration(2e3*1024),skipFileInputClicks:new W.default.Flag,errorMessageOnBadNetwork:new W.default.Flag(!0),warnOnBadNetwork:new W.default.Flag(!1),overrideAzureStorageUrl:new W.default.Flag,autoSaveDownloadFileFireFox:new W.default.Flag(!0),safariSelectOptionDispatchEventOnSelectElement:new W.default.Flag(!0),experimentalPreCodeCompilation:new W.default.Flag(!0),experimentalAsyncCustomCode:new W.default.Flag,useSameBrowserForMultiTests:new $o("labs"),highSpeedMode:new $o,usePortedHtml5DragDrop:new W.default.Flag,testNamesToBeforeSuiteHook:new W.default.Flag,addCustomCapabilities:new W.default.Variant("{}"),addCustomLTtunnelNTLMOptions:new W.default.Variant("{}"),LTNetworkCapabilities:new W.default.Flag,downloadToBase64:new W.default.Flag,publicGridURL:new W.default.Configuration("public-grid.testim.io"),allowAppFromDeviceRuns:new W.default.Flag(!0),unsupportedCapsFields:new W.default.Variant("[]"),dontFocusOnInit:new W.default.Flag,retryOnSeleniumHubError:new W.default.Flag,enableLambdaTestTunnelNTLM:new W.default.Flag,enableLambdaTestTunnelSkipUpgrade:new W.default.Flag,tdcHsPreventNetworkCapture:new W.default.Flag,headSpinTdcEnableFlagCapability:new W.default.Flag,enableBatchTDC:new W.default.Flag,enableBatchHeadSpin:new W.default.Flag,clearRunnerFileCache:new W.default.Flag,forceTurboModeIfNeeded:new W.default.Flag,redisSlotManager:new W.default.Flag,tunnelBinaryNewVersion:new W.default.Flag(!1),encryptedCredentials:new W.default.Flag,computePackagePathFromPackageJsonExports:new W.default.Flag,sendExtensionOnEdgeNonLinux:new W.default.Flag,enableAppium2pCloudy:new W.default.Flag,reuseCliPkgInstallFolder:new W.default.Flag},W.default.register("default",this.flags)}setProjectId(e){W.default.setCustomStringProperty("projectId",e)}setProjectType(e){W.default.setCustomStringProperty("projectType",e)}setCompanyProductType(e){W.default.setCustomStringProperty("productType",e)}setCompanyId(e){W.default.setCustomStringProperty("companyId",e)}setPlanType(e){W.default.setCustomStringProperty("planType",e)}setIsPOC(e){W.default.setCustomBooleanProperty("isPOC",e)}setIsStartUp(e){W.default.setCustomBooleanProperty("isStartUp",e)}setRunnerMode(e){W.default.setCustomStringProperty("runnerMode",e)}async fetch(){if(!iv)return;let e={fetchIntervalInSec:cv,disableNetworkFetch:!1};if(global.ProxyAgent){let t=new global.ProxyAgent(global.proxyUri);Object.assign(e,{httpsAgent:t,httpAgent:t})}return ce(W.default.setup(rd,e),av).catch(t=>qm.error("failed to get feature flag status",t))}},N=new kl});function Ol(s,e){let t=s.canary?"-master.zip":".zip",r=`${e?ad:Nr}/extension/testim-firefox-profile${t}`,n=`${e?cd:Nr}/extension/testim-headless${t}`;return{firefox:r,chrome:n,"edge-chromium":n}}function zm(s){let{chrome:e,firefox:t}=Ol(s,!1);return s.browser==="firefox"?t:s.browser==="chrome"?e:[e,t]}function Wo(s){let e=`${Nr}/extension/sessionPlayer`;return s.canary?`${e}-master`:e}var Vo=T(()=>{"use strict";le()});function Qm(s){Oe||(s!=null&&s.userId||(s={anonymousId:Xm}),Ym.identify(s))}function ht(s,e){return dn("ci",s,e)}function dn(s,e,t){if(Oe)return;let r=s?{userId:s}:{anonymousId:Xm};Ym.track(Object.assign(r,{event:e,properties:t}))}var Jm,Ym,Xm,ss=T(()=>{"use strict";le();Jm=E(require("analytics-node")),Ym=new Jm.default("sJOSIGKa5x5rJEGsaOlCjrgozAf7FnVY",{flushAt:1}),Xm=require("crypto").randomBytes(20).toString("hex")});function Zm(s){return s.start&&dn(null,"cli-start-command",{downloadBrowser:Boolean(s.downloadBrowser)}),!!(s.startV2||s.start||s.agent)}async function ef(s){let e=["playground-playwright","playground-puppeteer","playground-selenium"],t=!1,r=!1,n=!1,o=!1;if(s.start&&(o=!0),Number.isNaN(s.agentPort))throw new C("Agent port is not number");if(typeof s.agent=="string"&&e.some(a=>s.agent.includes(a))){let a=s.agent.split(",").map(l=>l.trim());a.includes("playground-playwright")&&(t=!0),a.includes("playground-puppeteer")&&(r=!0),a.includes("playground-selenium")&&(n=!0)}let i=Wo(s);return console.log("Start Testim CLI on Agent mode"),{project:s.project,token:s.token,agentMode:!0,agentPort:s.agentPort,agentBind:s.agentBind,openEditor:s.openEditor,installPlaygroundPlaywrightDeps:t,installPlaygroundPuppeteerDeps:r,installPlaygroundSeleniumDeps:n,startTestimBrowser:o,ext:s.ext,extensionPath:s.extensionPath,playerLocation:s.playerPath||i,canary:s.canary,playerPath:s.playerPath,playerRequirePath:s.playerRequirePath,downloadBrowser:Boolean(s.downloadBrowser)}}var tf=T(()=>{"use strict";Vo();ss();z()});var rf,uv,pv,_l,sf=T(()=>{"use strict";rf="TST_CREDS",uv=["username","password"],pv="$encrypted",_l={get proxyPlaceholder(){return new Proxy({},{get(s,e){let t={};for(let r of uv)t[r]={[pv]:`${e}.${r}`};return t}})},containsEncryptedCredentials(s){return s.includes(rf)},injectProxyCredentialsStoreToGlobal(){Object.assign(globalThis,{[rf]:this.proxyPlaceholder})}}});function Ho(s){let{platform:e}=process;e==="win32"?(0,Go.exec)(`start chrome ${s}`):e==="darwin"?(0,Go.exec)(`open -a "Google Chrome" ${s}`):e==="linux"&&(0,Go.exec)(`google-chrome ${s}`)}var Go,Ll=T(()=>{"use strict";Go=require("child_process")});var fn={};G(fn,{doLogin:()=>Ul,getProjectId:()=>dv,getToken:()=>mv});async function dv(){return af("projectId")}async function mv(){return af("token")}function of(s,e){return Promise.race([s,oe(e).then(()=>{throw new ne("timeout")})])}async function fv(){let s=(await import("express")).default(),e=async function(){return of(new Promise(n=>{s.get("/loginInfo",(o,i)=>{n(JSON.parse(Buffer.from(o.query.info,"base64").toString())),i.status(200).end()})}),6e4).catch(()=>null)}();await new Promise((r,n)=>{let o=s.listen(42543,i=>{i&&n(i),r(o.address().port)})});try{let{getEditorUrl:r}=await Promise.resolve().then(()=>(he(),Ae)),{editorUrl:n}=await r();Ho(`${n}/#/new-test`)}catch{console.log("Unable to open Testim automatically - please manually go to https://app.testim.io")}return await e}async function Ul({overwriteExisting:s=!0,projects:e=null}={}){let t=Dl.homedir(),r=Nl.join(t,".testim");if(await ge(r)&&!s)return;let o={},[{default:i},{default:a}]=await Promise.all([import("prompts"),import("ora")]),l=a("Getting credentials from Tricentis Testim extension ...").start();if(e||(e=await of(fv(),62e3).catch(()=>null)),e!=null&&e.token){o.token=e.token,o.projectId=e.projectId,l.succeed(),await nf(r,o);return}if(e!=null&&e.length){l.succeed();let c=e.length===1?{project:e[0]}:await i({type:"select",name:"project",message:"There are multiple projects associated with your user account. Please select the project you would like to connect to:",choices:e.map(d=>({title:d.name,value:d}))});o.token=c.project.ci.token,o.projectId=c.project.id,await nf(r,o);return}l.fail(),console.log("Error getting credentials - please pass `--token` and `--project` to the CLI or try again")}async function nf(s,e){await Ml.promises.writeFile(s,qo.stringify(e)),console.log(`Testim credentials saved in '${s}'`)}async function af(s){let e=Dl.homedir(),t=Nl.join(e,".testim"),r=await ge(t),n={};if(r)try{n=qo.parse((await Ml.promises.readFile(t)).toString())}catch{}return n||={},n[s]}var Dl,Nl,qo,Ml,ns=T(()=>{"use strict";Dl=E(require("os")),Nl=E(require("path")),qo=E(require("yaml"));B();Ml=require("fs");z();Ll()});var ff={};G(ff,{process:()=>Ev});var Bl,uf,zo,pf,Vt,Me,df,gv,Ne,Wl,hv,yv,cf,mf,bv,jl,$l,Vl,Fl,kt,Tv,p,wv,vv,lf,Ev,gf=T(()=>{"use strict";Bl=E(require("ms")),uf=E(require("chalk")),zo=E(require("fs")),pf=E(require("url")),Vt=E(require("lodash")),Me=E(require("path"));B();Vo();tf();jt();df=require("commander");ae();z();Dr();B();fe();sf();gv=s=>s.replace(/-([a-z])/g,(e,t)=>t.toUpperCase()),Ne=(s,e)=>(e.push(s),e),Wl=new df.Command,hv=s=>s.split(","),yv=(s,e)=>!s||s.length===0?e:s,cf=["enable-heavy-ad-intervention","heavy-ad-privacy-mitigations","use-fake-device-for-media-stream","use-fake-ui-for-media-stream","proxy-server"],mf=()=>{function s(g){return g.includes("-h, --help")}function e(g){return g.includes("--params [params-json-string]")}function t(g){return g.includes("--ext")||g.includes("--extension-path")}function r(g){return g.includes("--player-path")||g.includes("--player-require-path")}function n(g){return g.includes("--executionId")||g.includes("--source")||g.includes("--resultId")||g.includes("--remoteRunId")||g.includes("--schedulerId")}function o(g){return g.includes("--get-browser-timeout")||g.includes("--get-browser-retries")||g.includes("--get-session-timeout")||g.includes("--get-session-retries")||g.includes("--driver-request-timeout")||g.includes("--driver-request-retries")}function i(g){return g.includes("--user")}function a(g){return g.includes("shouldMonitorPerformance")}function l(g){return g.includes("--save-rca-locally")}function c(g){return g.includes("--exit-code-ignore-failing-tests")}function d(g){return g.includes("--high-speed")}function m(g){return g.includes("--urls")}function u(g){return g.includes("--test-start-timeout")}function f(g){return g.includes("--install-lazy-deps")}function h(g){return g.includes("--print-final-caps")||g.includes("--print-grids")}Wl.help(g=>g.split(`
|
|
16
|
+
4. You can always use a standalone Selenium grid and providing it's details with the --host and --port flags (see https://www.npmjs.com/package/selenium-standalone)`)),n.fail(a),i}}async function Nw(){let s=`${Nr}/extension/sessionPlayer_LATEST_RELEASE`;return(await Ut(s)).body.toString("utf8")}async function Mw(s,e){if(!We(s)||We(s)&&e||Oe)return s;let t=await Nw();return`${s}-${t}`}function Oc(){let s=mt();return Qr.resolve(s,"testim-bin")}function Uw(){let s=Oc();return Qr.resolve(s,"sessionPlayer.zip")}async function xm(s,e,t=!1){try{return await lo(s,e),await st(e,Oc())}catch(r){if(t)throw r;return await xm(s,e,!0)}}async function wr(s,e){Co.info("prepare player",{location:s,canary:e});let t=Uw();return gt(async()=>{let r=await Mw(s,e);return await xm(r,t),{}},"preparePlayer",Rm,[s,e,t])()}var Em,Sm,Qr,Im,Co,Rm,Cc,vm,Zr=T(()=>{"use strict";Em=E(require("ms")),Sm=E(require("fs")),Qr=E(require("path"));le();jt();Im=require("serialize-error");$();Sc();z();B();Co=A("prepare runner and testim start"),Rm=(0,Em.default)("0.5 day"),Cc=16,vm=`The size of the custom extension is more than ${Cc}MB`});function Fw(){let s=en.type().toLowerCase();return s==="darwin"?en.arch()==="arm"?"mac_arm":"mac":s==="windows_nt"?en.arch()==="x64"?"win64":"win32":"linux"}async function ko(){let s=Fw(),e="https://storage.googleapis.com/chromium-browser-snapshots",t={linux:"Linux_x64",mac:"Mac",mac_arm:"Mac_Arm",win32:"Win",win64:"Win_x64"};if(!(s in t))throw new C(`Unsupported platform: ${s}`);let r=parseInt(tn,10)>591479?"chrome-win":"chrome-win32",n={linux:"chrome-linux",mac:"chrome-mac",mac_arm:"chrome-mac",win32:r,win64:r},o={linux:"chrome",mac:"Chromium.app/Contents/MacOS/Chromium",mac_arm:"Chromium.app/Contents/MacOS/Chromium",win32:"chrome.exe",win64:"chrome.exe"},i=`${e}/${t[s]}/${tn}/${n[s]}.zip`,a=Po.join(_c,n[s]),l=`${a}.zip`,c=Po.join(a,o[s]);if(await ge(c))return c;if(!await ge(l)){let m=(0,Lc.default)("Downloading Chromium").start();try{await Am.promises.mkdir(_c),await Je(i,l)}catch(u){let f=`Failed to download Chromium: ${u.message}`;throw m.fail(f),new Error(f)}m.succeed()}let d=(0,Lc.default)("Extracting Chromium").start();try{await st(l,_c)}catch(m){let u=`Failed to extract Chromium: ${m.message}`;throw d.fail(u),new Error(u)}return d.succeed(),c}var Am,en,Po,Lc,tn,_c,Dc=T(()=>{"use strict";Am=E(require("fs")),en=E(require("os")),Po=E(require("path")),Lc=E(require("ora"));z();B();tn="1000968",_c=Po.join(Bt,`chrome-${tn}`)});async function Pm(s,e){return vr=s,Fc=e,await Nc()}function km(s,e){vr=e.projectId,Fc=e.token,rn=e.userAccessKey,nt=s.token,nn=Bc(nt),on=s.refreshToken,Mc=s.ngrokToken,Uc=s.isNgrokWhitelisted}function Bw(s=vr,e=Fc){return gt(()=>(sn.info("request to get cli token from server"),Ge({url:`${me}/auth/token`,body:{projectId:s,token:e}})),"getTokenV3",Cm*10,{projectId:s,token:e})()}async function jw(){sn.info("request to refresh JWT cli token from server");let s=await Ge({url:`${me}/auth/refreshToken`,body:{token:nt,refreshToken:on}});return nt=s.token,nn=Bc(nt),s.refreshToken&&(on=s.refreshToken),nt}async function Nc(){try{let s=await Bw();return sn.info("successfully get cli token from server"),nt=s.token,nn=Bc(nt),on=s.refreshToken,Mc=s.ngrokToken,Uc=s.isNgrokWhitelisted,nt}catch(s){throw s.message.includes("Unauthorized")?new C("Error trying to retrieve CLI token. Your CLI token and project might not match. Please make sure to pass `--project` and `--token` that match to each other or make sure they match in your ~/.testim file."):(sn.error(`While trying to retrieve CLI token. caught error: ${s}`,{projectId:vr}),new C(`While trying to retrieve CLI token, caught error: ${s}`))}}function Bc(s){return require("jsonwebtoken").decode(s).exp*1e3}async function Zt(){if(!nn)return Nc();if(nn<Date.now()+4*Cm)try{return await jw()}catch(s){return sn.error("failed to refresh token, executing fallback",s),Nc()}return nt}function Oo(){return on}function $t(){return nt?{uid:require("jsonwebtoken").decode(nt).id,ngrokToken:Mc,isNgrokWhitelisted:Uc}:{}}async function _o(){if(!rn||!vr)return;if(await jc({userAccessKey:rn,projectId:vr}))return rn;let e=`user access key "${rn}" is invalid for project "${vr}"`;throw new C(e)}var sn,nt,nn,on,Mc,Uc,vr,Fc,rn,Cm,Ct=T(()=>{"use strict";le();Ke();jt();z();$();he();sn=A("testim-custom-token"),vr=null,Fc=null,Cm=5*60*1e3});var Om={};G(Om,{isCi:()=>es});var es,Lo=T(()=>{"use strict";es=Boolean(process.env.CI||process.env.CONTINUOUS_INTEGRATION||process.env.BUILD_NUMBER||process.env.RUN_ID||!1)});var Ae={};G(Ae,{addTestRetry:()=>pl,clearTestResult:()=>cl,deleteCloudflareTunnel:()=>gl,fetchLambdatestConfig:()=>ol,forceUpdateCloudflareTunnelRoutes:()=>fl,getAllGrids:()=>nl,getAppDetails:()=>Yc,getApplitoolsIntegrationData:()=>dl,getBrowserStackSessionMetaData:()=>Yw,getCloudflareTunnel:()=>ml,getEditorUrl:()=>zw,getGridById:()=>No,getGridByName:()=>rl,getHybridGridProvider:()=>tl,getLabFeaturesByProjectId:()=>il,getMobileDevicesFromGrid:()=>yl,getRealData:()=>al,getS3Artifact:()=>cn,getS3ArtifactText:()=>Wc,getSuiteTestList:()=>Jc,getTestPlan:()=>qw,getTestPlanTestList:()=>Kc,getTestResults:()=>Sr,getUsageForCurrentBillingPeriod:()=>Xc,initializeUserWithAuth:()=>sl,isTestResultCompleted:()=>Qc,keepAliveCompanySlots:()=>El,keepAliveGrid:()=>Zc,loadSfdcCredential:()=>Vc,loadTest:()=>Gc,releaseCompanySlot:()=>wl,releaseGridSlot:()=>el,reportExecutionFinished:()=>Do,reportExecutionStarted:()=>zc,requestCompanySlot:()=>Tl,saveRemoteStep:()=>ll,saveTestPlanResult:()=>Hc,updateCompanySlot:()=>vl,updateExecutionTests:()=>qc,updateRemoteRunFailure:()=>hl,updateTestDataArtifact:()=>Uo,updateTestResult:()=>Mo,updateTestStatus:()=>Er,uploadAppToGrid:()=>bl,uploadRunDataArtifact:()=>ul,validateUserAccessKey:()=>jc});async function ts(){let s=await Zt();if(!s)throw new Error("Failed to get token from server");return{Authorization:`Bearer ${s}`}}async function De({url:s,body:e,headers:t={},timeout:r,retry:n}){let o=await ts(),i=Object.assign({},t,o);return Ge({url:`${me}${s||""}`,body:e,headers:i,timeout:r,retry:n})}async function Vw(s,e,t,r={},n=void 0){let o=await ts(),i=Object.assign({},r,o);return await Ws(`${me}${s||""}`,e,t,i,n)}async function an(s,e){let t=await ts();return await nc(`${me}${s||""}`,e,t)}async function Gw(s,e){let t=await ts();return await $s(`${me}${s||""}`,e,t)}async function Hw(s,e){let t=await ts();return await Vs(`${me}${s||""}`,e||void 0,t)}async function Se(s,e,t,r){let n=await ts();return await Ee(`${me}${s||""}`,e||void 0,n,r,t)}function cn(s,e){return(0,Z.default)(()=>Se(`/storage${s}`,null,{isBinary:!0},e),{retries:ee,factor:1})}function Wc(s){return(0,Z.default)(()=>Hw(`/storage${s}`))}async function qw(s,e){let t=n=>n==null?[]:typeof n=="string"&&JSON.parse(n)||n;return(await(0,Z.default)(()=>Se("/testPlan",{projectId:s,name:e.join(",")}),{retries:ee,factor:1})).map(({testConfigIds:n,beforeAllLabels:o,testLabels:i,afterAllLabels:a,...l})=>Object.assign(l,{testConfigIds:t(n),beforeAllLabels:t(o),testLabels:t(i),afterAllLabels:t(a)}))}async function Vc({branch:s,projectId:e}){let t=await(0,Z.default)(()=>Se(`/branch/branchData/${s}`,{projectId:e}),{retries:ee,factor:1});return t==null?void 0:t.sfdcCredential}function Gc({testId:s,branch:e,projectId:t,skipSharedSteps:r=!1,useBranchMap:n=!0}){return(0,Z.default)(()=>Se(`/test/${s}`,{projectId:t,branch:e,skipSharedSteps:r,useBranchMap:n}),{retries:ee,factor:1})}function Hc(s,e,t){return(0,Z.default)(()=>De({url:"/testPlan/result",body:{projectId:s,testPlanId:e,result:t}}),{retries:ee,factor:1})}function Er(s,e,t,r,n,o,i=ee){return(0,Z.default)(()=>an("/result/run/test",{runId:e,testId:t,resultId:r,status:n,projectId:s,runnerVersion:$w,...o}),{retries:i,factor:1})}function qc(s,e,t,r,n,o,i,a){return(0,Z.default)(()=>an("/result/run/tests",{runId:s,runnerStatuses:e,status:t,reason:r,success:n,startTime:o,endTime:i,projectId:a}),{retries:ee,factor:1})}async function zc({executionId:s,projectId:e,labels:t,startTime:r,executions:n,config:o,resultLabels:i,remoteRunId:a,localRunUserId:l,isLocalRun:c,intersections:d}){let{isCi:m}=await Promise.resolve().then(()=>(Lo(),Om));return De({timeout:9e4,url:"/result/run",body:{runId:s,projectId:e,labels:t,startTime:r,execution:n,status:"RUNNING",config:o,resultLabels:i,remoteRunId:a,intersections:d,metadata:{isCiRun:m,localRunUserId:l,isLocalRun:c}},retry:3})}function Do(s,e,t,r,n={},o=void 0,i=void 0){let a=Date.now();return(0,Z.default)(()=>an("/result/run",{runId:e,projectId:t,endTime:a,status:s,success:r,tmsOptions:n,remoteRunId:o,resultExtraData:i}),{retries:ee,factor:1})}async function Kc(s,e,t,r,n){return(0,Z.default)(()=>De({url:"/testPlan/list",body:{projectId:s,names:e,planIds:t,branch:r,intersections:n},timeout:12e4}),{retries:ee,factor:1})}function Jc({projectId:s,labels:e,testIds:t,testNames:r,testConfigNames:n,suiteNames:o,suiteIds:i,branch:a,rerunFailedByRunId:l,testConfigIds:c,intersections:d}){return(0,Z.default)(()=>De({url:"/suite/v2/list",body:{projectId:s,labels:e,testIds:t,testNames:r,testConfigNames:n,suiteNames:o,suiteIds:i,branch:a,rerunFailedByRunId:l,testConfigIds:c,intersections:d}}),{retries:ee,factor:1})}async function Yc({appId:s,projectId:e}){try{return await(0,Z.default)(()=>Se(`/mobile-app/app/${s}?projectId=${e}`),{retries:ee,factor:1})}catch(t){Pt.error("failed getting application details",{appId:s,error:t});return}}async function Xc(s){try{return await(0,Z.default)(()=>Se(`/plan/project/${s}/usage-current-billing-period`),{retries:ee,factor:1})}catch(e){Pt.error("failed getting usage for current billing period",{projectId:s,error:e});return}}function Qc(s,e,t){return(0,Z.default)(()=>Se(`/result/${s}/isComplete`,{projectId:e,testRetryKey:t}),{retries:ee,factor:1})}function Sr(s,e,t,r){return(0,Z.default)(()=>Se(`/test/v2/${s}/result/${e}`,{projectId:t,branch:r}),{retries:ee,factor:1})}function Zc(s,e){return De({url:`/grid/keep-alive?reqId=${re()}`,body:{projectId:s,slots:e},timeout:1e4})}function el(s,e,t,r,n){return De({url:`/grid/release?reqId=${re()}`,body:{companyId:s,projectId:e,slotId:t,gridId:r,browser:n}})}function tl(s){return De({url:"/grid/hybrid/provider",body:s})}function rl(s,e,t,r,n){return(0,Z.default)(()=>Se("/grid/name",{companyId:s,projectId:e,name:t,browser:r,executionId:n,reqId:re()}),{retries:ee,factor:1})}function No(s,e,t,r,n){return(0,Z.default)(()=>Se(`/grid/${t}`,{companyId:s,projectId:e,browser:r,executionId:n,reqId:re()}),{retries:ee,factor:1})}async function sl({projectId:s,token:e,branchName:t,lightweightMode:r,localGrid:n,gridId:o,grid:i}){var a,l;try{return await(0,Z.default)(()=>Ge({url:`${me}/executions/initialize`,body:{projectId:s,token:e,branchName:t||"master",lightweightMode:r,localGrid:n,gridId:o,gridName:i}}),{retries:ee,factor:1})}catch(c){throw Pt.error("error initializing info from server",c),(a=c==null?void 0:c.message)!=null&&a.includes("Bad Request")?new C("Error trying to retrieve CLI token. Your CLI token and project might not match. Please make sure to pass `--project` and `--token` that match to each other or make sure they match in your ~/.testim file."):(l=c==null?void 0:c.code)!=null&&l.includes("ENOTFOUND")?new C("Due to network connectivity issues, Testim CLI has been unable to connect to the Testim backend."):c}}async function zw(){if(Ns)return{editorUrl:Ns};try{return await(0,Z.default)(()=>Se("/system-info/editor-url"),{retries:ee,onFailedAttempt:s=>{if(s.attemptNumber>=ee)throw s},factor:1})}catch{return Pt.error("cannot retrieve editor-url from server"),{editorUrl:"https://app.testim.io"}}}function nl(s){return(0,Z.default)(()=>Se("/grid",{companyId:s}),{retries:ee,factor:1})}function al(s,e,t){return(0,Z.default)(()=>Se(`/real-data/${e}?${t}&projectId=${s}`),{retries:ee,factor:1})}function Mo(s,e,t,r,n){return(0,Z.default)(()=>De({url:"/result/test",body:{projectId:s,resultId:e,testId:t,testResult:r,remoteRunId:n}}),{retries:ee,factor:1})}function cl(s,e,t,r){return(0,Z.default)(()=>De({url:"/result/test/clear",body:{projectId:s,resultId:e,testId:t,testResult:r}}),{retries:ee,factor:1})}function ll(s,e,t,r){return(0,Z.default)(()=>De({url:"/remoteStep",body:{projectId:s,resultId:e,stepId:t,remoteStep:r}}),{retries:ee,factor:1})}function Kw(s){return s.startsWith("/")?s:`/${s}`}function Jw(s,e,t){let r=Kw(s);return t&&(r=`/${t}${r}`),e&&(r=`/${e}${r}`),r}async function Lm(s,e,t,r,n,o="application/octet-stream"){let i=null;o==="application/json"&&(i=".json");let a=`${n}_${re()}${i||""}`,l=`${e}/${t}/${a}`,c=Jw(l,"test-result-artifacts",s),d=Buffer.from(_m.gzip(r,{level:3})),m={file:{fileName:a,buffer:d}};return await(0,Z.default)(()=>Vw(`/storage${c}`,{},m,{"X-Asset-Encoding":"gzip"}),{retries:ee,factor:1}),c}function pl({projectId:s,runId:e,testId:t,newResultId:r,originalTestResultId:n,previousTestResultId:o,testResult:i}){return(0,Z.default)(()=>De({url:"/result/test/retry",body:{projectId:s,newResultId:r,originalTestResultId:n,previousTestResultId:o,testId:t,runId:e,testResult:i}}),{retries:ee,factor:1})}async function dl(s){try{return await Se(`/integration/applitools/v3/connected?projectId=${s}`)}catch(e){return Pt.warn("could'nt get applitools integration data.",{err:e}),{}}}async function ml(s,e){try{return await an("/tunnel",{companyId:s,routes:e})}catch(t){return Pt.warn("could'nt get tunnel.",{err:t}),{}}}async function fl(s,e){try{return await De({url:`/tunnel/${e}`,body:{companyId:s}})}catch(t){Pt.warn("could'nt get tunnel.",{err:t});return}}async function gl(s,e){try{return await Gw(`/tunnel/${e}`,{companyId:s})}catch(t){Pt.warn("could'nt get tunnel.",{err:t});return}}function hl(s){return Ge({url:`${me}/result/remoteRunFailure`,body:s})}async function yl({projectId:s,projectType:e,gridId:t,companyId:r,selectors:n}){let o=`${Ww}/mobileDevices/${t}/${r}?projectType=${e}`;o=n?`${o}&selectors=${encodeURIComponent(n)}`:o;try{return await(0,Z.default)(()=>Se(o,{projectId:s}),{retries:ee,factor:1})}catch(i){return Pt.warn("could'nt get devices from headspin grid.",{err:i}),null}}async function bl({projectId:s,gridId:e,app:t,timeout:r}){return(0,Z.default)(()=>De({url:`/mobile-app/app/upload-to-grid?projectId=${s}&gridId=${e}`,body:t,timeout:r}),{retries:ee,factor:1})}async function Tl(s,e){return(0,Z.default)(()=>De({url:"/slot-management/request-slot",body:{companyId:s,projectId:e}}),{retries:ee,factor:1})}async function wl(s,e,t){return(0,Z.default)(()=>De({url:"/slot-management/release-slot",body:{companyId:s,projectId:e,slotId:t}}),{retries:ee,factor:1})}async function vl(s,e,t){return(0,Z.default)(()=>an("/slot-management/update-slot",{slotId:t.slotId,companyId:s,projectId:e,slot:t}),{retries:ee,factor:1})}function El(s,e,t){return De({url:`/slot-management/keep-alive?reqId=${re()}`,body:{slots:t,companyId:s,projectId:e},timeout:1e4})}async function Yw(s,e){return await Ee(`${Ms}/sessions/${s}`,void 0,{Authorization:`Basic ${Buffer.from(`${e.user}:${e.key}`).toString("base64")}`})}async function jc(s){try{return await Se("/v2/project/validateUserAccessKey",s),!0}catch(e){return Pt.error("error validating user access key",{error:e}),!1}}var er,_m,Z,$c,$w,Pt,ee,Ww,ol,il,ul,Uo,he=T(()=>{"use strict";er=E(require("lodash")),_m=E(require("pako"));B();le();ae();Ke();Ct();Z=E(require("p-retry")),$c=E(require("object-hash"));z();$();$w=dt(),Pt=A("testim service api"),ee=3,Ww="/grid";ol=async()=>(0,Z.default)(()=>Se("/grid/lt/config"),{retries:ee,factor:1}),il=async s=>(0,Z.default)(()=>Se(`/labFeature/v2/project/${s}`),{retries:ee,factor:1});ul=er.memoize(async(s,e,t,r)=>{if(!er.isEmpty(r))return await Lm(s,e,t,JSON.stringify(r),"test-run-data","application/json")},(s,e,t,r)=>`${(0,$c.default)(r)}:${e}:${t}`),Uo=er.memoize(async(s,e,t,r,n)=>!r||er.isEmpty(r)?void 0:await Lm(s,e,t,JSON.stringify((()=>{let i=er.clone(r);if(n!=null&&n.hiddenParams){let{hiddenParams:a}=n;(a||[]).forEach(l=>{i[l]&&Object.assign(i,{[l]:dc.HIDDEN_PARAM})})}return i})()),"test-test-data","application/json"),(s,e,t,r)=>`${(0,$c.default)(r)}:${e}:${t}`)});var tr={};G(tr,{getSessionPlayer:()=>se,options:()=>Il});var Fo,Il,Sl,se,Te=T(()=>{"use strict";Fo=require("path"),Il={playerPath:void 0},se=()=>{if(Sl)return Sl;let s=($e(),ye(je));s.log("getSessionPlayerRequire start");let{getSessionPlayerFolder:e}=(Zr(),ye(Zs)),t=e(),r=Il.playerPath?(0,Fo.resolve)(Il.playerPath,"src/background/sessionPlayerInit.ts"):(0,Fo.join)(t,"sessionPlayer.js"),n=require(r);return s.log("getSessionPlayerRequire end"),Sl=n,n}});function Zw(s){process.nextTick(()=>{if([Y.SELENIUM,Y.APPIUM].includes(s))try{(Te(),ye(tr)).getSessionPlayer()}catch{}})}async function ln(s){let{project:e,token:t,userAccessKey:r,lightweightMode:n,useLocalChromeDriver:o,useChromeLauncher:i,mode:a,gridId:l,grid:c}=s,d=Boolean(n==null?void 0:n.general),m=Boolean(o||i),u=d?Qw:Xw;M("before initializeUserWithAuth");let f=await gt(async()=>(Zw(a),await sl({projectId:e,token:t,branchName:s.branch,lightweightMode:n,localGrid:m,gridId:l,grid:c})),"initializeUserWithAuth",u,{project:e,token:t,branchName:s.branch,lightweightModeGeneral:d,localGrid:m,gridId:l,grid:c})();return M("after initializeUserWithAuth"),km(f.authData,{projectId:e,token:t,userAccessKey:r}),f}var Xw,Qw,Dm=T(()=>{"use strict";$e();he();jt();Ct();ae();Xw=1e3*60*5,Qw=1e3*60*60*10});async function Um(s){var r;let e=Promise.resolve();s.useLocalChromeDriver&&(s.chromeBinaryLocation=s.downloadBrowser?await ko():s.chromeBinaryLocation,e=Tr({projectId:s.project,userId:s.user},{chromeBinaryLocation:s.chromeBinaryLocation},Boolean((r=s.lightweightMode)==null?void 0:r.general)),s.useLocalChromeDriver=!0),!s.playerRequirePath&&s.mode!==Y.EXTENSION&&await wr(s.playerLocation,s.canary),s.mode===Y.EXTENSION&&!s.ext&&await kc(s.extensionLocation);let t;if(s.installCustomExtension){let n=Boolean(s.useLocalChromeDriver||s.useChromeLauncher);t=await Pc(s.installCustomExtension,n)}return await e,t}async function Fm(s){var i;ev.info("prepare MockNetwork",{location:s});let e=await cc(s),t=Buffer.isBuffer(e)?e:e.body;if(t.byteLength>Nm*1e6)throw new Error(`${Rl} exceeded ${Nm}MB`);let r;try{r=JSON.parse(t.toString("utf-8"))}catch(a){throw new Error(`${Rl} cannot be parsed.${Bo.EOL}${a}`)}let n=new Mm.default;if(!n.validate(vc,r)){let a=(i=n.errors)==null?void 0:i.map((l,c)=>`${++c}) ${l.dataPath} ${l.message}`).join(Bo.EOL);throw new Error(`${Rl} is malformed.${Bo.EOL}${a}`)}return r.entries}var Bo,Mm,Nm,Rl,ev,xl=T(()=>{"use strict";Bo=E(require("os"));B();qd();Zr();Mm=E(require("ajv"));ae();Dc();Dm();Nm=1,Rl="JSON file supplied to --mock-network-pattern",ev=($(),ye(Ya)).getLogger("prepare runner")});function jm(s,e=process){async function t(r){await ce(ie(Bm,async n=>n()),1e4).catch(()=>null),s(r)}e.on("uncaughtException",async r=>{un.error("Caught exception",{err:r}),console.log("Uncaught exception"),r.message&&console.log("Message =",r.message),r.reason&&console.log("Reason =",r.reason),await t(r)}),e.on("unhandledRejection",r=>{var n;if(un.fatal("Caught unhandled promise rejection",r),!((n=r==null?void 0:r.message)!=null&&n.includes("ENOTFOUND x-api.rollout.io")))throw r}),e.on("rejectionHandled",()=>{un.error("Caught rejection handled")}),e.once("SIGTERM",()=>{let r="Runner aborted - SIGTERM event",n=new Error(r);throw un.error(r),t(n),n}),e.once("SIGINT",()=>{let r="Runner aborted - SIGINT event",n=new Error(r);throw un.error(r),t(n),n}),e.once("exit",r=>{s(r)})}function rs(s){Bm.push(s)}var un,Bm,pn=T(()=>{"use strict";$();B();un=A("process-handler"),Bm=[]});var W,qm,iv,av,cv,Hm,$o,kl,N,fe=T(()=>{"use strict";W=E(require("rox-node"));$();B();le();qm=A("FeatureFlagsService"),iv=!Oe&&!0&&!nd,av=2e4,cv=60*60*24,Hm=["labs","disabled","enabled"],$o=class extends W.default.Variant{constructor(e="disabled"){super(e,Hm)}getValue(){let e=super.getValue();return Hm.includes(e)?e:(qm.warn('unexpected value for lab feature flag. Falling back to value "labs"',{featureFlagName:this.name,value:e}),"labs")}},kl=class{constructor(){this.flags={useNewWSCLI:new W.default.Flag,useSafariWebdriverVisibilityChecks:new W.default.Flag,useClickimVisibilityChecks:new W.default.Flag,runGetElementCodeInAut:new W.default.Flag,enableFrameSwitchOptimization:new W.default.Flag,maximumJsResultSize:new W.default.Configuration(2e3*1024),skipFileInputClicks:new W.default.Flag,errorMessageOnBadNetwork:new W.default.Flag(!0),warnOnBadNetwork:new W.default.Flag(!1),overrideAzureStorageUrl:new W.default.Flag,autoSaveDownloadFileFireFox:new W.default.Flag(!0),safariSelectOptionDispatchEventOnSelectElement:new W.default.Flag(!0),experimentalPreCodeCompilation:new W.default.Flag(!0),experimentalAsyncCustomCode:new W.default.Flag,useSameBrowserForMultiTests:new $o("labs"),highSpeedMode:new $o,usePortedHtml5DragDrop:new W.default.Flag,testNamesToBeforeSuiteHook:new W.default.Flag,addCustomCapabilities:new W.default.Variant("{}"),addCustomLTtunnelNTLMOptions:new W.default.Variant("{}"),LTNetworkCapabilities:new W.default.Flag,downloadToBase64:new W.default.Flag,publicGridURL:new W.default.Configuration("public-grid.testim.io"),allowAppFromDeviceRuns:new W.default.Flag(!0),unsupportedCapsFields:new W.default.Variant("[]"),dontFocusOnInit:new W.default.Flag,retryOnSeleniumHubError:new W.default.Flag,enableLambdaTestTunnelNTLM:new W.default.Flag,enableLambdaTestTunnelSkipUpgrade:new W.default.Flag,tdcHsPreventNetworkCapture:new W.default.Flag,headSpinTdcEnableFlagCapability:new W.default.Flag,enableBatchTDC:new W.default.Flag,enableBatchHeadSpin:new W.default.Flag,clearRunnerFileCache:new W.default.Flag,forceTurboModeIfNeeded:new W.default.Flag,redisSlotManager:new W.default.Flag,tunnelBinaryNewVersion:new W.default.Flag(!1),encryptedCredentials:new W.default.Flag,computePackagePathFromPackageJsonExports:new W.default.Flag,sendExtensionOnEdgeNonLinux:new W.default.Flag,enableAppium2pCloudy:new W.default.Flag,reuseCliPkgInstallFolder:new W.default.Flag},W.default.register("default",this.flags)}setProjectId(e){W.default.setCustomStringProperty("projectId",e)}setProjectType(e){W.default.setCustomStringProperty("projectType",e)}setCompanyProductType(e){W.default.setCustomStringProperty("productType",e)}setCompanyId(e){W.default.setCustomStringProperty("companyId",e)}setPlanType(e){W.default.setCustomStringProperty("planType",e)}setIsPOC(e){W.default.setCustomBooleanProperty("isPOC",e)}setIsStartUp(e){W.default.setCustomBooleanProperty("isStartUp",e)}setRunnerMode(e){W.default.setCustomStringProperty("runnerMode",e)}async fetch(){if(!iv)return;let e={fetchIntervalInSec:cv,disableNetworkFetch:!1};if(global.ProxyAgent){let t=new global.ProxyAgent(global.proxyUri);Object.assign(e,{httpsAgent:t,httpAgent:t})}return ce(W.default.setup(rd,e),av).catch(t=>qm.error("failed to get feature flag status",t))}},N=new kl});function Ol(s,e){let t=s.canary?"-master.zip":".zip",r=`${e?ad:Nr}/extension/testim-firefox-profile${t}`,n=`${e?cd:Nr}/extension/testim-headless${t}`;return{firefox:r,chrome:n,"edge-chromium":n}}function zm(s){let{chrome:e,firefox:t}=Ol(s,!1);return s.browser==="firefox"?t:s.browser==="chrome"?e:[e,t]}function Wo(s){let e=`${Nr}/extension/sessionPlayer`;return s.canary?`${e}-master`:e}var Vo=T(()=>{"use strict";le()});function Qm(s){Oe||(s!=null&&s.userId||(s={anonymousId:Xm}),Ym.identify(s))}function ht(s,e){return dn("ci",s,e)}function dn(s,e,t){if(Oe)return;let r=s?{userId:s}:{anonymousId:Xm};Ym.track(Object.assign(r,{event:e,properties:t}))}var Jm,Ym,Xm,ss=T(()=>{"use strict";le();Jm=require("@segment/analytics-node"),Ym=new Jm.Analytics({writeKey:"sJOSIGKa5x5rJEGsaOlCjrgozAf7FnVY",flushAt:1}),Xm=require("crypto").randomBytes(20).toString("hex")});function Zm(s){return s.start&&dn(null,"cli-start-command",{downloadBrowser:Boolean(s.downloadBrowser)}),!!(s.startV2||s.start||s.agent)}async function ef(s){let e=["playground-playwright","playground-puppeteer","playground-selenium"],t=!1,r=!1,n=!1,o=!1;if(s.start&&(o=!0),Number.isNaN(s.agentPort))throw new C("Agent port is not number");if(typeof s.agent=="string"&&e.some(a=>s.agent.includes(a))){let a=s.agent.split(",").map(l=>l.trim());a.includes("playground-playwright")&&(t=!0),a.includes("playground-puppeteer")&&(r=!0),a.includes("playground-selenium")&&(n=!0)}let i=Wo(s);return console.log("Start Testim CLI on Agent mode"),{project:s.project,token:s.token,agentMode:!0,agentPort:s.agentPort,agentBind:s.agentBind,openEditor:s.openEditor,installPlaygroundPlaywrightDeps:t,installPlaygroundPuppeteerDeps:r,installPlaygroundSeleniumDeps:n,startTestimBrowser:o,ext:s.ext,extensionPath:s.extensionPath,playerLocation:s.playerPath||i,canary:s.canary,playerPath:s.playerPath,playerRequirePath:s.playerRequirePath,downloadBrowser:Boolean(s.downloadBrowser)}}var tf=T(()=>{"use strict";Vo();ss();z()});var rf,uv,pv,_l,sf=T(()=>{"use strict";rf="TST_CREDS",uv=["username","password"],pv="$encrypted",_l={get proxyPlaceholder(){return new Proxy({},{get(s,e){let t={};for(let r of uv)t[r]={[pv]:`${e}.${r}`};return t}})},containsEncryptedCredentials(s){return s.includes(rf)},injectProxyCredentialsStoreToGlobal(){Object.assign(globalThis,{[rf]:this.proxyPlaceholder})}}});function Ho(s){let{platform:e}=process;e==="win32"?(0,Go.exec)(`start chrome ${s}`):e==="darwin"?(0,Go.exec)(`open -a "Google Chrome" ${s}`):e==="linux"&&(0,Go.exec)(`google-chrome ${s}`)}var Go,Ll=T(()=>{"use strict";Go=require("child_process")});var fn={};G(fn,{doLogin:()=>Ul,getProjectId:()=>dv,getToken:()=>mv});async function dv(){return af("projectId")}async function mv(){return af("token")}function of(s,e){return Promise.race([s,oe(e).then(()=>{throw new ne("timeout")})])}async function fv(){let s=(await import("express")).default(),e=async function(){return of(new Promise(n=>{s.get("/loginInfo",(o,i)=>{n(JSON.parse(Buffer.from(o.query.info,"base64").toString())),i.status(200).end()})}),6e4).catch(()=>null)}();await new Promise((r,n)=>{let o=s.listen(42543,i=>{i&&n(i),r(o.address().port)})});try{let{getEditorUrl:r}=await Promise.resolve().then(()=>(he(),Ae)),{editorUrl:n}=await r();Ho(`${n}/#/new-test`)}catch{console.log("Unable to open Testim automatically - please manually go to https://app.testim.io")}return await e}async function Ul({overwriteExisting:s=!0,projects:e=null}={}){let t=Dl.homedir(),r=Nl.join(t,".testim");if(await ge(r)&&!s)return;let o={},[{default:i},{default:a}]=await Promise.all([import("prompts"),import("ora")]),l=a("Getting credentials from Tricentis Testim extension ...").start();if(e||(e=await of(fv(),62e3).catch(()=>null)),e!=null&&e.token){o.token=e.token,o.projectId=e.projectId,l.succeed(),await nf(r,o);return}if(e!=null&&e.length){l.succeed();let c=e.length===1?{project:e[0]}:await i({type:"select",name:"project",message:"There are multiple projects associated with your user account. Please select the project you would like to connect to:",choices:e.map(d=>({title:d.name,value:d}))});o.token=c.project.ci.token,o.projectId=c.project.id,await nf(r,o);return}l.fail(),console.log("Error getting credentials - please pass `--token` and `--project` to the CLI or try again")}async function nf(s,e){await Ml.promises.writeFile(s,qo.stringify(e)),console.log(`Testim credentials saved in '${s}'`)}async function af(s){let e=Dl.homedir(),t=Nl.join(e,".testim"),r=await ge(t),n={};if(r)try{n=qo.parse((await Ml.promises.readFile(t)).toString())}catch{}return n||={},n[s]}var Dl,Nl,qo,Ml,ns=T(()=>{"use strict";Dl=E(require("os")),Nl=E(require("path")),qo=E(require("yaml"));B();Ml=require("fs");z();Ll()});var ff={};G(ff,{process:()=>Ev});var Bl,uf,zo,pf,Vt,Me,df,gv,Ne,Wl,hv,yv,cf,mf,bv,jl,$l,Vl,Fl,kt,Tv,p,wv,vv,lf,Ev,gf=T(()=>{"use strict";Bl=E(require("ms")),uf=E(require("chalk")),zo=E(require("fs")),pf=E(require("url")),Vt=E(require("lodash")),Me=E(require("path"));B();Vo();tf();jt();df=require("commander");ae();z();Dr();B();fe();sf();gv=s=>s.replace(/-([a-z])/g,(e,t)=>t.toUpperCase()),Ne=(s,e)=>(e.push(s),e),Wl=new df.Command,hv=s=>s.split(","),yv=(s,e)=>!s||s.length===0?e:s,cf=["enable-heavy-ad-intervention","heavy-ad-privacy-mitigations","use-fake-device-for-media-stream","use-fake-ui-for-media-stream","proxy-server"],mf=()=>{function s(g){return g.includes("-h, --help")}function e(g){return g.includes("--params [params-json-string]")}function t(g){return g.includes("--ext")||g.includes("--extension-path")}function r(g){return g.includes("--player-path")||g.includes("--player-require-path")}function n(g){return g.includes("--executionId")||g.includes("--source")||g.includes("--resultId")||g.includes("--remoteRunId")||g.includes("--schedulerId")}function o(g){return g.includes("--get-browser-timeout")||g.includes("--get-browser-retries")||g.includes("--get-session-timeout")||g.includes("--get-session-retries")||g.includes("--driver-request-timeout")||g.includes("--driver-request-retries")}function i(g){return g.includes("--user")}function a(g){return g.includes("shouldMonitorPerformance")}function l(g){return g.includes("--save-rca-locally")}function c(g){return g.includes("--exit-code-ignore-failing-tests")}function d(g){return g.includes("--high-speed")}function m(g){return g.includes("--urls")}function u(g){return g.includes("--test-start-timeout")}function f(g){return g.includes("--install-lazy-deps")}function h(g){return g.includes("--print-final-caps")||g.includes("--print-grids")}Wl.help(g=>g.split(`
|
|
17
17
|
`).filter(v=>!t(v)&&!e(v)&&!s(v)&&!r(v)&&!n(v)&&!a(v)&&!i(v)&&!o(v)&&!l(v)&&!c(v)&&!d(v)&&!m(v)&&!u(v)&&!f(v)&&!h(v)).join(`
|
|
18
18
|
`))},bv=(s,e)=>{let t=e?`Please use ${e} instead.`:"";console.log(uf.default.yellow(`
|
|
19
19
|
WARNING: ${s} is deprecated. ${t}
|