В процессе тестирования веб-приложений с использованием WebdriverIO часто возникает необходимость в автоматическом создании тикетов для отслеживания найденных дефектов или багов. В этом разделе рассмотрим, как можно интегрировать WebdriverIO с Jira для автоматического создания тикетов при выявлении ошибок.
Jira является одним из самых популярных инструментов для управления проектами и отслеживания багов. Интеграция WebdriverIO с Jira помогает разработчикам и тестировщикам быстро и эффективно создавать тикеты прямо из тестов, тем самым автоматизируя процесс управления дефектами.
Прямое создание тикетов из тестов позволяет:
Для интеграции WebdriverIO с Jira потребуется несколько вещей:
jira-client.Для начала необходимо установить пакет для взаимодействия с Jira API. Для этого в корневой директории проекта выполните команду:
npm install jira-client --save
Данный пакет позволяет взаимодействовать с Jira, создавая тикеты и выполняя другие действия через API.
Чтобы настроить взаимодействие с Jira, нужно создать объект клиента,
используя ваш API ключ, логин и URL вашей Jira инстанции. Для этого
создадим файл jiraClient.js:
const JiraClient = require('jira-client');
const jira = new JiraClient({
protocol: 'https',
host: 'your-jira-domain.atlassian.net',
username: 'your-email@example.com',
password: 'your-jira-api-token',
apiVersion: '2',
strictSSL: true
});
module.exports = jira;
В этом примере:
protocol — используется HTTPS для безопасности.host — URL вашей Jira инстанции.username и password — ваш email и API
токен для авторизации.apiVersion — версия API Jira, по умолчанию используется
версия 2.Теперь можно перейти к созданию тикетов в Jira. Для этого нужно будет
вызвать метод addNewIssue() из клиента Jira. В тестах
WebdriverIO это можно делать в блоках обработки ошибок, например, в
случае, если тест не проходит.
Пример создания тикета:
const jira = require('./jiraClient');
function createJiraTicket(errorMessage) {
const issue = {
fields: {
project: {
key: 'PROJ' // Код вашего проекта в Jira
},
summary: `Ошибка в тесте: ${errorMessage}`,
description: `Подробности: ${errorMessage}`,
issuetype: {
name: 'Bug' // Тип тикета, например Bug
}
}
};
jira.addNewIssue(issue)
.then(issue => {
console.log(`Тикет создан: ${issue.key}`);
})
.catch(err => {
console.error('Не удалось создать тикет в Jira:', err);
});
}
Этот код создает тикет с типом Bug и передает в него
описание ошибки. В случае успешного создания тикета выводится его ключ,
который можно использовать для дальнейшего отслеживания.
Теперь давайте интегрируем создание тикетов с тестами WebdriverIO. Для этого можно использовать обработчики ошибок в тестах. Пример:
describe('Тестирование авторизации', () => {
it('Должна быть возможность войти в систему с правильными данными', () => {
browser.url('/login');
$('#username').setValue('user');
$('#password').setValue('password');
$('#loginButton').click();
const errorMessage = $('.error').getText();
if (errorMessage) {
createJiraTicket(errorMessage);
throw new Error(`Тест не прошел: ${errorMessage}`);
}
expect(browser).toHaveUrl('/dashboard');
});
});
В этом примере, если на странице появляется сообщение об ошибке, создается тикет в Jira с описанием ошибки. В случае, если тест не проходит, выбрасывается исключение, чтобы тест не продолжался, а тикет был зафиксирован.
Важным моментом является возможность добавить дополнительные метаданные в тикет для упрощения его обработки. Например, можно передавать информацию о версии приложения, в котором была найдена ошибка, или ссылку на коммит, который вызвал проблему.
Пример добавления метаданных:
function createJiraTicket(errorMessage, browserVersion, commitHash) {
const issue = {
fields: {
project: {
key: 'PROJ'
},
summary: `Ошибка в тесте: ${errorMessage}`,
description: `Подробности: ${errorMessage}\nВерсия браузера: ${browserVersion}\nКоммит: ${commitHash}`,
issuetype: {
name: 'Bug'
}
}
};
jira.addNewIssue(issue)
.then(issue => {
console.log(`Тикет создан: ${issue.key}`);
})
.catch(err => {
console.error('Не удалось создать тикет в Jira:', err);
});
}
Здесь добавляются дополнительные параметры в описание тикета, которые помогут разработчикам быстрее воспроизвести проблему и понять, в каком контексте она возникла.
Важно не только создавать тикеты для багов, но и иметь возможность отслеживать успешные тесты. Это можно делать с помощью WebdriverIO событий.
afterTest: function(test) {
if (test.passed) {
console.log(`Тест ${test.title} прошел успешно.`);
} else {
createJiraTicket(test.error.message, browser.version, process.env.GIT_COMMIT);
}
}
Этот код срабатывает после каждого теста и проверяет его результат. Если тест не прошел, создается тикет в Jira.
Интеграция WebdriverIO с Jira позволяет существенно улучшить процесс тестирования, автоматизируя создание тикетов для найденных дефектов. Важно не только передавать минимальную информацию об ошибке, но и обогатить тикет дополнительными данными, такими как версия браузера, коммит или другие контексты. Это ускоряет процесс решения проблем и делает командную работу более слаженной.