我的应用程序代码如何知道应用程序是否正在使用testcafe进行测试?

问题描述 投票:2回答:2

我有一套运行TestCafe的测试。在一个组件中,我需要知道是否根据应用程序是否在testcafe中运行将某些数据暴露给窗口,即

if (window.Testcafe === true) {
    window.property = data;
}

Cypress是另一个公开window.Cypress的测试框架,这是可能的。我已经尝试在testcafe测试/灯具的窗口上设置一个属性,使用代码来实现效果

test('Test 1', async t => {
    await t.eval(() => {window.Testcafe = true});
    const val = await t.eval(() => window.Testcafe);
    // val === true
})
// In component window.Testcafe is false

我对其他方法(窗口属性除外)持开放态度。有没有其他人做过类似的事情?

reactjs automated-tests e2e-testing web-testing testcafe
2个回答
3
投票

TestCafe为window对象添加了一些属性,可以帮助您确定您的站点是否正在使用TestCafe。例如,您可以检查window['%hammerhead%']属性。如果存在,则表示TestCafe正常工作。

但是,我需要提一下,它不是一个公共API。它在未来几乎不会改变,但它仍然不是100%可靠的解决方案。

你能详细描述你的情景吗?如果许多用户发现它有用,我们可以考虑将来实施此功能。

另外,我想提一下,您可以使用以下form在TestCafe存储库中创建功能请求


2
投票

测试开始执行时,组件已经加载。

因此,在测试中设置TestCafe变量为时已晚。

测试TestCafe托管的一种解决方法是:

if ( window.localStorage.nativeStorageKey && window.localStorage.nativeStorageKey.startsWith('hammerhead')) {
    window.property = data;
}
© www.soinside.com 2019 - 2024. All rights reserved.