屏幕截图未附加到报告中,但在 'allure-results' 文件夹或故障规格屏幕截图中可用

Screenshot is not attached to report but available in 'allure-results' folder or failure Specs screenshot

在Allure Reporters [with Protractor]中,正在拍摄的屏幕截图仅在测试结束时。由于 Allure 报告中显示的屏幕截图仅是登录页面,而不是用户登录后的应用程序。

这是我用来生成 Allure 报告的代码。

allureReporterSetup: function() {
    const AllureReporter = require('jasmine-allure-reporter');
    jasmine.getEnv().addReporter(new AllureReporter({
        resultsDir: 'allure-results'

    }));
    jasmine.getEnv().afterEach(function (done) {
        browser.takeScreenshot().then(function (png) {
            allure.createAttachment('Screenshot', function () {
                return new Buffer(png, 'base64')
            }, 'image/png')();
            done();
        })
    });
},

据我了解,Protractor 是用于测试 Angular JS 网站的工具。它与 Selenium 非常相似,因此与您的问题无关。

您的问题与您使用的测试框架有关。 现在发生的情况是您的屏幕截图可能是在测试结束时(在 scenario/after 测试之后)甚至在测试套件之后拍摄的。

您需要的是在测试步骤之后甚至在测试失败之后立即截取屏幕截图。我想在您的测试失败后会执行一些拆卸操作。问题是您需要在执行这些操作之前截取屏幕截图。这样会及时拍下。

这可能对你有帮助

    onPrepare() {
    var originalAddExpectationResult = jasmine.Spec.prototype.addExpectationResult;
    jasmine.Spec.prototype.addExpectationResult = function () {
        if (!arguments[0]) {
            browser.takeScreenshot().then(function (png) {
                allure.createAttachment('Screenshot', function () {
                    return new Buffer(png, 'base64')
                }, 'image/png')();
            })
        }
        return originalAddExpectationResult.apply(this, arguments);
    };
    var AllureReporter = require('jasmine-allure-reporter');
    jasmine.getEnv().addReporter(new AllureReporter({
        resultsDir: 'allure-results',
    }));
}