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

M1芯片Docker容器运行CodeceptJS/Playwright测试遇qemu报错

解决M1芯片Docker中运行CodeceptJS/Playwright的QEMU报错问题

问题根源

你使用的adtoniq/xvfb-chrome、codeceptjs/codeceptjs都是基于x86_64架构构建的镜像,而M1芯片是ARM64架构,QEMU模拟x86运行Chromium/Playwright这类依赖底层系统库的工具时,极易出现兼容性崩溃,也就是你遇到的qemu: uncaught target signal 5报错。

具体解决方案

1. 改用Playwright官方ARM64镜像

Playwright官方已适配ARM64架构,镜像自带所有必要的浏览器和依赖,无需额外配置XVFB,直接用这个基础镜像就能规避QEMU问题。

2. 示例Dockerfile

# 选择支持ARM64的Playwright官方镜像(版本可按需调整)
FROM mcr.microsoft.com/playwright:v1.40.0-jammy

# 设置测试工作目录
WORKDIR /tests

# 复制项目依赖文件并安装
COPY package*.json ./
RUN npm install

# 复制整个测试项目代码
COPY . .

# 执行测试命令
CMD ["npx", "codeceptjs", "run"]

3. 构建与运行注意事项

  • 构建镜像时不要加--platform linux/amd64参数,让Docker自动识别ARM64架构,直接构建适配本地芯片的镜像。
  • 若之前有残留的x86镜像缓存,先清理再构建:
    docker system prune -a
    
  • 运行容器时直接启动即可,Playwright官方镜像已处理好无头浏览器的运行环境,无需额外XVFB配置。

4. 备选方案:适配CodeceptJS官方镜像

如果一定要用codeceptjs/codeceptjs镜像,先拉取ARM64版本:

docker pull --platform linux/arm64 codeceptjs/codeceptjs

然后在Dockerfile中添加Playwright的ARM依赖安装步骤:

FROM codeceptjs/codeceptjs

WORKDIR /tests

COPY package*.json ./
RUN npm install
# 安装Playwright ARM版本的浏览器和依赖
RUN npx playwright install --with-deps chromium

COPY . .

CMD ["npx", "codeceptjs", "run"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:21:00