如何在具有相同浏览器会话的相同固定装置下运行多个测试

时间:2019-10-02 23:01:01

标签: testing automation e2e-testing testcafe web-testing

我正在尝试在一个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。提供这样的选项,使测试可以继续进行而无需每次都创建新的浏览器会话。

1 个答案:

答案 0 :(得分:0)

目前,公共API中没有此类选项。

这个想法是,一个测试不应以任何方式影响另一个测试。如果所有测试都在一个浏览器会话中运行,则每个测试都将影响所有先前的测试,因为它可能会使页面的状态无效。