嵌套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
相关产品推荐
相关产品推荐

