@checksum-ai/runtime 1.0.72 → 1.0.73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cli.js CHANGED
@@ -10,10 +10,10 @@ show-report [options] [report] show HTML report
10
10
  `);break;case"test":try{let e="npx playwright test --help",o=(await this.getCmdOutput(e)).replace(/npx playwright/g,"yarn checksum").split(`
11
11
  `);o.splice(5,0," --checksum-config=<config> Checksum configuration in JSON format").join(`
12
12
  `),console.log(o.join(`
13
- `))}catch(e){console.log("Error",e.message)}break;case"show-report":try{let e="npx playwright show-report --help",o=(await this.getCmdOutput(e)).replace(/npx playwright/g,"yarn checksum");console.log(o)}catch(e){console.log("Error",e.message)}break}}async showReport(t){let e=`npx playwright show-report ${t.join(" ")}`;try{await this.execCmd(e)}catch(o){console.log("Error showing report",o.message)}}async test(t){if(this.locateChecksumLibs(),this.processChecksumArguments(t),this.setChecksumConfig(),!await this.getSession())return;let e;try{e=await this.guardReturn(this.startTestRunMonitor(this.testSession),1e4,"test run monitor timeout")}catch{console.log("Error starting test run monitor. Test results will not be available on checksum.")}this.buildVolatileConfig();let o={CHECKSUM_ROOT_FOLDER:this.checksumRoot};e&&(o.CHECKSUM_UPLOAD_AGENT_PORT=e),this.config.options.hostReports&&(o.PW_TEST_HTML_REPORT_OPEN="never");let s=`npx playwright test --config ${this.getPlaywrightConfigFile()} ${t.map(a=>`"${a}"`).join(" ")}`;await this.patchPlaywright();try{await this.execCmd(s,o),console.log("Tests execution finished")}catch(a){this.didFail=!0,console.log("Error during test",a.message)}finally{this.sendReportUploadRequest(),await this.patchPlaywright(!0),this.completeIndicators.tests=!0,await this.handleCompleteMessage()}}sendReportUploadRequest(){this.isolationMode||console.log("Waiting for test files to upload to Checksum..");let t=this.getPlaywrightReportPath();if(!(0,r.existsSync)(t)){console.log(`Could not find report file at ${t}`);return}c("Sending report upload request",t),this.testRunMonitorProcess.stdin.write(`cli:report=${t}`)}async patchPlaywright(t=!1){c("Patching playwright",t);let e=`node ${(0,i.join)(__dirname,"scripts/patch.js")}${t?" off":""}`;try{await this.execCmd(e,{PROJECT_ROOT:this.projectRootDirectory})}catch(o){console.log("Error patching playwright",o.message)}}getPlaywrightReportPath(){var s,a;let t=(0,i.join)(this.projectRootDirectory,"playwright-report"),e=require(this.getPlaywrightConfigFile()),{reporter:o}=e;return o instanceof Array&&o.length>1&&((s=o[1])!=null&&s.outputFolder)&&(t=(a=o[1])==null?void 0:a.outputFolder),process.env.PLAYWRIGHT_HTML_REPORT&&(t=process.env.PLAYWRIGHT_HTML_REPORT),(0,i.join)(t,"index.html")}getPlaywrightConfigFile(){return(0,i.join)(this.checksumRoot,"playwright.config.ts")}startTestRunMonitor(t){return new Promise(e=>{console.log("Starting test run monitor"),this.testRunMonitorProcess=g.spawn("node",[this.TEST_RUN_MONITOR_PATH,JSON.stringify({sessionId:t,checksumApiURL:this.CHECKSUM_API_URL,apiKey:this.config.apiKey}),...this.isolationMode?["isolated"]:[]]),this.testRunMonitorProcess.stdout.on("data",o=>{let s=o.toString().trim();if(c("[trm] "+s),!s.startsWith("monitor"))return;let[a,l]=s.substring(s.indexOf(":")+1).split("=");a==="port"?e(l):this.handleTestRunMonitorMessage(a,l)}),this.testRunMonitorProcess.on("exit",(o,s)=>{console.log(`test run monitor process exited with code ${o} and signal ${s}`)}),this.testRunMonitorProcess.on("error",o=>{console.error(`Error starting test run monitor: ${o.message}`)})})}async handleTestRunMonitorMessage(t,e){switch(c(`Handling test run monitor message ${this.isolationMode?"(isolation mode)":""}`,t,e),t){case"complete-with-errors":console.log("Error uploading test files to Checksum"),this.sendProcessingError().then(()=>{this.completeIndicators.upload=!0});break;case"complete":this.isolationMode||console.log("Test files uploaded successfully"),this.sendUploadsComplete().then(()=>{this.completeIndicators.upload=!0});break;case"report-uploaded":{if(this.isolationMode){this.completeIndicators.report=!0;break}console.log("Report generated and uploaded to Checksum");let o={};try{o=JSON.parse(e)}catch(s){console.log("Error parsing stats",s.message)}await this.sendTestRunEnd(o),this.completeIndicators.report=!0,console.log(`*******************
13
+ `))}catch(e){console.log("Error",e.message)}break;case"show-report":try{let e="npx playwright show-report --help",o=(await this.getCmdOutput(e)).replace(/npx playwright/g,"yarn checksum");console.log(o)}catch(e){console.log("Error",e.message)}break}}async showReport(t){let e=`npx playwright show-report ${t.join(" ")}`;try{await this.execCmd(e)}catch(o){console.log("Error showing report",o.message)}}async test(t){if(this.locateChecksumLibs(),this.processChecksumArguments(t),this.setChecksumConfig(),!await this.getSession())return;let e;try{e=await this.guardReturn(this.startTestRunMonitor(this.testSession),1e4,"test run monitor timeout")}catch{console.log("Error starting test run monitor. Test results will not be available on checksum.")}this.buildVolatileConfig();let o={CHECKSUM_ROOT_FOLDER:this.checksumRoot};e&&(o.CHECKSUM_UPLOAD_AGENT_PORT=e),this.config.options.hostReports&&(o.PW_TEST_HTML_REPORT_OPEN="never");let s=`npx playwright test --config ${this.getPlaywrightConfigFile()} ${t.map(a=>`"${a}"`).join(" ")}`;await this.patchPlaywright();try{await this.execCmd(s,o),console.log("Tests execution finished")}catch(a){this.didFail=!0,console.log("Error during test",a.message)}finally{this.sendReportUploadRequest(),await this.patchPlaywright(!0),this.completeIndicators.tests=!0,await this.handleCompleteMessage()}}sendReportUploadRequest(){this.isolationMode||console.log("Waiting for test files to upload to Checksum..");let t=this.getPlaywrightReportPath();if(!(0,r.existsSync)(t)){console.log(`Could not find report file at ${t}`);return}c("Sending report upload request",t),this.testRunMonitorProcess.stdin.write(`cli:report=${t}`)}async patchPlaywright(t=!1){c("Patching playwright",t);let e=`node ${(0,i.join)(__dirname,"scripts/patch.js")}${t?" off":""}`;try{await this.execCmd(e)}catch(o){console.log("Error patching playwright",o.message)}}getPlaywrightReportPath(){var s,a;let t=(0,i.join)(this.projectRootDirectory,"playwright-report"),e=require(this.getPlaywrightConfigFile()),{reporter:o}=e;return o instanceof Array&&o.length>1&&((s=o[1])!=null&&s.outputFolder)&&(t=(a=o[1])==null?void 0:a.outputFolder),process.env.PLAYWRIGHT_HTML_REPORT&&(t=process.env.PLAYWRIGHT_HTML_REPORT),(0,i.join)(t,"index.html")}getPlaywrightConfigFile(){return(0,i.join)(this.checksumRoot,"playwright.config.ts")}startTestRunMonitor(t){return new Promise(e=>{console.log("Starting test run monitor"),this.testRunMonitorProcess=g.spawn("node",[this.TEST_RUN_MONITOR_PATH,JSON.stringify({sessionId:t,checksumApiURL:this.CHECKSUM_API_URL,apiKey:this.config.apiKey}),...this.isolationMode?["isolated"]:[]]),this.testRunMonitorProcess.stdout.on("data",o=>{let s=o.toString().trim();if(c("[trm] "+s),!s.startsWith("monitor"))return;let[a,l]=s.substring(s.indexOf(":")+1).split("=");a==="port"?e(l):this.handleTestRunMonitorMessage(a,l)}),this.testRunMonitorProcess.on("exit",(o,s)=>{console.log(`test run monitor process exited with code ${o} and signal ${s}`)}),this.testRunMonitorProcess.on("error",o=>{console.error(`Error starting test run monitor: ${o.message}`)})})}async handleTestRunMonitorMessage(t,e){switch(c(`Handling test run monitor message ${this.isolationMode?"(isolation mode)":""}`,t,e),t){case"complete-with-errors":console.log("Error uploading test files to Checksum"),this.sendProcessingError().then(()=>{this.completeIndicators.upload=!0});break;case"complete":this.isolationMode||console.log("Test files uploaded successfully"),this.sendUploadsComplete().then(()=>{this.completeIndicators.upload=!0});break;case"report-uploaded":{if(this.isolationMode){this.completeIndicators.report=!0;break}console.log("Report generated and uploaded to Checksum");let o={};try{o=JSON.parse(e)}catch(s){console.log("Error parsing stats",s.message)}await this.sendTestRunEnd(o),this.completeIndicators.report=!0,console.log(`*******************
14
14
  * Checksum report URL: ${this.CHECKSUM_APP_URL}/#/test-runs/${this.testSession}
