在codeceptJS中的页面响应事件侦听器中触发失败结果的正确方法

时间:2018-11-16 02:13:57

标签: automated-tests puppeteer codeceptjs

我编写了一个辅助方法,以在Puppeteer页面实例上添加网络响应侦听器。代码看起来像这样

let Helper = codecept_helper;

class CheckHelper extends Helper {
  async listenRequest(listener)
  {
    const helper = this.helpers['Puppeteer'];
    await helper.page.setRequestInterception(true);
    helper.page.on("request",listener);
    return helper._waitForAction();
  }
  async listenResponse(listener)
  {
    const helper = this.helpers['Puppeteer'];
    helper.page.on("response",listener);
    return helper._waitForAction();
  }
}

module.exports = CheckHelper;

然后在测试脚本中

  let self=this;
  I.listenResponse((response)=>{
     if(response.url().match(/github.*\.js/) && response.headers()['content-length']>1000) {
         //codeceptjs.event.emit(codeceptjs.event.test.failed, self, 'js file is too big!');
         //codeceptjs.recorder.throw('js file is too big!')
         //codeceptjs.recorder.stop();
         //throw new Error('js file is too big!')
     }
  })
  I.amOnPage("https://www.github.com");

我首先添加响应侦听器,然后转到“ github”,当某些js文件太大时,我会抛出一个错误,以便检查内容大小是否正确。

但是,即使我抛出错误(就像注释代码一样),主测试流程也不会停止,我该怎么做才是正确的方法?

1 个答案:

答案 0 :(得分:0)

好吧,我稍后找到了解决方法

i将所有页面响应记录到页面实例中的自定义对象中。 后来我写了一个帮助方法来检查整个记录。

ASC

然后在测试文件中

DESC