You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Playwright在集群部署时无法启动浏览器的问题求助

问题:Playwright部署到K8s Pod后无法启动WebKit浏览器

我尝试以Docker镜像形式将Playwright部署到集群中,本地系统运行一切正常,但部署到Pod中后立即出现如下错误:

1) [webkit] › dummy.spec.js:7:8 › API Designer › Should display data in All Services =============

browserType.launch: Failed to launch: Error: spawn /opt/app/node_modules/@playwright/test/node_modules/playwright-core/.local-browsers/webkit-1699/pw_run.sh ENOENT
=========================== logs ===========================
<launching> /opt/app/node_modules/@playwright/test/node_modules/playwright-core/.local-browsers/webkit-1699/pw_run.sh --inspector-pipe --headless --no-startup-window
[pid=N/A] starting temporary directories cleanup
[pid=N/A] finished temporary directories cleanup
============================================================

    at Object._baseTest.extend.browser.scope [as fn] (/opt/app/node_modules/@playwright/test/lib/index.js:226:51)
    at /opt/app/node_modules/@playwright/test/lib/fixtures.js:112:81

我通过Node.js运行测试,代码如下:

const { exec } = require("child_process");
exports.runTests = async () => {
const proc = exec(
    `DEBUG=pw:browser* PLAYWRIGHT_BROWSERS_PATH=./node_modules/@playwright/test/node_modules/playwright-core/.local-browsers npx playwright test`,
    (error, stdout, stderr) => {
      if (error) {
        console.log(`error : ${error}`);
      }
      if (stderr) {
        console.log(`error : ${stderr}`);
      }
    }
  );
  proc.stdout.pipe(process.stdout);
};

解决建议
  • 确保容器内完整安装浏览器及依赖:错误提示找不到pw_run.sh,说明容器中Playwright的浏览器包未正确安装。本地环境可能依赖宿主机文件,但容器需要独立安装。在Dockerfile中添加命令:

    RUN npx playwright install --with-deps webkit
    

    该命令会自动下载WebKit二进制文件并安装所有系统依赖库。

  • 移除硬编码的浏览器路径:你手动指定的PLAYWRIGHT_BROWSERS_PATH在容器环境中可能无效。Playwright默认会自动管理浏览器路径,直接去掉该环境变量,使用默认路径即可:

    const proc = exec(
        `DEBUG=pw:browser* npx playwright test`,
        // ... 其余代码不变
    );
    
  • 使用Playwright官方基础镜像:官方镜像(如mcr.microsoft.com/playwright:v1.38.0-focal)已预装所有浏览器和系统依赖,无需手动配置环境。直接基于该镜像构建你的应用镜像,能避免大部分环境依赖问题。

  • 检查文件执行权限:Pod运行用户可能没有pw_run.sh的执行权限。可在Dockerfile中添加权限设置:

    RUN chmod -R +x /opt/app/node_modules/@playwright/test/node_modules/playwright-core/.local-browsers/
    
  • 确认容器工作目录一致性:确保Dockerfile中设置的工作目录与你代码中相对路径匹配,比如通过WORKDIR /opt/app指定工作目录,避免路径解析错误。


内容的提问来源于stack exchange,提问作者92sharmasaurabh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 11:55:27