UNPKG

@currents/playwright

Version:

[Currents](https://currents.dev/playwright) is the most popular and advanced cloud-based platform for Playwright - debugging, error analysis, real-time analytics, orchestration, and more

19 lines (18 loc) 125 kB
"use strict";var ua=Object.create;var fe=Object.defineProperty;var ca=Object.getOwnPropertyDescriptor;var la=Object.getOwnPropertyNames;var pa=Object.getPrototypeOf,ga=Object.prototype.hasOwnProperty;var h=(e,t)=>()=>(e&&(t=e(e=0)),t);var Er=(e,t)=>{for(var r in t)fe(e,r,{get:t[r],enumerable:!0})},vn=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of la(t))!ga.call(e,s)&&s!==r&&fe(e,s,{get:()=>t[s],enumerable:!(n=ca(t,s))||n.enumerable});return e};var d=(e,t,r)=>(r=e!=null?ua(pa(e)):{},vn(t||!e||!e.__esModule?fe(r,"default",{value:e,enumerable:!0}):r,e)),da=e=>vn(fe({},"__esModule",{value:!0}),e);var i=h(()=>{"use strict"});var St,hr=h(()=>{"use strict";i();St=class extends Error{}});var me,Tr=h(()=>{"use strict";i();me={guide:{ciBuildId:"https://docs.currents.dev/guides/ci-build-id",integration:"https://docs.currents.dev/integration-with-playwright/currents-playwright"}}});function Ee(e){fa.push(e)}var fa,Cr=h(()=>{"use strict";i();fa=[]});function Fn(e){return{...e&&Object.prototype.hasOwnProperty.call(Ln,e)?Ln[e]:Bn}}var tt,ma,Ea,Bn,Ln,he=h(()=>{"use strict";i();tt={None:"none",Summary:"summary",Detailed:"detailed"},ma={introAndSummary:!1,testOutput:!1,progress:!1,tables:!1,warningsAndErrors:!1},Ea={introAndSummary:!0,testOutput:"line",progress:!1,tables:!1,warningsAndErrors:!0},Bn={introAndSummary:!0,testOutput:"full",progress:!0,tables:!0,warningsAndErrors:!0},Ln={[tt.None]:ma,[tt.Summary]:Ea,[tt.Detailed]:Bn}});var Qt,lt,Te=h(()=>{"use strict";i();Qt=[],lt=[]});function Mn(e){Ce=e}function kn(e){return Ce?!!Ce[e]:!0}function rt(e,t){Ee(t),kn(e)&&console.log(t)}function ha(e,t){Ee(et.default.inspect(t,{depth:null})),kn(e)&&console.table(t)}var x,et,Ce,U,Re,jn,g,At,Gn,I,Ot,Pt,Hn,$n,zt,Rr,nt,Wn,xt,pt,Xt,Zt,Vc,Kc,te,m,Yc,Vn=h(()=>{"use strict";i();x=d(require("chalk")),et=d(require("util"));he();R();Cr();Te();Ce=null;U=(...e)=>{rt("introAndSummary",et.default.format(...e))},Re=(...e)=>{rt("progress",et.default.format(...e))},jn=(e,t)=>{Ee(e);let r=Ce?.testOutput??"full";r&&(r==="line"&&t?console.log(` ${t.statusStr} ${t.label}`):r==="full"&&console.log(e))},g=(...e)=>{let t=et.default.format(...e);lt.push(t),p("WARNING: ",t),rt("warningsAndErrors",x.default.bgYellow.black(" WARNING ")+" "+t)},At=(...e)=>{let t=et.default.format(...e);p("WARNING: ",t),rt("warningsAndErrors",x.default.bgYellow.black(" WARNING ")+" "+t)},Gn=(...e)=>{let t=et.default.format(...e);p("ERROR: ",t),rt("warningsAndErrors",x.default.bgRed.white(" ERROR ")+" "+t)},I=(...e)=>{let t=et.default.format(...e);Qt.push(t),p("ERROR: ",t),rt("warningsAndErrors",x.default.bgRed.white(" ERROR ")+" "+t)},Ot=()=>{rt("introAndSummary",` `+Pt()+` `)},Pt=()=>x.default.dim(Array(64).fill("=").join("")),Hn=(e="",t=64)=>{let r=` start of ${e||"block"} `,n=Math.max(t-r.length,0)/2,s=Math.floor(n),o=Math.ceil(n);return x.default.dim(`${Array(s).fill("-").join("")}${r}${Array(o).fill("-").join("")}`)},$n=(e="",t=64)=>{let r=` end of ${e||"block"} `,n=Math.max(t-r.length,0)/2,s=Math.floor(n),o=Math.ceil(n);return x.default.dim(`${Array(s).fill("-").join("")}${r}${Array(o).fill("-").join("")}`)},zt=(e=2)=>{let t=Math.max(0,Math.floor(e));t!==0&&rt("introAndSummary",Array(t).fill("").join(` `))},Rr=e=>{ha("progress",e)},nt=x.default.cyan,Wn=x.default.blueBright,xt=x.default.red,pt=x.default.yellow,Xt=x.default.green,Zt=x.default.gray,Vc=x.default.white,Kc=x.default.black,te=x.default.magenta,m=x.default.dim,Yc=x.default.bold});var _=h(()=>{"use strict";i();Cr();Vn()});function Yn(e){if(!e)return;if(e==="false")return!1;let t=parseInt(e,10);if(isNaN(t)||t<1)throw new Kn.CommanderError(255,"Invalid argument provided.","--pwc-cancel-after-failures must be a positive integer or 'false', provided: "+e);return t}function qn(e){if(e===void 0)return;let t;if(typeof e=="number")t=e;else{let r=e.trim();if(r==="")return;t=Number(r)}if(!(!Number.isInteger(t)||t<0))return t}var Kn,Jn=h(()=>{"use strict";i();Kn=require("commander")});function Qn(e){return P[e]?.env}function zn(e){let t=P[e];return"cli"in t?t.cli:void 0}function Xn(e){return P[e].name}function Ir(){return{projectId:process.env[P.projectId.env],recordKey:process.env[P.recordKey.env],ciBuildId:process.env[P.ciBuildId.env],tag:process.env[P.tag.env]?process.env[P.tag.env]?.split(",").map(e=>e.trim()):void 0,environment:process.env[P.environment.env],cancelAfterFailures:Yn(process.env[P.cancelAfterFailures.env]),disableTestTags:process.env[P.disableTestTags.env]||process.env[P.disableTitleTags.env],consoleOutput:process.env[P.consoleOutput.env],testSuiteFile:process.env[P.testSuiteFile.env],machineId:process.env[P.machineId.env],orchestrationId:process.env[P.orchestrationId.env],outputFile:process.env[P.outputFile.env],ciUrl:process.env[P.ciUrl.env]?.trim()||void 0,orchestration:{discoveryFile:process.env[P.discoveryFile.env],pendingChildExitTimeoutMs:qn(process.env[P.pendingChildExitTimeoutMs.env])}}}var P,_r=h(()=>{"use strict";i();Jn();P={currentsConfigFile:{name:"Currents Config File Path",env:"CURRENTS_CONFIG_FILE_PATH",cli:"--pwc-config"},ciBuildId:{name:"CI Build ID",env:"CURRENTS_CI_BUILD_ID",cli:"--ci-build-id"},recordKey:{name:"Record Key",env:"CURRENTS_RECORD_KEY",cli:"--key"},projectId:{name:"Project ID",env:"CURRENTS_PROJECT_ID",cli:"--project-id"},tag:{name:"Currents Tag",env:"CURRENTS_TAG",cli:"--tag"},environment:{name:"Currents Environment",env:"CURRENTS_ENVIRONMENT",cli:"--pwc-environment"},cancelAfterFailures:{name:"Currents Cancel After Failures",env:"CURRENTS_CANCEL_AFTER_FAILURES",cli:"--pwc-cancel-after-failures"},disableTestTags:{name:"Disable Test Tags",env:"CURRENTS_DISABLE_TEST_TAGS",cli:"--pwc-disable-test-tags"},disableTitleTags:{name:"Disable Title Tags",env:"CURRENTS_DISABLE_TITLE_TAGS",cli:"--pwc-disable-title-tags"},testSuiteFile:{name:"Test Suite File",env:"CURRENTS_TEST_SUITE_FILE",cli:"--pwc-test-suite-file"},machineId:{name:"Machine ID",env:"CURRENTS_MACHINE_ID",cli:"--pwc-machine-id"},orchestrationId:{name:"Orchestration ID",env:"CURRENTS_ORCHESTRATION_ID",cli:"--pwc-orchestration-id"},outputFile:{name:"Output File",env:"CURRENTS_OUTPUT_FILE",cli:"--pwc-output-file"},consoleOutput:{name:"Console Output",env:"CURRENTS_CONSOLE_OUTPUT",cli:"--pwc-console-output"},batchSize:{name:"Batch Size",env:"CURRENTS_BATCH_SIZE",cli:"--pwc-batch-size"},discoveryFile:{name:"Discovery File",env:"CURRENTS_DISCOVERY_FILE",cli:"--pwc-discovery-file"},pendingChildExitTimeoutMs:{name:"Pending Child Exit Timeout",env:"CURRENTS_OR8N_PENDING_CHILD_EXIT_TIMEOUT_MS",cli:"--pwc-pending-child-exit-timeout-ms"},ciUrl:{name:"CI URL",env:"CURRENTS_CI_URL"}}});function bt(){if(yr)return yr;if(process.env.CURRENTS_PWC_CLI_CONFIG_PATH)try{let e=JSON.parse(ts.default.readFileSync(process.env.CURRENTS_PWC_CLI_CONFIG_PATH).toString());return Zn("Options from serialized CLI config file: %o",e),yr=e,e}catch(e){return Zn("Could not read CLI config file: %o",e),{}}return{}}var ts,Zn,yr,Sr=h(()=>{"use strict";i();ts=d(require("fs"));R();Zn=p.extend("cli-options-serializer"),yr=null});function es(e,t,r={validationFn:Pr}){Ar("reporter options: %o",e),Ar("config file options: %o",t);let n={...B(Or),...B(t),...B(e),...B(bt()),...B(Ir()),orchestration:{...B(Or.orchestration),...B(t?.orchestration),...B(e?.orchestration),...B(bt().orchestration),...B(Ir().orchestration)},coverage:{...B(Or.coverage),...B(t?.coverage),...B(e?.coverage),...B(bt().coverage)}};n.disableTitleTags!==void 0&&(n.disableTestTags=n.disableTestTags||n.disableTitleTags),r.validationFn(n),ee=n,Mn(Fn(ee?.consoleOutput)),Ar("resolved currents config: %o",ee)}function Pr(e){Ta.forEach(t=>{if(!e[t])throw I(`${Xn(t)} is required for Currents Reporter. Use the following methods: - environment variable: ${m(Qn(t))} - CLI flag: ${m(zn(t))} - reporter configuration option ${m(t)} in ${m("playwright.config.ts")} \u{1F4D6} ${me.guide.integration}`),new St("Missing required config variable")})}function B(e){return Object.entries(e??{}).reduce((t,[r,n])=>n===void 0?t:{...t,[r]:n},{})}function G(){return!!ee?.orchestrationId}function y(){return ee}function rs(e){e.preserveOutput!=="always"&&g(`The "preserveOutput" property in your Playwright config is set to ${e.preserveOutput}. This may cause artifacts to be removed before they are uploaded to Currents. We recommend setting it to "always".`)}function ns(e){return e?Object.values(e).map(t=>t.name):[]}function Ie(e,t){return t?.projects===!0?e:Array.isArray(t?.projects)?t?.projects.length===0?e:t?.projects.filter(r=>e.includes(r)):[]}var Ar,Ta,Or,ee,re=h(()=>{"use strict";i();R();hr();Tr();_();he();_r();Sr();he();Ar=p.extend("config"),Ta=["projectId","recordKey"],Or={removeTitleTags:!1,disableTestTags:!1,consoleOutput:tt.Detailed,orchestration:{skipReporterInjection:!1},coverage:{projects:!1}},ee=null});function os(e){let t=new WeakMap;function r(n){if(typeof n=="object"&&n!==null){if(t.has(n))return"[Circular]";t.set(n,!0)}}return(0,ss.cloneDeepWith)(e,r)}function Ca(e){let r=Object.getOwnPropertySymbols(e).find(s=>s.toString().match(/configInternalSymbol/))??Object.getOwnPropertyNames(e).find(s=>s.match(/_internal/));return r?e[r]:(g("Could not extract internal playwright configuration"),null)}function is(e){let t=Ca(e);return!!(e.failOnFlakyTests??t?.failOnFlakyTests)}var ss,as=h(()=>{"use strict";i();ss=require("lodash");_()});var F=h(()=>{"use strict";i();re();_r();Sr();as()});var cs,us=h(()=>{cs={name:"@currents/playwright",version:"2.4.0",main:"./dist/index.js",author:{name:"Currents Software Inc",email:"hello@currents.dev",url:"https://currents.dev"},license:"MIT",homepage:"https://currents.dev",repository:{type:"git",url:"https://github.com/currents-dev/currents-playwright-changelog.git"},scripts:{test:"vitest",rm:"rimraf dist",lint:'TIMING=1 eslint "**/*.ts*"',build:"tsup-node --minify --dts",dev:"tsup-node --watch --dts",release:"release-it --verbose","publish:npm":"npm run rm && npm run build && ./publish.js","release-ci":"npm run rm && npm run build && ./publish.js -t latest"},bin:{pwc:"./dist/bin/pwc.js","pwc-p":"./dist/bin/pwc-p.js"},devDependencies:{"@playwright/test":"^1.56.1","@release-it/conventional-changelog":"^11.0.1","@types/async-retry":"^1.4.5","@types/babel__code-frame":"^7.0.3","@types/debug":"^4.1.13","@types/getos":"^3.0.4","@types/istanbul-lib-coverage":"^2.0.6","@types/json-stringify-safe":"^5.0.3","@types/lodash":"^4.17.24","@types/pluralize":"^0.0.33","@types/proxy-from-env":"^1.0.4","@types/regexp.escape":"^2.0.0","@types/stack-utils":"^2.0.3","@types/tmp":"^0.2.6","@types/ws":"^8.18.1",eslint:"^10.5.0","eslint-config-custom":"*",msw:"^2.14.2","release-it":"^20.2.1",rimraf:"^6.1.3",tsup:"^8.5.0",typescript:"^6.0.3",vitest:"^4.1.9"},dependencies:{"@babel/code-frame":"^7.29.7","@commander-js/extra-typings":"^13.1.0","@currents/commit-info":"1.0.1-beta.0","async-retry":"^1.3.3",chalk:"^4.1.2",commander:"^13.1.0","date-fns":"^4.3.0",debug:"^4.4.3",dotenv:"^17.4.2",execa:"^9.6.0",getos:"^3.2.1","istanbul-lib-coverage":"^3.2.2",jiti:"2.7.0","json-stringify-safe":"^5.0.1","lil-http-terminator":"^1.2.3",lodash:"^4.18.1",nanoid:"^3.3.8","object-sizeof":"^2.6.5","p-debounce":"^2.1.0","p-map":"^4.0.0","p-queue":"6.6.2",pluralize:"^8.0.0","pretty-ms":"^7.0.1","proxy-from-env":"^1.1.0","regexp.escape":"^2.0.1","safe-regex2":"^5.1.1","source-map-support":"^0.5.21","stack-utils":"^2.0.6",tmp:"^0.2.7","tmp-promise":"^3.0.3","ts-pattern":"^5.8.0",undici:"^6.27.0",ws:"^8.21.0"},files:["dist","!**/*.map","!**/*/*.map","**/*.LEGAL.txt","!src/*.md","!src/**/*.md","LICENSE.md","README.md","CHANGELOG.md"],keywords:["playwright","playwright dashboard","cloud dashboard","reporter","currents","tests reporter","sorry cypress","ci"],exports:{".":{import:"./dist/index.js",require:"./dist/index.js"},"./discovery":{import:"./dist/reporters/discovery.js",require:"./dist/reporters/discovery.js"},"./orchestration":{import:"./dist/orchestration/index.js",require:"./dist/orchestration/index.js"},"./package.json":"./package.json"},engines:{node:">=18.17"},publishConfig:{access:"public",registry:"https://registry.npmjs.org"},"release-it":{npm:{publish:!1},github:{release:!0},plugins:{"@release-it/conventional-changelog":{preset:"angular",header:"# Changelog",ignoreVersion:!0,infile:"../../CHANGELOG.md"}},git:{commitMessage:"chore: release v${version}",tagName:"v${version}"},hooks:{"before:github:release":"npm run --prefix ../../ update-public-changelog"}}}});var _e,xr=h(()=>{"use strict";i();us();_e=cs.version});var Ur,ls,ps=h(()=>{"use strict";i();Ur=()=>process.env.CURRENTS_API_URL??"https://cy.currents.dev",ls=()=>3e4});async function Nt(e){await Ia(),await new Promise((t,r)=>{if(!wt){r(new Error("WebSocket is not initialized"));return}ye("sending message to ws: %o, %o",wt.url,e),wt.send(JSON.stringify(e),n=>{n?r(n):t()})})}async function Ia(){if(wt){ye("ws already initialized");return}let e=parseInt(process.env.CURRENTS_PWCP_WSS_PORT);ye("setting port to %s",e),await new Promise(t=>{wt=new gs.default(`ws://localhost:${e}`),wt.on("open",()=>{ye("ws opened"),t(null)})})}var gs,ye,wt,br=h(()=>{"use strict";i();gs=d(require("ws"));R();ye=p.extend("ws"),wt=null});function fs(){Se.addListener("runCancelled",Es)}function ms(){Se.removeListener("runCancelled",Es)}async function Es(){if(wr("Run cancelled: %s",Dr()),G())try{await Nt({type:"orchestration:run-cancelled",payload:{}}),wr("Cancellation message sent to parent")}catch(e){wr("Failed to send cancellation message: %o",e)}process.exit(1)}var ds,wr,Se,Nr=h(()=>{"use strict";i();ds=d(require("events"));re();R();br();Ae();wr=p.extend("pubsub"),Se=new ds.default});var vr,Oe,Dr,Pe,hs=h(()=>{"use strict";i();_();Nr();vr={cancellationReason:null},Oe=e=>{vr.cancellationReason||(vr.cancellationReason=e)},Dr=()=>vr.cancellationReason,Pe=({showWarning:e=!0}={})=>{let t=Dr();t&&(e&&g("%s",t),Se.emit("runCancelled",t))}});var Ae=h(()=>{"use strict";i();hs()});var Ts,gt,xe=h(()=>{"use strict";i();Ts=require("nanoid"),gt=(0,Ts.customAlphabet)("abcdefghijklmnopqrstuvwxyz",10)});var Ue,Lr,Dt,be,we=h(()=>{"use strict";i();Ue=require("ts-pattern"),Lr={outcome:null,scannerConfig:null,currentsConfig:null,internalConfig:null},Dt=(e,t)=>(0,Ue.match)(e).with(Ue.P.union("scannerConfig","currentsConfig","internalConfig"),r=>{Lr[r]=t}).with("outcome",r=>{Lr[r]=t}).exhaustive(),be=()=>Lr});function vt(e){if(e===null||typeof e!="object")return!1;let t=e;return typeof t.message!="string"?!1:t.response!==void 0&&t.response!==null?!(typeof t.response.status!="number"||t.response.headers!==void 0&&typeof t.response.headers!="object"):!!(typeof t.code=="string"&&ne.includes(t.code))}var ne,Lt=h(()=>{"use strict";i();ne=["ECONNABORTED","ECONNREFUSED","ECONNRESET","ETIMEDOUT","EPIPE","ENETUNREACH","EHOSTUNREACH","ENETRESET","ENOTFOUND","EAI_AGAIN"]});function _s(e){(0,D.match)(e).when(vt,_a).otherwise(()=>{g("Unexpected error while sending network request: %s",e)})}function _a(e){let t=e.response?.config??e.config;return(0,D.match)(e).with({code:"ECONNABORTED"},()=>{g("Network connection aborted")}).with({code:"ECONNREFUSED"},()=>{g("Network connection aborted")}).with({code:"ECONNRESET"},()=>{g("Network connection reset")}).with({code:"EPIPE"},()=>{g("Network connection reset")}).with({code:"ENETUNREACH"},()=>{g("Network connection aborted")}).with({code:"EHOSTUNREACH"},()=>{g("Network connection aborted")}).with({code:"ETIMEDOUT"},()=>{g("Network connection timeout")}).with({response:D.P.not(D.P.nullish)},r=>{ya(r,{status:r.response.status,data:r.response.data})}).otherwise(()=>{g(`[currents] Unexpected network error: %s %O`,e.message,{method:t?.method,url:t?.url,status:e.response?.status,payload:t?.data,requestId:se(e)})})}function ya(e,{status:t,data:r}){let n=e.response?.config??e.config,s=n?.method,o=n?.url;(0,D.match)(t).with(401,()=>{g(`[currents] ${s} ${o} - 401 Unauthorized Request from cloud service`)}).with(400,()=>{g(`[currents] ${s} ${o} - 400 Bad Request from cloud service: %o`,r)}).with(429,()=>{g(`[currents] ${s} ${o} - 429 Too Many Requests from cloud service`)}).with(422,()=>{Sa(e,r)}).otherwise(()=>{g(`[currents] Unexpected network response: %s %O`,e.message,{method:s,url:o,status:e.response?.status,requestId:se(e)})})}function Sa(e,t){let r=e.response?.config??e.config;(0,D.match)(t).with({code:Br.MISSING_SUITE,message:D.P.string,errors:D.P.array(D.P.string)},async n=>{let{message:s,errors:o}=n;zt(1),I(...Cs(s,o)),Ne({id:gt(),text:(0,Rs.default)(be(),null,2)}).then(a=>{I(`Please share this URL with Currents support for further investigation: ${a}`)}).catch(a=>{g("Failed to upload debug artifact: %s",a)}),zt(1)}).with({code:Br.RUN_CANCELLED,message:D.P.string},n=>{Oe(n.message),Pe()}).with({code:Br.RUN_EXPIRED,message:D.P.string},n=>{g(n.message)}).with({message:D.P.string,errors:D.P.array(D.P.string)},n=>{let{message:s,errors:o}=n;zt(1),g(...Cs(s,o)),zt(1)}).otherwise(()=>{g(`[currents] Unexpected network response: %s %O`,e.message,{method:r?.method,url:r?.url,status:e.response?.status,requestId:se(e)})})}function Cs(e,t){return Is.default.isString(e)?t?.length===0?[e]:[e,` ${(t??[]).map(r=>` - ${r}`).join(` `)} `]:["Unexpected network error"]}function se(e){let t=e?.response?.headers;if(!(!t||typeof t!="object")){for(let[r,n]of Object.entries(t))if(r.toLowerCase()==="apigw-requestid")return Array.isArray(n)?n[0]:n}}var Rs,Is,D,Br,Fr=h(()=>{"use strict";i();Rs=d(require("json-stringify-safe")),Is=d(require("lodash")),D=require("ts-pattern");Ae();xe();_();Mr();we();Lt();Br={RUN_CANCELLED:"RUN_CANCELLED",RUN_EXPIRED:"RUN_EXPIRED",MISSING_SUITE:"MISSING_SUITE"}});function Os(e,t,r){let n=r.method?.toUpperCase(),s=r.url,o=se(t),a=(0,ys.default)(kr(e)),u=`Network request '${n} ${s}' failed: '${t.message}'.${o?` Request ID: ${o}.`:""} Next attempt is in ${a} (${e}/${r["transport-retry"]?.retries??jr()}).`;Ss(u),g(u)}var ys,Ss,kr,As,jr,Ps=h(()=>{"use strict";i();ys=d(require("pretty-ms"));R();_();Fr();Lt();Ss=p.extend("http"),kr=e=>{let t=[3e3,15e3,3e4];return t[Math.min(Math.max(e-1,0),t.length-1)]},As=e=>{if(Ss("isRetriableError: %o",{message:e.message,code:"code"in e?e.code:void 0,status:"response"in e?e.response?.status:void 0,headers:"response"in e?e.response?.headers:void 0,data:"response"in e?e.response?.data:void 0}),"code"in e&&e.code&&ne.includes(e.code))return!0;if(!vt(e)||!e.response)return!1;let t=e.response.headers;return t==null||typeof t!="object"?!1:[429,500,502,503,504].includes(e.response.status??0)},jr=()=>3});function Oa(e){let t=bs.default.getProxyForUrl(e);if(t)return Aa("Using HTTP proxy %s for %s",t,e),xs===t&&De||(xs=t,De=new Us.ProxyAgent(t)),De}function ws(e,t){if(/^https?:\/\//i.test(t))return t;let r=e??"",n=r.endsWith("/")?r:`${r}/`,s=t.replace(/^\/+/,"");return new URL(s,n).href}function Pa(e){let t={};return e.forEach((r,n)=>{let s=t[n];s===void 0?t[n]=r:Array.isArray(s)?s.push(r):t[n]=[String(s),r]}),t}function xa(e){for(let[t,r]of Object.entries(e))if(t.toLowerCase()==="content-type"){let n=Array.isArray(r)?r[0]:r;return typeof n!="string"?"":n.split(";")[0]?.trim()?.toLowerCase()??""}return""}function Ua(e,t){let r=t.toLowerCase();if(r.includes("application/json")||r.endsWith("+json"))return!0;let n=e.trim();return n.length?/^(?:\{|\[|"|-?\d|true$|false$|null$)/.test(n):!1}function ba(e,t){if(!e.length)return null;if(Ua(e,t))try{return JSON.parse(e)}catch{return e}return e}function wa(e){let t=e;for(let r=0;r<8&&t&&typeof t=="object";r++){let n=t;if(n.name==="AbortError"||n.name==="TimeoutError"||typeof n.message=="string"&&/aborted|timeout/i.test(n.message))return!0;t=n.cause}return!1}function Ns(e){if(!e||typeof e!="object")return;if(wa(e))return"ETIMEDOUT";let t=e,r=typeof t.message=="string"?t.message:"";if(t.name==="AbortError"||t.code==="UND_ERR_ABORTED"||t.code==="ABORT_ERR"||/aborted|timeout/i.test(r)||t.code==="UND_ERR_CONNECT_TIMEOUT"||t.code==="UND_ERR_HEADERS_TIMEOUT"||t.code==="UND_ERR_BODY_TIMEOUT")return"ETIMEDOUT";if(t.code==="UND_ERR_SOCKET")return"ECONNRESET";if(typeof t.code=="string"&&ne.includes(t.code))return t.code;if(t.cause)return Ns(t.cause);if(/connection reset|other side closed|terminated|socket hang up/i.test(r))return"ECONNRESET"}function Na(e){return e instanceof Gr.Readable}function Da(e){return Na(e)?{body:Gr.Readable.toWeb(e),duplex:"half"}:{body:e}}async function ve(e,t,r){let n=Oa(e),s,o;try{let C={method:t.method,headers:t.headers,signal:t.signal};if(t.body!==void 0){let E=Da(t.body);C.body=E.body,E.duplex&&(C.duplex=E.duplex)}n!==void 0&&(C.dispatcher=n),s=await fetch(e,C),o=await s.text()}catch(C){let E=Ns(C);throw{message:C instanceof Error?C.message:String(C),code:E,config:r}}let a=Pa(s.headers),u=xa(a),c=ba(o,u),f=s.status,T=s.statusText;if(!s.ok)throw{message:`Request failed with status code ${f}`,config:r,response:{status:f,statusText:T,headers:a,data:c,config:r}};return{data:c,status:f,statusText:T,headers:a,config:r}}var Gr,Us,bs,Aa,xs,De,Hr=h(()=>{"use strict";i();Gr=require("stream"),Us=require("undici");R();Lt();bs=d(require("proxy-from-env")),Aa=p.extend("http:transport"),xs=null,De=null});function js(e){ks["x-pw-version"]=e??"0.0.0"}function Fa(e){if(e){for(let[t,r]of Object.entries(e))if(t.toLowerCase()==="x-currents-idempotency-key"&&r!==void 0)return Array.isArray(r)?r[0]:String(r)}}function Ma(e,t){if(!e)return;let r=t.toLowerCase();for(let[n,s]of Object.entries(e))if(n.toLowerCase()===r&&s!==void 0)return Array.isArray(s)?s[0]:String(s)}function ka(e){let t={};if(!e)return t;for(let[r,n]of Object.entries(e))n!==void 0&&(t[r.toLowerCase()]=Array.isArray(n)?n.join(", "):String(n));return t}function ja(...e){if(typeof AbortSignal.any=="function")return AbortSignal.any(e);let t=new AbortController;for(let r of e){if(r.aborted)return t.abort(r.reason),t.signal;r.addEventListener("abort",()=>t.abort(r.reason),{once:!0})}return t.signal}async function Ga(e){let t={...Ba,...e.currentsOptions};return!t.enableCompression||e.data===void 0||Buffer.isBuffer(e.data)||typeof e.data=="string"||(0,Bs.default)(e.data)<=t.compressThresholdBytes?e:{...e,data:await La((0,$r.default)(e.data)),headers:{...e.headers,"Content-Encoding":"gzip"}}}function Ha(e){let{data:t}=e;if(t!==void 0)return Buffer.isBuffer(t)||typeof t=="string"?t:(0,$r.default)(t)}async function $a(e){let t=e.baseURL??Ur(),r=e["transport-retry"]?.retries??jr(),n=Fa(e.headers)??(0,Ls.nanoid)(),s=await Ga(e),o=Ha(s),a=(s.method??"get").toUpperCase(),u=e.signal;if(u?.aborted)throw{message:u.reason?.message??"Request aborted",code:"ECONNABORTED",config:e};let c;for(let f=0;f<=r;f++){let T=s.timeout??ls(),C=AbortSignal.timeout(T),E=u?ja(u,C):C,b=y(),L={...ka(s.headers),...ks,"accept-encoding":"gzip, deflate, br","x-currents-idempotency-key":n,"x-pwc-request-attempt":String(f),"x-currents-key":b?.recordKey??""};b?.orchestrationId&&(L["x-currents-orchestration-id"]=b.orchestrationId),b?.machineId&&(L["x-currents-machine-id"]=b.machineId),Ma(e.headers,"content-type")||(L["content-type"]=L["content-type"]??"application/json");let ut={...s,method:a,url:e.url,baseURL:t,headers:L},ct=ws(t,e.url??""),Jt={method:a,url:e.url,headers:L,data:Buffer.isBuffer(o)?"buffer":o};f?Ds("network request retry: %o",vs({...Jt,isRetry:!0})):Ds("network request: %o",vs(Jt));try{return await ve(ct,{method:a,headers:L,body:o,signal:E},ut)}catch(S){c=S;let Dn=S;if(!As(Dn)||f>=r)throw S;Os(f+1,Dn,{...e,method:a}),await new Promise(aa=>setTimeout(aa,kr(f+1)))}}throw c}function Wa(){return{request:e=>$a(e)}}function Gs(){return Le||(Le=Wa(),Le)}function vs(e){return{method:e.method,baseUrl:Ur(),url:e.url,data:e.isRetry?"<retry>":Va(e.data),headers:{...e.headers,"x-currents-key":"***"}}}function Va(e){let t=e;return t?.results?.raw?{...t,results:{...t.results,raw:"***"}}:e}var $r,Ls,Bs,Fs,Ms,Ds,va,ks,La,Ba,Le,Wr=h(()=>{"use strict";i();$r=d(require("json-stringify-safe")),Ls=require("nanoid"),Bs=d(require("object-sizeof")),Fs=require("util"),Ms=d(require("zlib"));F();R();xr();ps();Ps();Hr();Ds=p.extend("http"),va=1024*1024*1,ks={"x-pw-version":"0.0.0","x-pwc-version":_e},La=(0,Fs.promisify)(Ms.default.gzip);Ba={enableCompression:!1,compressThresholdBytes:va},Le=null});async function M(e,t=Gs){try{let r=await t().request(e);return Hs("network response: %o",{...$s.default.omit(r,"request","config"),url:r.config.url,method:r.config.method}),r}catch(r){let n=r;throw Hs("network error: %o",{code:n.code,message:n.message,url:n.config?.url,method:n.config?.method,status:n.response?.status,headers:n.response?.headers,data:n.response?.data}),_s(n),n}}var $s,Hs,Ws=h(()=>{"use strict";i();$s=d(require("lodash"));R();Wr();Fr();Hs=p.extend("http")});var dt=h(()=>{"use strict";i();Ws();Lt()});var Vs={};Er(Vs,{getDebugUrl:()=>Ka});var Ka,Ks=h(()=>{"use strict";i();dt();Ka=({runId:e,type:t})=>M({method:"POST",url:"runs/debug-logs",data:{type:t,runId:e}}).then(r=>r.data)});function qa(e,t){return Be({path:e,name:null,uploadUrl:t,contentType:"text/plain"},"text/plain")}async function Be(e,t,r){let n=await qs.default.readFile(e.path);return Vr("Uploading file %s",e.uploadUrl,{buffer:Buffer.byteLength(n)}),Xs(n,e.uploadUrl,t,r)}async function Kr(e,t,r){return Vr("Uploading buffer %s",e.name,{buffer:Buffer.byteLength(e.buffer)}),Xs(e.buffer,e.uploadUrl,t,r)}function Ja(e){let t;try{t=new URL(e)}catch{throw new Error(`Invalid upload URL: ${e}`)}if(!["http:","https:"].includes(t.protocol))throw new Error(`Unsupported upload URL protocol: ${t.protocol||"unknown"}`);return e}async function Qa(e,t,r,n){let s=Ja(t),o=e,a={"Content-Disposition":"inline","Content-Type":r};n?.compress&&(o=await Ya(e),a["Content-Encoding"]="gzip"),await ve(s,{method:"PUT",headers:a,body:o},{method:"PUT",url:s,headers:a})}async function Xs(e,t,r,n){await(0,Ys.default)(async()=>{await Qa(e,t,r,n)},{retries:5,onRetry:(s,o)=>{if(Vr(`Upload failed %d out of 5 attempts: %s %o`,o,s.message,s.response?.data),o===5){I(`Cannot upload after ${o} times: ${s.message}`);return}g(`Upload failed ${o} out of 5 attempts: ${s.message}`)}})}var Ys,qs,Js,Qs,Vr,Ya,zs,Zs=h(()=>{"use strict";i();Ys=d(require("async-retry")),qs=d(require("fs/promises")),Js=require("util"),Qs=require("zlib");R();Hr();_();Vr=p.extend("upload"),Ya=(0,Js.promisify)(Qs.gzip),zs=(s=>(s.PNG="image/png",s.WEBM="video/webm",s.TEXT="text/plain",s.ZIP="application/zip",s))(zs||{})});var to={};Er(to,{ContentType:()=>zs,sendBuffer:()=>Kr,sendPath:()=>Be,uploadText:()=>qa});var Yr=h(()=>{"use strict";i();Zs()});async function Ne(e){let{getDebugUrl:t}=await Promise.resolve().then(()=>(Ks(),Vs));try{let{readUrl:r,uploadUrl:n}=await t({runId:e.id,type:"pw-debug"}),{uploadText:s,sendBuffer:o}=await Promise.resolve().then(()=>(Yr(),to));return"text"in e&&await o({name:`${e.id}-discovery-debug.log`,buffer:Buffer.from(e.text,"utf-8"),contentType:"text/plain",uploadUrl:n},"text/plain"),"path"in e&&await s(e.path,n),r}catch{return null}}var qr,Jr=h(()=>{"use strict";i();qr=d(require("debug"))});function za(e){return e==="false"?!1:e==="remote"?"remote":e==="full"?"full":!!e}var eo,ro,no=h(()=>{"use strict";i();eo=require("@commander-js/extra-typings"),ro=new eo.Option("--pwc-debug [boolean | 'remote' | 'full']","enable debug logs. Specify 'remote' to upload logs to Currents. Specify 'full' to dump the debug logs to stdout and upload to Currents.").argParser(za).env("CURRENTS_DEBUG")});var so,oo,io=h(()=>{"use strict";i();so=require("@commander-js/extra-typings");no();oo=()=>new so.Command().allowUnknownOption().allowExcessArguments(!0).addOption(ro).helpOption(!1)});var st,ao,zr,uo,co,Qr,Fe,Xr=h(()=>{"use strict";i();st=d(require("debug")),ao=d(require("fs")),zr=d(require("path")),uo=d(require("util")),co=require("fs/promises");xe();_();io();Jr();st.default.useColors=function(){return!1};Qr=st.default.log,Fe=class e{constructor(t="core"){this.source=t;if(this.mode=oo().parse().opts().pwcDebug??!1,this.debug=(0,st.default)(`currents:remote-debug:${this.source}`),!this.mode)return this;if(!this.shouldEnableDebug())return this;let r=process.env.DEBUG?`${process.env.DEBUG},currents*`:"currents*";if(st.default.enable(r),!this.shouldUploadRemoteDebug())return this;let n=gt(),s=zr.default.resolve(".currents-debug"),o=zr.default.resolve(s,`${n}.log`);(0,co.mkdir)(s,{recursive:!0}),U(m(`\u{1F47E} Initiated remote ${this.source} debug log collection:`),m(o));let a=ao.default.createWriteStream(o,{flags:"a"});return st.default.log=(...u)=>{this.mode&&(a.write(`${uo.default.formatWithOptions({colors:!1},...u)} `),this.shouldMuteLocalStdout()||Qr(...u))},this.pipelines[n]={id:n,writeStream:a,type:this.source,tempFilePath:o},this}source;static instance;static factory(t="core"){return this.instance||(this.instance=new e(t)),this.instance}pipelines={};mode;debug;getDebugMode(){return this.mode}async finalize({runId:t}={runId:void 0}){try{let r=Object.keys(this.pipelines);r.length===0&&(this.debug("No debug pipelines found"),st.default.log=Qr);for(let n of r)await this.uploadDebug(n,t??gt())}catch{}finally{st.default.log=Qr}}async uploadDebug(t,r){let n=this.pipelines[t];if(!n){this.debug("No debug pipeline found for id %s",t);return}U(m(`\u{1F47E} ${n.type} debug log written:`),m(n?.tempFilePath));try{let s=await Ne({id:r,path:n.tempFilePath});n?.writeStream.end(),U(m(`\u{1F47E} ${n.type} debug log uploaded:`),m(s))}catch(s){g(`Failed to upload ${n.type}} debug log ${m(n.tempFilePath)}: ${s.message}`)}}shouldEnableDebug(){return this.mode==="full"||this.mode==="remote"||this.mode===!0}shouldUploadRemoteDebug(){return this.mode==="full"||this.mode==="remote"}shouldMuteLocalStdout(){return this.mode==="remote"}}});var Mr=h(()=>{"use strict";i();Jr();Xr()});var p,R=h(()=>{"use strict";i();Mr();p=(0,qr.default)("currents")});var Oc={};Er(Oc,{ConsoleOutputPreset:()=>tt,configHelpers:()=>Sc,currentsReporter:()=>_c,default:()=>Ac,fixtures:()=>yc});module.exports=da(Oc);i();i();i();var Oo=d(require("crypto")),qe=d(require("fs")),it=d(require("path"));R();i();var Me=d(require("fs")),lo=d(require("istanbul-lib-coverage")),po=d(require("p-map"));R();var ke=p.extend("coverage");function J({target:e,stage:t}){return({event:r,status:n,message:s,details:o})=>{let a=o?JSON.stringify(o):"",u=`[${t}] [${r}] [${n}] ${s} ${a}`,c=["test_attempt_reports_generation","test_attempt_reports_merging"].includes(t)?u:`${u} [${JSON.stringify(e)}]`;ke(c)}}async function je(e){try{return await Me.default.promises.readdir(e)}catch(t){return ke(t),null}}async function Xa(e){try{return await Me.default.promises.readFile(e,"utf-8")}catch(t){return ke(t),null}}async function Za(e){try{let t=JSON.parse(e);return Object.keys(t).length===0?"empty":t}catch(t){return ke(t),"invalid"}}async function tu(e,t){try{let n=(await Me.default.promises.stat(e)).size/(1024*1024),s=await Xa(e);if(!s)return t({event:"file_read",status:"failed",message:"Failed to read file",details:{filePath:e,fileSizeInMB:n}}),null;t({event:"file_read",status:"passed",message:"File read successfully",details:{filePath:e,fileSizeInMB:n}});let o=await Za(s);switch(o){case"empty":return t({event:"parse",status:"passed",message:"Coverage JSON is empty",details:{filePath:e}}),null;case"invalid":return t({event:"parse",status:"failed",message:"Coverage report is not a valid JSON",details:{filePath:e}}),null;default:return t({event:"parse",status:"passed",message:"Coverage report parsed successfully",details:{filePath:e}}),o}}catch(r){return t({event:"file_read",status:"failed",message:"Error processing coverage file",details:{filePath:e,error:r}}),null}}async function Ge(e,t){let r=lo.default.createCoverageMap({}),n=0;if(await(0,po.default)(e,async s=>{let o=await tu(s,t);if(o)try{r.merge(o),n++,t({event:"merge",status:"passed",message:"Merged file successfully",details:{filePath:s}})}catch(a){t({event:"merge",status:"failed",message:"Failed to merge file",details:{filePath:s,error:a}})}},{concurrency:5}),n===0)return t({event:"merge",status:"failed",message:"No files merged",details:{files:e.length}}),null;t({event:"merge",status:"passed",message:"Merged files successfully",details:{files:n}});try{let s=r.toJSON();return t({event:"parse",status:"passed",message:"Parsed coverage map data",details:{files:e.length}}),s}catch(s){t({event:"parse",status:"failed",message:"Failed to parse coverage map data",details:{files:e.length,error:s}})}return null}var go=(e,t={})=>t.coverage?.projects===!0?!0:Array.isArray(t.coverage?.projects)&&t.coverage.projects.includes(e);i();F();i();function oe(e){if(typeof e!="string")return;let t=e.trim();return t.length>0?t:void 0}function He(e){return oe(e)!==void 0}i();var Zr=require("lodash");i();var $e=d(require("path"));function fo(e,t){return eu($e.default.relative(t,e.file))}function eu(e){return e.split($e.default.sep).join($e.default.posix.sep)}function ot(e){return Q(e.parent.project())}function A(e){let t=e.titlePath(),r=Ve(e).title;return t.slice(t.indexOf(r)+1,t.length)}function We(e){return e.titlePath().filter(t=>!!t).join(" > ")}function Ve(e){let t=e.parent;for(;t.parent?.location;)t=t.parent;return t}function W(e,t){let r=Ve(e).location;return fo(r,t.rootDir)}function k(e){return e.id??e._id}function ft(e,t){return`${k(e)}-${t.retry}`}function mo(e){return{workerIndex:(0,Zr.isNil)(e.results[0]?.workerIndex)?-1:e.results[0].workerIndex,parallelIndex:(0,Zr.isNil)(e.results[0]?.parallelIndex)?-1:e.results[0].parallelIndex}}function Eo(e){if(e._only)return!0;let t=e.parent;for(;t.parent;){if(t._only)return!0;t=t.parent}return!1}function Q(e){if(!e)return"__currents_no_project__";let r=("__projectId"in e?e.__projectId:"").trim(),n=e.name.trim()?r:`project${r?`-0${r}`:""}`;if(n.length>256)throw new Error(`Project name is too long for ${n}`);return n}function ho(e,t){return e.suites.map(r=>{let n=t.projects.find(a=>a.name===r.title),s=oe(n?.metadata?.pwc?.environment),o=oe(y()?.environment)??oe(process.env.CURRENTS_DISCOVERY_ENVIRONMENT);return{name:Q(r.project()),tags:(n?.metadata?.pwc?.tags??[]).map(a=>a.trim()),environment:s??o,tests:ru(r,t)}})}function ru(e,t){let r=e.allTests().map(n=>({isOnly:Eo(n),title:A(n),spec:W(n,t),tags:Bt(n),testId:k(n)}));return r.some(n=>n.isOnly)?r.filter(n=>n.isOnly):r}function Bt(e){let{disableTestTags:t}=nu();if(t)return[];let r=(A(e).join(" ").match(/@(\S+)/g)??[]).filter(Boolean).map(n=>n);return Array.from(new Set([...r,...e.tags??[]].map(n=>n.trim()).map(n=>n.replace("@",""))))}function nu(){return{disableTestTags:y()?.disableTestTags??process.env.CURRENTS_DISCOVERY_DISABLE_TEST_TAGS==="true"}}_();i();var Ke=d(require("fs")),Io=d(require("os")),Ye=d(require("path"));i();var ie={OR8N_SUITE_FILE_PREFIX:"currents-or8n-",FIXTURES_DIR_PREFIX:"currents-fixtures-",FIXTURES_CONFIG_ERR_FILE:"config_fixture_error.log",FIXTURES_WARNING_FILE_PREFIX:"config_fixture_warning"},ae={prefix:"_currents:test:actions:v1",BEFORE:"_currents:test:actions:v1:before",AFTER:"_currents:test:actions:v1:after"},z={ACTION_SKIP:"_currents:rule:skip",ACTION_QUARANTINE:"_currents:rule:quarantine",ACTION_TAG:"_currents:rule:tag",ACTION_MATCH:"_currents:action:match",ACTION_SKIP_POST:"_currents:rule:skip-post",ACTION_QUARANTINE_POST:"_currents:rule:quarantine-post"};i();var Ft=d(require("fs")),su=require("tmp-promise");function To(e){try{return Ft.closeSync(Ft.openSync(e,"wx")),!0}catch(t){if(t.code==="EEXIST")return!1;throw t}}function Co(e){try{let t=Ft.readFileSync(e,"utf-8");return JSON.parse(t)}catch{return null}}_();var Ro=()=>process.env.CURRENTS_FIXTURES_TMP_DIR??Ye.resolve(Io.tmpdir(),`${ie.FIXTURES_DIR_PREFIX}${process.ppid}`),_o=(e,t)=>{let r=t.stack??t.message;Ke.appendFileSync(e,r)},tn=e=>(Ke.mkdirSync(Ro(),{recursive:!0}),Ye.join(Ro(),e)),Mt=(e,t)=>{let r=tn(`${ie.FIXTURES_WARNING_FILE_PREFIX}_${e}.log`);To(r)&&t.forEach(s=>g(s))};var Po=p.extend("fixture");function ou(e){return e.coverage?.dir?it.default.resolve(e.coverage?.dir):it.default.join(process.cwd(),".nyc_output")}function en(e){return e.name||"project"}function iu(e,t){return it.default.join(e,en(t))}function au(){return Oo.default.randomBytes(16).toString("hex")}async function uu(e,t){let r=await je(e);if(!r)return t({event:"find",status:"failed",message:"Coverage directory not found",details:{coverageFiles:r}}),null;if(r.length===0)return t({event:"find",status:"failed",message:"No coverage files found",details:{coverageFiles:r,coverageDir:e}}),null;let n=r.map(s=>it.default.join(e,s));return Ge(n,t)}async function cu(e,t,r){let{project:n,testId:s,retry:o,titlePath:a}=t,u=en(n),c=it.default.join(r,`${s}-${o}`),f=J({target:{projectId:u,titlePath:a,testId:s,attemptId:o},stage:"test_attempt_reports_generation"});return await e.addInitScript(()=>window.addEventListener("beforeunload",()=>{if(console.info("Location: "+window.location.href),!window.__coverage__){console.warn("Coverage data is not available in window.__coverage__ before unloading the page.");return}window.collectIstanbulCoverage(JSON.stringify(window.__coverage__))})),await qe.default.promises.mkdir(c,{recursive:!0}),f({event:"file_write",status:"passed",message:"Coverage directory created",details:{coverageDir:c}}),await e.exposeFunction("collectIstanbulCoverage",T=>{if(!T)return;let C=it.default.join(c,`${au()}.json`);try{qe.default.writeFileSync(C,T),f({event:"file_write",status:"passed",message:"Coverage file created",details:{coverageFilePath:C}})}catch(E){f({event:"file_write",status:"failed",message:"Failed to create coverage file",details:{coverageFilePath:C,error:E}})}}),c}async function lu(e,t,r,n){let{project:s,testId:o,retry:a,titlePath:u}=t,c=en(s);for(let E of e.pages())try{await E.evaluate(()=>{if(!window.__coverage__){console.warn("Coverage data is not available in window.__coverage__ after test execution. This may result in incomplete coverage reports.");return}window.collectIstanbulCoverage(JSON.stringify(window.__coverage__))})}catch{g("Failed to collect coverage from all pages. Coverage may be incomplete")}let f=J({target:{projectId:c,titlePath:u,testId:o,attemptId:a},stage:"test_attempt_reports_merging"}),T=await uu(n,f);if(!T){f({event:"merge",status:"failed",message:"Failed to obtain coverage map",details:{coverageDir:n}});return}let C=it.default.join(r,`${o}-${a}.json`);try{await qe.default.promises.writeFile(C,JSON.stringify(T,null,2)),f({event:"file_write",status:"passed",message:"Test attempt coverage file created",details:{coverageOutputPath:C}})}catch(E){f({event:"file_write",status:"failed",message:"Failed to create test attempt coverage file",details:{coverageOutputPath:C,error:E}})}}var pu=async function({context:e,currentsConfig:t,use:r,testInfo:n}){if(!t)return await Mt("coverageFixture",["Currents config not found. Skipping coverage fixture"]),await r(e);if(!go(Q(n.project),t))return Po("Coverage is disabled"),await r(e);let{project:s}=n,o,a;try{o=iu(ou(t),s),a=await cu(e,n,o)}catch(u){g("Failed to setup coverage context",u)}if(await r(e),!(!o||!a))try{await lu(e,n,o,a)}catch(u){g("Failed to collect coverage",u)}},xo=async({context:e,currentsFixturesEnabled:t,currentsConfig:r},n,s)=>{if(!t)return Po("Currents fixtures disabled, skipping coverage fixture"),await n(e);await pu({context:e,currentsConfig:r,use:n,testInfo:s})};i();i();i();var rn=class{_state={};constructor(){}getState(t){return this._state[t]}upsertState(t,r){return this._state[t]||(typeof r=="function"?this._state[t]=r():this._state[t]=r),this._state[t]}async populateState(t,r){return this._state[t]||(this._state[t]=await r),this._state[t]}},Y=new rn;R();i();var Lo=require("@currents/commit-info"),Bo=require("lodash");i();var Qe=require("lodash");R();i();var O=require("lodash");R();xe();var Je=p.extend("ci"),gu=(e,...t)=>(0,O.chain)(t).compact().join(e).value(),du=(e,t)=>(0,O.set)(e,(0,O.camelCase)(t),process.env[t]),w=e=>(0,O.transform)(e,du,{}),fu=()=>process.env.TF_BUILD&&process.env.AZURE_HTTP_USER_AGENT,mu=()=>(0,O.some)(process.env,(e,t)=>/^CODEBUILD_/.test(t)),Eu=()=>process.env.bamboo_buildNumber,hu=()=>(0,O.some)(process.env,(e,t)=>/^CONCOURSE_/.test(t)),Tu=()=>process.env.GITLAB_CI||process.env.CI_SERVER_NAME&&/^GitLab/.test(process.env.CI_SERVER_NAME),Cu=()=>!!(process.env.BUILD_ID&&process.env.PROJECT_ID&&process.env.PROJECT_NUMBER||process.env.GCP_PROJECT||process.env.GCLOUD_PROJECT||process.env.GOOGLE_CLOUD_PROJECT),Ru=()=>process.env.JENKINS_URL||process.env.JENKINS_HOME||process.env.JENKINS_VERSION||process.env.HUDSON_URL||process.env.HUDSON_HOME,Iu={appveyor:"APPVEYOR",azure:fu,awsCodeBuild:mu,bamboo:Eu,bitbucket:"BITBUCKET_BUILD_NUMBER",buildkite:"BUILDKITE",circle:"CIRCLECI",concourse:hu,codeFresh:"CF_BUILD_ID",drone:"DRONE",githubActions:"GITHUB_ACTIONS",gitlab:Tu,goCD:"GO_JOB_NAME",jenkins:Ru,googleCloud:Cu,semaphore:"SEMAPHORE",teamcity:"TEAMCITY_VERSION",travis:"TRAVIS",netlify:"NETLIFY"};function _u(){let{env:e}=process;return(0,O.findKey)(Iu,t=>{if((0,O.isString)(t))return e[t];if((0,O.isFunction)(t))return t()})}var Uo=()=>({appveyor:w(["APPVEYOR_JOB_ID","APPVEYOR_ACCOUNT_NAME","APPVEYOR_PROJECT_SLUG","APPVEYOR_BUILD_NUMBER","APPVEYOR_BUILD_VERSION","APPVEYOR_PULL_REQUEST_NUMBER","APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH"]),azure:w(["AGENT_BUILDDIRECTORY","AGENT_ID","AGENT_JOBNAME","AGENT_JOBSTATUS","AGENT_MACHINENAME","AGENT_NAME","AGENT_OS","AGENT_OSARCHITECTURE","BUILD_BUILDID","BUILD_BUILDNUMBER","BUILD_BUILDURI","BUILD_CONTAINERID","BUILD_CRONSCHEDULE_DISPLAYNAME","BUILD_DEFINITIONNAME","BUILD_DEFINITIONVERSION","BUILD_QUEUEDBY","BUILD_QUEUEDBYID","BUILD_REASON","BUILD_REPOSITORY_ID","BUILD_REPOSITORY_NAME","BUILD_REPOSITORY_PROVIDER","BUILD_REPOSITORY_URI","BUILD_REQUESTEDFOR","BUILD_REQUESTEDFOREMAIL","BUILD_REQUESTEDFORID","BUILD_SOURCEBRANCH","BUILD_SOURCEBRANCHNAME","BUILD_SOURCESDIRECTORY","BUILD_SOURCEVERSION","BUILD_SOURCEVERSIONAUTHOR","BUILD_SOURCEVERSIONMESSAGE","BUILD_STAGINGDIRECTORY","BUILD_TRIGGEREDBY_BUILDID","BUILD_TRIGGEREDBY_BUILDNUMBER","BUILD_TRIGGEREDBY_DEFINITIONID","BUILD_TRIGGEREDBY_DEFINITIONNAME","BUILD_TRIGGEREDBY_PROJECTID","COMMON_TESTRESULTSDIRECTORY","PIPELINE_WORKSPACE","SYSTEM_COLLECTIONID","SYSTEM_COLLECTIONURI","SYSTEM_DEFAULTWORKINGDIRECTORY","SYSTEM_DEFINITIONID","SYSTEM_HOSTTYPE","SYSTEM_JOBATTEMPT","SYSTEM_JOBDISPLAYNAME","SYSTEM_JOBID","SYSTEM_JOBNAME","SYSTEM_PHASEATTEMPT","SYSTEM_PHASEDISPLAYNAME","SYSTEM_PHASENAME","SYSTEM_PLANID","SYSTEM_PULLREQUEST_ISFORK","SYSTEM_PULLREQUEST_PULLREQUESTID","SYSTEM_PULLREQUEST_PULLREQUESTNUMBER","SYSTEM_PULLREQUEST_SOURCEREPOSITORYURI","SYSTEM_PULLREQUEST_SOURCEBRANCH","SYSTEM_PULLREQUEST_SOURCECOMMITID","SYSTEM_PULLREQUEST_TARGETBRANCH","SYSTEM_PULLREQUEST_TARGETBRANCHNAME","SYSTEM_STAGEATTEMPT","SYSTEM_STAGEDISPLAYNAME","SYSTEM_STAGENAME","SYSTEM_TEAMFOUNDATIONCOLLECTIONURI","SYSTEM_TEAMPROJECT","SYSTEM_TEAMPROJECTID","SYSTEM_TIMELINEID","RELEASE_RELEASEWEBURL","RELEASE_RELEASEID","RELEASE_RELEASENAME","RELEASE_RELEASEURI","RELEASE_DEFINITIONID","RELEASE_DEFINITIONNAME","RELEASE_ENVIRONMENTID","RELEASE_ENVIRONMENTNAME","RELEASE_REASON","RELEASE_REQUESTEDFOR","RELEASE_REQUESTEDFOREMAIL","RELEASE_REQUESTEDFORID","RELEASE_DEPLOYMENTID","RELEASE_DEPLOYPHASEID","RELEASE_DEFINITIONENVIRONMENTID","RELEASE_ENVIRONMENTURI","RELEASE_TEAMPROJECT","RELEASE_TEAMPROJECTID","RELEASE_PRIMARYARTIFACTSOURCEALIAS","RELEASE_TRIGGERINGARTIFACT_ALIAS","RELEASE_ATTEMPT_NUMBER","RELEASE_SKIPARTIFACTSDOWNLOAD","RELEASE_RELEASEDESCRIPTION","RELEASE_DEPLOYMENT_REQUESTEDFOR","RELEASE_DEPLOYMENT_REQUESTEDFOREMAIL","RELEASE_DEPLOYMENT_REQUESTEDFORID"]),awsCodeBuild:w(["AWS_DEFAULT_REGION","AWS_REGION","CODEBUILD_BATCH_BUILD_IDENTIFIER","CODEBUILD_BUILD_ARN","CODEBUILD_BUILD_ID","CODEBUILD_BUILD_IMAGE","CODEBUILD_BUILD_NUMBER","CODEBUILD_BUILD_SUCCEEDING","CODEBUILD_BUILD_URL","CODEBUILD_INITIATOR","CODEBUILD_PROJECT_ARN","CODEBUILD_PUBLIC_BUILD_URL","CODEBUILD_RESOLVED_SOURCE_VERSION","CODEBUILD_SOURCE_REPO_URL","CODEBUILD_SOURCE_VERSION","CODEBUILD_SRC_DIR","CODEBUILD_START_TIME","CODEBUILD_WEBHOOK_ACTOR_ACCOUNT_ID","CODEBUILD_WEBHOOK_BASE_REF","CODEBUILD_WEBHOOK_EVENT","CODEBUILD_WEBHOOK_HEAD_REF","CODEBUILD_WEBHOOK_MERGE_COMMIT","CODEBUILD_WEBHOOK_PREV_COMMIT","CODEBUILD_WEBHOOK_TRIGGER","CODEBUILD_WEBHOOK_LABEL","CODEBUILD_WEBHOOK_RUN_ID","CODEBUILD_WEBHOOK_JOB_ID","CODEBUILD_WEBHOOK_WORKFLOW_NAME","CODEBUILD_RUNNER_OWNER","CODEBUILD_RUNNER_REPO","CODEBUILD_RUNNER_REPO_DOMAIN","CODEBUILD_RUNNER_WITH_BUILDSPEC"]),bamboo:w(["bamboo_buildNumber","bamboo_buildResultsUrl","bamboo_planRepository_repositoryUrl","bamboo_buildKey"]),bitbucket:w(["CI","BITBUCKET_WORKSPACE","BITBUCKET_REPO_SLUG","BITBUCKET_REPO_UUID","BITBUCKET_REPO_FULL_NAME","BITBUCKET_REPO_IS_PRIVATE","BITBUCKET_REPO_OWNER","BITBUCKET_REPO_OWNER_UUID","BITBUCKET_PROJECT_KEY","BITBUCKET_PROJECT_UUID","BITBUCKET_BUILD_NUMBER","BITBUCKET_PIPELINE_UUID","BITBUCKET_STEP_UUID","BITBUCKET_STEP_RUN_NUMBER","BITBUCKET_STEP_TRIGGERER_UUID","BITBUCKET_PARALLEL_STEP","BITBUCKET_PARALLEL_STEP_COUNT","BITBUCKET_CLONE_DIR","BITBUCKET_COMMIT","BITBUCKET_BRANCH","BITBUCKET_TAG","BITBUCKET_BOOKMARK","BITBUCKET_GIT_HTTP_ORIGIN","BITBUCKET_GIT_SSH_ORIGIN","BITBUCKET_PR_ID","BITBUCKET_PR_DESTINATION_BRANCH","BITBUCKET_PR_DESTINATION_COMMIT","BITBUCKET_DEPLOYMENT_ENVIRONMENT","BITBUCKET_DEPLOYMENT_ENVIRONMENT_UUID","BITBUCKET_EXIT_CODE"]),buildkite:w(["BUILDKITE_ORGANIZATION_SLUG","BUILDKITE_PIPELINE_ID","BUILDKITE_PIPELINE_NAME","BUILDKITE_PIPELINE_SLUG","BUILDKITE_PIPELINE_DEFAULT_BRANCH","BUILDKITE_REPO","BUILDKITE_SOURCE","BUILDKITE_BRANCH","BUILDKITE_TAG","BUILDKITE_COMMIT","BUILDKITE_MESSAGE","BUILDKITE_BUILD_AUTHOR","BUILDKITE_BUILD_AUTHOR_EMAIL","BUILDKITE_JOB_ID","BUILDKITE_BUILD_ID","BUILDKITE_BUILD_URL","BUILDKITE_BUILD_NUMBER","BUILDKITE_LABEL","BUILDKITE_COMMAND","BUILDKITE_STEP_ID","BUILDKITE_STEP_KEY","BUILDKITE_PARALLEL_JOB","BUILDKITE_PARALLEL_JOB_COUNT","BUILDKITE_RETRY_COUNT","BUILDKITE_COMPUTE_TYPE","BUILDKITE_CLUSTER_NAME","BUILDKITE_PULL_REQUEST","BUILDKITE_PULL_REQUEST_REPO","BUILDKITE_PULL_REQUEST_BASE_BRANCH","BUILDKITE_PULL_REQUEST_DRAFT","BUILDKITE_PULL_REQUEST_LABELS","BUILDKITE_MERGE_QUEUE_BASE_BRANCH","BUILDKITE_MERGE_QUEUE_BASE_COMMIT","BUILDKITE_REBUILT_FROM_BUILD_ID","BUILDKITE_REBUILT_FROM_BUILD_NUMBER","BUILDKITE_TRIGGERED_FROM_BUILD_ID","BUILDKITE_TRIGGERED_FROM_BUILD_NUMBER","BUILDKITE_TRIGGERED_FROM_BUILD_PIPELINE_SLUG"]),circle:w(["CI","CIRCLECI","CIRCLE_BRANCH","CIRCLE_BUILD_NUM","CIRCLE_BUILD_URL","CIRCLE_PREVIOUS_BUILD_NUM","CIRCLE_JOB","CIRCLE_WORKFLOW_ID","CIRCLE_WORKFLOW_JOB_ID","CIRCLE_WORKFLOW_WORKSPACE_ID","CIRCLE_PIPELINE_ID","CIRCLE_ORGANIZATION_ID","CIRCLE_PROJECT_ID","CIRCLE_PROJECT_REPONAME","CIRCLE_PROJECT_USERNAME","CIRCLE_REPOSITORY_URL","CIRCLE_WORKING_DIRECTORY","CIRCLE_SHA1","CIRCLE_TAG","CIRCLE_USERNAME","CIRCLE_NODE_INDEX","CIRCLE_NODE_TOTAL","CIRCLE_PR_NUMBER","CIRCLE_PR_REPONAME","CIRCLE_PR_USERNAME","CIRCLE_PULL_REQUEST","CIRCLE_PULL_REQUESTS","CI_PULL_REQUEST"]),concourse:w(["BUILD_ID","BUILD_NAME","BUILD_JOB_NAME","BUILD_PIPELINE_NAME","BUILD_TEAM_NAME","ATC_EXTERNAL_URL"]),codeFresh:w(["CF_BUILD_ID","CF_BUILD_URL","CF_CURRENT_ATTEMPT","CF_STEP_NAME","CF_PIPELINE_NAME","CF_PIPELINE_TRIGGER_ID","CF_PULL_REQUEST_ID","CF_PULL_REQUEST_IS_FORK","CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_TARGET"]),drone:w(["DRONE_BUILD_LINK","DRONE_BUILD_NUMBER","DRONE_PULL_REQUEST"]),githubActions:w(["CI","GITHUB_ACTIONS","GITHUB_WORKFLOW","GITHUB_WORKFLOW_REF","GITHUB_WORKFLOW_SHA","GITHUB_ACTION","GITHUB_ACTION_PATH","GITHUB_ACTION_REPOSITORY","GITHUB_JOB","GITHUB_EVENT_NAME","GITHUB_EVENT_PATH","GITHUB_RUN_ID","GITHUB_RUN_NUMBER","GITHUB_RUN_ATTEMPT","GITHUB_REPOSITORY","GITHUB_REPOSITORY_ID","GITHUB_REPOSITORY_OWNER","GITHUB_REPOSITORY_OWNER_ID","GITHUB_REF","GITHUB_REF_NAME","GITHUB_REF_TYPE","GITHUB_REF_PROTECTED","GITHUB_BASE_REF","GITHUB_HEAD_REF","GITHUB_SHA","GITHUB_ACTOR","GITHUB_ACTOR_ID","GITHUB_TRIGGERING_ACTOR","GITHUB_SERVER_URL","GITHUB_API_URL","GITHUB_GRAPHQL_URL","GITHUB_WORKSPACE","GITHUB_RETENTION_DAYS","RUNNER_OS","RUNNER_ARCH","RUNNER_NAME","RUNNER_ENVIRONMENT","RUNNER_DEBUG"]),gitlab:w(["CI_PIPELINE_ID","CI_PIPELINE_URL","CI_BUILD_ID","CI_JOB_ID","CI_JOB_URL","CI_JOB_NAME","GITLAB_HOST","CI_PROJECT_ID","CI_PROJECT_URL","CI_REPOSITORY_URL","CI_ENVIRONMENT_URL","CI_DEFAULT_BRANCH","CI_MERGE_REQUEST_IID","CI_MERGE_REQUEST_PROJECT_URL","CI_MERGE_REQUEST_TITLE","CI_MERGE_REQUEST_SOURCE_BRANCH_NAME","CI_MERGE_REQUEST_TARGET_BRANCH_NAME","CI_OPEN_MERGE_REQUESTS"]),goCD:w(["GO_SERVER_URL","GO_ENVIRONMENT_NAME","GO_PIPELINE_NAME","GO_PIPELINE_COUNTER","GO_PIPELINE_LABEL","GO_STAGE_NAME","GO_STAGE_COUNTER","GO_JOB_NAME","GO_TRIGGER_USER","GO_REVISION","GO_TO_REVISION","GO_FROM_REVISION","GO_MATERIAL_HAS_CHANGED"]),googleCloud:w(["BUILD_ID","PROJECT_ID","REPO_NAME","BRANCH_NAME","TAG_NAME","COMMIT_SHA","SHORT_SHA"]),jenkins:w(["BRANCH_NAME","BUILD_DISPLAY_NAME","BUILD_ID","BUILD_NUMBER","BUILD_TAG","BUILD_URL","CHANGE_AUTHOR","CHANGE_AUTHOR_DISPLAY_NAME","CHANGE_AUTHOR_EMAIL","CHANGE_BRANCH","CHANGE_FORK","CHANGE_ID","CHANGE_TARGET","CHANGE_TITLE","CHANGE_URL","CI","EXECUTOR_NUMBER","JAVA_HOME","JENKINS_HOME","JENKINS_URL","JOB_BASE_NAME","JOB_NAME","JOB_URL","NODE_LABELS","NODE_NAME","RUN_ARTIFACTS_DISPLAY_URL","RUN_CHANGES_DISPLAY_URL","TAG_NAME","WORKSPACE","WORKSPACE_TMP","GIT_AUTHOR_EMAIL","GIT_AUTHOR_NAME","GIT_BRANCH","GIT_COMMIT","GIT_COMMITTER_EMAIL","GIT_COMMITTER_NAME","GIT_LOCAL_BRANCH","GIT_PREVIOUS_COMMIT","GIT_PREVIOUS_SUCCESSFUL_COMMIT","GIT_URL","ghprbActualCommit","ghprbGhRepository","ghprbPullId","ghprbPullLink","ghprbSourceBranch","ghprbTargetBranch","ghprbTriggerAuthorLogin"]),semaphore:w(["SEMAPHORE_BRANCH_ID","SEMAPHORE_BUILD_NUMBER","SEMAPHORE_CURRENT_JOB","SEMAPHORE_CURRENT_THREAD","SEMAPHORE_EXECUTABLE_UUID","SEMAPHORE_GIT_BRANCH","SEMAPHORE_GIT_DIR","SEMAPHORE_GIT_REF","SEMAPHORE_GIT_REF_TYPE","SEMAPHORE_GIT_REPO_SLUG","SEMAPHORE_GIT_SHA","SEMAPHORE_GIT_URL","SEMAPHORE_JOB_COUNT","SEMAPHORE_JOB_ID","SEMAPHORE_JOB_NAME","SEMAPHORE_JOB_UUID","SEMAPHORE_PIPELINE_ID","SEMAPHORE_PLATFORM","SEMAPHORE_PROJECT_DIR","SEMAPHORE_PROJECT_HASH_ID","SEMAPHORE_PROJECT_ID","SEMAPHORE_PROJECT_NAME","SEMAPHORE_PROJECT_UUID","SEMAPHORE_REPO_SLUG","SEMAPHORE_TRIGGER_SOURCE","SEMAPHORE_WORKFLOW_ID","PULL_REQUEST_NUMBER"]