将测试数据属性设置为测试环境中React应用程序的锚点

我正在使用nightwatch进行应用程序的端到端测试。同时,我在构建中使用CSS模块,但不允许我将CSS选择器链接到测试代码中的某些常量:

module.exports = {
    url() {
        return this.api.launchUrl`;
    },elements: {
        reactComponent: {
            selector: '?',},};

是否有一种方便的方法/方法来在React项目中自动为React组件分配某种test-id=*属性(取决于环境模式),还是应该明确地进行这项工作?

kxp1125 回答:将测试数据属性设置为测试环境中React应用程序的锚点

简短的答案是,您将必须自己设置test-id属性。

我们在React项目中处于类似情况,我们不希望测试属性始终在生产中可见。为了解决这个问题,我们的每个测试属性都设置为

test-id=${testIdFunc('someComponentName')}

然后,我们的React Root组件中有一个代码块,用于检查浏览器中是否存在某些cookie。如果存在cookie,则将testIdFunc定义为id => id,如果不存在cookie,则将其定义为() => null。然后在React上下文中设置testIdFunc,以便任何组件都可以访问它。

最终结果是,只有存在该cookie时,您才会显示测试属性,这听起来像您想要的。

要在测试中访问此内容,请在打开浏览器窗口后立即导航到您域中的某个URL(最好是快速加载的URL),设置测试Cookie并刷新页面(或导航至您要开始对其进行测试的所有网址)。

本文链接:https://www.f2er.com/3100570.html

大家都在问