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

如何在本地快速复现Playwright WebKit的不稳定测试用例?

本地复现Playwright WebKit间歇性测试失败的最优脚本方案

直接给你一个单bash脚本,能模拟多终端并行循环跑测试,一旦出现失败立刻终止所有进程并保留失败日志,比手动开多个终端高效得多:

#!/bin/bash

# 配置参数
PARALLEL_COUNT=2  # 对应你之前开的终端数量,可按需调整
TEST_CMD="yarn nx run-many -t e2e --output-style=stream --project=webkit --skip-nx-cache"
LOG_DIR="./webkit-test-logs"

# 创建日志存储目录
mkdir -p "$LOG_DIR"

# 定义终止所有测试进程的清理函数
cleanup() {
    echo "检测到测试失败,正在终止所有运行中的测试进程..."
    pkill -P $$  # 终止当前脚本启动的所有子进程
    exit 1
}

# 捕获中断信号,确保进程能被清理
trap cleanup SIGINT SIGTERM

# 启动多个并行测试循环
for i in $(seq 1 $PARALLEL_COUNT); do
    (
        echo "启动第 $i 个测试循环..."
        while true; do
            # 运行测试并将输出写入对应日志文件
            $TEST_CMD > "$LOG_DIR/test-run-$i.log" 2>&1
            EXIT_CODE=$?
            if [ $EXIT_CODE -ne 0 ]; then
                echo "第 $i 个测试循环失败,日志路径: $LOG_DIR/test-run-$i.log"
                # 向父进程发送中断信号触发全局清理
                kill -SIGINT $$
                exit $EXIT_CODE
            fi
            echo "第 $i 个测试循环完成,无失败,继续下一轮..."
        done
    ) &
done

# 等待后台进程运行(直到有失败触发中断)
wait

使用步骤:

  1. 将代码保存为reproduce-flaky-test.sh
  2. 赋予执行权限:chmod +x reproduce-flaky-test.sh
  3. 运行脚本:./reproduce-flaky-test.sh

额外优化建议:

  • 如果已知不稳定用例的名称,用Playwright的--grep参数缩小范围,能更快触发失败:
    修改TEST_CMD为:
    TEST_CMD="yarn nx run-many -t e2e --output-style=stream --project=webkit --skip-nx-cache -- --grep='目标用例名称'"
    
  • 可调整PARALLEL_COUNT的值(比如设为3或4),提升复现概率
  • 失败测试的完整日志会保存在webkit-test-logs目录下,直接查看对应文件即可定位问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 13:38:11