TestCafe - 如何在 testcaferc 文件中为 testGrep 提供多个正则表达式

Posted

技术标签:

【中文标题】TestCafe - 如何在 testcaferc 文件中为 testGrep 提供多个正则表达式【英文标题】:TestCafe - How to have multiple regex for testGrep in testcaferc file 【发布时间】:2022-01-08 04:46:55 【问题描述】:

我正在尝试过滤掉一些我们一直在跳过的测试。 “test.skip”是跳过测试的默认方式,但 TestCafe 存在跳过测试后运行冻结的问题。

与此同时,他们的 testcaferc 文件有一个过滤器选项,我想用它来基本上忽略测试。由于使用过滤器选项忽略的测试不会显示在报告中,我希望这意味着 TestCafe 在忽略测试后不会冻结。

他们的文档说明了如何使用过滤器仅运行指定的测试,但缺少此方面的负面影响:

https://testcafe.io/documentation/402638/reference/configuration-file#filter

我已经能够很好地过滤掉一个测试,但是我们现在需要忽略多个测试,当我尝试添加新的正则表达式时,运行停止并显示“没有测试与您的过滤器匹配”。

我正在寻找一种拥有多个正则表达式的方法,以便 TestCafe 知道忽略多个测试。

以下是有效的:

"filter": 
        "testGrep":
            "^((?!user_is_able_to_add_a_section_column_row_and_element_to_editor).)*$"

以下是不起作用的:

"filter": 
        "testGrep": [
            "^((?!user_is_able_to_add_a_section_column_row_and_element_to_editor).)*$",
            "^((?!pop_up_element_displays_during_page_preview).)*$"
        ]
    

【问题讨论】:

【参考方案1】:

testGrep 配置选项仅支持单个正则表达式。您可以指定一个带有交替的正则表达式来忽略多个测试:

"filter": 
    "testGrep": "^(?!.*(Test One|Test Two)).*$"

另一种方法是使用JS配置文件而不是JSON。它允许您指定一种方法,您可以在其中以任何您想要的方式过滤测试:

module.exports = 
    src: './tests/test.js',
    filter: (testName => !testName.includes('Test One') && !testName.includes('Test Two'))

这种方法类似于Runner.filter 方法。

【讨论】:

以上是关于TestCafe - 如何在 testcaferc 文件中为 testGrep 提供多个正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

Testcafe 无法导入配置文件中的文件

如何在 TestCafe 中发布顺序 POST 请求?

如何使用 Testcafe 测试推送通知

如何在 Testcafe 断言中的 1 个可能参数上添加 2 个常量?

如何关闭 testcafe runner

如何在chrome docker镜像上从本地运行testcafe?