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

嵌套test.step()启用box特性时错误调用栈指向问题

Playwright嵌套test.step()启用box选项时的错误栈指向问题

问题描述

在Playwright中,test.step()支持嵌套调用,且具备box特性。当所有嵌套的test.step()都启用box选项时,若内部步骤发生错误,调用栈顶部会指向最近的test.step()调用行还是最外层的?比如以下示例中,错误会指向标注为A的行还是B的行?

async function login(page) { // 指向此行?A
  await test.step('Outer step', async () => { // 指向此行?B
    await test.step('Inner step', async () => {
      // 发生错误
    }, { box: true });
  }, { box: true });
};

答案

错误栈顶部会指向最近的test.step()调用行——也就是示例中定义Inner step的那一行(你提供的代码里未标注,但既不是A也不是B)。

原因在于box选项的核心作用是把步骤回调内的错误,关联到test.step()本身的调用位置,而非错误实际发生的代码行。对于嵌套启用box的步骤,每一层box都会捕获其内部步骤的错误,最内层的错误会被最近的test.step()包装,因此栈顶会指向最内层test.step()的调用行,既不会指向外层的B行,更不会指向函数定义的A行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 16:42:43