UNPKG

@gurglosa/playwright-zephyr-jira-reporter

Version:

A custom Playwright reporter that syncs test results to Zephyr Scale and creates Jira bugs on failures.

93 lines (92 loc) 3.63 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.JiraServices = exports.IssueStatusTransition = void 0; const axios_1 = __importDefault(require("axios")); const buffer_1 = require("buffer"); var IssueStatusTransition; (function (IssueStatusTransition) { IssueStatusTransition["to_do"] = "11"; IssueStatusTransition["in_progress"] = "21"; IssueStatusTransition["done"] = "31"; IssueStatusTransition["ready_for_testing"] = "3"; IssueStatusTransition["testing"] = "2"; })(IssueStatusTransition || (exports.IssueStatusTransition = IssueStatusTransition = {})); class JiraServices { constructor(config) { const requiredFields = [ { key: 'Jira_Base_URL', message: 'Jira Base URL is required' }, { key: 'Jira_Email', message: 'Jira email is required' }, { key: 'Jira_Access_Token', message: 'Jira API token is required' }, { key: 'Jira_project_Key', message: 'Jira Project Key is required' }, { key: 'Jira_Email', message: 'Jira email is required' }, ]; console.log(); for (const field of requiredFields) { if (!config[field.key]) { throw new Error(field.message); } } const authToken = buffer_1.Buffer.from(`${config.Jira_Email}:${config.Jira_Access_Token}`).toString('base64'); this.client = axios_1.default.create({ baseURL: `${config.Jira_Base_URL}/rest/api/3`, headers: { Authorization: `Basic ${authToken}`, Accept: 'application/json', 'Content-Type': 'application/json' } }); } async createIssue(payload) { try { const response = await this.client.post('/issue', payload); // console.log(`✅ Issue created: ${response.data.key}`); return response.data; } catch (error) { const axiosError = error; console.log(`❌ Failed to create Jira issue:`, axiosError.message, axiosError.response?.data); throw axiosError.response?.data; } } async getJiraIssue(issueId) { try { const response = await this.client.get(`/issue/${issueId}`); return response.data; } catch (error) { const axiosError = error; console.log(`❌ Failed to get Jira issue:`, axiosError.message, axiosError.response?.data); throw error; } } async searchIssueWithTitleUsingJQL(TestCaseID) { try { const response = await this.client.get(`/issue/picker?currentJQL=TestCaseID=${TestCaseID}`); return response.data; } catch (error) { const axiosError = error; console.log(`❌ Failed to search Jira issue:`, axiosError.message, axiosError.response?.data); throw error; } } async transitionIssue(issueId, transitionId) { try { await this.client.post(`/issue/${issueId}/transitions`, { transition: { id: transitionId } }); } catch (error) { const axiosError = error; console.error(`❌ Failed to transition Jira issue:`, axiosError.message, axiosError.response?.data); throw error; } } } exports.JiraServices = JiraServices; exports.default = JiraServices;