我正在尝试在一个test.js文件中测试多个功能,并将每个功能实现为测试。所有这些测试只有在登录门户网站后才能运行。第一个测试失败后,Testcafe将关闭浏览器。我使用了Role和.beforeEach,以便测试可以登录到门户网站并照常进行,但是是否有任何简单的方法可以在同一浏览器会话中继续所有测试,而不必在每次测试后真正关闭它们?
我使用了Role功能和.beforeEach对我来说似乎是一种解决方法。还有其他方法可以一次又一次运行所有测试,而无需真正关闭浏览器会话。这样可以节省我们的登录操作和每次测试可能导致的不稳定。
import { Selector , ClientFunction, Role } from 'testcafe';
import loginpage from '../../features/blah/login/page-model'
const appPortalUser2 = Role('https://test.com', async t => {
await loginpage.signInToPortal()
await loginpage.login('test-userm', 'Password123')
}, { preserveUrl: true });
fixture `portal - settings`
.page `https://test.com/apps`
.beforeEach (async t => {
await t`enter code here`
.useRole(appPortalUser2)
});
test('settings', async t => {
//test1
await loginpage.foo1()
});
test('backup', async t => {
//test2
await loginpage.foo2()
});
实际行为:退出test1浏览器并显示登录页面后,如果不使用.beforeEach,则test2失败。
预期:在没有.beforeEach的情况下,浏览器会话应在test1之后继续test2。提供这样的选项,使测试可以继续进行而无需每次都创建新的浏览器会话。
答案 0 :(得分:0)
目前,公共API中没有此类选项。
这个想法是,一个测试不应以任何方式影响另一个测试。如果所有测试都在一个浏览器会话中运行,则每个测试都将影响所有先前的测试,因为它可能会使页面的状态无效。