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

时间:2019-03-29 22:00:04

标签: reactjs automated-tests e2e-testing web-testing testcafe

我有一组使用TestCafe运行的测试。在一个组件中,我需要根据应用程序是否在testcafe中运行来确定是否向窗口公开一些数据,即

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

这可以通过另一个暴露于window.Cypress的测试框架Cypress来实现。 我尝试使用代码对

的效果从testcafe测试/夹具在window上设置属性
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

我愿意接受其他方法(除了窗口属性之外)。还有其他人做过类似的事情吗?

2 个答案:

答案 0 :(得分:3)

TestCafe将一些属性添加到window对象中,可以帮助您确定您的站点正在使用TestCafe。例如,您可以检查window['%hammerhead%']属性。如果存在,则表示TestCafe有效。

但是,我需要提一下,它不是公共API。将来几乎不会更改,但仍不是100%的固定解决方案。

能否请您详细描述您的情况?如果许多用户认为它有用,我们将来可以考虑实现此功能。

此外,我想提一下您可以使用以下form

在TestCafe存储库中创建功能请求

答案 1 :(得分:2)

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

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

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

if ( window.localStorage.nativeStorageKey && window.localStorage.nativeStorageKey.startsWith('hammerhead')) {
    window.property = data;
}