From 9b05c0b154e6f6d1cf0ec464ff33e585716c4129 Mon Sep 17 00:00:00 2001 From: Maciej Tutak Date: Wed, 1 Jun 2022 16:27:26 +0200 Subject: [PATCH 1/3] Truncate coverage report details if exceeds Github size limit --- src/constants/GITHUB_MESSAGE_SIZE_LIMIT.ts | 1 + src/format/details/formatCoverageDetails.ts | 10 ++-- .../details/formatCoverageDetailsPart.ts | 33 +++++++++---- .../details/getCoverageDetailsTruncatedRow.ts | 14 ++++++ src/format/formatCoverage.ts | 6 ++- src/format/getFormattedCoverage.ts | 10 +++- src/format/strings.json | 2 + src/stages/createReport.ts | 38 ++++++++++++-- .../GITHUB_MESSAGE_SIZE_LIMIT.test.ts | 7 +++ .../formatCoverageDetails.test.ts.snap | 24 +++++++++ .../details/formatCoverageDetails.test.ts | 49 ++++++++++++++++++- .../getCoverageDetailsTruncatedRow.test.ts | 14 ++++++ tests/format/formatCoverage.test.ts | 12 +++-- tests/format/getFormattedCoverage.test.ts | 3 +- 14 files changed, 196 insertions(+), 27 deletions(-) create mode 100644 src/constants/GITHUB_MESSAGE_SIZE_LIMIT.ts create mode 100644 src/format/details/getCoverageDetailsTruncatedRow.ts create mode 100644 tests/constants/GITHUB_MESSAGE_SIZE_LIMIT.test.ts create mode 100644 tests/format/details/getCoverageDetailsTruncatedRow.test.ts diff --git a/src/constants/GITHUB_MESSAGE_SIZE_LIMIT.ts b/src/constants/GITHUB_MESSAGE_SIZE_LIMIT.ts new file mode 100644 index 00000000..6a33a60d --- /dev/null +++ b/src/constants/GITHUB_MESSAGE_SIZE_LIMIT.ts @@ -0,0 +1 @@ +export const GITHUB_MESSAGE_SIZE_LIMIT = 65535; diff --git a/src/format/details/formatCoverageDetails.ts b/src/format/details/formatCoverageDetails.ts index a052ee63..a6c7c897 100644 --- a/src/format/details/formatCoverageDetails.ts +++ b/src/format/details/formatCoverageDetails.ts @@ -7,7 +7,8 @@ import { i18n } from '../../utils/i18n'; export const formatCoverageDetails = ( headDetails: CoverageDetailsMap, baseDetails: CoverageDetailsMap | undefined, - threshold: number | undefined + threshold: number | undefined, + truncateDetails: boolean | undefined ): string => { const decreasedCoverage = getDecreasedCoverage(headDetails, baseDetails); @@ -16,13 +17,16 @@ export const formatCoverageDetails = ( i18n('newFilesCoverage'), getNewFilesCoverage(headDetails, baseDetails), undefined, - threshold + threshold, + truncateDetails ), formatCoverageDetailsPart( i18n('decreasedCoverageFiles'), decreasedCoverage.headDetails, decreasedCoverage.baseDetails, - threshold + threshold, + truncateDetails ), + ...(truncateDetails ? [`> ${i18n('detailsTruncated')}`] : []), ].join('\n'); }; diff --git a/src/format/details/formatCoverageDetailsPart.ts b/src/format/details/formatCoverageDetailsPart.ts index 752365e0..c470df2b 100644 --- a/src/format/details/formatCoverageDetailsPart.ts +++ b/src/format/details/formatCoverageDetailsPart.ts @@ -1,25 +1,33 @@ import markdownTable from 'markdown-table'; +import { getCoverageDetailsTruncatedRow } from './getCoverageDetailsTruncatedRow'; import { getFileCoverageDetailRow } from './getFileCoverageDetailRow'; import { CoverageDetailsMap } from '../../typings/Coverage'; import { createMarkdownSpoiler } from '../../utils/createMarkdownSpoiler'; import { i18n } from '../../utils/i18n'; import { withExplanation } from '../../utils/withExplanation'; +const MAX_ROWS = 50; + export const formatCoverageDetailsPart = ( summary: string, headDetails: CoverageDetailsMap, baseDetails?: CoverageDetailsMap, - threshold?: number + threshold?: number, + truncateDetails?: boolean ): string | undefined => { - const tableContent = Object.keys(headDetails).map((filename) => - getFileCoverageDetailRow( - filename, - headDetails[filename], - baseDetails?.[filename], - threshold - ) - ); + const maxRows = truncateDetails ? MAX_ROWS - 1 : undefined; + const headDetailsKeys = Object.keys(headDetails); + const tableContent = headDetailsKeys + .slice(0, maxRows) + .map((filename) => + getFileCoverageDetailRow( + filename, + headDetails[filename], + baseDetails?.[filename], + threshold + ) + ); if (tableContent.length > 0) { return createMarkdownSpoiler({ @@ -37,6 +45,13 @@ export const formatCoverageDetailsPart = ( i18n('lines'), ], ...tableContent, + ...(truncateDetails && headDetailsKeys.length > MAX_ROWS + ? [ + getCoverageDetailsTruncatedRow( + headDetailsKeys.length - MAX_ROWS + ), + ] + : []), ], { align: ['c', 'l', 'l', 'l', 'l', 'l'], diff --git a/src/format/details/getCoverageDetailsTruncatedRow.ts b/src/format/details/getCoverageDetailsTruncatedRow.ts new file mode 100644 index 00000000..ff59115c --- /dev/null +++ b/src/format/details/getCoverageDetailsTruncatedRow.ts @@ -0,0 +1,14 @@ +import { i18n } from '../../utils/i18n'; + +export const getCoverageDetailsTruncatedRow = ( + rowCount: number +): Array => { + return [ + '', + i18n('detailsTruncatedRows', { truncatedRows: rowCount }), + '', + '', + '', + '', + ]; +}; diff --git a/src/format/formatCoverage.ts b/src/format/formatCoverage.ts index 828aab1a..89c748fb 100644 --- a/src/format/formatCoverage.ts +++ b/src/format/formatCoverage.ts @@ -6,7 +6,8 @@ import { JsonReport } from '../typings/JsonReport'; export const formatCoverage = ( headReport: JsonReport | undefined, baseReport: JsonReport | undefined, - threshold: number | undefined + threshold: number | undefined, + truncateDetails: boolean | undefined ): string => { if (headReport) { return getFormattedCoverage( @@ -14,7 +15,8 @@ export const formatCoverage = ( baseReport ? parseSummary(baseReport) : undefined, parseDetails(headReport), baseReport ? parseDetails(baseReport) : undefined, - threshold + threshold, + truncateDetails ); } diff --git a/src/format/getFormattedCoverage.ts b/src/format/getFormattedCoverage.ts index b3d68ebe..ee5b1ac2 100644 --- a/src/format/getFormattedCoverage.ts +++ b/src/format/getFormattedCoverage.ts @@ -7,11 +7,17 @@ export const getFormattedCoverage = ( baseSummary: Array | undefined, headDetails: CoverageDetailsMap, baseDetails: CoverageDetailsMap | undefined, - threshold: number | undefined + threshold: number | undefined, + truncateDetails: boolean | undefined ): string => [ formatCoverageSummary(headSummary, baseSummary, threshold), - formatCoverageDetails(headDetails, baseDetails, threshold), + formatCoverageDetails( + headDetails, + baseDetails, + threshold, + truncateDetails + ), ] .filter(Boolean) .join('\n'); diff --git a/src/format/strings.json b/src/format/strings.json index 42bf58af..34fbd5d7 100644 --- a/src/format/strings.json +++ b/src/format/strings.json @@ -104,6 +104,8 @@ "readingCoverageFileFailed": "Failed reading coverage file. (Error: {{ error }})", "failedGettingCoverage": "Getting code coverage data failed." }, + "detailsTruncated": ":warning: Details were truncated: the report size has exceeded the limit." , + "detailsTruncatedRows": "and {{ truncatedRows }} more...", "summaryTitle": "Coverage report {{ dir }}", "newFilesCoverage": "Show new covered files :hatching_chick:", "decreasedCoverageFiles": "Show files with reduced coverage :small_red_triangle_down:", diff --git a/src/stages/createReport.ts b/src/stages/createReport.ts index 46fee41c..a97e84f4 100644 --- a/src/stages/createReport.ts +++ b/src/stages/createReport.ts @@ -1,6 +1,7 @@ import { context } from '@actions/github'; import { getReportTag } from '../constants/getReportTag'; +import { GITHUB_MESSAGE_SIZE_LIMIT } from '../constants/GITHUB_MESSAGE_SIZE_LIMIT'; import { formatCoverage } from '../format/formatCoverage'; import { formatErrors } from '../format/formatErrors'; import { formatRunReport } from '../format/formatRunReport'; @@ -33,19 +34,42 @@ export const createReport = ( const formattedErrors = formatErrors(errors); const formattedThresholdResults = formatThresholdResults(thresholdResults); - const coverage = formatCoverage(headReport, baseReport, undefined); + const coverage = formatCoverage(headReport, baseReport, undefined, false); const runReport: TestRunReport = { title: i18n(headReport.success ? 'testsSuccess' : 'testsFail'), summary: getTestRunSummary(headReport), failures: getFailureDetails(headReport), }; const formattedReport = formatRunReport(runReport); - return { - text: insertArgs(template, { + + let templateText = insertArgs(template, { + body: [ + formattedErrors, + formattedThresholdResults, + coverage, + formattedReport, + ].join('\n'), + dir: workingDirectory || '', + tag: getReportTag(options), + title: insertArgs(customTitle || i18n('summaryTitle'), { + dir: workingDirectory ? `for \`${workingDirectory}\`` : '', + }), + sha: getSha(), + }); + + if (templateText.length > GITHUB_MESSAGE_SIZE_LIMIT) { + const reducedCoverage = formatCoverage( + headReport, + baseReport, + undefined, + true + ); + + templateText = insertArgs(template, { body: [ formattedErrors, formattedThresholdResults, - coverage, + reducedCoverage, formattedReport, ].join('\n'), dir: workingDirectory || '', @@ -54,7 +78,11 @@ export const createReport = ( dir: workingDirectory ? `for \`${workingDirectory}\`` : '', }), sha: getSha(), - }), + }); + } + + return { + text: templateText, runReport, }; }; diff --git a/tests/constants/GITHUB_MESSAGE_SIZE_LIMIT.test.ts b/tests/constants/GITHUB_MESSAGE_SIZE_LIMIT.test.ts new file mode 100644 index 00000000..6ec7ea8e --- /dev/null +++ b/tests/constants/GITHUB_MESSAGE_SIZE_LIMIT.test.ts @@ -0,0 +1,7 @@ +import { GITHUB_MESSAGE_SIZE_LIMIT } from '../../src/constants/GITHUB_MESSAGE_SIZE_LIMIT'; + +describe('GITHUB_MESSAGE_SIZE_LIMIT', () => { + it('should be 65535', () => { + expect(GITHUB_MESSAGE_SIZE_LIMIT).toBe(65535); + }); +}); diff --git a/tests/format/details/__snapshots__/formatCoverageDetails.test.ts.snap b/tests/format/details/__snapshots__/formatCoverageDetails.test.ts.snap index c1e10707..ccfaf000 100644 --- a/tests/format/details/__snapshots__/formatCoverageDetails.test.ts.snap +++ b/tests/format/details/__snapshots__/formatCoverageDetails.test.ts.snap @@ -22,3 +22,27 @@ exports[`formatCoverageDetails should match snapshots 1`] = ` " `; + +exports[`formatCoverageDetails should match snapshots 2`] = ` +" +
Show new covered files 🐣 +
+ +|
St.:grey_question:
| File | Statements | Branches | Functions | Lines | +| :----------------------------------------------------------------------------------------------------------------------------------------------------: | :--------- | :--------- | :------- | :-------- | :---- | +| 🔴 | newFile.ts | 50% | 50% | 50% | 50% | + +
+ + +
Show files with reduced coverage 🔻 +
+ +|
St.:grey_question:
| File | Statements | Branches | Functions | Lines | +| :----------------------------------------------------------------------------------------------------------------------------------------------------: | :----------- | :----------------------------------------------------- | :----------------------------------------------------- | :----------------------------------------------------- | :----------------------------------------------------- | +| 🟡 | decreased.ts |
70% (-10% 🔻)
|
50% (-10% 🔻)
|
50% (-10% 🔻)
|
80% (-10% 🔻)
| + +
+ +> :warning: Details were truncated: the report size has exceeded the limit." +`; diff --git a/tests/format/details/formatCoverageDetails.test.ts b/tests/format/details/formatCoverageDetails.test.ts index e0b8a206..444b2587 100644 --- a/tests/format/details/formatCoverageDetails.test.ts +++ b/tests/format/details/formatCoverageDetails.test.ts @@ -43,7 +43,54 @@ describe('formatCoverageDetails', () => { filename: 'decreased.ts', }, }, - 70 + 70, + false + ) + ).toMatchSnapshot(); + + expect( + formatCoverageDetails( + { + 'increased.ts': { + lines: 80, + statements: 70, + branches: 50, + functions: 50, + filename: 'increased.ts', + }, + 'decreased.ts': { + lines: 80, + statements: 70, + branches: 50, + functions: 50, + filename: 'decreased.ts', + }, + 'newFile.ts': { + lines: 50, + statements: 50, + branches: 50, + functions: 50, + filename: 'newFile.ts', + }, + }, + { + 'increased.ts': { + lines: 50, + statements: 50, + branches: 30, + functions: 30, + filename: 'increased.ts', + }, + 'decreased.ts': { + lines: 90, + statements: 80, + branches: 60, + functions: 60, + filename: 'decreased.ts', + }, + }, + 70, + true ) ).toMatchSnapshot(); }); diff --git a/tests/format/details/getCoverageDetailsTruncatedRow.test.ts b/tests/format/details/getCoverageDetailsTruncatedRow.test.ts new file mode 100644 index 00000000..d6d1d2d5 --- /dev/null +++ b/tests/format/details/getCoverageDetailsTruncatedRow.test.ts @@ -0,0 +1,14 @@ +import { getCoverageDetailsTruncatedRow } from '../../../src/format/details/getCoverageDetailsTruncatedRow'; + +describe('getCoverageDetailsTruncatedRow', () => { + it('', () => { + expect(getCoverageDetailsTruncatedRow(10)).toStrictEqual([ + '', + 'and 10 more...', + '', + '', + '', + '', + ]); + }); +}); diff --git a/tests/format/formatCoverage.test.ts b/tests/format/formatCoverage.test.ts index f1672528..b130fbbc 100644 --- a/tests/format/formatCoverage.test.ts +++ b/tests/format/formatCoverage.test.ts @@ -3,14 +3,18 @@ import jsonReport from '../mock-data/jsonReport.json'; describe('formatCoverage', () => { it('should format standard coverage', () => { - expect(formatCoverage(jsonReport, jsonReport, 0.3)).toMatchSnapshot(); - expect(formatCoverage(jsonReport, undefined, 0.3)).toMatchSnapshot(); expect( - formatCoverage(jsonReport, undefined, undefined) + formatCoverage(jsonReport, jsonReport, 0.3, false) + ).toMatchSnapshot(); + expect( + formatCoverage(jsonReport, undefined, 0.3, false) + ).toMatchSnapshot(); + expect( + formatCoverage(jsonReport, undefined, undefined, false) ).toMatchSnapshot(); }); it('should return empty string if no reports specified', () => { - expect(formatCoverage(undefined, undefined, 0.3)).toBe(''); + expect(formatCoverage(undefined, undefined, 0.3, false)).toBe(''); }); }); diff --git a/tests/format/getFormattedCoverage.test.ts b/tests/format/getFormattedCoverage.test.ts index 6f3d02cc..4f4f70c6 100644 --- a/tests/format/getFormattedCoverage.test.ts +++ b/tests/format/getFormattedCoverage.test.ts @@ -11,7 +11,8 @@ describe('getFormattedCoverage', () => { undefined, parseDetails(jsonReport), undefined, - undefined + undefined, + false ) ).toMatchSnapshot(); }); From 97842114a74870c4c6954dbf5f890ec8d8383b52 Mon Sep 17 00:00:00 2001 From: Maciej Tutak Date: Thu, 2 Jun 2022 10:26:57 +0200 Subject: [PATCH 2/3] Hide details if report size exceeds limit --- src/format/details/formatCoverageDetails.ts | 10 ++-- .../details/formatCoverageDetailsPart.ts | 33 ++++--------- .../details/getCoverageDetailsTruncatedRow.ts | 14 ------ src/format/formatCoverage.ts | 4 +- src/format/getFormattedCoverage.ts | 12 ++--- src/format/strings.json | 3 +- .../__snapshots__/formatCoverage.test.ts.snap | 10 ++++ .../formatCoverageDetails.test.ts.snap | 24 --------- .../getFileCoverageDetailRow.test.ts.snap | 34 ------------- .../details/formatCoverageDetails.test.ts | 49 +------------------ .../getCoverageDetailsTruncatedRow.test.ts | 14 ------ tests/format/formatCoverage.test.ts | 6 +++ 12 files changed, 37 insertions(+), 176 deletions(-) delete mode 100644 src/format/details/getCoverageDetailsTruncatedRow.ts delete mode 100644 tests/format/details/__snapshots__/getFileCoverageDetailRow.test.ts.snap delete mode 100644 tests/format/details/getCoverageDetailsTruncatedRow.test.ts diff --git a/src/format/details/formatCoverageDetails.ts b/src/format/details/formatCoverageDetails.ts index a6c7c897..a052ee63 100644 --- a/src/format/details/formatCoverageDetails.ts +++ b/src/format/details/formatCoverageDetails.ts @@ -7,8 +7,7 @@ import { i18n } from '../../utils/i18n'; export const formatCoverageDetails = ( headDetails: CoverageDetailsMap, baseDetails: CoverageDetailsMap | undefined, - threshold: number | undefined, - truncateDetails: boolean | undefined + threshold: number | undefined ): string => { const decreasedCoverage = getDecreasedCoverage(headDetails, baseDetails); @@ -17,16 +16,13 @@ export const formatCoverageDetails = ( i18n('newFilesCoverage'), getNewFilesCoverage(headDetails, baseDetails), undefined, - threshold, - truncateDetails + threshold ), formatCoverageDetailsPart( i18n('decreasedCoverageFiles'), decreasedCoverage.headDetails, decreasedCoverage.baseDetails, - threshold, - truncateDetails + threshold ), - ...(truncateDetails ? [`> ${i18n('detailsTruncated')}`] : []), ].join('\n'); }; diff --git a/src/format/details/formatCoverageDetailsPart.ts b/src/format/details/formatCoverageDetailsPart.ts index c470df2b..752365e0 100644 --- a/src/format/details/formatCoverageDetailsPart.ts +++ b/src/format/details/formatCoverageDetailsPart.ts @@ -1,33 +1,25 @@ import markdownTable from 'markdown-table'; -import { getCoverageDetailsTruncatedRow } from './getCoverageDetailsTruncatedRow'; import { getFileCoverageDetailRow } from './getFileCoverageDetailRow'; import { CoverageDetailsMap } from '../../typings/Coverage'; import { createMarkdownSpoiler } from '../../utils/createMarkdownSpoiler'; import { i18n } from '../../utils/i18n'; import { withExplanation } from '../../utils/withExplanation'; -const MAX_ROWS = 50; - export const formatCoverageDetailsPart = ( summary: string, headDetails: CoverageDetailsMap, baseDetails?: CoverageDetailsMap, - threshold?: number, - truncateDetails?: boolean + threshold?: number ): string | undefined => { - const maxRows = truncateDetails ? MAX_ROWS - 1 : undefined; - const headDetailsKeys = Object.keys(headDetails); - const tableContent = headDetailsKeys - .slice(0, maxRows) - .map((filename) => - getFileCoverageDetailRow( - filename, - headDetails[filename], - baseDetails?.[filename], - threshold - ) - ); + const tableContent = Object.keys(headDetails).map((filename) => + getFileCoverageDetailRow( + filename, + headDetails[filename], + baseDetails?.[filename], + threshold + ) + ); if (tableContent.length > 0) { return createMarkdownSpoiler({ @@ -45,13 +37,6 @@ export const formatCoverageDetailsPart = ( i18n('lines'), ], ...tableContent, - ...(truncateDetails && headDetailsKeys.length > MAX_ROWS - ? [ - getCoverageDetailsTruncatedRow( - headDetailsKeys.length - MAX_ROWS - ), - ] - : []), ], { align: ['c', 'l', 'l', 'l', 'l', 'l'], diff --git a/src/format/details/getCoverageDetailsTruncatedRow.ts b/src/format/details/getCoverageDetailsTruncatedRow.ts deleted file mode 100644 index ff59115c..00000000 --- a/src/format/details/getCoverageDetailsTruncatedRow.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { i18n } from '../../utils/i18n'; - -export const getCoverageDetailsTruncatedRow = ( - rowCount: number -): Array => { - return [ - '', - i18n('detailsTruncatedRows', { truncatedRows: rowCount }), - '', - '', - '', - '', - ]; -}; diff --git a/src/format/formatCoverage.ts b/src/format/formatCoverage.ts index 89c748fb..036552a9 100644 --- a/src/format/formatCoverage.ts +++ b/src/format/formatCoverage.ts @@ -7,7 +7,7 @@ export const formatCoverage = ( headReport: JsonReport | undefined, baseReport: JsonReport | undefined, threshold: number | undefined, - truncateDetails: boolean | undefined + hideDetails: boolean | undefined ): string => { if (headReport) { return getFormattedCoverage( @@ -16,7 +16,7 @@ export const formatCoverage = ( parseDetails(headReport), baseReport ? parseDetails(baseReport) : undefined, threshold, - truncateDetails + hideDetails ); } diff --git a/src/format/getFormattedCoverage.ts b/src/format/getFormattedCoverage.ts index ee5b1ac2..1cc740f5 100644 --- a/src/format/getFormattedCoverage.ts +++ b/src/format/getFormattedCoverage.ts @@ -1,6 +1,7 @@ import { formatCoverageDetails } from './details/formatCoverageDetails'; import { formatCoverageSummary } from './summary/formatCoverageSummary'; import { CoverageDetailsMap, CoverageSummary } from '../typings/Coverage'; +import { i18n } from '../utils/i18n'; export const getFormattedCoverage = ( headSummary: Array, @@ -8,16 +9,13 @@ export const getFormattedCoverage = ( headDetails: CoverageDetailsMap, baseDetails: CoverageDetailsMap | undefined, threshold: number | undefined, - truncateDetails: boolean | undefined + hideDetails: boolean | undefined ): string => [ formatCoverageSummary(headSummary, baseSummary, threshold), - formatCoverageDetails( - headDetails, - baseDetails, - threshold, - truncateDetails - ), + !hideDetails + ? formatCoverageDetails(headDetails, baseDetails, threshold) + : `> ${i18n('detailsHidden')}`, ] .filter(Boolean) .join('\n'); diff --git a/src/format/strings.json b/src/format/strings.json index 34fbd5d7..6f09ef3c 100644 --- a/src/format/strings.json +++ b/src/format/strings.json @@ -104,8 +104,7 @@ "readingCoverageFileFailed": "Failed reading coverage file. (Error: {{ error }})", "failedGettingCoverage": "Getting code coverage data failed." }, - "detailsTruncated": ":warning: Details were truncated: the report size has exceeded the limit." , - "detailsTruncatedRows": "and {{ truncatedRows }} more...", + "detailsHidden": ":warning: Details were not displayed: the report size has exceeded the limit." , "summaryTitle": "Coverage report {{ dir }}", "newFilesCoverage": "Show new covered files :hatching_chick:", "decreasedCoverageFiles": "Show files with reduced coverage :small_red_triangle_down:", diff --git a/tests/format/__snapshots__/formatCoverage.test.ts.snap b/tests/format/__snapshots__/formatCoverage.test.ts.snap index 8806ab86..71f51912 100644 --- a/tests/format/__snapshots__/formatCoverage.test.ts.snap +++ b/tests/format/__snapshots__/formatCoverage.test.ts.snap @@ -1,5 +1,15 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`formatCoverage should display warning if hiding details 1`] = ` +"|
St.:grey_question:
| Category | Percentage | Covered / Total | +| :----------------------------------------------------------------------------------------------------------------------------------------------------: | :--------- | :--------- | :-------------: | +| 🟢 | Statements | 81.82% | 27/33 | +| 🟢 | Branches | 100% | 8/8 | +| 🟢 | Functions | 63.64% | 7/11 | +| 🟢 | Lines | 80.65% | 25/31 | +> :warning: Details were not displayed: the report size has exceeded the limit." +`; + exports[`formatCoverage should format standard coverage 1`] = ` "|
St.:grey_question:
| Category | Percentage | Covered / Total | | :----------------------------------------------------------------------------------------------------------------------------------------------------: | :--------- | :--------- | :-------------: | diff --git a/tests/format/details/__snapshots__/formatCoverageDetails.test.ts.snap b/tests/format/details/__snapshots__/formatCoverageDetails.test.ts.snap index ccfaf000..c1e10707 100644 --- a/tests/format/details/__snapshots__/formatCoverageDetails.test.ts.snap +++ b/tests/format/details/__snapshots__/formatCoverageDetails.test.ts.snap @@ -22,27 +22,3 @@ exports[`formatCoverageDetails should match snapshots 1`] = ` " `; - -exports[`formatCoverageDetails should match snapshots 2`] = ` -" -
Show new covered files 🐣 -
- -|
St.:grey_question:
| File | Statements | Branches | Functions | Lines | -| :----------------------------------------------------------------------------------------------------------------------------------------------------: | :--------- | :--------- | :------- | :-------- | :---- | -| 🔴 | newFile.ts | 50% | 50% | 50% | 50% | - -
- - -
Show files with reduced coverage 🔻 -
- -|
St.:grey_question:
| File | Statements | Branches | Functions | Lines | -| :----------------------------------------------------------------------------------------------------------------------------------------------------: | :----------- | :----------------------------------------------------- | :----------------------------------------------------- | :----------------------------------------------------- | :----------------------------------------------------- | -| 🟡 | decreased.ts |
70% (-10% 🔻)
|
50% (-10% 🔻)
|
50% (-10% 🔻)
|
80% (-10% 🔻)
| - -
- -> :warning: Details were truncated: the report size has exceeded the limit." -`; diff --git a/tests/format/details/__snapshots__/getFileCoverageDetailRow.test.ts.snap b/tests/format/details/__snapshots__/getFileCoverageDetailRow.test.ts.snap deleted file mode 100644 index e2415e99..00000000 --- a/tests/format/details/__snapshots__/getFileCoverageDetailRow.test.ts.snap +++ /dev/null @@ -1,34 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`getFileCoverageDetailRow should return formatted detail row (decreased coverage) 1`] = ` -Array [ - "🔴", - "hello.ts", - "
50% (-10% 🔻)
", - "100%", - "
50% (-10% 🔻)
", - "
50% (-10% 🔻)
", -] -`; - -exports[`getFileCoverageDetailRow should return formatted detail row (increased coverage) 1`] = ` -Array [ - "🔴", - "hello.ts", - "
50% (+10% 🔼)
", - "100%", - "
50% (+10% 🔼)
", - "
50% (+10% 🔼)
", -] -`; - -exports[`getFileCoverageDetailRow should return formatted detail row (no base details) 1`] = ` -Array [ - "🔴", - "hello.ts", - "50%", - "100%", - "50%", - "50%", -] -`; diff --git a/tests/format/details/formatCoverageDetails.test.ts b/tests/format/details/formatCoverageDetails.test.ts index 444b2587..e0b8a206 100644 --- a/tests/format/details/formatCoverageDetails.test.ts +++ b/tests/format/details/formatCoverageDetails.test.ts @@ -43,54 +43,7 @@ describe('formatCoverageDetails', () => { filename: 'decreased.ts', }, }, - 70, - false - ) - ).toMatchSnapshot(); - - expect( - formatCoverageDetails( - { - 'increased.ts': { - lines: 80, - statements: 70, - branches: 50, - functions: 50, - filename: 'increased.ts', - }, - 'decreased.ts': { - lines: 80, - statements: 70, - branches: 50, - functions: 50, - filename: 'decreased.ts', - }, - 'newFile.ts': { - lines: 50, - statements: 50, - branches: 50, - functions: 50, - filename: 'newFile.ts', - }, - }, - { - 'increased.ts': { - lines: 50, - statements: 50, - branches: 30, - functions: 30, - filename: 'increased.ts', - }, - 'decreased.ts': { - lines: 90, - statements: 80, - branches: 60, - functions: 60, - filename: 'decreased.ts', - }, - }, - 70, - true + 70 ) ).toMatchSnapshot(); }); diff --git a/tests/format/details/getCoverageDetailsTruncatedRow.test.ts b/tests/format/details/getCoverageDetailsTruncatedRow.test.ts deleted file mode 100644 index d6d1d2d5..00000000 --- a/tests/format/details/getCoverageDetailsTruncatedRow.test.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { getCoverageDetailsTruncatedRow } from '../../../src/format/details/getCoverageDetailsTruncatedRow'; - -describe('getCoverageDetailsTruncatedRow', () => { - it('', () => { - expect(getCoverageDetailsTruncatedRow(10)).toStrictEqual([ - '', - 'and 10 more...', - '', - '', - '', - '', - ]); - }); -}); diff --git a/tests/format/formatCoverage.test.ts b/tests/format/formatCoverage.test.ts index b130fbbc..0e88465e 100644 --- a/tests/format/formatCoverage.test.ts +++ b/tests/format/formatCoverage.test.ts @@ -14,6 +14,12 @@ describe('formatCoverage', () => { ).toMatchSnapshot(); }); + it('should display warning if hiding details', () => { + expect( + formatCoverage(jsonReport, jsonReport, 0.3, true) + ).toMatchSnapshot(); + }); + it('should return empty string if no reports specified', () => { expect(formatCoverage(undefined, undefined, 0.3, false)).toBe(''); }); From deb0516f0a159df166d831cc7405b0c45a68d9a6 Mon Sep 17 00:00:00 2001 From: Maciej Tutak Date: Thu, 2 Jun 2022 11:47:12 +0200 Subject: [PATCH 3/3] Add missing test snapshot --- .../getFileCoverageDetailRow.test.ts.snap | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 tests/format/details/__snapshots__/getFileCoverageDetailRow.test.ts.snap diff --git a/tests/format/details/__snapshots__/getFileCoverageDetailRow.test.ts.snap b/tests/format/details/__snapshots__/getFileCoverageDetailRow.test.ts.snap new file mode 100644 index 00000000..e2415e99 --- /dev/null +++ b/tests/format/details/__snapshots__/getFileCoverageDetailRow.test.ts.snap @@ -0,0 +1,34 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`getFileCoverageDetailRow should return formatted detail row (decreased coverage) 1`] = ` +Array [ + "🔴", + "hello.ts", + "
50% (-10% 🔻)
", + "100%", + "
50% (-10% 🔻)
", + "
50% (-10% 🔻)
", +] +`; + +exports[`getFileCoverageDetailRow should return formatted detail row (increased coverage) 1`] = ` +Array [ + "🔴", + "hello.ts", + "
50% (+10% 🔼)
", + "100%", + "
50% (+10% 🔼)
", + "
50% (+10% 🔼)
", +] +`; + +exports[`getFileCoverageDetailRow should return formatted detail row (no base details) 1`] = ` +Array [ + "🔴", + "hello.ts", + "50%", + "100%", + "50%", + "50%", +] +`;