diff --git a/.vscode/settings.json b/.vscode/settings.json index 755ea14c..ad62fffb 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,20 +3,6 @@ "source.organizeImports.biome": "explicit" }, "editor.defaultFormatter": "biomejs.biome", - "eslint.validate": [ - "javascript", - "javascriptreact", - "typescript", - "typescriptreact", - "vue", - "html" - ], - "eslint.nodePath": "node_modules", - "eslint.trace.server": "verbose", - "eslint.workingDirectories": [ - { - "mode": "auto" - } - ], + "editor.formatOnSave": true, "editor.formatOnSaveMode": "modifications" } diff --git a/packages/web-integration/playwright.config.ts b/packages/web-integration/playwright.config.ts index 7575e06a..e2b89e5a 100644 --- a/packages/web-integration/playwright.config.ts +++ b/packages/web-integration/playwright.config.ts @@ -37,6 +37,7 @@ export default defineConfig({ /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ trace: 'on-first-retry', + deviceScaleFactor: process.platform === 'darwin' ? 2 : 1, // Device scaling factor }, /* Configure projects for major browsers */ diff --git a/packages/web-integration/src/common/page.d.ts b/packages/web-integration/src/common/page.d.ts index 72d1b0fa..e5ca3ab8 100644 --- a/packages/web-integration/src/common/page.d.ts +++ b/packages/web-integration/src/common/page.d.ts @@ -1,5 +1,7 @@ import type { Page as PlaywrightPage } from 'playwright'; import type { KeyInput, Page as PuppeteerPage } from 'puppeteer'; -export type WebPage = PlaywrightPage | PuppeteerPage; +export type WebPage = (PlaywrightPage | PuppeteerPage) & { + evaluate(pageFunction: PageFunction, arg?: Arg): Promise; +}; export type WebKeyInput = KeyInput; diff --git a/packages/web-integration/src/common/tasks.ts b/packages/web-integration/src/common/tasks.ts index 2d6dfc77..f229bed3 100644 --- a/packages/web-integration/src/common/tasks.ts +++ b/packages/web-integration/src/common/tasks.ts @@ -52,7 +52,7 @@ export class PageTaskExecutor { } private async recordScreenshot(timing: ExecutionRecorderItem['timing']) { - const file = getTmpFile('jpeg'); + const file = getTmpFile('png'); await this.page.screenshot({ ...commonScreenshotParam, path: file, diff --git a/packages/web-integration/src/common/utils.ts b/packages/web-integration/src/common/utils.ts index 58aedfe4..9a005cfd 100644 --- a/packages/web-integration/src/common/utils.ts +++ b/packages/web-integration/src/common/utils.ts @@ -22,6 +22,7 @@ export async function parseContextFromWebPage( const url = page.url(); const file = getTmpFile('jpeg'); + await page.screenshot({ path: file, type: 'jpeg', quality: 75 }); const screenshotBuffer = readFileSync(file); const screenshotBase64 = base64Encoded(file); @@ -51,7 +52,7 @@ export async function getElementInfosFromPage(page: WebPage) { const elementInfosScriptContent = readFileSync(scriptPath, 'utf-8'); const extraReturnLogic = `${elementInfosScriptContent}midscene_element_inspector.extractTextWithPosition()`; - const captureElementSnapshot = await (page as any).evaluate(extraReturnLogic); + const captureElementSnapshot = await page.evaluate(extraReturnLogic); return captureElementSnapshot as Array; }