Skip to content

Commit 316327c

Browse files
Merge pull request #534 from gemini-testing/HERMIONE-1403.html_reporter_diff
feat: display differentPixels, if available
2 parents f7a60d5 + aeb47d5 commit 316327c

File tree

7 files changed

+46
-37
lines changed

7 files changed

+46
-37
lines changed

lib/errors/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ export interface ImageDiffError {
2222
diffClusters: CoordBounds[];
2323
diffBuffer?: ArrayBuffer;
2424
diffImg?: ImageFile;
25+
differentPixels?: number; // defined if hermione >= 8.2.0
26+
diffRatio?: number; // defined if hermione >= 8.2.0
2527
}
2628

2729
export interface NoRefImageError {

lib/static/components/state/index.jsx

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,19 @@ class State extends Component {
125125
);
126126
}
127127

128-
_getStateTitle() {
128+
_getDisplayedDiffPercentValue() {
129+
const percent = this.props.image.diffRatio * 100;
130+
const percentRounded = Math.ceil(percent * 100) / 100;
131+
const percentThreshold = 0.01;
132+
133+
if (percent < percentThreshold) {
134+
return `< ${percentThreshold}`
135+
}
136+
137+
return String(percentRounded);
138+
}
139+
140+
_getStateTitleWithDiffCount() {
129141
const {image, shouldImageBeOpened} = this.props;
130142

131143
if (!image.stateName) {
@@ -138,15 +150,23 @@ class State extends Component {
138150
`state-title_${image.status}`
139151
);
140152

141-
return <div className={className} onClick={this.onToggleStateResult}>{image.stateName}</div>;
153+
let displayedText = image.stateName;
154+
155+
if (image.differentPixels && image.diffRatio) {
156+
const displayedDiffPercent = this._getDisplayedDiffPercentValue();
157+
158+
displayedText += ` (diff: ${image.differentPixels}px, ${displayedDiffPercent}%)`;
159+
}
160+
161+
return <div className={className} onClick={this.onToggleStateResult}>{displayedText}</div>;
142162
}
143163

144164
render() {
145165
if (!this.props.shouldImageBeOpened) {
146166
return (
147167
<Fragment>
148168
<hr className="tab__separator" />
149-
{this._getStateTitle()}
169+
{this._getStateTitleWithDiffCount()}
150170
</Fragment>
151171
);
152172
}
@@ -168,7 +188,7 @@ class State extends Component {
168188
return (
169189
<Fragment>
170190
<hr className="tab__separator"/>
171-
{this._getStateTitle()}
191+
{this._getStateTitleWithDiffCount()}
172192
{this._drawFailImageControls()}
173193
{this._drawUpdatedImageControls()}
174194
{elem ? <div className='image-box__container'>{elem}</div> : null}

lib/test-adapter/hermione.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,9 @@ export class HermioneTestAdapter implements ReporterTestResult {
112112
...(diffImg ? {diffImg} : {}),
113113
expectedImg: _.clone(assertResult.refImg),
114114
diffClusters: assertResult.diffClusters,
115-
diffOptions: assertResult.diffOpts
115+
diffOptions: assertResult.diffOpts,
116+
differentPixels: assertResult.differentPixels,
117+
diffRatio: assertResult.diffRatio
116118
} satisfies ImageInfoDiff;
117119
} else if (isNoRefImageError(assertResult)) {
118120
return {

lib/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ export interface ImageInfoDiff {
7272
actualImg: ImageFile;
7373
diffImg?: ImageFile | ImageBuffer;
7474
diffOptions: DiffOptions;
75+
differentPixels?: number; // defined if hermione >= 8.2.0
76+
diffRatio?: number; // defined if hermione >= 8.2.0
7577
}
7678

7779
interface AssertViewSuccess {

package-lock.json

Lines changed: 8 additions & 29 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@
138138
"eslint-plugin-react": "^7.32.2",
139139
"events": "^3.3.0",
140140
"fork-ts-checker-webpack-plugin": "^9.0.0",
141-
"hermione": "^8.0.5",
141+
"hermione": "^8.2.1",
142142
"hermione-global-hook": "^1.0.1",
143143
"hermione-test-repeater": "^0.0.8",
144144
"html-react-parser": "^0.4.0",

test/unit/lib/test-adapter/hermione.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,9 @@ describe('HermioneTestAdapter', () => {
237237
name: 'ImageDiffError',
238238
refImg: {path: 'ref-path', size: {width: 25, height: 15}},
239239
stack: 'some-stack',
240-
stateName: 'some-state'
240+
stateName: 'some-state',
241+
differentPixels: 100,
242+
diffRatio: 0.01
241243
}]
242244
});
243245

@@ -251,7 +253,9 @@ describe('HermioneTestAdapter', () => {
251253
expectedImg: {path: 'ref-path', size: {height: 15, width: 25}},
252254
refImg: {path: 'ref-path', size: {height: 15, width: 25}},
253255
diffClusters: [],
254-
diffOptions: {diffColor: '#000'} as any
256+
diffOptions: {diffColor: '#000'} as any,
257+
differentPixels: 100,
258+
diffRatio: 0.01
255259
}
256260
]);
257261
});

0 commit comments

Comments
 (0)