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

如何获取Playwright退出码以在流水线中终止失败构建?

解决Playwright测试失败后流水线不终止的问题

问题根源

你的Shell脚本最后执行了rm -rf node_modules,这条命令只要执行成功就会返回退出码0,覆盖了yarn run uiTests的退出码——无论测试是否失败,脚本最终都返回0,导致流水线无法感知测试失败进而终止。另外,后台启动的yarn run local进程未被正确管理,可能遗留进程影响后续步骤。

修复方案

修改playwright.sh脚本,捕获测试命令的退出码并在脚本末尾返回该值,同时清理后台启动的本地服务进程:

#!/usr/bin/env bash

# 安装依赖
apt-get update
apt-get install -y gnupg2 gnupg1 wget
docker pull mcr.microsoft.com/playwright/python:v1.27.0-focal
yarn install
yarn playwright install 
yarn playwright install-deps

# 启动本地服务并记录进程ID
yarn run local &
LOCAL_SERVER_PID=$!

# 可选:等待本地服务启动完成(避免测试因服务未就绪失败)
wait_for_local_server() {
    echo "等待本地服务启动..."
    until curl -s http://localhost:3000 > /dev/null; do
        sleep 1
    done
    echo "本地服务已启动"
}
wait_for_local_server

# 执行测试并捕获退出码
yarn run uiTests
TEST_EXIT_CODE=$?

# 停止本地服务进程
kill $LOCAL_SERVER_PID

# 清理依赖
rm -rf node_modules

# 返回测试的退出码,传递给上层Makefile和流水线
exit $TEST_EXIT_CODE

验证逻辑

  1. 脚本执行yarn run uiTests后,将其退出码存入TEST_EXIT_CODE变量
  2. 无论后续的kill和rm命令是否成功,脚本最终都会返回TEST_EXIT_CODE的值
  3. Makefile调用该脚本时,若脚本返回非0(测试失败),Makefile会终止并将退出码传递给流水线,触发构建终止

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:15:48