如何使用 webdriverIO 将 allure 报告中的屏幕截图集成

How to integrate screenshots in allure report with webdriverIO

我试图在测试的每个步骤后在我的魅力报告中生成屏幕截图,或者在测试结束时只生成一个屏幕截图。我已经参考了 webdriverIO 文档,看来我应该将 afterStep 函数与 .takeScreenshot 方法一起使用。我已经在我的配置文件中尝试过,但没有截图 这是我的 afterStep 函数:

afterStep: function (test, scenario, { error, duration, passed }) {
 if (!error) {
     browser.takeScreenshot() } }

最接近我想要的结果的是使用这个

 afterTest: function (test, scenario, { error, duration, passed }) { 
if (!error) { 
    browser.saveScreenshot('test.png') } }

它的作用是在测试结束时截图并保存在我的根目录下,

但是图片无法显示在倾城报告中

如何附上要在 Allure 报告中显示的屏幕截图?

仔细检查我的代码后,我意识到我在这里做错了一件事。

我的配置文件中有另一个 afterTest 挂钩,它被调用而不是捕获屏幕截图的挂钩。为了解决这个问题,我对原始 afterTest 挂钩使用了 browser.takeScreenshot() 函数,这解决了我的问题。截图附在魅力报告末尾。

browser.saveScreenshot 将屏幕截图保存到您的本地文件夹,同时 browser.takeScreenshot 将其附加到魅力报告。

我的全afterTest

afterTest: async function (test, context, { error, result, duration, passed, retries }) {
        if(passed) {
          await browser.takeScreenshot();
          browser.executeScript('browserstack_executor: {"action": "setSessionStatus", "arguments": {"status":"passed","reason": "Assertions passed"}}');
        } else {
          browser.executeScript('browserstack_executor: {"action": "setSessionStatus", "arguments": {"status":"failed","reason": "At least 1 assertion failed"}}');
        }
      },

在我的例子中,我的 wdio.conf.ts 文件只有 1 个 afterTest 命令。

我正在使用 ts 并且我必须添加 async & await ,在此之后它得到解决并在魅力报告中附上屏幕截图:

 afterTest: async function(test, context, { error, result, duration, passed, retries }) {
            if (error) {
                await browser.takeScreenshot()
              }
        },