@bloom-perf/yaml-pptr 2.0.1 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var L=Object.create;var w=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var U=Object.getPrototypeOf,V=Object.prototype.hasOwnProperty;var _=(o,t)=>{for(var n in t)w(o,n,{get:t[n],enumerable:!0})},$=(o,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of j(t))!V.call(o,r)&&r!==n&&w(o,r,{get:()=>t[r],enumerable:!(i=B(t,r))||i.enumerable});return o};var z=(o,t,n)=>(n=o!=null?L(U(o)):{},$(t||!o||!o.__esModule?w(n,"default",{value:o,enumerable:!0}):n,o)),G=o=>$(w({},"__esModule",{value:!0}),o);var wt={};_(wt,{readYamlAndInterpret:()=>bt});module.exports=G(wt);var R=z(require("puppeteer"),1);var x=z(require("js-yaml"),1);var e=z(require("zod"),1),k=e.enum(["load","domcontentloaded","networkidle0","networkidle2"]),I=e.enum(["left","right","middle"]),N=e.enum(["chrome","firefox"]),M=e.object({timeout:e.number().optional(),waitUntil:e.union([k,k.array()]).optional(),referer:e.string().optional()}).optional(),D=e.object({type:e.literal("WAIT"),milliseconds:e.number()}),q=e.object({button:I.optional(),clickCount:e.number().optional(),delay:e.number().optional()}).optional(),H=e.object({delay:e.number().optional()}).optional(),K=e.object({visible:e.boolean().optional(),hidden:e.boolean().optional(),timeout:e.number().optional()}).optional(),J=e.object({type:e.enum(["png","jpeg"]).optional(),quality:e.number().optional(),fullPage:e.boolean().optional(),clip:e.object({x:e.number(),y:e.number(),width:e.number(),height:e.number()}).optional(),omitBackground:e.boolean().optional(),encoding:e.enum(["base64","binary"]).optional()}).optional(),Q=e.object({type:e.literal("GOTO"),url:e.string(),options:M}),Z=e.object({type:e.literal("CLICK"),selector:e.string(),options:q}),X=e.object({type:e.literal("TYPE"),selector:e.string(),text:e.string(),options:H}),Y=e.object({type:e.literal("WAIT_FOR_SELECTOR"),selector:e.string(),options:K}),tt=e.object({type:e.literal("WAIT_FOR_TIMEOUT"),timeout:e.number()}),et=e.object({type:e.literal("PAUSE")}),ot=e.object({type:e.literal("SCREENSHOT"),path:e.string(),options:J}),it=e.object({type:e.literal("EVALUATE"),script:e.union([e.string(),e.function()])}),nt=e.object({type:e.literal("SET_VIEWPORT"),width:e.number(),height:e.number()}),rt=e.object({type:e.literal("CLOSE")}),E=[Q,Z,X,Y,tt,et,ot,it,nt,rt,D];if(E.length===0)throw new Error("Le tableau des sch\xE9mas d'actions est vide.");var st=E,at=e.discriminatedUnion("type",st),ct=e.object({navigate:e.string()}),pt=e.literal("waitForever"),lt=e.object({wait:e.number()}),ut=e.object({click:e.string()}),gt=e.object({input:e.object({selector:e.string(),text:e.string()})}),mt=e.union([ct,pt,lt,ut,gt]),dt=e.object({name:e.string().optional(),browser:N.optional(),run:e.enum(["PARALLEL","SEQUENTIAL"]).optional(),initialDelaySeconds:e.number().nonnegative().optional(),workers:e.number().positive().optional(),iterations:e.number().positive().optional(),location:e.string().optional(),steps:e.array(mt).optional(),actions:e.array(at).optional()}),W=e.object({scenarios:e.array(dt)});var O=o=>{let t=x.load(o);return W.parse(t)};var A={debug(o){console.log(o)},info(o){console.log(o)},warn(o){console.log(o)},error(o){console.error(o)}};var v=class{envVarResolve;logger;constructor(t,n=A){this.envVarResolve=i=>{let r=i.startsWith("$")?i.substring(1):i;return t(r)},this.logger=n}resolve(t){return{scenarios:t.scenarios.map((n,i)=>this.resolveScenario(n,i+1))}}resolveScenario(t,n){this.logger.debug(`Resolving YAML scenario: ${JSON.stringify(t)}`);let i=[];t.location&&i.push(this.createNavigateAction(t.location)),t.steps&&i.push(...t.steps.map(s=>this.resolveStep(s))),t.actions&&i.push(...t.actions.map(s=>this.resolveAction(s)));let r=t.run==="SEQUENTIAL"?{delaySecondsBetweenWorkerInits:t.initialDelaySeconds||0}:{initialDelaySeconds:t.initialDelaySeconds||0};return{name:t.name||`Scenario ${n}`,browser:t.browser||"chrome",run:r,workers:t.workers||1,iterations:t.iterations||1,actions:i}}resolveStep(t){if(t==="waitForever")return this.logger.debug("Resolving step: waitForever"),{actionType:"WaitForever"};if("wait"in t)return this.logger.debug(`Resolving step: wait ${t.wait} seconds`),{actionType:"Wait",milliseconds:t.wait*1e3};if("navigate"in t)return this.logger.debug("Resolving step: navigate"),this.createNavigateAction(t.navigate);if("click"in t)return this.logger.debug(`Resolving step: click "${t.click}"`),{actionType:"CLICK",selector:t.click};if("input"in t)return this.logger.debug(`Resolving step: input into "${t.input.selector}"`),{actionType:"TYPE",selector:t.input.selector,text:t.input.text};throw new Error(`Unknown step format: ${JSON.stringify(t)}`)}resolveAction(t){switch(this.logger.debug(`Resolving action: ${JSON.stringify(t)}`),t.type){case"GOTO":return{actionType:"GOTO",url:this.resolveStringOrEnv(t.url),options:t.options};case"WAIT":return{actionType:"Wait",milliseconds:t.milliseconds*1e3};case"CLICK":return{actionType:"CLICK",selector:t.selector,options:t.options};case"TYPE":return{actionType:"TYPE",selector:t.selector,text:t.text,options:t.options};case"WAIT_FOR_SELECTOR":return{actionType:"WAIT_FOR_SELECTOR",selector:t.selector,options:t.options};case"WAIT_FOR_TIMEOUT":return{actionType:"WAIT_FOR_TIMEOUT",timeout:t.timeout};case"PAUSE":return{actionType:"PAUSE"};case"SCREENSHOT":return{actionType:"SCREENSHOT",path:this.resolveStringOrEnv(t.path),options:t.options};case"EVALUATE":return{actionType:"EVALUATE",script:t.script};case"SET_VIEWPORT":return{actionType:"SET_VIEWPORT",width:t.width,height:t.height};case"CLOSE":return{actionType:"CLOSE"};default:return t}}createNavigateAction(t){return{actionType:"Navigate",location:this.resolveUrlOrEnv(t)}}resolveUrlOrEnv(t){let n="[workerIndex]";if(t.startsWith("$")){if(t.endsWith(n)){this.logger.debug(`Resolving indexed environment variable: "${t}"`);let i=t.substring(1,t.length-n.length);return{workerIndex:this.envVarResolve(i).split(",").map(c=>c.trim())}}return this.logger.debug(`Resolving environment variable: "${t}"`),{url:this.envVarResolve(t.substring(1))}}return this.logger.debug(`Using direct URL: "${t}"`),{url:t}}resolveStringOrEnv(t){return t.startsWith("$")?(this.logger.debug(`Resolving environment variable: "${t}"`),this.envVarResolve(t.substring(1))):t}};function At(o,t){let n=t||"png";return o.endsWith(".png")||o.endsWith(".jpeg")||o.endsWith(".jpg")||o.endsWith(".webp")?o:`${o}.${n}`}var C=async(o,t,n=A,i)=>await yt(t.workers,t.name,async r=>{for(let s=0;s<t.iterations;s++){let c=t.run;"delaySecondsBetweenWorkerInits"in c?(n.info(`Scenario "${t.name}" (worker ${r}) > Choosing SEQUENTIAL start with ${c.delaySecondsBetweenWorkerInits} seconds between workers`),await new Promise(u=>setTimeout(u,c.delaySecondsBetweenWorkerInits*r*1e3))):(n.info(`Scenario "${t.name}" (worker ${r}) > Choosing PARALLEL start with ${c.initialDelaySeconds} seconds of initial delay`),await new Promise(u=>setTimeout(u,c.initialDelaySeconds*1e3)));let l=await o.newPage();i&&await i(l,{scenarioName:t.name,workerIndex:r,iteration:s}),await ht(t.name,t.actions,l,r,n),await l.close()}},n),yt=async(o,t,n,i=A)=>Promise.all(Array.from({length:o},async(r,s)=>{try{i.info(`Scenario "${t}" (worker ${s}) started.`),await n(s)}catch(c){i.error(`Scenario ${t} (worker ${s}) failed: ${c}`)}})),ht=async(o,t,n,i,r=A)=>{for(let s of t){let{actionType:c}=s;switch(c){case"Navigate":let l=s;"url"in l.location?(r.info(`Scenario "${o}" (worker ${i}) > Navigating to location "${l.location.url}"`),await n.goto(l.location.url)):(r.info(`Scenario "${o}" (worker ${i}) > Navigating to indexed location "${l.location.workerIndex[i]}"`),await n.goto(l.location.workerIndex[i]));break;case"Wait":let u=s;r.info(`Scenario "${o}" (worker ${i}) > Waiting ${u.milliseconds} milliseconds...`),await n.evaluate(y=>new Promise(T=>setTimeout(T,y)),u.milliseconds);break;case"WaitForever":for(r.info(`Scenario "${o}" (worker ${i}) > Waiting forever...`);;)await new Promise(y=>setTimeout(y,3600*1e3));break;case"GOTO":let d=s;r.info(`Scenario "${o}" (worker ${i}) > GOTO "${d.url}"`);let f={timeout:d.options?.timeout,waitUntil:d.options?.waitUntil,referer:d.options?.referer};await n.goto(d.url,f);break;case"CLICK":let a=s;r.info(`Scenario "${o}" (worker ${i}) > CLICK on "${a.selector}"`);let g={button:a.options?.button,clickCount:a.options?.clickCount,delay:a.options?.delay};await n.click(a.selector,g);break;case"TYPE":let S=s;r.info(`Scenario "${o}" (worker ${i}) > TYPE into "${S.selector}"`),await n.type(S.selector,S.text,S.options);break;case"WAIT_FOR_SELECTOR":let m=s;r.info(`Scenario "${o}" (worker ${i}) > WAIT_FOR_SELECTOR "${m.selector}"`),await n.waitForSelector(m.selector,m.options);break;case"WAIT_FOR_TIMEOUT":let h=s;r.info(`Scenario "${o}" (worker ${i}) > WAIT_FOR_TIMEOUT ${h.timeout} milliseconds`),await n.evaluate(y=>new Promise(T=>setTimeout(T,y)),h.timeout);break;case"PAUSE":r.info(`Scenario "${o}" (worker ${i}) > PAUSE, press Enter to continue...`),await new Promise(y=>{process.stdin.resume(),process.stdin.once("data",()=>{process.stdin.pause(),y()})});break;case"SCREENSHOT":let p=s;r.info(`Scenario "${o}" (worker ${i}) > SCREENSHOT "${p.path}"`);let P={path:At(p.path,p.options?.type),type:p.options?.type,quality:p.options?.quality,fullPage:p.options?.fullPage,clip:p.options?.clip,omitBackground:p.options?.omitBackground,encoding:p.options?.encoding};await n.screenshot(P);break;case"EVALUATE":let F=s;r.info(`Scenario "${o}" (worker ${i}) > EVALUATE script`),await n.evaluate(F.script);break;case"SET_VIEWPORT":let b=s;r.info(`Scenario "${o}" (worker ${i}) > SET_VIEWPORT width=${b.width}, height=${b.height}`),await n.setViewport({width:b.width,height:b.height});break;case"CLOSE":r.info(`Scenario "${o}" (worker ${i}) > CLOSE page`),await n.close();break;default:throw new Error(`Unhandled action type "${c}" while evaluating scenario "${o}" on worker ${i}`)}}};var bt=async(o,t={})=>{let{browsers:n={},logger:i=A,onPage:r}=t,s=O(o),l=new v(a=>{let g=process.env[a];if(i.debug(`Resolving env variable "${a}" with value ***`),g)return g;throw new Error(`Tried to resolve env variable ${a} but was empty.`)},i).resolve(s),u={};for(let a of l.scenarios){let g=a.browser||"chrome";u[g]||(u[g]=[]),u[g]?.push(a)}let d=["chrome","firefox"],f=Object.entries(u).map(async([a,g])=>{if(!g)return;if(!d.includes(a)){console.error(`Navigateur non support\xE9: ${a}. Les navigateurs support\xE9s sont: ${d.join(", ")}`);return}let S=["--no-sandbox","--disable-setuid-sandbox","--disable-dev-shm-usage","--disable-accelerated-2d-canvas","--disable-gpu","--ignore-certificate-errors"];a==="chrome"&&S.push("--start-maximized"),a==="firefox"&&S.push("--private");let m=n[a],h=!1;m||(m=await R.launch({headless:!1,channel:a,acceptInsecureCerts:!0,args:S}),h=!0);try{for(let p of g)await C(m,p,i,r)}catch(p){console.error(`Erreur lors de l'ex\xE9cution des sc\xE9narios pour ${a}:`,p)}finally{h&&m&&await m.close()}});await Promise.all(f)};0&&(module.exports={readYamlAndInterpret});
|
|
1
|
+
import*as x from"puppeteer";import*as k from"js-yaml";import*as t from"zod";var T=t.enum(["load","domcontentloaded","networkidle0","networkidle2"]),R=t.enum(["left","right","middle"]),P=t.enum(["chrome","firefox"]),F=t.object({timeout:t.number().optional(),waitUntil:t.union([T,T.array()]).optional(),referer:t.string().optional()}).optional(),L=t.object({type:t.literal("WAIT"),milliseconds:t.number()}),B=t.object({button:R.optional(),clickCount:t.number().optional(),delay:t.number().optional()}).optional(),j=t.object({delay:t.number().optional()}).optional(),U=t.object({visible:t.boolean().optional(),hidden:t.boolean().optional(),timeout:t.number().optional()}).optional(),V=t.object({type:t.enum(["png","jpeg"]).optional(),quality:t.number().optional(),fullPage:t.boolean().optional(),clip:t.object({x:t.number(),y:t.number(),width:t.number(),height:t.number()}).optional(),omitBackground:t.boolean().optional(),encoding:t.enum(["base64","binary"]).optional()}).optional(),_=t.object({type:t.literal("GOTO"),url:t.string(),options:F}),G=t.object({type:t.literal("CLICK"),selector:t.string(),options:B}),I=t.object({type:t.literal("TYPE"),selector:t.string(),text:t.string(),options:j}),N=t.object({type:t.literal("WAIT_FOR_SELECTOR"),selector:t.string(),options:U}),M=t.object({type:t.literal("WAIT_FOR_TIMEOUT"),timeout:t.number()}),D=t.object({type:t.literal("PAUSE")}),q=t.object({type:t.literal("SCREENSHOT"),path:t.string(),options:V}),H=t.object({type:t.literal("EVALUATE"),script:t.union([t.string(),t.function()])}),K=t.object({type:t.literal("SET_VIEWPORT"),width:t.number(),height:t.number()}),J=t.object({type:t.literal("CLOSE")}),z=[_,G,I,N,M,D,q,H,K,J,L];if(z.length===0)throw new Error("Le tableau des sch\xE9mas d'actions est vide.");var Q=z,Z=t.discriminatedUnion("type",Q),X=t.object({navigate:t.string()}),Y=t.literal("waitForever"),tt=t.object({wait:t.number()}),et=t.object({click:t.string()}),ot=t.object({input:t.object({selector:t.string(),text:t.string()})}),it=t.union([X,Y,tt,et,ot]),nt=t.object({name:t.string().optional(),browser:P.optional(),run:t.enum(["PARALLEL","SEQUENTIAL"]).optional(),initialDelaySeconds:t.number().nonnegative().optional(),workers:t.number().positive().optional(),iterations:t.number().positive().optional(),location:t.string().optional(),steps:t.array(it).optional(),actions:t.array(Z).optional()}),$=t.object({scenarios:t.array(nt)});var E=i=>{let e=k.load(i);return $.parse(e)};var A={debug(i){console.log(i)},info(i){console.log(i)},warn(i){console.log(i)},error(i){console.error(i)}};var w=class{envVarResolve;logger;constructor(e,n=A){this.envVarResolve=o=>{let r=o.startsWith("$")?o.substring(1):o;return e(r)},this.logger=n}resolve(e){return{scenarios:e.scenarios.map((n,o)=>this.resolveScenario(n,o+1))}}resolveScenario(e,n){this.logger.debug(`Resolving YAML scenario: ${JSON.stringify(e)}`);let o=[];e.location&&o.push(this.createNavigateAction(e.location)),e.steps&&o.push(...e.steps.map(s=>this.resolveStep(s))),e.actions&&o.push(...e.actions.map(s=>this.resolveAction(s)));let r=e.run==="SEQUENTIAL"?{delaySecondsBetweenWorkerInits:e.initialDelaySeconds||0}:{initialDelaySeconds:e.initialDelaySeconds||0};return{name:e.name||`Scenario ${n}`,browser:e.browser||"chrome",run:r,workers:e.workers||1,iterations:e.iterations||1,actions:o}}resolveStep(e){if(e==="waitForever")return this.logger.debug("Resolving step: waitForever"),{actionType:"WaitForever"};if("wait"in e)return this.logger.debug(`Resolving step: wait ${e.wait} seconds`),{actionType:"Wait",milliseconds:e.wait*1e3};if("navigate"in e)return this.logger.debug("Resolving step: navigate"),this.createNavigateAction(e.navigate);if("click"in e)return this.logger.debug(`Resolving step: click "${e.click}"`),{actionType:"CLICK",selector:e.click};if("input"in e)return this.logger.debug(`Resolving step: input into "${e.input.selector}"`),{actionType:"TYPE",selector:e.input.selector,text:e.input.text};throw new Error(`Unknown step format: ${JSON.stringify(e)}`)}resolveAction(e){switch(this.logger.debug(`Resolving action: ${JSON.stringify(e)}`),e.type){case"GOTO":return{actionType:"GOTO",url:this.resolveStringOrEnv(e.url),options:e.options};case"WAIT":return{actionType:"Wait",milliseconds:e.milliseconds*1e3};case"CLICK":return{actionType:"CLICK",selector:e.selector,options:e.options};case"TYPE":return{actionType:"TYPE",selector:e.selector,text:e.text,options:e.options};case"WAIT_FOR_SELECTOR":return{actionType:"WAIT_FOR_SELECTOR",selector:e.selector,options:e.options};case"WAIT_FOR_TIMEOUT":return{actionType:"WAIT_FOR_TIMEOUT",timeout:e.timeout};case"PAUSE":return{actionType:"PAUSE"};case"SCREENSHOT":return{actionType:"SCREENSHOT",path:this.resolveStringOrEnv(e.path),options:e.options};case"EVALUATE":return{actionType:"EVALUATE",script:e.script};case"SET_VIEWPORT":return{actionType:"SET_VIEWPORT",width:e.width,height:e.height};case"CLOSE":return{actionType:"CLOSE"};default:return e}}createNavigateAction(e){return{actionType:"Navigate",location:this.resolveUrlOrEnv(e)}}resolveUrlOrEnv(e){let n="[workerIndex]";if(e.startsWith("$")){if(e.endsWith(n)){this.logger.debug(`Resolving indexed environment variable: "${e}"`);let o=e.substring(1,e.length-n.length);return{workerIndex:this.envVarResolve(o).split(",").map(c=>c.trim())}}return this.logger.debug(`Resolving environment variable: "${e}"`),{url:this.envVarResolve(e.substring(1))}}return this.logger.debug(`Using direct URL: "${e}"`),{url:e}}resolveStringOrEnv(e){return e.startsWith("$")?(this.logger.debug(`Resolving environment variable: "${e}"`),this.envVarResolve(e.substring(1))):e}};function st(i,e){let n=e||"png";return i.endsWith(".png")||i.endsWith(".jpeg")||i.endsWith(".jpg")||i.endsWith(".webp")?i:`${i}.${n}`}var W=async(i,e,n=A,o)=>await at(e.workers,e.name,async r=>{for(let s=0;s<e.iterations;s++){let c=e.run;"delaySecondsBetweenWorkerInits"in c?(n.info(`Scenario "${e.name}" (worker ${r}) > Choosing SEQUENTIAL start with ${c.delaySecondsBetweenWorkerInits} seconds between workers`),await new Promise(u=>setTimeout(u,c.delaySecondsBetweenWorkerInits*r*1e3))):(n.info(`Scenario "${e.name}" (worker ${r}) > Choosing PARALLEL start with ${c.initialDelaySeconds} seconds of initial delay`),await new Promise(u=>setTimeout(u,c.initialDelaySeconds*1e3)));let l=await i.newPage();o&&await o(l,{scenarioName:e.name,workerIndex:r,iteration:s}),await ct(e.name,e.actions,l,r,n),await l.close()}},n),at=async(i,e,n,o=A)=>Promise.all(Array.from({length:i},async(r,s)=>{try{o.info(`Scenario "${e}" (worker ${s}) started.`),await n(s)}catch(c){o.error(`Scenario ${e} (worker ${s}) failed: ${c}`)}})),ct=async(i,e,n,o,r=A)=>{for(let s of e){let{actionType:c}=s;switch(c){case"Navigate":let l=s;"url"in l.location?(r.info(`Scenario "${i}" (worker ${o}) > Navigating to location "${l.location.url}"`),await n.goto(l.location.url)):(r.info(`Scenario "${i}" (worker ${o}) > Navigating to indexed location "${l.location.workerIndex[o]}"`),await n.goto(l.location.workerIndex[o]));break;case"Wait":let u=s;r.info(`Scenario "${i}" (worker ${o}) > Waiting ${u.milliseconds} milliseconds...`),await n.evaluate(y=>new Promise(f=>setTimeout(f,y)),u.milliseconds);break;case"WaitForever":for(r.info(`Scenario "${i}" (worker ${o}) > Waiting forever...`);;)await new Promise(y=>setTimeout(y,3600*1e3));break;case"GOTO":let d=s;r.info(`Scenario "${i}" (worker ${o}) > GOTO "${d.url}"`);let v={timeout:d.options?.timeout,waitUntil:d.options?.waitUntil,referer:d.options?.referer};await n.goto(d.url,v);break;case"CLICK":let a=s;r.info(`Scenario "${i}" (worker ${o}) > CLICK on "${a.selector}"`);let g={button:a.options?.button,clickCount:a.options?.clickCount,delay:a.options?.delay};await n.click(a.selector,g);break;case"TYPE":let S=s;r.info(`Scenario "${i}" (worker ${o}) > TYPE into "${S.selector}"`),await n.type(S.selector,S.text,S.options);break;case"WAIT_FOR_SELECTOR":let m=s;r.info(`Scenario "${i}" (worker ${o}) > WAIT_FOR_SELECTOR "${m.selector}"`),await n.waitForSelector(m.selector,m.options);break;case"WAIT_FOR_TIMEOUT":let h=s;r.info(`Scenario "${i}" (worker ${o}) > WAIT_FOR_TIMEOUT ${h.timeout} milliseconds`),await n.evaluate(y=>new Promise(f=>setTimeout(f,y)),h.timeout);break;case"PAUSE":r.info(`Scenario "${i}" (worker ${o}) > PAUSE, press Enter to continue...`),await new Promise(y=>{process.stdin.resume(),process.stdin.once("data",()=>{process.stdin.pause(),y()})});break;case"SCREENSHOT":let p=s;r.info(`Scenario "${i}" (worker ${o}) > SCREENSHOT "${p.path}"`);let O={path:st(p.path,p.options?.type),type:p.options?.type,quality:p.options?.quality,fullPage:p.options?.fullPage,clip:p.options?.clip,omitBackground:p.options?.omitBackground,encoding:p.options?.encoding};await n.screenshot(O);break;case"EVALUATE":let C=s;r.info(`Scenario "${i}" (worker ${o}) > EVALUATE script`),await n.evaluate(C.script);break;case"SET_VIEWPORT":let b=s;r.info(`Scenario "${i}" (worker ${o}) > SET_VIEWPORT width=${b.width}, height=${b.height}`),await n.setViewport({width:b.width,height:b.height});break;case"CLOSE":r.info(`Scenario "${i}" (worker ${o}) > CLOSE page`),await n.close();break;default:throw new Error(`Unhandled action type "${c}" while evaluating scenario "${i}" on worker ${o}`)}}};var re=async(i,e={})=>{let{browsers:n={},logger:o=A,onPage:r}=e,s=E(i),l=new w(a=>{let g=process.env[a];if(o.debug(`Resolving env variable "${a}" with value ***`),g)return g;throw new Error(`Tried to resolve env variable ${a} but was empty.`)},o).resolve(s),u={};for(let a of l.scenarios){let g=a.browser||"chrome";u[g]||(u[g]=[]),u[g]?.push(a)}let d=["chrome","firefox"],v=Object.entries(u).map(async([a,g])=>{if(!g)return;if(!d.includes(a)){console.error(`Navigateur non support\xE9: ${a}. Les navigateurs support\xE9s sont: ${d.join(", ")}`);return}let S=["--no-sandbox","--disable-setuid-sandbox","--disable-dev-shm-usage","--disable-accelerated-2d-canvas","--disable-gpu","--ignore-certificate-errors"];a==="chrome"&&S.push("--start-maximized"),a==="firefox"&&S.push("--private");let m=n[a],h=!1;m||(m=await x.launch({headless:!1,channel:a,acceptInsecureCerts:!0,args:S}),h=!0);try{for(let p of g)await W(m,p,o,r)}catch(p){console.error(`Erreur lors de l'ex\xE9cution des sc\xE9narios pour ${a}:`,p)}finally{h&&m&&await m.close()}});await Promise.all(v)};export{re as readYamlAndInterpret};
|