UNPKG

cucumber-html-report-generator

Version:

Generate beautiful cucumberjs html reports for multiple instances (browsers / devices)

44 lines (40 loc) 2.14 kB
import type * as Models from '../models/models'; import { CollectFeatureFiles } from '../feature-collector/feature-collector'; import { CollectJsons } from '../collect-jsons/collect-jsons'; import { GenerateHtml } from './helpers/generate-html'; import { SuiteFactory } from './ReportObjectsFormatters/suite-formatter'; import axios from 'axios'; import { userPropertiesValidation } from '../helpers/application-properties-validation'; export const generateHtmlReport = async ( reportConfiguration: Models.ReportDisplay | undefined, jsonReport: Models.ExtendedReport ): Promise<void> =>{ const reportConfigurationInitialized = userPropertiesValidation.initializeReportDisplayParameters( reportConfiguration ); await new GenerateHtml( jsonReport, reportConfigurationInitialized ).createHtmlPages(); }; export const insertReportIntoDatabase = async ( jsonReport: Models.ExtendedReport, userProperties: Models.ReportGeneration ): Promise<string | null> =>{ return ( await axios.request<Models.Response>( { transitional:{ silentJSONParsing: false }, responseType: 'json', method: 'POST', url: `${userProperties.mongooseServerUrl!}/insertReport`, data: jsonReport, maxRedirects: 0, maxBodyLength: Infinity, maxContentLength: Infinity, headers:{ 'content-type': 'application/json' } } ) ).data.reportId; }; export const generate = async ( userProperties: Models.ReportGeneration | null ): Promise<string | null> =>{ const checkedUserProperties = userPropertiesValidation.checkReportGenerationParameters( userProperties ); const features = await new CollectFeatureFiles( checkedUserProperties ).collectFeatures(); const jsonFiles = await new CollectJsons( checkedUserProperties ).createJoinedJson(); const jsonReport = await new SuiteFactory( checkedUserProperties ).parseJsons( jsonFiles, features ); let reportId: string | null = null; if ( checkedUserProperties.saveReportInMongoDb ) { reportId = await insertReportIntoDatabase( jsonReport, checkedUserProperties ); } await generateHtmlReport( checkedUserProperties, jsonReport ); return reportId; };