javascript - 如何覆盖 wdio-sauce-service 给 SauceLabs 的测试名称?
问题描述
SauceLabs 通常使用最后一个describe()
测试标题来命名其档案中的测试。不幸的是,有几层describe
,这可能会导致名称不是很有意义。因此,我想动态更改测试的名称,例如使用我在不同地方看到的,例如WebdriverIO Testrunner 配置文档,应该只更新desiredCapabilities
类似的
browser.desiredCapabilities.name = "my test name"
在 abeforeTest
或afterTest
钩子中设置它“有效”,如 in 不会引发错误并反映在desiredCapabilities
对象中,但 SauceLabs 不使用它作为存档中测试运行的名称。
SO 上的另一个答案,针对 CodeceptJS 的类似问题给出了建议
const SauceLabs = require('saucelabs')
saucelabs = new SauceLabs({
username: your-username,
password: your-accessKey
});
// run test(s) ...
saucelabs.updateJob(sessionID, {
name: test-title,
passed: passed
}, done);
不幸的是,我什至没有/不需要 SauceLabs 模块。
罪魁祸首似乎是wdio-sauce-service
,因为使用云服务的 WebdriverIO文档指出
如果您设置
name
,这将更改此构建在 Sauce Labs 中的此测试的名称。如果您使用 WDIO 测试运行程序与 WebdriverIO 结合使用,wdio-sauce-service
则会自动为测试设置正确的名称。
如何覆盖wdio-sauce-service
传递给 SauceLabs 的名称?
解决方案
在撰写本文时,wdio-sauce-service
已替换为@wdio/sauce-service
,它还依赖于您在此处引用的 SauceLabs 模块。在这两种服务中,Sauce Labs 会话的最后一步会更新函数中的作业,该after()
函数在会话关闭或已经关闭时触发。
您可以覆盖作业名称的唯一方法是修改服务代码,制作您自己的代码,或者在酱汁服务使用您的框架函数完成之后对 SauceLabs 的 API 进行额外调用,如果您的框架允许的话。
如果您使用该name
功能,则会产生使所有测试具有相同作业名称的副作用。
推荐阅读
- python - 尝试学习json
- c# - 修改结构变量
- visual-foxpro - Windows 10 1803 的 VFP 网络问题
- reactjs - 如何将其孩子接受的仅限父母的道具传递给父母?
- javascript - 对于成功的同源请求,Fetch 会抛出“TypeError: Failed to fetch”
- c# - 为什么以及何时需要在异步函数中等待?
- vba - 日期清理功能
- java - 在java中打印以相同字母开头和结尾的字符串中的所有单词
- redux - React Redux 将 action 分发到另一个域进行身份验证
- c++ - 为不同的目标 MCU 开发 C/C++ 代码的区别