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

如何通过CodeceptJS将测试名称推送至Sauce Labs?

在Sauce Labs中展示CodeceptJS测试名称的解决方案

我完全懂你的困扰——现在Sauce Labs只能反馈测试的成功/失败状态,看不到具体的测试名称,排查问题的时候特别不方便对吧?其实通过CodeceptJS的钩子结合Sauce Labs的API就能解决这个问题,我给你整理了亲测有效的实现步骤:

核心思路

在每个测试用例执行完成后,通过Sauce Labs的REST API更新当前会话的名称,把CodeceptJS的测试标题同步过去。

具体实现代码

你可以在CodeceptJS的全局钩子(比如_after()方法)中添加以下代码:

_after() {
  // 仅在Sauce Labs环境下执行
  if (process.env.SAUCE_USERNAME && process.env.SAUCE_ACCESS_KEY) {
    // 获取当前WebDriver会话ID
    const sessionId = this.helpers['WebDriverIO'].browser.requestHandler.sessionID;
    // 构建Sauce API的请求地址(US数据中心,EU中心请替换域名)
    const sauceApiUrl = `https://${process.env.SAUCE_USERNAME}:${process.env.SAUCE_ACCESS_KEY}@saucelabs.com/rest/v1/${process.env.SAUCE_USERNAME}/jobs/${sessionId}`;
    
    // 要更新的测试名称,直接取当前测试的标题
    const updatePayload = {
      name: this.currentTest.title
    };

    // 发送PUT请求更新会话信息
    return this.helpers['WebDriverIO'].browser.request({
      method: 'PUT',
      url: sauceApiUrl,
      headers: { 'Content-Type': 'application/json' },
      data: updatePayload
    });
  }
}

注意事项

  • 务必确保你的环境中已经配置了SAUCE_USERNAME和SAUCE_ACCESS_KEY两个环境变量,避免硬编码敏感信息。
  • 如果你的测试运行在Sauce Labs的EU数据中心,需要将API地址中的saucelabs.com替换为eu-central-1.saucelabs.com。
  • this.currentTest.title会自动获取当前执行的测试用例名称,无需手动指定,适配所有测试场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:44:09