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

如何让Detox仅在测试失败时截图并以测试名命名保存?

Detox仅在测试失败时按测试名截图的实现方法

核心逻辑

Detox基于Jasmine或Mocha这类测试框架运行,在afterEach钩子中可以直接访问当前测试的状态与名称,以此实现失败时才截图的需求。

完整代码实现

afterEach(async function () {
  // 根据测试框架选择对应方式获取当前测试对象
  // Jasmine 环境用 this.currentTest,Mocha 环境用 this.test
  const currentTest = this.currentTest || this.test;

  // 仅在测试失败时执行截图操作
  if (currentTest?.status === 'failed') {
    // 清理测试名称中的特殊字符,避免文件路径异常
    const safeTestName = currentTest.fullName.replace(/[<>:"/\\|?*]/g, '-');
    const screenshotPath = `./${safeTestName}.png`;
    
    await device.takeScreenshot(screenshotPath);
  }
});

关键细节说明

  • 测试元数据获取:Jasmine通过this.currentTest、Mocha通过this.test获取当前测试实例,其中包含status(测试状态,失败时为failed)和fullName(完整测试名称)。
  • 名称格式化:用正则表达式替换测试名称中的特殊字符(如<、>、/等),防止生成无效的文件路径。
  • 条件触发:只有当测试状态为failed时才调用截图方法,避免无意义的截图操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:33:10