我如何将失败的 Cucumber 步骤的屏幕截图附加到 Allure 报告中,而不是在 Tear Down 部分?

How I can attach screenshot of failed Cucumber step to Allure report exactly in step, not in Tear Down section?

我无法在 Allure 报告中的步骤下添加失败的黄瓜步骤的屏幕截图。

我使用 allure-cucumber4-jvm:2.12.1, cucumber-java:4.3.1 并尝试添加测试网络应用程序的屏幕截图以在失败的黄瓜步骤下准确地报告 allure 报告。所以我尝试使用cucumber的@AfterStep和@After注解,在scenario.isFailed()条件下的注解方法中添加截图。但问题是屏幕截图是在拆解部分的所有步骤之后添加的。唯一的区别是@After 方法被调用一次而@AfterStep 方法被每一步调用。

@AfterStep
public void addScreenshotOnFailed(Scenario scenario) throws IOException {
        if (scenario.isFailed()) {
            try {
                Allure.addAttachment("Failed step", new FileInputStream(Screenshots.takeScreenShotAsFile()));
            } catch (FileNotFoundException ignored) {}
        }
    }

我希望测试的网络应用程序的屏幕截图正好在失败的黄瓜步骤下?但实际上我在所有场景之后都在拆解部分

想法是使用事件来捕获步骤状态并嵌入屏幕截图。如果我是正确的,根据当前设计 AfterStep 在步骤失败时不会执行。所以我们不得不在hooks中使用AfterConfiguration

Ruby: 这是 ruby 实现。

AfterConfiguration do |scenario, config|
    config.on_event :test_step_finished do |event|
        if event.result.failed?
          # get screenshot
        end
    end
  end

检查此 thread 关于 allure 实施的内容。