From 39386f62b67d2d1b0ebc7799d4f691a6d97723ff Mon Sep 17 00:00:00 2001 From: Hugo van Rijswijk Date: Thu, 21 Dec 2023 14:25:29 +0100 Subject: [PATCH 1/4] fix: preserve whitespace when rendering mutant description and statusReason --- .../drawer-mutant/drawer-mutant.component.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/elements/src/components/drawer-mutant/drawer-mutant.component.ts b/packages/elements/src/components/drawer-mutant/drawer-mutant.component.ts index ccf3e8bbb..50899dd14 100644 --- a/packages/elements/src/components/drawer-mutant/drawer-mutant.component.ts +++ b/packages/elements/src/components/drawer-mutant/drawer-mutant.component.ts @@ -1,3 +1,4 @@ +import type { TemplateResult } from 'lit'; import { html, nothing } from 'lit'; import { customElement, property } from 'lit/decorators.js'; import type { MutantModel, TestModel } from 'mutation-testing-metrics'; @@ -10,6 +11,11 @@ import { renderDetailLine, renderEmoji, renderSummaryContainer, renderSummaryLin const describeTest = (test: TestModel) => `${test.name}${test.sourceFile && test.location ? ` (${describeLocation(test)})` : ''}`; +/** + * Wrap so that the whitespace is preserved when rendered + */ +const whitespacePreserving = (content: string | TemplateResult) => html`${content}`; + @customElement('mte-drawer-mutant') export class MutationTestReportDrawerMutant extends RealTimeElement { @property() @@ -60,9 +66,14 @@ export class MutationTestReportDrawerMutant extends RealTimeElement { )} ${renderIf( this.mutant?.statusReason?.trim(), - renderSummaryLine(html`${renderEmoji('🕵️', 'spy')} ${this.mutant!.statusReason!}`, `Reason for the ${this.mutant!.status} status`), + renderSummaryLine( + html`${renderEmoji('🕵️', 'spy')} ${whitespacePreserving(this.mutant!.statusReason!)}`, + `Reason for the ${this.mutant!.status} status`, + ), )} - ${renderIfPresent(this.mutant?.description, (description) => renderSummaryLine(html`${renderEmoji('📖', 'book')} ${description}`))}`, + ${renderIfPresent(this.mutant?.description, (description) => + renderSummaryLine(html`${renderEmoji('📖', 'book')} ${whitespacePreserving(description)}`), + )}`, ); } From 353f370c71f01e0878d7692aaa21764c41adabe5 Mon Sep 17 00:00:00 2001 From: Hugo van Rijswijk Date: Thu, 21 Dec 2023 14:57:30 +0100 Subject: [PATCH 2/4] add multi-line to example report --- .../testResources/test-files-example/mutation-report.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/elements/testResources/test-files-example/mutation-report.json b/packages/elements/testResources/test-files-example/mutation-report.json index a3df5d777..596120e7e 100644 --- a/packages/elements/testResources/test-files-example/mutation-report.json +++ b/packages/elements/testResources/test-files-example/mutation-report.json @@ -1000,6 +1000,8 @@ "mutatorName": "ConditionalExpression", "replacement": "false", "status": "Survived", + "statusReason": "First line\nSecond line", + "description": "Also first line\nAlso second line", "testsCompleted": 2, "static": false, "coveredBy": ["2", "3"] From a62a9e0a3a8dad065fe7ece6c9029369be0576fb Mon Sep 17 00:00:00 2001 From: Stryker Mutator NPA Date: Thu, 21 Dec 2023 14:01:05 +0000 Subject: [PATCH 3/4] test(screenshots): update screenshots for Linux --- ...ould-look-as-expected-1-chromium-linux.png | Bin 121560 -> 122650 bytes ...hould-look-as-expected-1-firefox-linux.png | Bin 87924 -> 88923 bytes ...expected-in-dark-mode-1-chromium-linux.png | Bin 122714 -> 123811 bytes ...-expected-in-dark-mode-1-firefox-linux.png | Bin 90675 -> 91632 bytes ...expected-in-dark-mode-1-chromium-linux.png | Bin 114393 -> 133719 bytes ...-expected-in-dark-mode-1-firefox-linux.png | Bin 97170 -> 111662 bytes ...ould-look-as-expected-1-chromium-linux.png | Bin 115635 -> 135995 bytes ...hould-look-as-expected-1-firefox-linux.png | Bin 96806 -> 110420 bytes 8 files changed, 0 insertions(+), 0 deletions(-) diff --git a/packages/elements/test/integration/drawer.it.spec.ts-snapshots/Drawer-mutant-view-when-a-mutant-is-opened-should-look-as-expected-1-chromium-linux.png b/packages/elements/test/integration/drawer.it.spec.ts-snapshots/Drawer-mutant-view-when-a-mutant-is-opened-should-look-as-expected-1-chromium-linux.png index 0b1798759dfa1cdecfca4ca6855ad02287e5f9ce..18ec12356c2b1c9827bfa5f2e0175adc96770d89 100644 GIT binary patch delta 7718 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 delta 6619 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