Skip to content

Commit f5307fa

Browse files
committed
Static service refactored to support different implementations
1 parent 5ba5b16 commit f5307fa

29 files changed

+262
-111
lines changed

.env

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@ POSTGRES_USER=postgres
1212
POSTGRES_PASSWORD=postgres
1313
POSTGRES_DB=vrt_db_dev
1414

15+
# static
16+
STATIC_SERVICE=hdd # hdd | s3 - hdd as default if not provided
17+
18+
# AWS_ACCESS_KEY_ID=
19+
# AWS_SECRET_ACCESS_KEY=
20+
# AWS_REGION=
21+
# AWS_S3_BUCKET_NAME=
22+
1523
# optional
1624
#HTTPS_KEY_PATH='./secrets/ssl.key'
1725
#HTTPS_CERT_PATH='./secrets/ssl.cert'

.vscode/settings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@
33
"**/.git/objects/**": true,
44
"**/.git/subtree-cache/**": true,
55
"**/.hg/store/**": true
6-
}
6+
},
7+
"jest.runMode":"on-demand"
78
}

src/builds/builds.module.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,15 @@ import { AuthModule } from '../auth/auth.module';
99
import { ProjectsModule } from '../projects/projects.module';
1010

1111
@Module({
12-
imports: [SharedModule, UsersModule, forwardRef(() => TestRunsModule), AuthModule, forwardRef(() => ProjectsModule)],
12+
imports: [
13+
SharedModule,
14+
UsersModule,
15+
forwardRef(() => TestRunsModule),
16+
AuthModule,
17+
forwardRef(() => ProjectsModule)
18+
],
1319
providers: [BuildsService, PrismaService],
1420
controllers: [BuildsController],
1521
exports: [BuildsService],
1622
})
17-
export class BuildsModule {}
23+
export class BuildsModule { }

src/compare/compare.module.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@ import { CompareService } from './compare.service';
33
import { LookSameService } from './libs/looks-same/looks-same.service';
44
import { OdiffService } from './libs/odiff/odiff.service';
55
import { PixelmatchService } from './libs/pixelmatch/pixelmatch.service';
6+
import { StaticModule } from '../static/static.module';
67

78
@Module({
89
providers: [CompareService, PixelmatchService, LookSameService, OdiffService],
10+
imports: [StaticModule],
911
exports: [CompareService],
1012
})
11-
export class CompareModule {}
13+
export class CompareModule { }

src/compare/compare.service.spec.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,24 @@
11
import { Test, TestingModule } from '@nestjs/testing';
22
import { PrismaService } from '../prisma/prisma.service';
3-
import { StaticService } from '../shared/static/static.service';
43
import { CompareService } from './compare.service';
54
import { LookSameService } from './libs/looks-same/looks-same.service';
65
import { OdiffService } from './libs/odiff/odiff.service';
76
import { PixelmatchService } from './libs/pixelmatch/pixelmatch.service';
7+
import { StaticModule } from '../static/static.module';
88

