Я использую платформу транспортира с Jasmine Runner для тестирования моего приложения.У меня есть один тестовый пример с именем 0030 Test для правильного login.e2e-spec.ts.Теперь я реализовал Allure Report, чтобы увидеть статистику отчета в сети.Проблема в том, что allure показывает отчет только для одного браузера.Но мне нужно создать отчет для двух браузеров, а также скриншот для двух браузеров.Я слышал, что создание настраиваемого слушателя в отчете jasmine https://jasmine.github.io/tutorials/custom_reporter путем добавления имени браузера создаст два отдельных результата для одного теста.Но я не понимаю, как я могу добавить имя браузера, создав пользовательский слушатель.Пока мой код может получить имя браузера.но как я могу добавить это имя во время выполнения.
Моя конфигурация транспортира
const JasmineConsoleReporter = require('jasmine-console-reporter');
const reporter = new JasmineConsoleReporter({
colors: 1, // (0|false)|(1|true)|2
cleanStack: 1, // (0|false)|(1|true)|2|3
verbosity: 4, // (0|false)|1|2|(3|true)|4|Object
listStyle: 'indent', // "flat"|"indent"
timeUnit: 'ms', // "ms"|"ns"|"s"
timeThreshold: { ok: 500, warn: 1000, ouch: 3000 }, // Object|Number
activity: false, // boolean or string ("dots"|"star"|"flip"|"bouncingBar"|...)
emoji: true,
beep: true
});
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');
// get the browser name
var capsPromise = browser.getCapabilities();
var prePendStr;
capsPromise.then(function(caps) {
console.log(caps);
var browserName = caps.get('browserName');
var browserVersion = caps.get('version');
prePendStr = browserName + "-" + browserVersion + "-";
console.log(prePendStr);
});
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();
})
});
}));
}
Один из моих примеров теста -
describe('0030 Test for correct login , function () {
// 1.
it('Navigate to the login page', async () => {
await navigate.to.the(loginPage);
await expect(headingTitle.getText()).toBe('Text');
});
// 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 () {
enter(correctPassword, into(passwordField));
})
});
// 6.
it('Login button is clicked and home page is opened with Machine on left top menu', async() => {
await click.onto(loginButton);
await expect(ContentPage.leftTopMenuItem.getText()).toContain('Homepage');
});