UNPKG

@johnf/react-native-owl

Version:
63 lines (62 loc) 2.71 kB
"use strict"; import path from 'path'; import handlebars from 'handlebars'; import { promises as fs } from 'fs'; import { fileExists } from "./utils/file-exists.js"; export const cleanupReport = async () => { const cwd = process.cwd(); const reportDirPath = path.join(cwd, '.owl', 'report'); await fs.rm(reportDirPath, { recursive: true, force: true }); }; export const generateReport = async (logger, platform) => { const cwd = process.cwd(); const reportDirPath = path.join(cwd, '.owl', 'report'); const jestOutputFilepath = path.join(reportDirPath, 'jest-report.json'); const jestOutputText = await fs.readFile(jestOutputFilepath, 'utf8'); const jestOutput = JSON.parse(jestOutputText); const diffScreenshotsDirPath = path.join(cwd, '.owl', 'diff', platform); const baselineScreenshotsDirPath = path.join(cwd, '.owl', 'baseline', platform); const baselineScreenshotsDirExists = await fileExists(baselineScreenshotsDirPath); if (!baselineScreenshotsDirExists) { logger.print(`[OWL - CLI] Generating report skipped as is no baseline screenshots directory`); return; } const baselineScreenshots = await fs.readdir(baselineScreenshotsDirPath); const failingScreenshots = (await fileExists(diffScreenshotsDirPath)) ? await fs.readdir(diffScreenshotsDirPath) : []; const passingScreenshots = baselineScreenshots.filter(screenshot => !failingScreenshots.includes(screenshot)); const duration = (Date.now() - jestOutput.startTime) / 1000; const durationFormatted = parseFloat(`${duration}`).toFixed(2); const stats = { totalTestSuites: jestOutput.numTotalTestSuites, totalTests: jestOutput.numTotalTests, failedTestSuites: jestOutput.numFailedTestSuites, failedTests: jestOutput.numFailedTests, passedTestSuites: jestOutput.numPassedTestSuites, passedTests: jestOutput.numPassedTests, duration: durationFormatted, success: jestOutput.success }; logger.info(`[OWL - CLI] Generating Report`); const reportFilename = 'index.html'; const entryFile = path.join(__dirname, 'report', reportFilename); const htmlTemplate = await fs.readFile(entryFile, 'utf-8'); const templateScript = handlebars.compile(htmlTemplate); const htmlContent = templateScript({ currentYear: new Date().getFullYear(), currentDateTime: new Date().toUTCString(), platform, failingScreenshots, passingScreenshots, stats }); await fs.mkdir(reportDirPath, { recursive: true }); const reportFilePath = path.join(reportDirPath, 'index.html'); await fs.writeFile(reportFilePath, htmlContent); logger.print(`[OWL - CLI] Report was built at ${reportDirPath}/${reportFilename}`); }; //# sourceMappingURL=report.js.map