有人可以使用testcafe(每个之前的夹具)来找到最合适的方法来运行具有不同先决条件的夹具吗?
鉴于我有以下固定装置:
fixture('[Test] My Page')
.meta({ env: 'aat', mobile: 'true', author: 'me' })
.beforeEach(async t => {
await t.navigateTo(myPage.url)
await waitForReact(10000)
})
test('Page should load all data successfully', async t => {
const { Query: queries } = await t.ctx.graphQLTools.mockManagementClient.getCalls()
for (const q of Object.keys(queries)) {
for (const { args, context } of Object.keys(queries[q])) {
await t.expect(queries[q][args]).typeOf('undefined')
await t.expect(queries[q][context]).typeOf('undefined')
}
}
})
在上面的代码示例中,我需要多次运行此测试:
我尝试了以下代码,但是当我需要在夹具中检查1个以上的测试(取自https://testcafe-discuss.devexpress.com/t/multiple-execution-of-one-test-with-different-data/219)时,它看起来很麻烦并且会带来复杂性:
const a = ['anonymous', 'logged In']
for (const user of a) {
test.meta({ wip: 'true' })(`Page should load all data successfully for ${user} user`, async t => {
if (R.equals('logged In', user)) {
await helpers.setCookie({ key: 'access_token', value: '123123123' })
await helpers.reloadPage()
}
const { Query: queries } = await t.ctx.graphQLTools.mockManagementClient.getCalls()
await t.expect(helpers.isEqlToEmptyQuery(queries.basket)).eql(true)
await t.expect(helpers.isEqlToEmptyQuery(queries.categories)).eql(true)
if (R.equals('logged In', user)) {
await t.expect(helpers.isEqlToEmptyQuery(queries.customer)).eql(true)
}
})
}
有没有办法让整个夹具使用不同的beforeEach每个夹具挂钩运行2-3次?
答案 0 :(得分:5)
一种简单的解决方案是在package.json
中添加三个npm脚本:
"test": "testcafe chrome <all testcafe options>"
"test-anonymous": "npm test -- --user=anonymous"
"test-admin": "npm test -- --user=admin"
"test-default": "npm test -- --user=default"
然后按照我在Testcafe - Test command line argument outside test case
中的解释,在beforeEach
中阅读此自定义命令行选项。