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

lbr*_*uck 2 automated-tests web-testing reactjs e2e-testing testcafe

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

if (window.Testcafe === true) {
    window.property = data;
}
Run Code Online (Sandbox Code Playgroud)

这可以通过另一个测试框架 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
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*aev 5

TestCafe 向对象添加了一些属性window,可以帮助您确定您的站点正在与 TestCafe 配合使用。例如,您可以检查window['%hammerhead%']属性。如果存在,则说明 TestCafe 可以正常工作。

不过,我需要指出的是,它不是一个公共 API。未来几乎不会改变,但仍然不是100%的解决方案。

您能详细描述一下您的场景吗?如果很多用户觉得有帮助,我们可以考虑在未来实现这个功能。

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