Testcafe - 测试多个页面
Testcafe - Test multiple pages
我正在测试一个带有登录页面的网站,其他页面仅在登录后可见。
我创建了一个 login_page.js
模型如下:
// my_login_page_model.js
import { Selector, t } from 'testcafe';
export default class LoginPage {
constructor () {
this.email = Selector('#email');
this.password = Selector('#password');
this.signin = Selector('#signinButton');
}
}
然后我为登录后的页面创建了类似的页面模型。
然后在我的测试文件中实例化一个登录页面对象,运行登录页面测试
// my_test_spec.js
test('login in', async t => {
await t
.typeText(loginPage.email, config.name)
.typeText(loginPage.password, config.password)
.click(loginPage.signin);
await t.expect(getURL()).contains(pageUrl);
});
test('second test', async t => {
console.log('Creating a new experience');
await t
.click(// click a button on the following page);
});
问题是第二个测试从login page
开始,当然失败了,因为登录后找不到页面id。
如何做到这一点?
每个测试都从头开始,这意味着干净的配置文件,这就是为什么您在第二次测试开始时未获得授权。最简单的修复方法是在第二次测试开始时移动登录代码。但是,这不是好的做法,因为您可能需要在大部分测试之前获得授权。要解决这个问题,您可以选择以下之一:
1) Http Auth 对于某些情况
2) Roles
3) 使用beforeEach Hook。只需将登录代码放入此挂钩,它就会在夹具中的每个测试之前执行。
我正在测试一个带有登录页面的网站,其他页面仅在登录后可见。
我创建了一个 login_page.js
模型如下:
// my_login_page_model.js
import { Selector, t } from 'testcafe';
export default class LoginPage {
constructor () {
this.email = Selector('#email');
this.password = Selector('#password');
this.signin = Selector('#signinButton');
}
}
然后我为登录后的页面创建了类似的页面模型。
然后在我的测试文件中实例化一个登录页面对象,运行登录页面测试
// my_test_spec.js
test('login in', async t => {
await t
.typeText(loginPage.email, config.name)
.typeText(loginPage.password, config.password)
.click(loginPage.signin);
await t.expect(getURL()).contains(pageUrl);
});
test('second test', async t => {
console.log('Creating a new experience');
await t
.click(// click a button on the following page);
});
问题是第二个测试从login page
开始,当然失败了,因为登录后找不到页面id。
如何做到这一点?
每个测试都从头开始,这意味着干净的配置文件,这就是为什么您在第二次测试开始时未获得授权。最简单的修复方法是在第二次测试开始时移动登录代码。但是,这不是好的做法,因为您可能需要在大部分测试之前获得授权。要解决这个问题,您可以选择以下之一:
1) Http Auth 对于某些情况
2) Roles
3) 使用beforeEach Hook。只需将登录代码放入此挂钩,它就会在夹具中的每个测试之前执行。