Skip to content

Commit 3c98e5d

Browse files
authored
Merge pull request #70 from Visual-Regression-Tracker/132-ignore-via-api
132 ignore via api
2 parents 10f19df + 226b1c9 commit 3c98e5d

File tree

5 files changed

+46
-19
lines changed

5 files changed

+46
-19
lines changed

src/test-runs/dto/create-test-request.dto.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { ApiProperty } from '@nestjs/swagger';
22
import { Transform } from 'class-transformer';
33
import { IsOptional, IsUUID, IsNumber, IsBoolean, IsBase64 } from 'class-validator';
44
import { BaselineDataDto } from '../../shared/dto/baseline-data.dto';
5+
import { IgnoreAreaDto } from './ignore-area.dto';
56

67
export class CreateTestRequestDto extends BaselineDataDto {
78
@ApiProperty()
@@ -26,4 +27,8 @@ export class CreateTestRequestDto extends BaselineDataDto {
2627
@IsBoolean()
2728
@IsOptional()
2829
merge?: boolean;
30+
31+
@ApiProperty({ type: [IgnoreAreaDto] })
32+
@IsOptional()
33+
ignoreAreas?: IgnoreAreaDto[];
2934
}

src/test-runs/test-runs.service.spec.ts

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,14 @@ describe('TestRunsService', () => {
429429
diffTollerancePercent: undefined,
430430
branchName: 'develop',
431431
merge: true,
432+
ignoreAreas: [
433+
{
434+
x: 1,
435+
y: 2,
436+
width: 100,
437+
height: 200,
438+
},
439+
],
432440
};
433441
const testRunWithResult = {
434442
id: 'id',
@@ -457,7 +465,7 @@ describe('TestRunsService', () => {
457465
browser: 'browser',
458466
viewport: 'viewport',
459467
device: 'device',
460-
ignoreAreas: '[]',
468+
ignoreAreas: '[{"x":3,"y":4,"width":500,"height":600}]',
461469
comment: 'some comment',
462470
createdAt: new Date(),
463471
updatedAt: new Date(),
@@ -487,12 +495,6 @@ describe('TestRunsService', () => {
487495
const result = await service.create(testVariation, createTestRequestDto);
488496

489497
expect(saveImageMock).toHaveBeenCalledWith('screenshot', Buffer.from(createTestRequestDto.imageBase64, 'base64'));
490-
expect(service.getDiff).toHaveBeenCalledWith(
491-
baseline,
492-
image,
493-
testRun.diffTollerancePercent,
494-
testVariation.ignoreAreas
495-
);
496498
expect(getImageMock).toHaveBeenNthCalledWith(1, testVariation.baselineName);
497499
expect(getImageMock).toHaveBeenNthCalledWith(2, imageName);
498500
expect(testRunCreateMock).toHaveBeenCalledWith({
@@ -523,7 +525,20 @@ describe('TestRunsService', () => {
523525
status: TestStatus.new,
524526
},
525527
});
526-
expect(getDiffMock).toHaveBeenCalledWith(baseline, image, testRun.diffTollerancePercent, testRun.ignoreAreas);
528+
expect(getDiffMock).toHaveBeenCalledWith(baseline, image, testRun.diffTollerancePercent, [
529+
{
530+
x: 3,
531+
y: 4,
532+
width: 500,
533+
height: 600,
534+
},
535+
{
536+
x: 1,
537+
y: 2,
538+
width: 100,
539+
height: 200,
540+
},
541+
]);
527542
expect(saveDiffResultMock).toHaveBeenCalledWith(testRun.id, diffResult);
528543
expect(eventTestRunCreatedMock).toHaveBeenCalledWith(testRunWithResult);
529544
expect(result).toBe(testRunWithResult);
@@ -538,7 +553,7 @@ describe('TestRunsService', () => {
538553
});
539554
service = await initService({});
540555

541-
const result = service.getDiff(baseline, image, 0, '[]');
556+
const result = service.getDiff(baseline, image, 0, []);
542557

543558
expect(result).toStrictEqual({
544559
status: undefined,
@@ -560,7 +575,7 @@ describe('TestRunsService', () => {
560575
});
561576
service = await initService({});
562577

563-
const result = service.getDiff(baseline, image, 0, '[]');
578+
const result = service.getDiff(baseline, image, 0, []);
564579

565580
expect(result).toStrictEqual({
566581
status: TestStatus.unresolved,
@@ -583,7 +598,7 @@ describe('TestRunsService', () => {
583598
service = await initService({});
584599
mocked(Pixelmatch).mockReturnValueOnce(0);
585600

586-
const result = service.getDiff(baseline, image, 0, '[]');
601+
const result = service.getDiff(baseline, image, 0, []);
587602

588603
expect(result).toStrictEqual({
589604
status: TestStatus.ok,
@@ -608,7 +623,7 @@ describe('TestRunsService', () => {
608623
const pixelMisMatchCount = 150;
609624
mocked(Pixelmatch).mockReturnValueOnce(pixelMisMatchCount);
610625

611-
const result = service.getDiff(baseline, image, 1.5, '[]');
626+
const result = service.getDiff(baseline, image, 1.5, []);
612627

613628
expect(saveImageMock).toHaveBeenCalledTimes(0);
614629
expect(result).toStrictEqual({
@@ -637,7 +652,7 @@ describe('TestRunsService', () => {
637652
saveImageMock,
638653
});
639654

640-
const result = service.getDiff(baseline, image, 1, '[]');
655+
const result = service.getDiff(baseline, image, 1, []);
641656

642657
expect(saveImageMock).toHaveBeenCalledTimes(1);
643658
expect(result).toStrictEqual({
@@ -689,7 +704,7 @@ describe('TestRunsService', () => {
689704
baselineMock,
690705
imageeMock,
691706
testRun.diffTollerancePercent,
692-
testRun.ignoreAreas
707+
JSON.parse(testRun.ignoreAreas)
693708
);
694709
expect(service.emitUpdateBuildEvent).toBeCalledWith(testRun.buildId);
695710
});

src/test-runs/test-runs.service.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ export class TestRunsService {
184184
const image = this.staticService.getImage(testRun.imageName);
185185
await this.staticService.deleteImage(testRun.diffName);
186186

187-
const diffResult = this.getDiff(baseline, image, testRun.diffTollerancePercent, testRun.ignoreAreas);
187+
const diffResult = this.getDiff(baseline, image, testRun.diffTollerancePercent, JSON.parse(testRun.ignoreAreas));
188188
const updatedTestRun = await this.saveDiffResult(id, diffResult);
189189
this.emitUpdateBuildEvent(testRun.buildId);
190190
return updatedTestRun;
@@ -227,7 +227,11 @@ export class TestRunsService {
227227
const baseline = this.staticService.getImage(testRun.baselineName);
228228
const image = this.staticService.getImage(imageName);
229229

230-
const diffResult = this.getDiff(baseline, image, testRun.diffTollerancePercent, testVariation.ignoreAreas);
230+
let ignoreAreas: IgnoreAreaDto[] = JSON.parse(testVariation.ignoreAreas);
231+
if (createTestRequestDto.ignoreAreas?.length > 0) {
232+
ignoreAreas = ignoreAreas.concat(createTestRequestDto.ignoreAreas);
233+
}
234+
const diffResult = this.getDiff(baseline, image, testRun.diffTollerancePercent, ignoreAreas);
231235

232236
const testRunWithResult = await this.saveDiffResult(testRun.id, diffResult);
233237
this.eventsGateway.testRunCreated(testRunWithResult);
@@ -267,7 +271,7 @@ export class TestRunsService {
267271
});
268272
}
269273

270-
getDiff(baseline: PNG, image: PNG, diffTollerancePercent: number, ignoreAreas: string): DiffResult {
274+
getDiff(baseline: PNG, image: PNG, diffTollerancePercent: number, ignoreAreas: IgnoreAreaDto[]): DiffResult {
271275
const result: DiffResult = {
272276
status: undefined,
273277
diffName: null,
@@ -287,8 +291,8 @@ export class TestRunsService {
287291

288292
// compare
289293
result.pixelMisMatchCount = Pixelmatch(
290-
this.applyIgnoreAreas(baseline, JSON.parse(ignoreAreas)),
291-
this.applyIgnoreAreas(image, JSON.parse(ignoreAreas)),
294+
this.applyIgnoreAreas(baseline, ignoreAreas),
295+
this.applyIgnoreAreas(image, ignoreAreas),
292296
diff.data,
293297
baseline.width,
294298
baseline.height,

src/test-variations/test-variations.service.spec.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,13 +454,15 @@ describe('TestVariationsService', () => {
454454
imageBase64: PNG.sync.write(image).toString('base64'),
455455
diffTollerancePercent: 0,
456456
merge: true,
457+
ignoreAreas: JSON.parse(testVariation.ignoreAreas),
457458
});
458459
expect(testRunCreateMock).toHaveBeenNthCalledWith(2, testVariationMainBranch, {
459460
...testVariationSecond,
460461
buildId: build.id,
461462
imageBase64: PNG.sync.write(image).toString('base64'),
462463
diffTollerancePercent: 0,
463464
merge: true,
465+
ignoreAreas: JSON.parse(testVariationSecond.ignoreAreas),
464466
});
465467
expect(testRunCreateMock).toHaveBeenCalledTimes(2);
466468
expect(buildStopMock).toHaveBeenCalledWith(build.id);

src/test-variations/test-variations.service.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ export class TestVariationsService {
130130
imageBase64,
131131
diffTollerancePercent: 0,
132132
merge: true,
133+
ignoreAreas: JSON.parse(sideBranchTestVariation.ignoreAreas)
133134
};
134135

135136
return this.testRunsService.create(mainBranchTestVariation, createTestRequestDto);

0 commit comments

Comments
 (0)