Сделайте снимок экрана для нескольких браузеров в Allure с настройкой Protractor - PullRequest
0 голосов
/ 17 декабря 2018

Я очень новичок в сквозной среде тестирования.Я использую Protractor Framework, Jasmine Runner для тестирования моего приложения.Я запускаю свой тест с Chrome и Internet Explorer.Но в отчете очарования я вижу отчет только для одного браузера, а не для обоих.Также снимок экрана генерируется только для одного браузера.есть ли какая-либо конфигурация для allure, по которой я могу видеть отчет для обоих браузеров.

Мой файл конфигурации:

var Jasmine2HtmlReporter = require('protractor-jasmine2-html-reporter');
require('protractor/built/logger').Logger.logLevel = 3;
exports.config = {
    troubleshoot: true, // for protractor
    allScriptsTimeout: 1200000,
    specs: [
        './e2e/tests/**/0030*.e2e-spec.ts',
    ],

    multiCapabilities:[
    {
            'browserName' : 'chrome',
            'chromeOptions': { 'args' : ['--disable-extensions']},
            'shardTestFiles': true,
            'maxInstances': 1,
            'unexpectedAlertBehaviour' : 'dismiss'
        },
        {
            'browserName': 'internet explorer',
            'se:ieOptions': {

                enablePersistentHover: true,
                'ie.ensureCleanSession': true,
            }
        }
        ],

      jvmArgs: ['-Dwebdriver.ie.driver=./node_modules/webdriver-manager/selenium/IEDriverServer3.141.0.exe'],


    baseUrl: 'http://localhost:4200/',
    framework: 'jasmine',
    jasmineNodeOpts: {
        isVerbose: true,
        showColors: true,
        defaultTimeoutInterval: 1200000
    },
    useAllAngular2AppRoots: true,
    beforeLaunch: function() {
    }

    onPrepare: function() {
    browser.manage().window().maximize();
    require('ts-node').register({
        project: 'e2e/tsconfig.json'
    });

    jasmine.getEnv().addReporter(reporter);

    var AllureReporter = require('jasmine-allure-reporter');

    capsPromise.then(function(caps) {
        console.log(caps);
        var browserName = caps.get('browserName');
        var browserVersion = caps.get('version');
        const prePendStr = browserName + "-" + browserVersion + "-";
        console.log(prePendStr);
    });

    jasmine.getEnv().addReporter(new AllureReporter({
        resultsDir: 'allure-results'
    }));
    jasmine.getEnv().addReporter(reporter);

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

    jasmine.getEnv().addReporter(new Jasmine2HtmlReporter({
        //savePath: './test/jasmine-nowshin/'
    }));
  }
};

Обновлен код в тесте

    let capsPromise = browser.getCapabilities();
let browserNameforSpec;
capsPromise.then(function(caps) {
    console.log(caps);
    let browserName = caps.get('browserName');
    let browserVersion = caps.get('version');
    browserNameforSpec = browserName + '-' + browserVersion + '-';
    console.log(browserNameforSpec);

});

describe( '0030 Test for login' + browserNameforSpec, function () { // this.browserNameforSpec value is undefined

    // 1.
    it('Navigate to the login page', async () => {
        await navigate.to.the(loginPage);
    });

    // 2
    it('Click onto language button', async() => {
        await click.onto(languageButton);
        await expect(languageDropdown.isDisplayed());
    });

    // 3
    it('English Language is selected', async() => {    
        await click.onto(englishLanguage);
        await expect(languageButton.getText()).toBe('English');
    });

    // 4.
    it('Correct user name is written into email field', async() => {
        await usernameField.click();
        await enter(correctUsername, into(usernameField));    
    });

    // 5.
    it('Correct password is written into password field', async() => {
            await passwordField.click().then(function () {
                passwordField.clear();
                enter(correctPassword, into(passwordField));
            })    
    });

    // 6.
    it('Login button is clicked and home page is opened', async() => {
        await click.onto(loginButton);
    });    
});

1 Ответ

0 голосов
/ 17 декабря 2018

в настоящее время allure не поддерживает многобраузерные отчеты.

Если имя теста 'abc', оно создаст 2 отчета с одинаковыми именами и сложит их в стек, но в конце теста вы увидите только 1Вы можете увидеть это на вкладке «история» или «повторные попытки».

Вы можете создать пользовательский прослушиватель для событий жасмина, в начале теста добавить имя браузера или что-то еще, чтобы создать разные имена для каждого теста, такВы можете различать их.

Информация о создании настраиваемого репортера (слушателя) https://jasmine.github.io/tutorials/custom_reporter

Вы можете извлечь имя браузера:

browser.getCapabilities().then((cap) => {
    browser.params.browserName = cap.get('browserName');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...