UNPKG

@restqa/cucumber-export

Version:

A simple cucumber-js formatter exporting your result to different endpoints

72 lines (62 loc) 2.19 kB
const got = require("got"); const Errors = require("../errors"); module.exports = function (config, result) { return new Promise((resolve, reject) => { try { if (undefined === config.onlyFailed) { config.onlyFailed = true; } if (!config.token) return reject( new Error('config.token is required for the "line" report') ); const url = new URL("https://notify-api.line.me/api/notify"); if (config.onlyFailed === true && result.success === true) return resolve( "[LINE] No Notification is required because eveything is fine :)" ); const status = result.success ? "Passed" : "Failed"; const message = [ `The test suite ${status} (${result.passed}/${result.total})`, `Name: ${result.name}`, `key: ${result.key}`, `Environment: ${result.env}`, `Execution Id : ${result.id}`, "Scenarios:", ` * ✅ Passed: ${result.scenarios.passed}`, ` * ❌ Failed: ${result.scenarios.failed}`, ` * ⚠️ Skipped: ${result.scenarios.skipped}`, ` * ⁉️ Undefined: ${result.scenarios.undefined}` ]; if (config.reportUrl) { message.push(`📊 ${config.reportUrl.replace("{uuid}", result.id)}`); } const form = { message: message.join("\n"), imageThumbnail: `https://restqa.io/assets/img/utils/restqa-logo-${status.toLowerCase()}.png`, imageFullsize: `https://restqa.io/assets/img/utils/restqa-logo-${status.toLowerCase()}.png`, notificationDisabled: false }; const options = { hostname: url.hostname, port: url.port, protocol: url.protocol, pathname: url.pathname, method: "POST", form, headers: { authorization: `Bearer ${config.token}` } }; got(options) .then((res) => { resolve(`[LINE REPORT][${res.statusCode}] - Notification sent!`); }) .catch((err) => { reject(new Errors.HTTP("LINE REPORT", err)); }); } catch (e) { reject(new Errors.DEFAULT("LINE REPORT", e)); } }); };