gpt4 book ai didi

testing - 在夹具 Hook 中使用用户代理进行浏览器检测

转载 作者:行者123 更新时间:2023-11-28 20:05:31 25 4
gpt4 key购买 nike

我有一些测试只需要在移动浏览器中运行。目前我有一个客户端功能来检查用户代理。

const checkMobile = ClientFunction(() => /iPhone|Android/i.test(navigator.userAgent))

然后我在我的测试中访问:

test("Check if mobile", async t => { 
const isMobile = await checkMobile();
if (isMobile) {
await t
// do the tests
}
}

我有办法在固定装置中使用它吗?就像只有 checkMobiletrue 时才会运行的装置?所以我不需要在每个测试中手动重复这个检查。我确信有比我现在拥有的更聪明的方法来解决这个问题。我尝试在夹具的 beforeEach Hook 中进行检查,但我无法尝试在变量中共享结果以传递给测试。

最佳答案

要从夹具 Hook 共享变量以进行测试,您可以使用夹具上下文 https://devexpress.github.io/testcafe/documentation/guides/basic-guides/organize-tests.html#share-variables-between-test-hooks-and-test-code

此外,您可以通过以下方式重新组织您的测试:

import { ClientFunction } from 'testcafe';


fixture `test`.page('http://example.com').beforeEach(async t => {
const isMobile = await checkMobile();

t.ctx.isMobile = isMobile;
})

const checkMobile = ClientFunction(() => /iPhone|Android/i.test(navigator.userAgent))

function testAndCheck (testName, testFn) {
const foo = async t => {
if (t.ctx.isMobile)
await testFn(t)
else
throw new Error('not mobile');
}

test(testName, foo);
}

testAndCheck('test1', async t => {
await t.click('h1');
await t.click('div');
await t.click('h1');
})

我在这里定义了 testAndCheck 函数,它扩展了 test 函数,对移动设备进行了额外的检查。

另外可以引用这条评论https://github.com/DevExpress/testcafe/issues/1626#issuecomment-417424558看看还有哪些其他方法可以解决这个问题。

关于testing - 在夹具 Hook 中使用用户代理进行浏览器检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53219157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com