Docker中直接执行命令时Playwright有头测试挂起,npm脚本方式正常
Docker Compose中直接执行Playwright有头测试命令卡顿的问题
问题背景
尝试在Docker环境中以有头模式运行Playwright测试时,最初遇到报错,Playwright官方建议执行以下命令:
xvfb-run npx playwright test tests/mailfence/test-scenario.spec.ts --headed
两种配置的差异结果
正常运行的配置方式:在Docker Compose文件中设置
command: npm run mailfence,同时在项目的package.json的scripts字段中定义:"scripts": { "mailfence": "xvfb-run npx playwright test tests/mailfence/test-scenario.spec.ts --headed" }这种配置下,测试全程运行正常。
出现卡顿的配置方式:直接在Docker Compose的
command字段中写入完整的测试命令:command: xvfb-run npx playwright test tests/mailfence/test-scenario.spec.ts --headed此时测试会卡在某个阶段无法继续执行。
原因分析
Docker Compose直接执行命令时,是在容器的默认shell环境中运行,可能缺少npm scripts执行时自动加载的项目环境变量、工作目录上下文或shell配置。而通过npm run执行命令时,npm会自动进入项目根目录,并加载项目相关的环境配置,确保Playwright测试能获得正确的运行上下文。
解决方案
保持通过npm scripts中转执行测试命令的配置方式,避免直接在Docker Compose的command字段中写入完整命令,以此规避环境上下文差异带来的执行卡顿问题。
内容的提问来源于stack exchange,提问作者Davit Ebralidze
相关产品推荐
相关产品推荐

