UNPKG

testbeats

Version:

Publish test results to Microsoft Teams, Google Chat, Slack and InfluxDB

47 lines (40 loc) 1.35 kB
const path = require('path'); const { BaseExtension } = require("./base.extension"); const { STATUS, HOOK } = require("../helpers/constants"); class CustomExtension extends BaseExtension { /** * @param {import('..').CustomExtension} extension */ constructor(target, extension, result, payload, root_payload) { super(target, extension, result, payload, root_payload); this.extension = extension; this.#setDefaultOptions(); this.updateExtensionInputs(); } #setDefaultOptions() { this.default_options.hook = HOOK.END, this.default_options.condition = STATUS.PASS_OR_FAIL; } async run() { const params = this.#getParams(); if (typeof this.extension.inputs.load === 'string') { const cwd = process.cwd(); const extension_runner = require(path.join(cwd, this.extension.inputs.load)); await extension_runner.run(params); } else if (typeof this.extension.inputs.load === 'function') { await this.extension.inputs.load(params); } else { throw `Invalid 'load' input in custom extension - ${this.extension.inputs.load}`; } } #getParams() { return { target: this.target, extension: this.extension, payload: this.payload, root_payload: this.root_payload, result: this.result } } } module.exports = { CustomExtension }