From 0cbde0a4839ef89ca1d40caf6dca4f6a6dd550de Mon Sep 17 00:00:00 2001 From: Asaf Korem Date: Mon, 27 Jan 2025 09:11:25 +0200 Subject: [PATCH] fix(driver): rely on puppeteer-core only. --- examples/puppeteer/package.json | 2 +- examples/puppeteer/tests/example.test.ts | 2 ++ package-lock.json | 2 +- package.json | 4 ++-- src/drivers/puppeteer/getCleanDOM.ts | 2 +- src/drivers/puppeteer/index.ts | 10 +++++++--- src/utils/CodeEvaluator.ts | 6 ++++++ 7 files changed, 20 insertions(+), 8 deletions(-) diff --git a/examples/puppeteer/package.json b/examples/puppeteer/package.json index 3a9faa0..462315f 100644 --- a/examples/puppeteer/package.json +++ b/examples/puppeteer/package.json @@ -15,4 +15,4 @@ "typescript": "^5.3.3", "puppeteer": "^20.8.0" } -} +} diff --git a/examples/puppeteer/tests/example.test.ts b/examples/puppeteer/tests/example.test.ts index c04cea2..a02d63c 100644 --- a/examples/puppeteer/tests/example.test.ts +++ b/examples/puppeteer/tests/example.test.ts @@ -1,4 +1,5 @@ import copilot from "@copilot"; +import puppeteer from "puppeteer"; import { PromptHandler } from "../../utils/promptHandler"; import { PuppeteerFrameworkDriver } from "@copilot/drivers/puppeteer"; @@ -11,6 +12,7 @@ describe("Example Test Suite", () => { const promptHandler: PromptHandler = new PromptHandler(); frameworkDriver = new PuppeteerFrameworkDriver(); + frameworkDriver = new PuppeteerFrameworkDriver(puppeteer.executablePath()); copilot.init({ frameworkDriver, diff --git a/package-lock.json b/package-lock.json index 64128b3..96b6fb1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,7 +36,7 @@ }, "peerDependencies": { "playwright": "^1.50.0", - "puppeteer": "^20.8.0" + "puppeteer-core": "^20.8.0" } }, "node_modules/@ampproject/remapping": { diff --git a/package.json b/package.json index b511612..27bed55 100644 --- a/package.json +++ b/package.json @@ -37,8 +37,8 @@ "url": "https://github.com/wix-incubator/detox-copilot/issues" }, "peerDependencies": { - "playwright": "^1.50.0", - "puppeteer": "^20.8.0" + "playwright": ">=1.50.0", + "puppeteer-core": ">=20.8.0" }, "devDependencies": { "@playwright/test": "^1.50.0", diff --git a/src/drivers/puppeteer/getCleanDOM.ts b/src/drivers/puppeteer/getCleanDOM.ts index 29ae5a9..a5d8f5f 100644 --- a/src/drivers/puppeteer/getCleanDOM.ts +++ b/src/drivers/puppeteer/getCleanDOM.ts @@ -1,4 +1,4 @@ -import * as puppeteer from "puppeteer"; +import * as puppeteer from "puppeteer-core"; /** * Get clean DOM from the page content diff --git a/src/drivers/puppeteer/index.ts b/src/drivers/puppeteer/index.ts index 89a978e..758133d 100644 --- a/src/drivers/puppeteer/index.ts +++ b/src/drivers/puppeteer/index.ts @@ -1,15 +1,17 @@ import { TestingFrameworkAPICatalog, TestingFrameworkDriver } from "@/types"; -import * as puppeteer from "puppeteer"; +import * as puppeteer from "puppeteer-core"; import path from "path"; import fs from "fs"; import getCleanDOM from "./getCleanDOM"; export class PuppeteerFrameworkDriver implements TestingFrameworkDriver { private currentPage?: puppeteer.Page; + private executablePath?: string; - constructor() { + constructor(executablePath?: string) { this.getCurrentPage = this.getCurrentPage.bind(this); this.setCurrentPage = this.setCurrentPage.bind(this); + this.executablePath = executablePath; } /** @@ -84,8 +86,10 @@ export class PuppeteerFrameworkDriver implements TestingFrameworkDriver { signature: "const browser = await puppeteer.launch([options])", description: "Launches a new browser instance.", example: - 'const browser = await puppeteer.launch({`headless: "new"`});', + `const browser = await puppeteer.launch({\`headless: "new"\`, executablePath: "${this.executablePath}" });\n` + + `const browser = await puppeteer.launch({\`headless: "false"\`, executablePath: "${this.executablePath}" });`, guidelines: [ + `Executable path is required always, use the path: ${this.executablePath}`, "Options can specify `headless`, `slowMo`, `args`, etc.", "Useful for running tests in a headless browser environment.", 'Prefer passing `headless: "new"` to `puppeteer.launch() unless mentioned that ' + diff --git a/src/utils/CodeEvaluator.ts b/src/utils/CodeEvaluator.ts index fd5138d..6410d6d 100644 --- a/src/utils/CodeEvaluator.ts +++ b/src/utils/CodeEvaluator.ts @@ -17,6 +17,12 @@ export class CodeEvaluator { try { const result = await asyncFunction(); + logger.info({ + message: `\nCopilot evaluated the code: \n\`\`\`\n${code}\n\`\`\``, + isBold: false, + color: "gray", + }); + return { code, result, sharedContext }; } catch (error) { logger.error({