@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
27 lines (26 loc) • 52.7 kB
JavaScript
"use strict";var Cn=Object.create;var Q=Object.defineProperty;var On=Object.getOwnPropertyDescriptor;var Sn=Object.getOwnPropertyNames;var Un=Object.getPrototypeOf,hn=Object.prototype.hasOwnProperty;var c=(e,t)=>()=>(e&&(t=e(e=0)),t);var Oe=(e,t)=>{for(var r in t)Q(e,r,{get:t[r],enumerable:!0})},lt=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Sn(t))!hn.call(e,s)&&s!==r&&Q(e,s,{get:()=>t[s],enumerable:!(n=On(t,s))||n.enumerable});return e};var l=(e,t,r)=>(r=e!=null?Cn(Un(e)):{},lt(t||!e||!e.__esModule?Q(r,"default",{value:e,enumerable:!0}):r,e)),Dn=e=>lt(Q({},"__esModule",{value:!0}),e);var o=c(()=>{"use strict"});var pt,Et=c(()=>{pt={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 z,Se=c(()=>{"use strict";o();Et();z=pt.version});var Ue,dt,ft=c(()=>{"use strict";o();Ue=()=>process.env.CURRENTS_API_URL??"https://cy.currents.dev",dt=()=>3e4});function gt(e){An.push(e)}var An,he=c(()=>{"use strict";o();An=[]});function mt(e){return{...e&&Object.prototype.hasOwnProperty.call(Tt,e)?Tt[e]:_t}}var x,Nn,Pn,_t,Tt,X=c(()=>{"use strict";o();x={None:"none",Summary:"summary",Detailed:"detailed"},Nn={introAndSummary:!1,testOutput:!1,progress:!1,tables:!1,warningsAndErrors:!1},Pn={introAndSummary:!0,testOutput:"line",progress:!1,tables:!1,warningsAndErrors:!0},_t={introAndSummary:!0,testOutput:"full",progress:!0,tables:!0,warningsAndErrors:!0},Tt={[x.None]:Nn,[x.Summary]:Pn,[x.Detailed]:_t}});var Rt,It,Ct=c(()=>{"use strict";o();Rt=[],It=[]});function Ot(e){De=e}function Bn(e){return De?!!De[e]:!0}function K(e,t){gt(t),Bn(e)&&console.log(t)}var O,Z,De,A,E,U,Le,yn,j,Ae,_s,ms,Rs,Is,Cs,Os,Ss,Us,g,hs,St=c(()=>{"use strict";o();O=l(require("chalk")),Z=l(require("util"));X();I();he();Ct();De=null;A=(...e)=>{K("introAndSummary",Z.default.format(...e))},E=(...e)=>{let t=Z.default.format(...e);It.push(t),p("WARNING: ",t),K("warningsAndErrors",O.default.bgYellow.black(" WARNING ")+" "+t)},U=(...e)=>{let t=Z.default.format(...e);Rt.push(t),p("ERROR: ",t),K("warningsAndErrors",O.default.bgRed.white(" ERROR ")+" "+t)},Le=()=>{K("introAndSummary",`
`+yn()+`
`)},yn=()=>O.default.dim(Array(64).fill("=").join("")),j=(e=2)=>{let t=Math.max(0,Math.floor(e));t!==0&&K("introAndSummary",Array(t).fill("").join(`
`))},Ae=O.default.cyan,_s=O.default.blueBright,ms=O.default.red,Rs=O.default.yellow,Is=O.default.green,Cs=O.default.gray,Os=O.default.white,Ss=O.default.black,Us=O.default.magenta,g=O.default.dim,hs=O.default.bold});var L=c(()=>{"use strict";o();he();St()});async function W(e){await wn(),await new Promise((t,r)=>{if(!B){r(new Error("WebSocket is not initialized"));return}ee("sending message to ws: %o, %o",B.url,e),B.send(JSON.stringify(e),n=>{n?r(n):t()})})}function ht(){B&&B.close()}async function wn(){if(B){ee("ws already initialized");return}let e=parseInt(process.env.CURRENTS_PWCP_WSS_PORT);ee("setting port to %s",e),await new Promise(t=>{B=new Ut.default(`ws://localhost:${e}`),B.on("open",()=>{ee("ws opened"),t(null)})})}var Ut,ee,B,Ne=c(()=>{"use strict";o();Ut=l(require("ws"));I();ee=p.extend("ws"),B=null});var Dt,Hs,Lt,At=c(()=>{"use strict";o();Dt=l(require("events"));Be();I();Ne();Pe();Hs=p.extend("pubsub"),Lt=new Dt.default});var ye,Pt,Nt,Bt,yt=c(()=>{"use strict";o();L();At();ye={cancellationReason:null},Pt=e=>{ye.cancellationReason||(ye.cancellationReason=e)},Nt=()=>ye.cancellationReason,Bt=({showWarning:e=!0}={})=>{let t=Nt();t&&(e&&E("%s",t),Lt.emit("runCancelled",t))}});var Pe=c(()=>{"use strict";o();yt()});var bt,w,te=c(()=>{"use strict";o();bt=require("nanoid"),w=(0,bt.customAlphabet)("abcdefghijklmnopqrstuvwxyz",10)});var wt,Mn,Mt,vt=c(()=>{"use strict";o();wt=require("ts-pattern"),Mn={outcome:null,scannerConfig:null,currentsConfig:null,internalConfig:null},Mt=()=>Mn});function re(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"&&Y.includes(t.code))}var Y,V=c(()=>{"use strict";o();Y=["ECONNABORTED","ECONNREFUSED","ECONNRESET","ETIMEDOUT","EPIPE","ENETUNREACH","EHOSTUNREACH","ENETRESET","ENOTFOUND","EAI_AGAIN"]});function Ft(e){(0,C.match)(e).when(re,vn).otherwise(()=>{E("Unexpected error while sending network request: %s",e)})}function vn(e){let t=e.response?.config??e.config;return(0,C.match)(e).with({code:"ECONNABORTED"},()=>{E("Network connection aborted")}).with({code:"ECONNREFUSED"},()=>{E("Network connection aborted")}).with({code:"ECONNRESET"},()=>{E("Network connection reset")}).with({code:"EPIPE"},()=>{E("Network connection reset")}).with({code:"ENETUNREACH"},()=>{E("Network connection aborted")}).with({code:"EHOSTUNREACH"},()=>{E("Network connection aborted")}).with({code:"ETIMEDOUT"},()=>{E("Network connection timeout")}).with({response:C.P.not(C.P.nullish)},r=>{xn(r,{status:r.response.status,data:r.response.data})}).otherwise(()=>{E(`[currents] Unexpected network error: %s
%O`,e.message,{method:t?.method,url:t?.url,status:e.response?.status,payload:t?.data,requestId:$(e)})})}function xn(e,{status:t,data:r}){let n=e.response?.config??e.config,s=n?.method,i=n?.url;(0,C.match)(t).with(401,()=>{E(`[currents] ${s} ${i} - 401 Unauthorized Request from cloud service`)}).with(400,()=>{E(`[currents] ${s} ${i} - 400 Bad Request from cloud service:
%o`,r)}).with(429,()=>{E(`[currents] ${s} ${i} - 429 Too Many Requests from cloud service`)}).with(422,()=>{Hn(e,r)}).otherwise(()=>{E(`[currents] Unexpected network response: %s
%O`,e.message,{method:s,url:i,status:e.response?.status,requestId:$(e)})})}function Hn(e,t){let r=e.response?.config??e.config;(0,C.match)(t).with({code:be.MISSING_SUITE,message:C.P.string,errors:C.P.array(C.P.string)},async n=>{let{message:s,errors:i}=n;j(1),U(...xt(s,i)),ne({id:w(),text:(0,Ht.default)(Mt(),null,2)}).then(u=>{U(`Please share this URL with Currents support for further investigation:
${u}`)}).catch(u=>{E("Failed to upload debug artifact: %s",u)}),j(1)}).with({code:be.RUN_CANCELLED,message:C.P.string},n=>{Pt(n.message),Bt()}).with({code:be.RUN_EXPIRED,message:C.P.string},n=>{E(n.message)}).with({message:C.P.string,errors:C.P.array(C.P.string)},n=>{let{message:s,errors:i}=n;j(1),E(...xt(s,i)),j(1)}).otherwise(()=>{E(`[currents] Unexpected network response: %s
%O`,e.message,{method:r?.method,url:r?.url,status:e.response?.status,requestId:$(e)})})}function xt(e,t){return Gt.default.isString(e)?t?.length===0?[e]:[e,`
${(t??[]).map(r=>` - ${r}`).join(`
`)}
`]:["Unexpected network error"]}function $(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 Ht,Gt,C,be,we=c(()=>{"use strict";o();Ht=l(require("json-stringify-safe")),Gt=l(require("lodash")),C=require("ts-pattern");Pe();te();L();Me();vt();V();be={RUN_CANCELLED:"RUN_CANCELLED",RUN_EXPIRED:"RUN_EXPIRED",MISSING_SUITE:"MISSING_SUITE"}});function Wt(e,t,r){let n=r.method?.toUpperCase(),s=r.url,i=$(t),u=(0,kt.default)(ve(e)),d=`Network request '${n} ${s}' failed: '${t.message}'.${i?` Request ID: ${i}.`:""} Next attempt is in ${u} (${e}/${r["transport-retry"]?.retries??xe()}).`;Kt(d),E(d)}var kt,Kt,ve,jt,xe,Yt=c(()=>{"use strict";o();kt=l(require("pretty-ms"));I();L();we();V();Kt=p.extend("http"),ve=e=>{let t=[3e3,15e3,3e4];return t[Math.min(Math.max(e-1,0),t.length-1)]},jt=e=>{if(Kt("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&&Y.includes(e.code))return!0;if(!re(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)},xe=()=>3});function Fn(e){let t=Jt.default.getProxyForUrl(e);if(t)return Gn("Using HTTP proxy %s for %s",t,e),Vt===t&&oe||(Vt=t,oe=new $t.ProxyAgent(t)),oe}function qt(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 kn(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 Kn(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 jn(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 Wn(e,t){if(!e.length)return null;if(jn(e,t))try{return JSON.parse(e)}catch{return e}return e}function Yn(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 Qt(e){if(!e||typeof e!="object")return;if(Yn(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"&&Y.includes(t.code))return t.code;if(t.cause)return Qt(t.cause);if(/connection reset|other side closed|terminated|socket hang up/i.test(r))return"ECONNRESET"}function Vn(e){return e instanceof He.Readable}function $n(e){return Vn(e)?{body:He.Readable.toWeb(e),duplex:"half"}:{body:e}}async function se(e,t,r){let n=Fn(e),s,i;try{let f={method:t.method,headers:t.headers,signal:t.signal};if(t.body!==void 0){let b=$n(t.body);f.body=b.body,b.duplex&&(f.duplex=b.duplex)}n!==void 0&&(f.dispatcher=n),s=await fetch(e,f),i=await s.text()}catch(f){let b=Qt(f);throw{message:f instanceof Error?f.message:String(f),code:b,config:r}}let u=kn(s.headers),d=Kn(u),S=Wn(i,d),R=s.status,M=s.statusText;if(!s.ok)throw{message:`Request failed with status code ${R}`,config:r,response:{status:R,statusText:M,headers:u,data:S,config:r}};return{data:S,status:R,statusText:M,headers:u,config:r}}var He,$t,Jt,Gn,Vt,oe,Ge=c(()=>{"use strict";o();He=require("stream"),$t=require("undici");I();V();Jt=l(require("proxy-from-env")),Gn=p.extend("http:transport"),Vt=null,oe=null});function or(e){nr["x-pw-version"]=e??"0.0.0"}function zn(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 Xn(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 Zn(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 eo(...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 to(e){let t={...Qn,...e.currentsOptions};return!t.enableCompression||e.data===void 0||Buffer.isBuffer(e.data)||typeof e.data=="string"||(0,er.default)(e.data)<=t.compressThresholdBytes?e:{...e,data:await qn((0,Fe.default)(e.data)),headers:{...e.headers,"Content-Encoding":"gzip"}}}function ro(e){let{data:t}=e;if(t!==void 0)return Buffer.isBuffer(t)||typeof t=="string"?t:(0,Fe.default)(t)}async function no(e){let t=e.baseURL??Ue(),r=e["transport-retry"]?.retries??xe(),n=zn(e.headers)??(0,Zt.nanoid)(),s=await to(e),i=ro(s),u=(s.method??"get").toUpperCase(),d=e.signal;if(d?.aborted)throw{message:d.reason?.message??"Request aborted",code:"ECONNABORTED",config:e};let S;for(let R=0;R<=r;R++){let M=s.timeout??dt(),f=AbortSignal.timeout(M),b=d?eo(d,f):f,v=N(),P={...Zn(s.headers),...nr,"accept-encoding":"gzip, deflate, br","x-currents-idempotency-key":n,"x-pwc-request-attempt":String(R),"x-currents-key":v?.recordKey??""};v?.orchestrationId&&(P["x-currents-orchestration-id"]=v.orchestrationId),v?.machineId&&(P["x-currents-machine-id"]=v.machineId),Xn(e.headers,"content-type")||(P["content-type"]=P["content-type"]??"application/json");let mn={...s,method:u,url:e.url,baseURL:t,headers:P},Rn=qt(t,e.url??""),ut={method:u,url:e.url,headers:P,data:Buffer.isBuffer(i)?"buffer":i};R?zt("network request retry: %o",Xt({...ut,isRetry:!0})):zt("network request: %o",Xt(ut));try{return await se(Rn,{method:u,headers:P,body:i,signal:b},mn)}catch(Ce){S=Ce;let ct=Ce;if(!jt(ct)||R>=r)throw Ce;Wt(R+1,ct,{...e,method:u}),await new Promise(In=>setTimeout(In,ve(R+1)))}}throw S}function oo(){return{request:e=>no(e)}}function sr(){return ie||(ie=oo(),ie)}function Xt(e){return{method:e.method,baseUrl:Ue(),url:e.url,data:e.isRetry?"<retry>":so(e.data),headers:{...e.headers,"x-currents-key":"***"}}}function so(e){let t=e;return t?.results?.raw?{...t,results:{...t.results,raw:"***"}}:e}var Fe,Zt,er,tr,rr,zt,Jn,nr,qn,Qn,ie,ke=c(()=>{"use strict";o();Fe=l(require("json-stringify-safe")),Zt=require("nanoid"),er=l(require("object-sizeof")),tr=require("util"),rr=l(require("zlib"));H();I();Se();ft();Yt();Ge();zt=p.extend("http"),Jn=1024*1024*1,nr={"x-pw-version":"0.0.0","x-pwc-version":z},qn=(0,tr.promisify)(rr.default.gzip);Qn={enableCompression:!1,compressThresholdBytes:Jn},ie=null});async function G(e,t=sr){try{let r=await t().request(e);return ir("network response: %o",{...ar.default.omit(r,"request","config"),url:r.config.url,method:r.config.method}),r}catch(r){let n=r;throw ir("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}),Ft(n),n}}var ar,ir,ur=c(()=>{"use strict";o();ar=l(require("lodash"));I();ke();we();ir=p.extend("http")});var Ke=c(()=>{"use strict";o();ur();V()});var cr={};Oe(cr,{getDebugUrl:()=>io});var io,lr=c(()=>{"use strict";o();Ke();io=({runId:e,type:t})=>G({method:"POST",url:"runs/debug-logs",data:{type:t,runId:e}}).then(r=>r.data)});function uo(e,t){return Tr({path:e,name:null,uploadUrl:t,contentType:"text/plain"},"text/plain")}async function Tr(e,t,r){let n=await pr.default.readFile(e.path);return je("Uploading file %s",e.uploadUrl,{buffer:Buffer.byteLength(n)}),_r(n,e.uploadUrl,t,r)}async function co(e,t,r){return je("Uploading buffer %s",e.name,{buffer:Buffer.byteLength(e.buffer)}),_r(e.buffer,e.uploadUrl,t,r)}function lo(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 Eo(e,t,r,n){let s=lo(t),i=e,u={"Content-Disposition":"inline","Content-Type":r};n?.compress&&(i=await ao(e),u["Content-Encoding"]="gzip"),await se(s,{method:"PUT",headers:u,body:i},{method:"PUT",url:s,headers:u})}async function _r(e,t,r,n){await(0,Er.default)(async()=>{await Eo(e,t,r,n)},{retries:5,onRetry:(s,i)=>{if(je(`Upload failed %d out of 5 attempts: %s
%o`,i,s.message,s.response?.data),i===5){U(`Cannot upload after ${i} times: ${s.message}`);return}E(`Upload failed ${i} out of 5 attempts: ${s.message}`)}})}var Er,pr,dr,fr,je,ao,gr,mr=c(()=>{"use strict";o();Er=l(require("async-retry")),pr=l(require("fs/promises")),dr=require("util"),fr=require("zlib");I();Ge();L();je=p.extend("upload"),ao=(0,dr.promisify)(fr.gzip),gr=(s=>(s.PNG="image/png",s.WEBM="video/webm",s.TEXT="text/plain",s.ZIP="application/zip",s))(gr||{})});var Rr={};Oe(Rr,{ContentType:()=>gr,sendBuffer:()=>co,sendPath:()=>Tr,uploadText:()=>uo});var Ir=c(()=>{"use strict";o();mr()});async function ne(e){let{getDebugUrl:t}=await Promise.resolve().then(()=>(lr(),cr));try{let{readUrl:r,uploadUrl:n}=await t({runId:e.id,type:"pw-debug"}),{uploadText:s,sendBuffer:i}=await Promise.resolve().then(()=>(Ir(),Rr));return"text"in e&&await i({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 We,Ye=c(()=>{"use strict";o();We=l(require("debug"))});function po(e){return e==="false"?!1:e==="remote"?"remote":e==="full"?"full":!!e}var Cr,Or,Sr=c(()=>{"use strict";o();Cr=require("@commander-js/extra-typings"),Or=new Cr.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(po).env("CURRENTS_DEBUG")});var Ur,hr,Dr=c(()=>{"use strict";o();Ur=require("@commander-js/extra-typings");Sr();hr=()=>new Ur.Command().allowUnknownOption().allowExcessArguments(!0).addOption(Or).helpOption(!1)});var y,Lr,$e,Ar,Nr,Ve,ae,Je=c(()=>{"use strict";o();y=l(require("debug")),Lr=l(require("fs")),$e=l(require("path")),Ar=l(require("util")),Nr=require("fs/promises");te();L();Dr();Ye();y.default.useColors=function(){return!1};Ve=y.default.log,ae=class e{constructor(t="core"){this.source=t;if(this.mode=hr().parse().opts().pwcDebug??!1,this.debug=(0,y.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(y.default.enable(r),!this.shouldUploadRemoteDebug())return this;let n=w(),s=$e.default.resolve(".currents-debug"),i=$e.default.resolve(s,`${n}.log`);(0,Nr.mkdir)(s,{recursive:!0}),A(g(`\u{1F47E} Initiated remote ${this.source} debug log collection:`),g(i));let u=Lr.default.createWriteStream(i,{flags:"a"});return y.default.log=(...d)=>{this.mode&&(u.write(`${Ar.default.formatWithOptions({colors:!1},...d)}
`),this.shouldMuteLocalStdout()||Ve(...d))},this.pipelines[n]={id:n,writeStream:u,type:this.source,tempFilePath:i},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"),y.default.log=Ve);for(let n of r)await this.uploadDebug(n,t??w())}catch{}finally{y.default.log=Ve}}async uploadDebug(t,r){let n=this.pipelines[t];if(!n){this.debug("No debug pipeline found for id %s",t);return}A(g(`\u{1F47E} ${n.type} debug log written:`),g(n?.tempFilePath));try{let s=await ne({id:r,path:n.tempFilePath});n?.writeStream.end(),A(g(`\u{1F47E} ${n.type} debug log uploaded:`),g(s))}catch(s){E(`Failed to upload ${n.type}} debug log ${g(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 Me=c(()=>{"use strict";o();Ye();Je()});var p,I=c(()=>{"use strict";o();Me();p=(0,We.default)("currents")});var ue,Pr=c(()=>{"use strict";o();ue=class extends Error{}});var J,qe=c(()=>{"use strict";o();J={guide:{ciBuildId:"https://docs.currents.dev/guides/ci-build-id",integration:"https://docs.currents.dev/integration-with-playwright/currents-playwright"}}});function yr(e){if(!e)return;if(e==="false")return!1;let t=parseInt(e,10);if(isNaN(t)||t<1)throw new Br.CommanderError(255,"Invalid argument provided.","--pwc-cancel-after-failures must be a positive integer or 'false', provided: "+e);return t}function br(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 Br,wr=c(()=>{"use strict";o();Br=require("commander")});function ce(e){return _[e]?.env}function le(e){let t=_[e];return"cli"in t?t.cli:void 0}function Mr(e){return _[e].name}function Qe(){return{projectId:process.env[_.projectId.env],recordKey:process.env[_.recordKey.env],ciBuildId:process.env[_.ciBuildId.env],tag:process.env[_.tag.env]?process.env[_.tag.env]?.split(",").map(e=>e.trim()):void 0,environment:process.env[_.environment.env],cancelAfterFailures:yr(process.env[_.cancelAfterFailures.env]),disableTestTags:process.env[_.disableTestTags.env]||process.env[_.disableTitleTags.env],consoleOutput:process.env[_.consoleOutput.env],testSuiteFile:process.env[_.testSuiteFile.env],machineId:process.env[_.machineId.env],orchestrationId:process.env[_.orchestrationId.env],outputFile:process.env[_.outputFile.env],ciUrl:process.env[_.ciUrl.env]?.trim()||void 0,orchestration:{discoveryFile:process.env[_.discoveryFile.env],pendingChildExitTimeoutMs:br(process.env[_.pendingChildExitTimeoutMs.env])}}}var _,ze=c(()=>{"use strict";o();wr();_={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 F(){if(Xe)return Xe;if(process.env.CURRENTS_PWC_CLI_CONFIG_PATH)try{let e=JSON.parse(xr.default.readFileSync(process.env.CURRENTS_PWC_CLI_CONFIG_PATH).toString());return vr("Options from serialized CLI config file: %o",e),Xe=e,e}catch(e){return vr("Could not read CLI config file: %o",e),{}}return{}}var xr,vr,Xe,Ze=c(()=>{"use strict";o();xr=l(require("fs"));I();vr=p.extend("cli-options-serializer"),Xe=null});function Hr(e,t,r={validationFn:rt}){et("reporter options: %o",e),et("config file options: %o",t);let n={...h(tt),...h(t),...h(e),...h(F()),...h(Qe()),orchestration:{...h(tt.orchestration),...h(t?.orchestration),...h(e?.orchestration),...h(F().orchestration),...h(Qe().orchestration)},coverage:{...h(tt.coverage),...h(t?.coverage),...h(e?.coverage),...h(F().coverage)}};n.disableTitleTags!==void 0&&(n.disableTestTags=n.disableTestTags||n.disableTitleTags),r.validationFn(n),Ee=n,Ot(mt(Ee?.consoleOutput)),et("resolved currents config: %o",Ee)}function rt(e){fo.forEach(t=>{if(!e[t])throw U(`${Mr(t)} is required for Currents Reporter. Use the following methods:
- environment variable: ${g(ce(t))}
- CLI flag: ${g(le(t))}
- reporter configuration option ${g(t)} in ${g("playwright.config.ts")}
\u{1F4D6} ${J.guide.integration}`),new ue("Missing required config variable")})}function h(e){return Object.entries(e??{}).reduce((t,[r,n])=>n===void 0?t:{...t,[r]:n},{})}function N(){return Ee}function Gr(e){e.preserveOutput!=="always"&&E(`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".`)}var et,fo,tt,Ee,Be=c(()=>{"use strict";o();I();Pr();qe();L();X();ze();Ze();X();et=p.extend("config"),fo=["projectId","recordKey"],tt={removeTitleTags:!1,disableTestTags:!1,consoleOutput:x.Detailed,orchestration:{skipReporterInjection:!1},coverage:{projects:!1}},Ee=null});function nt(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,Fr.cloneDeepWith)(e,r)}function kr(e){let r=Object.getOwnPropertySymbols(e).find(s=>s.toString().match(/configInternalSymbol/))??Object.getOwnPropertyNames(e).find(s=>s.match(/_internal/));return r?e[r]:(E("Could not extract internal playwright configuration"),null)}function Kr(e){return e.reduce((t,r)=>(r&&r.id&&r.workers!==void 0&&(t[r.id]=r.workers),t),{})}function jr(e){return e?.fullConfig?.config?.projects?.reduce((t,r)=>(r&&r.name&&r.use&&r.use.currentsBatchSize!==void 0&&(t[r.name]=r.use.currentsBatchSize),t),{})}var Fr,Wr=c(()=>{"use strict";o();Fr=require("lodash");L()});var H=c(()=>{"use strict";o();Be();ze();Ze();Wr()});var Qo={};Oe(Qo,{default:()=>qo});module.exports=Dn(Qo);o();o();var _n=require("nanoid");H();o();H();I();L();o();var q=l(require("path")),Yr=require("url"),Vr=l(require("jiti")),$r=[".ts",".js",".mjs"];function go(e){return e.replace(/\\/g,"/")}function Jr(e){e||(e="currents.config");let t=process.cwd(),r=(0,Vr.default)(t,{interopDefault:!0,cache:!1,extensions:[...$r]}),n=To(e,{cwd:t,jiti:r});return n?{config:n.config,configFile:go(n.configFile)}:{config:{},configFile:""}}function To(e,t){let r=_o(e,t);if(!r)return null;let n=q.default.extname(r);if(!$r.includes(n))return null;let s;try{s=t.jiti(r)}catch{return null}let i=s?.default??s??null;if(i instanceof Function){try{i=i()}catch{return null}i&&i instanceof Promise&&(i=null)}return{config:i??{},configFile:r}}function _o(e,t){let r=n=>{let s=t.jiti.esmResolve(n,{try:!0});return s?(0,Yr.fileURLToPath)(s):void 0};return r(q.default.resolve(t.cwd,e))||r(q.default.resolve(t.cwd,".config",e.replace(/\.config$/,"")))||r(q.default.resolve(t.cwd,".config",e))||e}var Za=p.extend("config-loader"),pe=class{constructor(t,r=i=>{},n=()=>{process.exit(1)},s={validationFn:rt}){this.reporterOptions=t;this.onSuccess=r;this.onFailure=n;this.options=s}reporterOptions;onSuccess;onFailure;options;_loadedConfig=null;start(){let t=F();try{let r=Jr(t.pwcConfigPath);this._loadedConfig=r,this.onSuccess(r)}catch(r){U("Could not load currents configuration: %O",r),this.onFailure()}return this}loadAndValidate(){if(this._loadedConfig||this.start(),!this._loadedConfig)return this;try{Hr(this.reporterOptions,this._loadedConfig.config,{validationFn:this.options.validationFn})}catch(t){U("Could not load currents configuration: %O",t),this.onFailure()}return this}};I();o();var T=require("lodash");I();te();var de=p.extend("ci"),mo=(e,...t)=>(0,T.chain)(t).compact().join(e).value(),Ro=(e,t)=>(0,T.set)(e,(0,T.camelCase)(t),process.env[t]),m=e=>(0,T.transform)(e,Ro,{}),Io=()=>process.env.TF_BUILD&&process.env.AZURE_HTTP_USER_AGENT,Co=()=>(0,T.some)(process.env,(e,t)=>/^CODEBUILD_/.test(t)),Oo=()=>process.env.bamboo_buildNumber,So=()=>(0,T.some)(process.env,(e,t)=>/^CONCOURSE_/.test(t)),Uo=()=>process.env.GITLAB_CI||process.env.CI_SERVER_NAME&&/^GitLab/.test(process.env.CI_SERVER_NAME),ho=()=>!!(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),Do=()=>process.env.JENKINS_URL||process.env.JENKINS_HOME||process.env.JENKINS_VERSION||process.env.HUDSON_URL||process.env.HUDSON_HOME,Lo={appveyor:"APPVEYOR",azure:Io,awsCodeBuild:Co,bamboo:Oo,bitbucket:"BITBUCKET_BUILD_NUMBER",buildkite:"BUILDKITE",circle:"CIRCLECI",concourse:So,codeFresh:"CF_BUILD_ID",drone:"DRONE",githubActions:"GITHUB_ACTIONS",gitlab:Uo,goCD:"GO_JOB_NAME",jenkins:Do,googleCloud:ho,semaphore:"SEMAPHORE",teamcity:"TEAMCITY_VERSION",travis:"TRAVIS",netlify:"NETLIFY"};function Ao(){let{env:e}=process;return(0,T.findKey)(Lo,t=>{if((0,T.isString)(t))return e[t];if((0,T.isFunction)(t))return t()})}var qr=()=>({appveyor:m(["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:m(["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:m(["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:m(["bamboo_buildNumber","bamboo_buildResultsUrl","bamboo_planRepository_repositoryUrl","bamboo_buildKey"]),bitbucket:m(["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:m(["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:m(["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:m(["BUILD_ID","BUILD_NAME","BUILD_JOB_NAME","BUILD_PIPELINE_NAME","BUILD_TEAM_NAME","ATC_EXTERNAL_URL"]),codeFresh:m(["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:m(["DRONE_BUILD_LINK","DRONE_BUILD_NUMBER","DRONE_PULL_REQUEST"]),githubActions:m(["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:m(["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:m(["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:m(["BUILD_ID","PROJECT_ID","REPO_NAME","BRANCH_NAME","TAG_NAME","COMMIT_SHA","SHORT_SHA"]),jenkins:m(["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:m(["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"]),teamcity:null,travis:m(["TRAVIS_JOB_ID","TRAVIS_BUILD_ID","TRAVIS_BUILD_WEB_URL","TRAVIS_REPO_SLUG","TRAVIS_JOB_NUMBER","TRAVIS_EVENT_TYPE","TRAVIS_COMMIT_RANGE","TRAVIS_BUILD_NUMBER","TRAVIS_PULL_REQUEST","TRAVIS_PULL_REQUEST_BRANCH","TRAVIS_PULL_REQUEST_SHA"]),netlify:m(["BUILD_ID","CONTEXT","URL","DEPLOY_URL","DEPLOY_PRIME_URL","DEPLOY_ID"])}),No=()=>{let{env:e}=process;return{appveyor:{sha:e.APPVEYOR_REPO_COMMIT,branch:e.APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH||e.APPVEYOR_REPO_BRANCH,message:mo(`
`,e.APPVEYOR_REPO_COMMIT_MESSAGE,e.APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED),authorName:e.APPVEYOR_REPO_COMMIT_AUTHOR,authorEmail:e.APPVEYOR_REPO_COMMIT_AUTHOR_EMAIL},awsCodeBuild:{sha:e.CODEBUILD_RESOLVED_SOURCE_VERSION,remoteOrigin:e.CODEBUILD_SOURCE_REPO_URL},azure:{sha:e.BUILD_SOURCEVERSION,branch:e.SYSTEM_PULLREQUEST_SOURCEBRANCH?e.SYSTEM_PULLREQUEST_SOURCEBRANCH.replace(/^refs\/heads\//,""):e.BUILD_SOURCEBRANCHNAME,message:e.BUILD_SOURCEVERSIONMESSAGE,authorName:e.BUILD_SOURCEVERSIONAUTHOR,authorEmail:e.BUILD_REQUESTEDFOREMAIL,remoteOrigin:e.SYSTEM_PULLREQUEST_SOURCEREPOSITORYURI||e.BUILD_REPOSITORY_URI},bamboo:{sha:e.bamboo_planRepository_revision,branch:e.bamboo_planRepository_branch,authorName:e.bamboo_planRepository_username,remoteOrigin:e.bamboo_planRepository_repositoryURL},bitbucket:{sha:e.BITBUCKET_COMMIT,branch:e.BITBUCKET_BRANCH},buildkite:{sha:e.BUILDKITE_COMMIT,branch:e.BUILDKITE_BRANCH,message:e.BUILDKITE_MESSAGE,authorName:e.BUILDKITE_BUILD_CREATOR,authorEmail:e.BUILDKITE_BUILD_CREATOR_EMAIL,remoteOrigin:e.BUILDKITE_REPO,defaultBranch:e.BUILDKITE_PIPELINE_DEFAULT_BRANCH},circle:{sha:e.CIRCLE_SHA1,branch:e.CIRCLE_BRANCH,authorName:e.CIRCLE_USERNAME,remoteOrigin:e.CIRCLE_REPOSITORY_URL},codeFresh:{sha:e.CF_REVISION,branch:e.CF_BRANCH,message:e.CF_COMMIT_MESSAGE,authorName:e.CF_COMMIT_AUTHOR},drone:{sha:e.DRONE_COMMIT_SHA,branch:e.DRONE_SOURCE_BRANCH,message:e.DRONE_COMMIT_MESSAGE,authorName:e.DRONE_COMMIT_AUTHOR,authorEmail:e.DRONE_COMMIT_AUTHOR_EMAIL,remoteOrigin:e.DRONE_GIT_HTTP_URL,defaultBranch:e.DRONE_REPO_BRANCH},githubActions:{sha:e.GITHUB_SHA,branch:e.GH_BRANCH||e.GITHUB_HEAD_REF||e.GITHUB_REF_NAME||e.GITHUB_REF?.replace(/^refs\/(heads|tags)\//,""),defaultBranch:e.GITHUB_BASE_REF,remoteBranch:e.GITHUB_HEAD_REF,runAttempt:e.GITHUB_RUN_ATTEMPT},gitlab:{sha:e.CI_COMMIT_SHA,branch:e.CI_COMMIT_REF_NAME,message:e.CI_COMMIT_MESSAGE,authorName:e.GITLAB_USER_NAME,authorEmail:e.GITLAB_USER_EMAIL,remoteOrigin:e.CI_REPOSITORY_URL,defaultBranch:e.CI_DEFAULT_BRANCH},googleCloud:{sha:e.COMMIT_SHA,branch:e.BRANCH_NAME},jenkins:{sha:e.GIT_COMMIT,branch:e.CHANGE_BRANCH||e.GIT_BRANCH?.replace(/^(refs\/remotes\/|refs\/heads\/)?origin\//,"")?.replace(/^refs\/heads\//,"")},semaphore:{sha:e.SEMAPHORE_GIT_SHA,branch:e.SEMAPHORE_GIT_BRANCH,remoteOrigin:e.SEMAPHORE_GIT_REPO_SLUG},snap:null,teamcity:null,travis:{sha:e.TRAVIS_PULL_REQUEST_SHA||e.TRAVIS_COMMIT,branch:e.TRAVIS_PULL_REQUEST_BRANCH||e.TRAVIS_BRANCH,message:e.TRAVIS_COMMIT_MESSAGE},netlify:{sha:e.COMMIT_REF,branch:e.BRANCH,remoteOrigin:e.REPOSITORY_URL}}},Qr=e=>{let t=zr();return t?(0,T.chain)(e()).get(t).value():{}};function Po(){return(0,T.chain)(qr()).omitBy(T.isNull).keys().value()}function zr(){let e=Ao();return de("detected CI provider name: %s",e),e||null}function Bo(){return Qr(qr)}function Xr(){return Qr(No)}function yo(e){return e&&Po().includes(e)}function Zr(e,t){let r=Bo(),n=zr(),s=bo(e,n);de("detected CI provider: %s",n),de("detected CI params: %O",r),de("detected CI build ID: %o",s);let i=t?.trim()||void 0;return{params:r,provider:n,ciBuildId:s,...i?{ciUrl:i}:{}}}function bo(e,t){return e?{source:"user",value:e}:yo(t)?{source:"server",value:null}:{source:"random",value:`auto:${w()}`}}o();var tn=require("@currents/commit-info"),rn=require("lodash");o();var fe=require("lodash");I();var ot=p.extend("ci-git"),wo=new Set(["remoteOrigin"]);function en(e){ot("git commit existing info: %O",e);let t=Xr();ot("commit info from provider environment variables: %O",t);let r=(0,fe.transform)(e,(n,s,i)=>{if(i==="ghaEventData")return n[i]=(0,fe.defaultTo)(s,null),n;let u=t?t[i]:void 0;return n[i]=wo.has(i)?u??s??null:s??u??null,n});return ot("combined git and environment variables from provider: %O",r),r}var Mo=async()=>{let e=await(0,tn.commitInfo)();return en({branch:e.branch,remoteOrigin:e.remote,authorEmail:e.email,authorName:e.author,message:e.message,sha:e.sha,ghaEventData:e.ghaEventData})},nn=(0,rn.memoize)(Mo);o();var on=require("@babel/code-frame"),sn=l(require("chalk")),st=l(require("fs")),k=l(require("path")),an=l(require("stack-utils")),un=l(require("url"));function vo(e){let t=e.split(`
`),r=t.findIndex(u=>u.startsWith(" at "));r===-1&&(r=t.length);let n=t.slice(0,r).join(`
`),s=t.slice(r),i;for(let u of s){let{frame:d,fileName:S}=Fo(u);if(!(!d||!S)&&!xo(S)){i={file:S,column:d.column||0,line:d.line||0};break}}return{message:n,stackLines:s,location:i}}function xo(e){return e.includes(`${k.default.sep}node_modules${k.default.sep}`)}function Ho(e,t){return k.default.relative(e.rootDir,t)||k.default.basename(t)}function cn(e,t,r,n){let s=t.stack,i=[],u;if(s){let d=vo(s);if(i.push(d.message),u=d.location,u)if(!t.snippet&&(!n||st.default.realpathSync(n)!==u.file)&&(i.push(""),i.push(sn.default.gray(" at ")+`${Ho(e,u.file)}:${u.line}`)),i.push(""),t.snippet)i.push(t.snippet);else try{let S=st.default.readFileSync(u.file,"utf8"),R=(0,on.codeFrameColumns)(S,{start:u},{highlightCode:r});i.push(R)}catch{}i.push(""),i.push(d.stackLines.join(`
`))}else t.message?i.push(t.message):t.value&&i.push(t.value);return{location:u,message:i.join(`
`)}}var Go=new an.default;function Fo(e){let t=Go.parseLine(e);if(!t)return{frame:null,fileName:null};let r=null;return t.file&&(r=t.file.startsWith("file://")?un.default.fileURLToPath(t.file):k.default.resolve(process.cwd(),t.file)),{frame:t,fileName:r}}ke();qe();o();H();o();function ge(e){if(typeof e!="string")return;let t=e.trim();return t.length>0?t:void 0}o();var Ko=require("lodash");o();var Te=l(require("path"));function ln(e,t){return ko(Te.default.relative(t,e.file))}function ko(e){return e.split(Te.default.sep).join(Te.default.posix.sep)}function it(e){let t=e.titlePath(),r=En(e).title;return t.slice(t.indexOf(r)+1,t.length)}function En(e){let t=e.parent;for(;t.parent?.location;)t=t.parent;return t}function pn(e,t){let r=En(e).location;return ln(r,t.rootDir)}function dn(e){return e.id??e._id}function fn(e){if(e._only)return!0;let t=e.parent;for(;t.parent;){if(t._only)return!0;t=t.parent}return!1}function _e(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 gn(e,t){return e.suites.map(r=>{let n=t.projects.find(u=>u.name===r.title),s=ge(n?.metadata?.pwc?.environment),i=ge(N()?.environment)??ge(process.env.CURRENTS_DISCOVERY_ENVIRONMENT);return{name:_e(r.project()),tags:(n?.metadata?.pwc?.tags??[]).map(u=>u.trim()),environment:s??i,tests:jo(r,t)}})}function jo(e,t){let r=e.allTests().map(n=>({isOnly:fn(n),title:it(n),spec:pn(n,t),tags:Wo(n),testId:dn(n)}));return r.some(n=>n.isOnly)?r.filter(n=>n.isOnly):r}function Wo(e){let{disableTestTags:t}=Yo();if(t)return[];let r=(it(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 Yo(){return{disableTestTags:N()?.disableTestTags??process.env.CURRENTS_DISCOVERY_DISABLE_TEST_TAGS==="true"}}L();Je();o();Ne();o();var Vo=l(require("http"));I();var $o=l(require("lil-http-terminator")),Tn=require("ts-pattern"),Jo=l(require("ws")),Nu=p.extend("wss");o();Ke();var me=class{async create(t){return G({url:"/orchestration-v1",method:"POST",data:JSON.stringify(t)})}async createTask(t){return G({url:`/orchestration-v1/${t.id}/task`,method:"POST",data:JSON.stringify({machineId:t.machineId,runId:t.runId})})}async resetRun(t){return G({url:`/runs/v1/${t.runId}/reset`,method:"PUT",data:JSON.stringify({...t,isBatchedOr8n:!0})})}};o();var at=l(require("pluralize"));H();Se();L();var Re=class{constructor(t,r,n=N()){this.pwConfig=t;this.suite=r;this.currentsConfig=n}pwConfig;suite;currentsConfig;getIntro(t){return[`\u{1F4E6} Currents reporter: ${g([`${Ae(z)}`,t.ciBuildId?` - ci build id: ${t.ciBuildId}`:null,` - project id: ${this.currentsConfig?.projectId}`,` - orchestration id: ${t.sessionId}`,t.machineId?` - machine id: ${t.machineId}`:null].filter(Boolean).join(`
`))}`,[`\u{1F3AD} Playwright: ${g([`${Ae(this.pwConfig.version)}`,`${this.suite.allTests().length} ${(0,at.default)("test",this.suite.allTests().length)} in ${this.suite.suites.length} ${(0,at.default)("project",this.suite.suites.length)} [${this.suite.suites.map(r=>_e(r.project())).join(", ")}]`,this.pwConfig.shard?["shard",`${this.pwConfig.shard.current}/${this.pwConfig.shard.total}`].join(" "):null].filter(r=>r).join(" "))} `].filter(r=>r).join(" | ")].join(`
`)}};var D=p.extend("orchestration-reporter"),Ie=class{configLoader;pwConfig=null;pwSuite=null;fullSuite=null;printer=null;remoteDebug;parentNotified=!1;constructor(t){this.remoteDebug=ae.factory("or8n"),this.configLoader=new pe(t).start()}printsToStdio(){return!0}onBegin(t,r){or(t.version),this.configLoader.loadAndValidate(),D("Starting orchestration discovery"),this.pwConfig=t,this.pwSuite=r,Gr(t),D("Discovering test suite config: %O",t),this.fullSuite=gn(this.pwSuite,t),D("Full suite response %O",this.fullSuite),this.printer=new Re(t,r)}onError(t){U(`Global error reported by test runner:
%s`,cn(this.pwConfig,t,!0).message)}async onExit(){if(D(