如何使用来自saucectl的标签运行柏树测试



我可以使用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的套房组件。每个套件都有一个独特的testFilesglob,它可以在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.jsspecs/accounting/chromiumCantCount_edgeOnly_chromeOnly_spec.js

第三个套件在glob数组["specs/**/*edgeOnly*_spec.js", "specs/**/*ieOnly*_spec.js"]中有两个条目。它将包括所有匹配任何的文件;在这种情况下,它匹配任何标记为edgeOnlyieOnly的文件,即specs/accounting/jsMathBugFix_ieOnly_spec.jschromiumCantCount_edgeOnly_chromeOnly_spec.js

单个规格选择

如果你想在一个文件中有单独的规格标记…你现在运气不好。我可以想到两种方法:

  1. 使用插件添加标签到Cypress,然后通过config.yml传递标签选择选项
  2. 向Cypress发送PR以本地添加标签
  3. 编写一个转译器插件,允许您在测试中添加标签,然后将它们转译为单独的文件(然后使用glob方法)

最新更新