我可以使用saucectl在saucelab上运行柏树测试。现在的任务是运行带有所需标记(如smoke或regression)的测试。我能在config中做什么配置吗?
saucectl将大部分测试组织留给了测试运行者,这是不幸的,因为Cypress本身没有内置支持通过标记运行测试。
有一个局部的解决方案可能适合,基于文件位置。在你的config.yml
中,你可以指定单独的suites
(见这里),这让你可以为Cypress提供单独的config
选项。您仍然只能运行单个文件(通过将它们传递给testFiles
选项;
如果你只想运行整个文件,这不是问题;只需将文件包含在您希望它成为其中一部分的每个Suite中。
<标题>Glob-based"tag"选择通过在testFiles
选项中巧妙地使用globbing,您可以避免每次添加新的测试文件时都必须更新您的saucectl配置文件。
这消除了忘记将文件添加到各自的组的风险,也有助于保持关于每个规范文件的信息(例如,它是什么类型的规范)更接近文件本身。
套件文件假设你的测试是这样的。每个文件都包含只能在特定浏览器(或浏览器组合)上运行的测试。
specs/
ui/
login_chromeOnly_spec.js
login_firefoxOnly_spec.js
accounting/
jsMathBugFix_ieOnly_spec.js
chromiumCantCount_edgeOnly_chromeOnly_spec.js
config.yml
这是config.yml的套房组件。每个套件都有一个独特的testFiles
glob,它可以在spec文件夹中找到所有测试,并以各自的_browserOnly_spec.js
值结束。
suites:
- name: "Where There's Smoke There's"
browser: "firefox"
platformName: "Windows 10"
config:
testFiles: ["specs/**/*firefoxOnly*_spec.js"]
- name: "Cream on"
browser: "chrome"
platformName: "Windows 10"
config:
testFiles: ["specs/**/*chromeOnly*_spec.js"]
- name: "Livin' on the"
browser: "edge"
platformName: "Windows 10"
config:
testFiles: ["specs/**/*edgeOnly*_spec.js", "specs/**/*ieOnly*_spec.js"]
工作原理
第一个glob["specs/**/*firefoxOnly*_spec.js"]
将匹配specs/ui/login_firefoxOnly_spec.js
.
第二个glob,["specs/**/*chromeOnly*_spec.js"]
,匹配specs/ui/login_chromeOnly_spec.js
和specs/accounting/chromiumCantCount_edgeOnly_chromeOnly_spec.js
第三个套件在glob数组["specs/**/*edgeOnly*_spec.js", "specs/**/*ieOnly*_spec.js"]
中有两个条目。它将包括所有匹配任何的文件;在这种情况下,它匹配任何标记为edgeOnly
或ieOnly
的文件,即specs/accounting/jsMathBugFix_ieOnly_spec.js
和chromiumCantCount_edgeOnly_chromeOnly_spec.js
。
单个规格选择
如果你想在一个文件中有单独的规格标记…你现在运气不好。我可以想到两种方法:
- 使用插件添加标签到Cypress,然后通过
config.yml
传递标签选择选项 - 向Cypress发送PR以本地添加标签
- 编写一个转译器插件,允许您在测试中添加标签,然后将它们转译为单独的文件(然后使用glob方法)