From 9c20ad2a9d95ba07e71b06f3ace490b2a259b793 Mon Sep 17 00:00:00 2001 From: spring-raining Date: Tue, 26 Nov 2024 00:37:48 +0900 Subject: [PATCH 1/4] chore: Force to set devicePixelRatio=1 in headless Chrome #357 --- src/browser.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/browser.ts b/src/browser.ts index 6a334f63..c9051841 100644 --- a/src/browser.ts +++ b/src/browser.ts @@ -44,6 +44,8 @@ export async function launchBrowser({ '--allow-file-access-from-files', disableWebSecurity ? '--disable-web-security' : '', disableDevShmUsage ? '--disable-dev-shm-usage' : '', + // #357: Set devicePixelRatio=1 otherwise it causes layout issues in HiDPI displays + headless ? '--force-device-scale-factor=1' : '', // set Chromium language to English to avoid locale-dependent issues (e.g. minimum font size) '--lang=en', ...(!headless && process.platform === 'darwin' From b258c73fb5d01f08067dcd7889be719fc76e2c8d Mon Sep 17 00:00:00 2001 From: spring-raining Date: Tue, 26 Nov 2024 00:38:49 +0900 Subject: [PATCH 2/4] Revert "fix: Use chromium-headless-shell rather than chromium in new headless mode" This reverts commit 44737f361c71a58254e31a3167187a46abc282ea. --- src/browser.ts | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/src/browser.ts b/src/browser.ts index c9051841..703524d1 100644 --- a/src/browser.ts +++ b/src/browser.ts @@ -65,8 +65,7 @@ export async function launchBrowser({ } export function getExecutableBrowserPath(browserType: BrowserType): string { - const executable = registry.findExecutable(getBrowserName(browserType))!; - return executable.executablePath()!; + return playwright[browserType].executablePath(); } export function getFullBrowserName(browserType: BrowserType): string { @@ -90,7 +89,7 @@ export function isPlaywrightExecutable(path: string): boolean { export async function downloadBrowser( browserType: BrowserType, ): Promise { - const executable = registry.findExecutable(getBrowserName(browserType))!; + const executable = registry.findExecutable(browserType); logInfo('Rendering browser is not installed yet. Downloading now...'); const restartLogging = suspendLogging(); await registry.install([executable], false); @@ -98,13 +97,3 @@ export async function downloadBrowser( restartLogging(); return executable.executablePath()!; } - -function getBrowserName( - browserType: BrowserType, -): BrowserType | 'chromium-headless-shell' { - if (browserType === 'chromium' && !process.argv[1].endsWith('preview.js')) { - return 'chromium-headless-shell'; - } else { - return browserType; - } -} From 0d68f0e04a68a7ed68da6a0d2247ac74cecf22fc Mon Sep 17 00:00:00 2001 From: spring-raining Date: Tue, 26 Nov 2024 01:02:10 +0900 Subject: [PATCH 3/4] fix: Fix to work `--browser` option fix #546 --- src/browser.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/browser.ts b/src/browser.ts index 703524d1..19e33ef8 100644 --- a/src/browser.ts +++ b/src/browser.ts @@ -81,9 +81,9 @@ export function checkBrowserAvailability(path: string): boolean { } export function isPlaywrightExecutable(path: string): boolean { - return registry - .executables() - .some((exe) => pathEquals(exe.executablePath() ?? '', path)); + return [playwright.chromium, playwright.firefox, playwright.webkit].some( + (exe) => pathEquals(exe.executablePath() ?? '', path), + ); } export async function downloadBrowser( From 266cea4adc727afc16c481290e7e99c7bab9ea5f Mon Sep 17 00:00:00 2001 From: spring-raining Date: Tue, 26 Nov 2024 01:06:08 +0900 Subject: [PATCH 4/4] chore: Update install Chromium step --- .github/workflows/test.yml | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f21ab9cc..b653108d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,7 +22,7 @@ jobs: with: node-version: ${{ matrix.node }} - run: yarn install - - run: yarn playwright-core install chromium + - run: yarn playwright-core install chromium --no-shell - run: yarn build - run: yarn test build-and-push-image: diff --git a/package.json b/package.json index 8b778a20..4a94d20d 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "clean": "shx rm -rf dist tmp", "dev": "tsc -w --preserveWatchOutput", "example": "yarn --cwd example build", - "pretest": "playwright-core install chromium", + "pretest": "playwright-core install chromium --no-shell", "release": "release-it", "release:pre": "release-it --preRelease --npm.tag=next", "test": "vitest run --coverage",