99
describe('CompareService', () => {
1010
let service: CompareService;
1111

1212
beforeEach(async () => {
1313
const module: TestingModule = await Test.createTestingModule({
14-
providers: [CompareService, OdiffService, PixelmatchService, LookSameService, StaticService, PrismaService],
14+
providers: [
15+
CompareService,
16+
OdiffService,
17+
PixelmatchService,
18+
LookSameService,
19+
PrismaService
20+
],
21+
imports: [StaticModule]
1522
}).compile();
1623

1724
service = module.get<CompareService>(CompareService);

src/compare/libs/looks-same/looks-same.service.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { TestingModule, Test } from '@nestjs/testing';
22
import { TestStatus } from '@prisma/client';
33
import { PNG } from 'pngjs';
4-
import { StaticService } from '../../../shared/static/static.service';
4+
import { StaticService } from '../../../static/static.service';
55
import { DIFF_DIMENSION_RESULT, EQUAL_RESULT, NO_BASELINE_RESULT } from '../consts';
66
import { DEFAULT_CONFIG, LookSameService } from './looks-same.service';
77
import { LooksSameConfig } from './looks-same.types';

src/compare/libs/looks-same/looks-same.service.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Injectable, Logger } from '@nestjs/common';
22
import { TestStatus } from '@prisma/client';
33
import { PNG } from 'pngjs';
4-
import { StaticService } from '../../../shared/static/static.service';
4+
import { StaticService } from '../../../static/static.service';
55
import { DiffResult } from '../../../test-runs/diffResult';
66
import { applyIgnoreAreas, parseConfig } from '../../utils';
77
import { ImageComparator } from '../image-comparator.interface';
@@ -32,8 +32,8 @@ export class LookSameService implements ImageComparator {
3232
...NO_BASELINE_RESULT,
3333
};
3434

35-
const baseline = this.staticService.getImage(data.baseline);
36-
const image = this.staticService.getImage(data.image);
35+
const baseline = await this.staticService.getImage(data.baseline);
36+
const image = await this.staticService.getImage(data.image);
3737

3838
if (!baseline) {
3939
return NO_BASELINE_RESULT;

src/compare/libs/odiff/odiff.service.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { TestingModule, Test } from '@nestjs/testing';
22
import { TestStatus } from '@prisma/client';
33
import { IgnoreAreaDto } from 'src/test-runs/dto/ignore-area.dto';
4-
import { StaticService } from '../../../shared/static/static.service';
4+
import { StaticService } from '../../../static/static.service';
55
import { DIFF_DIMENSION_RESULT, NO_BASELINE_RESULT } from '../consts';
66
import { OdiffService, DEFAULT_CONFIG, ignoreAreaToRegionMapper } from './odiff.service';
77
import { OdiffConfig, OdiffIgnoreRegions } from './odiff.types';

src/compare/libs/odiff/odiff.service.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Injectable, Logger } from '@nestjs/common';
22
import { TestStatus } from '@prisma/client';
3-
import { StaticService } from '../../../shared/static/static.service';
3+
import { StaticService } from '../../../static/static.service';
44
import { DiffResult } from '../../../test-runs/diffResult';
55
import { parseConfig } from '../../utils';
66
import { ImageComparator } from '../image-comparator.interface';
@@ -9,6 +9,8 @@ import { DIFF_DIMENSION_RESULT, NO_BASELINE_RESULT } from '../consts';
99
import { compare } from 'odiff-bin';
1010
import { IgnoreAreaDto } from 'src/test-runs/dto/ignore-area.dto';
1111
import { OdiffConfig, OdiffIgnoreRegions, OdiffResult } from './odiff.types';
12+
import { HddService } from 'src/static/hdd/hdd.service';
13+
import { isHddStaticServiceConfigured } from '../../../static/utils';
1214

1315
export const DEFAULT_CONFIG: OdiffConfig = {
1416
outputDiffMask: true,
@@ -20,8 +22,14 @@ export const DEFAULT_CONFIG: OdiffConfig = {
2022
@Injectable()
2123
export class OdiffService implements ImageComparator {
2224
private readonly logger: Logger = new Logger(OdiffService.name);
25+
private readonly hddService: HddService;
2326

24-
constructor(private staticService: StaticService) {}
27+
constructor(private staticService: StaticService) {
28+
if (!isHddStaticServiceConfigured()) {
29+
throw new Error('OdiffService can only be used with HddService');
30+
}
31+
this.hddService = this.staticService as unknown as HddService;
32+
}
2533

2634
parseConfig(configJson: string): OdiffConfig {
2735
return parseConfig(configJson, DEFAULT_CONFIG, this.logger);
@@ -37,10 +45,10 @@ export class OdiffService implements ImageComparator {
3745
}
3846

3947
// compare
40-
const diff = this.staticService.generateNewImage('diff');
48+
const diff = this.hddService.generateNewImage('diff');
4149
const compareResult = (await compare(
42-
this.staticService.getImagePath(data.baseline),
43-
this.staticService.getImagePath(data.image),
50+
this.hddService.getImagePath(data.baseline),
51+
this.hddService.getImagePath(data.image),
4452
diff.imagePath,
4553
{
4654
...config,

src/compare/libs/pixelmatch/pixelmatch.service.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { TestStatus } from '@prisma/client';
33
import Pixelmatch from 'pixelmatch';
44
import { PNG } from 'pngjs';
55
import { mocked } from 'jest-mock';
6-
import { StaticService } from '../../../shared/static/static.service';
6+
import { StaticService } from '../../../static/static.service';
77
import { DIFF_DIMENSION_RESULT, EQUAL_RESULT, NO_BASELINE_RESULT } from '../consts';
88
import { DEFAULT_CONFIG, PixelmatchService } from './pixelmatch.service';
99
import { PixelmatchConfig } from './pixelmatch.types';

0 commit comments

Comments
 (0)