我在node.js中使用基于Nightwatch.js的Nightwatch-Cucumber实现了一个新的测试框架,用于node中的自动化测试。所以,有时我使用 node.js 断言来检查一些值。我在我的框架中使用PageObject Pattern。我的问题是断言失败后浏览器会话没有关闭,我不知道为什么,也不知道如何解决问题。
这是我的步骤定义:
const {
client
} = require('nightwatch-cucumber');
const {
defineSupportCode
} = require('cucumber');
const page = client.page.page();
defineSupportCode(({Given, When, Then}) => {
When(/^test$/, () => {
return page.test();
});
});
这就是我的页面对象函数:
module.exports = {
elements: {},
commands: [{
test() {
//here the assertion failed and the browser session still exist and doen't close
this.assert.equal(false, true);
return this.api;
}
}]
};
那么,我该怎么做才能实现它以关闭浏览器和会话进行测试?仅当节点.js断言失败时,才会发生这种情况。
使用after
或afterEach
钩子始终在测试结束时关闭浏览器,无论结果如何。见 http://nightwatchjs.org/guide#using-before-each-and-after-each-hooks
after : function(browser) {
console.log('Closing down...');
browser.end();
},
要在每次测试后关闭会话,您必须将afterEach
钩子添加到测试文件中并像这样使用它:
afterEach : function(browser, done) {
browser.end(function(){
done();
});
}