** 第一个问题/疑问:**
我在单独的文件 (/Support/utilities) 中定义了 2 个角色:
import channelsPage from '..'
import config from '../Config/config';
import {Role} from 'testcafe';
import loginPage from '..';
let l1 = require('../support/global').log[1];
let l0 = require('../support/global').log[0];
const SuperUser = Role(config.baseUrl, async t => {
//Log in as superuser
await loginPage.logIn(l1.username, l1.password)
//Check if proper site opened
if (await loginPage.keycloakLoginError.exists) {
await loginPage.logIn(l1.username, l1.password)
}
else {
await t.expect(channelsPage.lineupsAndPackages.exists).ok();
await t.expect(channelsPage.createDropUp.exists).ok();
}
})
const NormalUser = Role(config.baseUrl, async t => {
//Log in as superuser
await loginPage.logIn(l0.username, l0.password)
//Check if proper site opened
if (await loginPage.keycloakLoginError.exists) {
await loginPage.logIn(l1.username, l1.password)
}
else {
await t.expect(channelsPage.lineupsAndPackages.exists).ok();
await t.expect(channelsPage.createDropUp.exists).ok();
}
})
module.export ={
SuperUser: SuperUser,
NormalUser: NormalUser
}
然后在测试脚本(另一个文件)中使用定义的角色之一:NormalUser
import config from './Config/config';
import NormalUser from './Support/utilities';
fixture`SanityTests`
.beforeEach(async t => {
await t.maximizeWindow()
})
.page`${config.baseUrl}`;
test('Search', async t => {
await t.maximizeWindow();
//Log in
await t.useRole(NormalUser.NormalUser)
});
测试失败的原因是: ““角色”参数应该是一个角色实例,但它是未定义的。”
当我将这些放在一个文件中时 - 测试通过了,所以问题一定是错误定义的角色(如何正确地做到这一点?)
II 第二个问题/问题
当我创建 Role 构造函数时: Role( URL, func( t ) [, options] ) 我必须指向登录页面的 URL,然后当我在固定装置中创建测试时,我必须配置固定装置 - 指定起始网页,
夹具我的夹具
.page http://www.example.com/
;
所以这个页面是双重加载...
如何避免?
最佳答案
- 您的模块定义中似乎有拼写错误。您有
module.export = {...}
,但正确的用法是module.exports = {...}
。 - 可以不指定测试页面。在这种情况下,测试从“空白”页面开始,然后您将被重定向到
角色/登录
页面。
关于typescript - testCafe:在测试脚本中使用角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59407928/