From 58ae7fb04a85f0633e2090319e807af395d254da Mon Sep 17 00:00:00 2001 From: Pavlo Strunkin Date: Sat, 28 Jun 2025 15:52:43 +0300 Subject: [PATCH 1/5] fix: S3. Change name generation from Date.now to UUID closes https://github.com/Visual-Regression-Tracker/Visual-Regression-Tracker/issues/462 --- src/static/aws/s3.service.ts | 3 ++- src/static/hdd/hdd.service.ts | 3 ++- src/static/utils.ts | 6 ++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/static/aws/s3.service.ts b/src/static/aws/s3.service.ts index 4ff2a97..42a7a4c 100644 --- a/src/static/aws/s3.service.ts +++ b/src/static/aws/s3.service.ts @@ -4,6 +4,7 @@ import { Static } from '../static.interface'; import { DeleteObjectCommand, GetObjectCommand, PutObjectCommand, S3Client } from '@aws-sdk/client-s3'; import { Readable } from 'stream'; import { getSignedUrl } from '@aws-sdk/s3-request-presigner'; +import { generateNewImageName } from '../utils'; export class AWSS3Service implements Static { private readonly logger: Logger = new Logger(AWSS3Service.name); @@ -26,7 +27,7 @@ export class AWSS3Service implements Static { } async saveImage(type: 'screenshot' | 'diff' | 'baseline', imageBuffer: Buffer): Promise { - const imageName = `${Date.now()}.${type}.png`; + const imageName = generateNewImageName(type); try { await this.s3Client.send( new PutObjectCommand({ diff --git a/src/static/hdd/hdd.service.ts b/src/static/hdd/hdd.service.ts index 09b7052..878f0af 100644 --- a/src/static/hdd/hdd.service.ts +++ b/src/static/hdd/hdd.service.ts @@ -5,12 +5,13 @@ import { PNG, PNGWithMetadata } from 'pngjs'; import uuidAPIKey from 'uuid-apikey'; import { Static } from '../static.interface'; import { HDD_IMAGE_PATH } from './constants'; +import { generateNewImageName } from '../utils'; export class HddService implements Static { private readonly logger: Logger = new Logger(HddService.name); generateNewImage(type: 'screenshot' | 'diff' | 'baseline'): { imageName: string; imagePath: string } { - const imageName = `${uuidAPIKey.create({ noDashes: true }).apiKey}.${type}.png`; + const imageName = generateNewImageName(type); return { imageName, imagePath: this.getImagePath(imageName), diff --git a/src/static/utils.ts b/src/static/utils.ts index a684b66..fea00bd 100644 --- a/src/static/utils.ts +++ b/src/static/utils.ts @@ -1,3 +1,5 @@ +import uuidAPIKey from 'uuid-apikey'; + export function isHddStaticServiceConfigured() { return !process.env.STATIC_SERVICE || process.env.STATIC_SERVICE === 'hdd'; } @@ -5,3 +7,7 @@ export function isHddStaticServiceConfigured() { export function isS3ServiceConfigured() { return !process.env.STATIC_SERVICE || process.env.STATIC_SERVICE === 's3'; } + +export function generateNewImageName(type: 'screenshot' | 'diff' | 'baseline'): string { + return`${uuidAPIKey.create({ noDashes: true }).apiKey}.${type}.png`; + } \ No newline at end of file From 109b94e98035101aff2004a698235746b5932080 Mon Sep 17 00:00:00 2001 From: Pavlo Strunkin Date: Sat, 28 Jun 2025 15:55:30 +0300 Subject: [PATCH 2/5] Update hdd.service.ts --- src/static/hdd/hdd.service.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/static/hdd/hdd.service.ts b/src/static/hdd/hdd.service.ts index 878f0af..60ad363 100644 --- a/src/static/hdd/hdd.service.ts +++ b/src/static/hdd/hdd.service.ts @@ -2,7 +2,6 @@ import { Logger } from '@nestjs/common'; import path from 'path'; import { writeFileSync, readFileSync, unlink, mkdirSync, existsSync } from 'fs'; import { PNG, PNGWithMetadata } from 'pngjs'; -import uuidAPIKey from 'uuid-apikey'; import { Static } from '../static.interface'; import { HDD_IMAGE_PATH } from './constants'; import { generateNewImageName } from '../utils'; From 96a77ebc44db1b88410c0e5dd3ee108ce97c8fe0 Mon Sep 17 00:00:00 2001 From: Pavlo Strunkin Date: Sat, 28 Jun 2025 15:57:33 +0300 Subject: [PATCH 3/5] Update utils.ts --- src/static/utils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/static/utils.ts b/src/static/utils.ts index fea00bd..310061d 100644 --- a/src/static/utils.ts +++ b/src/static/utils.ts @@ -9,5 +9,5 @@ export function isS3ServiceConfigured() { } export function generateNewImageName(type: 'screenshot' | 'diff' | 'baseline'): string { - return`${uuidAPIKey.create({ noDashes: true }).apiKey}.${type}.png`; - } \ No newline at end of file + return `${uuidAPIKey.create({ noDashes: true }).apiKey}.${type}.png`; +} From 0ca49ffc29480fb1205121758484a5508359df53 Mon Sep 17 00:00:00 2001 From: Pavlo Strunkin Date: Sat, 28 Jun 2025 16:11:09 +0300 Subject: [PATCH 4/5] Update workflow.yml --- .github/workflows/workflow.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index 38bb365..e9a9cc7 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -59,7 +59,7 @@ jobs: run: docker compose -f docker-compose.yml -f docker-compose.ldap.yml down - name: SonarCloud Scan - uses: SonarSource/sonarcloud-github-action@master + uses: SonarSource/sonarqube-scan-action@v5.2.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONARCLOUD_TOKEN }} From 67a28c068bad7b2a975dbad6f476d3e9c75966e1 Mon Sep 17 00:00:00 2001 From: Pavlo Strunkin Date: Sat, 28 Jun 2025 16:28:31 +0300 Subject: [PATCH 5/5] Update workflow.yml --- .github/workflows/workflow.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index e9a9cc7..806eb70 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -59,9 +59,8 @@ jobs: run: docker compose -f docker-compose.yml -f docker-compose.ldap.yml down - name: SonarCloud Scan - uses: SonarSource/sonarqube-scan-action@v5.2.0 + uses: SonarSource/sonarqube-scan-action@v5 env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONARCLOUD_TOKEN }} test-migrations: