如何覆盖wdio-sauce-service提供给SauceLabs的测试名称?

时间:2018-11-14 12:38:40

标签: javascript node.js webdriver-io saucelabs

SauceLabs通常使用最后一个describe()测试标题在其存档中命名测试。不幸的是,在describe的多层中,这可能会导致名称不是很有意义。因此,我想动态更改测试的名称,例如使用 我在不同的地方见过WebdriverIO Testrunner Configuration文档,即应该像这样更新desiredCapabilities

browser.desiredCapabilities.name = "my test name"

beforeTestafterTest钩子“ works”中进行设置,因为不会引发错误,并且会反映在desiredCapabilities对象中,但SauceLabs不会将其用作存档中测试运行的名称。

Another answer here on 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 Using Cloud Services文档指出了这一点

  

如果您设置name,则将在Sauce Labs中为此版本更改此测试的名称。如果您将WDIO testrunner与wdio-sauce-service WebdriverIO结合使用,则会自动为测试设置一个适当的名称。

如何覆盖wdio-sauce-service传递给SauceLabs的名称?

1 个答案:

答案 0 :(得分:0)

在撰写本文时,wdio-sauce-service已由@wdio/sauce-service取代,after()也依赖于您在此处引用的SauceLabs模块。在这两种服务中,进行酱汁实验室会话的最后一步都会更新name函数中的作业,该函数在会话关闭或已经关闭时触发。

您可以覆盖作业名称的唯一方法是修改服务代码,自行编写,或者在调味料服务使用框架函数(如果框架允许)后对SauceLabs API进行附加调用。< / p>

如果您使用# settings.py # Point to custom account adapter. ACCOUNT_ADAPTER = 'myproject.myapp.adapter.CustomAccountAdapter' # A custom variable we created to tell the CustomAccountAdapter whether to # allow signups. ACCOUNT_ALLOW_SIGNUPS = False 功能,则会使所有测试具有相同的工作名称具有副作用。