UNPKG

@testlio/cli

Version:

Official Testlio platform command-line interface

95 lines (71 loc) 2.64 kB
#! /usr/bin/env node const axios = require('axios'); const Joi = require('joi'); const fs = require('fs'); const FAILURE = 1; const SUCCESS = 0; const printHelp = () => { console.log(`Retrieve results Usage: testlio get-results Options: --projectConfig [path] path to project config (default: project-config.json) `); }; const setAuthorizationToken = (token) => { axios.defaults.headers.common.Authorization = `Bearer ${token}`; }; const setBaseUri = (baseURI) => { axios.defaults.baseURL = baseURI; }; const projectConfigSchema = Joi.object({ baseURI: Joi.string().required(), resultCollectionGuid: Joi.string().required() }); const parseRunResultsSchema = Joi.object({ projectConfig: Joi.string().default('project-config.json') }); const getResults = async (resultCollectionGuid, resultId) => { const { data, status } = await axios.get(`/result/v1/collections/${resultCollectionGuid}/results/${resultId}`); if (status !== 200) throw new Error(`Failed to retrieve result with id ${resultId}`); return data; }; module.exports = async (params) => { if (params.h || params.help) { printHelp(); return SUCCESS; } const { projectConfig: projectConfigFilePath } = Joi.attempt(params, parseRunResultsSchema); if (!fs.existsSync(projectConfigFilePath)) { console.log(`File "${projectConfigFilePath}" not found!`); return FAILURE; } try { const projectConfig = JSON.parse(fs.readFileSync(projectConfigFilePath).toString()); const { baseURI, resultCollectionGuid } = Joi.attempt(projectConfig, projectConfigSchema.unknown()); if (!process.env.RUN_API_TOKEN) { console.log('Please provide RUN API TOKEN'); return FAILURE; } if (!process.env.RESULT_ID) { console.log('For retrieving results, RESULT_ID must be provided'); return FAILURE; } setBaseUri(baseURI); setAuthorizationToken(process.env.RUN_API_TOKEN); const result = await getResults(resultCollectionGuid, process.env.RESULT_ID); if (result?.status === 'in_progress') { console.log(`Results are still in progress. Please, try again later`); return SUCCESS; } if (result?.status === 'finished') { console.log(JSON.stringify(result, null, 2)); return SUCCESS; } console.log(`Unknown result status: ${result?.status}`); return FAILURE; } catch (e) { console.log('Something went wrong while retrieving results', e); return FAILURE; } };