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

Protractor-Flake重试时所有实例运行同一脚本,如何仅启用单实例重试?

问题根源

你当前配置的核心问题是:每个multiCapabilities子项都绑定了固定的测试文件路径,而protractor-flake发起重试时,会将识别到的失败用例文件全量覆盖注入到所有已配置的capability的specs字段中,导致所有实例都会重复执行相同的失败用例,也就出现了你日志中两个Chrome实例同时跑Test2.spec.js的情况。日志中的告警是因为配置同时存在capabilities和multiCapabilities字段,protractor优先使用multiCapabilities,不影响功能但可以清理配置避免告警。

解决方案

第一步:调整Protractor配置

将测试文件从capability的独立配置中抽离为全局specs,开启分片执行能力,修改后的配置如下:

// 如果用json格式可以对应调整字段,protractor推荐使用js配置支持动态逻辑
exports.config = {
  // 删掉单独配置的capabilities字段避免告警
  multiCapabilities:  [{
    browserName: 'chrome',
    chromeOptions: {
      w3c: false
    }
  }, {
    browserName: 'chrome',
    chromeOptions: {
      w3c: false
    }
  }],
  // 全局配置所有测试文件
  specs: ['../tests/Test1.spec.js', '../tests/Test2.spec.js'],
  // 开启测试文件分片,每个文件分配给不同的实例执行
  shardTestFiles: true,
  // 最大并发会话数设为2,和你原来的双实例需求一致
  maxSessions: 2,
  // 其余原有配置保持不变,比如框架、超时等
}

如果需要更灵活的动态调整实例数,可以将配置改为函数形式,根据重试阶段的失败用例数量自动调整并发数:

exports.config = () => {
  // 从环境变量读取protractor-flake传入的失败用例列表,也可以自己解析重试标记
  const failedSpecs = process.env.PROTRACTOR_FLAKE_FAILED_SPECS ? process.env.PROTRACTOR_FLAKE_FAILED_SPECS.split(',') : [];
  const isRetry = failedSpecs.length > 0;
  return {
    multiCapabilities:  [{
      browserName: 'chrome',
      chromeOptions: {
        w3c: false
      }
    }, {
      browserName: 'chrome',
      chromeOptions: {
        w3c: false
      }
    }],
    specs: isRetry ? failedSpecs : ['../tests/Test1.spec.js', '../tests/Test2.spec.js'],
    shardTestFiles: true,
    // 重试阶段并发数等于失败用例数量,最多不超过2
    maxSessions: isRetry ? Math.min(failedSpecs.length, 2) : 2,
  }
}

第二步:调整protractor-flake启动命令

确保启动时没有额外传入capabilities相关参数,示例启动命令:

protractor-flake --parser multi --max-attempts 3 -- path/to/your/protractor.conf.js
效果验证
  • 首次执行:2个实例并行,分别执行Test1和Test2,符合原有需求
  • 单用例失败重试:仅启动1个实例执行唯一的失败用例,不会出现重复执行
  • 双用例失败重试:2个实例各分配1个失败用例并行执行,满足预期的重试逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:30:05