Mic*_*ing 3 java automated-tests docker alpine-linux playwright
Playwright 附带的 Java 驱动程序不适用于 Alpine,因为它们不使用静态链接的 MUSL 构建。
在您的 Alpine 映像中,从 Alpine 存储库安装nodejs并chromium设置环境变量,告诉 Playwright 使用它们而不是自己的驱动程序:
echo "https://dl-cdn.alpinelinux.org/alpine/edge/main" > /etc/apk/repositories \
&& echo "https://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories \
&& echo "https://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories \
&& echo "https://dl-cdn.alpinelinux.org/alpine/v3.16/main" >> /etc/apk/repositories \
&& echo "https://dl-cdn.alpinelinux.org/alpine/v3.16/community" \
&& apk upgrade -U -a \
&& apk add \
libstdc++ \
chromium \
harfbuzz \
nss \
freetype \
ttf-freefont \
font-noto-emoji \
wqy-zenhei \
nodejs \
&& rm -rf /var/cache/* \
&& mkdir /var/cache/apk
export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
export PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/chromium-browser
export PLAYWRIGHT_NODEJS_PATH=/usr/bin/node
Run Code Online (Sandbox Code Playgroud)
然后,在 Java 或 Kotlin 代码中,您必须自己处理自定义浏览器位置:
abstract class AbstractBrowserTest(private val headless: Boolean = true) {
private val playwright: Playwright = Playwright.create()
private val browser: Browser = launchBrowser()
private fun launchBrowser(): Browser {
val env = System.getenv("PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH")
return if (env != null && env.isNotBlank()) {
playwright.chromium().launch(LaunchOptions().setHeadless(true).setExecutablePath(Paths.get(env)))
} else {
playwright.chromium().launch(LaunchOptions().setHeadless(headless))
}
}
}
Run Code Online (Sandbox Code Playgroud)
支持https://github.com/ Fivemru/ playwright-docker-alpine 获取灵感!
| 归档时间: |
|
| 查看次数: |
2220 次 |
| 最近记录: |