15
15
  *******************`);break}default:console.warn(`Unhandled test run monitor message: ${t}=${e}`)}}async handleCompleteMessage(){for(;;)Object.keys(this.completeIndicators).find(t=>!this.completeIndicators[t])?(c(this.completeIndicators),await this.awaitSleep(1e3)):(console.log("Checksum test run complete"),this.shutdown(this.didFail?1:0))}shutdown(t=0){this.cleanup(),process.exit(t)}buildVolatileConfig(){if(!this.volatileChecksumConfig)return;let t=this.getVolatileConfigPath(),e=`
16
16
  import { RunMode, getChecksumConfig } from "@checksum-ai/runtime";
17
17
 
18
18
  export default getChecksumConfig(${JSON.stringify(this.config,null,2)});
19
- `;(0,r.writeFileSync)(t,e)}cleanup(){var t,e;this.deleteVolatileConfig(),(t=this.testRunMonitorProcess)==null||t.stdin.write("cli:shutdown"),(e=this.testRunMonitorProcess)==null||e.kill()}async getSession(){try{if(!this.config.options.hostReports)return this.setIsolatedMode(),!0;let t=this.config.apiKey;if(!t||t==="<API key>")return this.printError("No API key found in checksum config - please set it in the config file - checksum.config.ts"),this.shutdown(1),!1;let e=JSON.stringify(await this.getEnvInfo()),o=await fetch(`${this.CHECKSUM_API_URL}/client-api/test-runs`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json",ChecksumAppCode:t},body:e});return this.testSession=(await o.json()).uuid,!0}catch{return console.log("Error connecting to Checksum, the report will not be hosted"),this.setIsolatedMode(),!0}}setIsolatedMode(){this.isolationMode=!0,this.testSession="isolated-session"}async sendTestRunEnd(t){if(!this.isolationMode)try{c("Sending test run end",t);let e=JSON.stringify({...t,endedAt:Date.now()});await this.updateTestRun(`${this.CHECKSUM_API_URL}/client-api/test-runs/${this.testSession}`,"PATCH",e)}catch(e){return console.log("Error sending test run end",e.message),null}}async sendUploadsComplete(){if(!this.isolationMode)try{await this.updateTestRun(`${this.CHECKSUM_API_URL}/client-api/test-runs/${this.testSession}/uploads-completed`,"PATCH")}catch(t){console.log("Error sending test run uploads complete",t.message)}}async sendProcessingError(){if(!this.isolationMode)try{await this.updateTestRun(`${this.CHECKSUM_API_URL}/client-api/test-runs/${this.testSession}/process-error`,"PATCH")}catch(t){console.log("Error sending test run processing error",t.message)}}async updateTestRun(t,e,o=void 0){let s=await fetch(t,{method:e,headers:{Accept:"application/json","Content-Type":"application/json",ChecksumAppCode:this.config.apiKey},body:o});return c("Received update test run response from url:",t),await this.logApiResponse(s),s}async logApiResponse(t){try{if(!t.ok){c("HTTP Error:",t.status,t.statusText);let o=await t.text();c("Error Details:",o);return}t.headers.get("Content-Type").includes("application/json")?t.json().then(o=>{c("API Response:",o)}):t.text().then(o=>{c("API Response:",o)})}catch(e){c("Error logging API response",e.message)}}async getEnvInfo(){let t={commitHash:"",branch:"branch",environment:process.env.CI?"CI":"local",name:"name",startedAt:Date.now()};try{t.commitHash=(await this.getCmdOutput("git rev-parse HEAD")).toString().trim()}catch(e){console.log("Error getting git hash",e.message)}try{t.branch=(await this.getCmdOutput("git rev-parse --abbrev-ref HEAD")).toString().trim()}catch(e){console.log("Error getting branch",e.message)}try{t.name=(await this.getCmdOutput("git log -1 --pretty=%B")).toString().trim()}catch(e){console.log("Error getting name",e.message)}return t}getVolatileConfigPath(){return(0,i.join)(this.checksumRoot,"checksum.config.tmp.ts")}deleteVolatileConfig(){let t=this.getVolatileConfigPath();(0,r.existsSync)(t)&&(0,r.rmSync)(t)}setChecksumConfig(){this.config={...require((0,i.join)(this.checksumRoot,"checksum.config.ts")).default||{},...this.volatileChecksumConfig||{}},this.debugMode&&(this.config.options.printLogs=!0),this.config.apiURL&&(this.CHECKSUM_API_URL=this.config.apiURL)}processChecksumArguments(t){this.deleteVolatileConfig();for(let e=0;e<t.length;e++){let o=t[e];if(o.startsWith("--checksum-config"))try{this.volatileChecksumConfig=JSON.parse(o.split("=")[1]),t.splice(e,1)}catch(s){console.log("Error parsing checksum config",s.message),this.volatileChecksumConfig=void 0}o==="--clidebug"&&t.splice(e,1)}}install(){console.log("Creating Checksum directory and necessary files to run your tests"),this.locateChecksumLibs();let t=(0,i.join)(process.cwd(),m);if((0,r.existsSync)(t)||(0,r.mkdirSync)(t),!(0,r.existsSync)(this.getChecksumRootOrigin()))throw new Error("Could not find checksum root directory, please install @checksum-ai/runtime package");let e=(0,r.existsSync)((0,i.join)(t,"checksum.config.ts"));w({isInit:!e}).forEach(o=>{let s=(0,i.join)(t,o);(0,r.existsSync)(s)||(0,r.copyFileSync)((0,i.join)(this.getChecksumRootOrigin(),o),s)}),(0,r.mkdirSync)((0,i.join)(t,"tests"),{recursive:!0}),["esra","har","trace","log"].forEach(o=>{(0,r.mkdirSync)((0,i.join)(t,"test-data",o),{recursive:!0})})}getChecksumRootOrigin(){return(0,i.join)(this.projectRootDirectory,"node_modules","@checksum-ai","runtime","checksum-root")}locateChecksumLibs(){try{this.findChecksumRootOrigin(),this.findChecksumRoot(),c("Project root found at",this.projectRootDirectory),c("Checksum root found at",this.checksumRoot)}catch(t){console.log(t.message),process.exit(1)}}findChecksumRootOrigin(){let t=process.cwd();for(let e=0;e<6;e++){let o=(0,i.join)(t,"node_modules","@checksum-ai","runtime","checksum-root");if((0,r.existsSync)(o)){this.projectRootDirectory=t;return}if((0,i.parse)(t).root===t)break;t=(0,i.join)(t,"..")}throw new Error("Could not resolve checksum root origins")}findChecksumRoot(){let t=u(e=>{try{return(0,r.readdirSync)(e).includes("checksum.config.ts")}catch{return!1}},"containsChecksumConfig");try{let e=[this.projectRootDirectory];for(;e.length;){let o=e.pop(),s=(0,r.readdirSync)(o,{withFileTypes:!0});for(let a of s)if(a.isDirectory()){let l=(0,i.join)(o,a.name);if(a.name===m){if(t(l)){this.checksumRoot=l;return}}else e.push(l)}}}catch(e){throw e}throw new Error("Could not find checksum root folder. Run `npx checksumai init` to create one.")}};u(h,"ChecksumCLI");(async()=>await new h().execute())();
19
+ `;(0,r.writeFileSync)(t,e)}cleanup(){var t,e;this.deleteVolatileConfig(),(t=this.testRunMonitorProcess)==null||t.stdin.write("cli:shutdown"),(e=this.testRunMonitorProcess)==null||e.kill()}async getSession(){try{if(!this.config.options.hostReports)return this.setIsolatedMode(),!0;let t=this.config.apiKey;if(!t||t==="<API key>")return this.printError("No API key found in checksum config - please set it in the config file - checksum.config.ts"),this.shutdown(1),!1;let e=JSON.stringify(await this.getEnvInfo()),o=await fetch(`${this.CHECKSUM_API_URL}/client-api/test-runs`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json",ChecksumAppCode:t},body:e});return this.testSession=(await o.json()).uuid,!0}catch{return console.log("Error connecting to Checksum, the report will not be hosted"),this.setIsolatedMode(),!0}}setIsolatedMode(){this.isolationMode=!0,this.testSession="isolated-session"}async sendTestRunEnd(t){if(!this.isolationMode)try{c("Sending test run end",t);let e=JSON.stringify({...t,endedAt:Date.now()});await this.updateTestRun(`${this.CHECKSUM_API_URL}/client-api/test-runs/${this.testSession}`,"PATCH",e)}catch(e){return console.log("Error sending test run end",e.message),null}}async sendUploadsComplete(){if(!this.isolationMode)try{await this.updateTestRun(`${this.CHECKSUM_API_URL}/client-api/test-runs/${this.testSession}/uploads-completed`,"PATCH")}catch(t){console.log("Error sending test run uploads complete",t.message)}}async sendProcessingError(){if(!this.isolationMode)try{await this.updateTestRun(`${this.CHECKSUM_API_URL}/client-api/test-runs/${this.testSession}/process-error`,"PATCH")}catch(t){console.log("Error sending test run processing error",t.message)}}async updateTestRun(t,e,o=void 0){let s=await fetch(t,{method:e,headers:{Accept:"application/json","Content-Type":"application/json",ChecksumAppCode:this.config.apiKey},body:o});return c("Received update test run response from url:",t),await this.logApiResponse(s),s}async logApiResponse(t){try{if(!t.ok){c("HTTP Error:",t.status,t.statusText);let o=await t.text();c("Error Details:",o);return}t.headers.get("Content-Type").includes("application/json")?t.json().then(o=>{c("API Response:",o)}):t.text().then(o=>{c("API Response:",o)})}catch(e){c("Error logging API response",e.message)}}async getEnvInfo(){let t={commitHash:"",branch:"branch",environment:process.env.CI?"CI":"local",name:"name",startedAt:Date.now()};try{t.commitHash=(await this.getCmdOutput("git rev-parse HEAD")).toString().trim()}catch(e){console.log("Error getting git hash",e.message)}try{t.branch=(await this.getCmdOutput("git rev-parse --abbrev-ref HEAD")).toString().trim()}catch(e){console.log("Error getting branch",e.message)}try{t.name=(await this.getCmdOutput("git log -1 --pretty=%B")).toString().trim()}catch(e){console.log("Error getting name",e.message)}return t}getVolatileConfigPath(){return(0,i.join)(this.checksumRoot,"checksum.config.tmp.ts")}deleteVolatileConfig(){let t=this.getVolatileConfigPath();(0,r.existsSync)(t)&&(0,r.rmSync)(t)}setChecksumConfig(){this.config={...require((0,i.join)(this.checksumRoot,"checksum.config.ts")).default||{},...this.volatileChecksumConfig||{}},this.debugMode&&(this.config.options.printLogs=!0),this.config.apiURL&&(this.CHECKSUM_API_URL=this.config.apiURL)}processChecksumArguments(t){this.deleteVolatileConfig();for(let e=0;e<t.length;e++){let o=t[e];if(o.startsWith("--checksum-config"))try{this.volatileChecksumConfig=JSON.parse(o.split("=")[1]),t.splice(e,1)}catch(s){console.log("Error parsing checksum config",s.message),this.volatileChecksumConfig=void 0}o==="--clidebug"&&t.splice(e,1)}}install(){console.log("Creating Checksum directory and necessary files to run your tests");try{this.findChecksumRootOrigin()}catch(o){console.log(o.message),process.exit(1)}let t=(0,i.join)(process.cwd(),m);if((0,r.existsSync)(t)||(0,r.mkdirSync)(t),!(0,r.existsSync)(this.getChecksumRootOrigin()))throw new Error("Could not find checksum root directory, please install @checksum-ai/runtime package");let e=(0,r.existsSync)((0,i.join)(t,"checksum.config.ts"));w({isInit:!e}).forEach(o=>{let s=(0,i.join)(t,o);(0,r.existsSync)(s)||(0,r.copyFileSync)((0,i.join)(this.getChecksumRootOrigin(),o),s)}),(0,r.mkdirSync)((0,i.join)(t,"tests"),{recursive:!0}),["esra","har","trace","log"].forEach(o=>{(0,r.mkdirSync)((0,i.join)(t,"test-data",o),{recursive:!0})})}getChecksumRootOrigin(){return(0,i.join)(this.projectRootDirectory,"node_modules","@checksum-ai","runtime","checksum-root")}locateChecksumLibs(){try{this.findChecksumRootOrigin(),this.findChecksumRoot(),c("Project root found at",this.projectRootDirectory),c("Checksum root found at",this.checksumRoot)}catch(t){console.log(t.message),process.exit(1)}}findChecksumRootOrigin(){let t=process.cwd();for(let e=0;e<6;e++){let o=(0,i.join)(t,"node_modules","@checksum-ai","runtime","checksum-root");if((0,r.existsSync)(o)){this.projectRootDirectory=t;return}if((0,i.parse)(t).root===t)break;t=(0,i.join)(t,"..")}throw new Error("Could not resolve checksum root origins")}findChecksumRoot(){let t=u(e=>{try{return(0,r.readdirSync)(e).includes("checksum.config.ts")}catch{return!1}},"containsChecksumConfig");try{let e=[this.projectRootDirectory];for(;e.length;){let o=e.pop(),s=(0,r.readdirSync)(o,{withFileTypes:!0});for(let a of s)if(a.isDirectory()){let l=(0,i.join)(o,a.name);if(a.name===m){if(t(l)){this.checksumRoot=l;return}}else e.push(l)}}}catch(e){throw e}throw new Error("Could not find checksum root folder. Run `npx checksumai init` to create one.")}};u(h,"ChecksumCLI");(async()=>await new h().execute())();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@checksum-ai/runtime",
3
- "version": "1.0.72",
3
+ "version": "1.0.73",
4
4
  "description": "Checksum.ai test runtime",
5
5
  "main": "index.js",
6
6
  "dependencies": {
package/scripts/patch.js CHANGED
@@ -1,10 +1,8 @@
1
1
  const fs = require("fs");
2
- const { join } = require("path");
3
2
 
4
3
  // Args
5
4
  const on = process.argv[2] !== "off";
6
5
  const fromRoot = process.argv[3] === "root";
7
- const projectRoot = process.env.PROJECT_ROOT ?? "";
8
6
 
9
7
  // Amends the file with the given entry point text and append text
10
8
  // When "on" is true, the append text is added to the entry point,
@@ -87,10 +85,7 @@ function replaceContent(filePath, originalContent, newContent) {
87
85
 
88
86
  // Remove conditions for injecting Playwright scripts
89
87
  function alwaysInjectScripts() {
90
- const file = join(
91
- projectRoot,
92
- "node_modules/playwright-core/lib/server/browserContext.js"
93
- );
88
+ const file = "node_modules/playwright-core/lib/server/browserContext.js";
94
89
  const originalContent =
95
90
  "if ((0, _utils.debugMode)() === 'console') await this.extendInjectedScript(consoleApiSource.source);";
96
91
 
@@ -102,10 +97,7 @@ function alwaysInjectScripts() {
102
97
 
103
98
  // Add implementation for generateSelectorAndLocator and inject to Playwright console API
104
99
  function addGenerateSelectorAndLocator() {
105
- const file = join(
106
- projectRoot,
107
- "node_modules/playwright-core/lib/generated/consoleApiSource.js"
108
- );
100
+ const file = "node_modules/playwright-core/lib/generated/consoleApiSource.js";
109
101
 
110
102
  const entryPointText1 = "this._generateLocator(element, language),\\n ";
111
103
  const appendText1 =