Skip to content

Commit 5e691f2

Browse files
pashidlospaazmaya
andauthored
fix e2e tests (#212)
* fix e2e tests * migration added * manual migration are obsolete witn new DB schema * Let me try PostgreSQL v14 * Just had to try with the predefined server info for pgadmin --------- Co-authored-by: Juga Paazmaya <[email protected]>
1 parent 4404222 commit 5e691f2

File tree

12 files changed

+200
-94
lines changed

12 files changed

+200
-94
lines changed

.github/workflows/workflow.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,11 @@ jobs:
1313
- name: Setup Node.js environment
1414
uses: actions/setup-node@v3
1515
with:
16-
node-version: '16'
16+
node-version: '18'
1717

1818
- name: Install npm dependencies
1919
run: npm ci
2020

21-
- name: Prisma generate
22-
run: npm run prisma:generate
23-
2421
- name: Unit tests
2522
run: npm run test:cov
2623

docker-compose.yml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ services:
2828
- postgres
2929
postgres:
3030
container_name: postgres
31-
image: postgres:12-alpine3.18
31+
image: postgres:14-alpine3.18
3232
restart: always
3333
environment:
3434
POSTGRES_USER: ${POSTGRES_USER}
@@ -40,13 +40,20 @@ services:
4040
- "${POSTGRES_PORT}"
4141
volumes:
4242
- postgres:/var/lib/postgresql/data
43+
44+
# Available at http://localhost:5050
4345
pgadmin:
4446
container_name: pgadmin4
45-
image: dpage/pgadmin4
47+
# https://hub.docker.com/r/dpage/pgadmin4
48+
# https://www.pgadmin.org/docs/pgadmin4/latest/release_notes_7_4.html
49+
image: dpage/pgadmin4:7.4
4650
restart: always
4751
environment:
4852
PGADMIN_DEFAULT_EMAIL: [email protected]
4953
PGADMIN_DEFAULT_PASSWORD: root
54+
volumes:
55+
- ${PWD}/pgadmin-servers.json:/pgadmin4/servers.json
56+
- ${PWD}/pgadmin-vrt.pgpassfile:/pgadmin4/pgadmin-vrt.pgpassfile
5057
ports:
5158
- "5050:80"
5259
depends_on:

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
"start:dev": "nest start --watch",
1414
"start:debug": "nest start --debug --watch",
1515
"start:prod": "node dist/main",
16-
"prisma:generate": "prisma generate",
1716
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
1817
"test": "jest --projects src",
1918
"test:watch": "jest --projects src --watch",

pgadmin-servers.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"Servers": {
3+
"1": {
4+
"Name": "visual-regression-tracker",
5+
"Group": "Servers",
6+
"Host": "postgres",
7+
"Port": 5432,
8+
"MaintenanceDB": "postgres",
9+
"Username": "postgres",
10+
"SSLMode": "prefer",
11+
"PassFile": "/pgadmin4/pgadmin-vrt.pgpassfile"
12+
}
13+
}
14+
}

pgadmin-vrt.pgpassfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
postgres:5432:vrt_db_dev:postgres:postgres

prisma/entrypoint.sh

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@ set -e
55

66
echo Start applying migrations...
77

8-
# apply manual migration
9-
npx ts-node manual_migrations.ts
10-
118
# apply migration
129
npx prisma db push
1310
npx prisma migrate deploy

prisma/manual_migrations.ts

Lines changed: 0 additions & 72 deletions
This file was deleted.
Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
-- CreateEnum
2+
CREATE TYPE "TestStatus" AS ENUM ('failed', 'new', 'ok', 'unresolved', 'approved', 'autoApproved');
3+
4+
-- CreateEnum
5+
CREATE TYPE "ImageComparison" AS ENUM ('pixelmatch', 'lookSame', 'odiff');
6+
7+
-- CreateEnum
8+
CREATE TYPE "Role" AS ENUM ('admin', 'editor', 'guest');
9+
10+
-- CreateTable
11+
CREATE TABLE "Build" (
12+
"id" TEXT NOT NULL,
13+
"ciBuildId" TEXT,
14+
"number" INTEGER,
15+
"branchName" TEXT,
16+
"status" TEXT,
17+
"projectId" TEXT NOT NULL,
18+
"updatedAt" TIMESTAMP(3) NOT NULL,
19+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
20+
"userId" TEXT,
21+
"isRunning" BOOLEAN,
22+
23+
CONSTRAINT "Build_pkey" PRIMARY KEY ("id")
24+
);
25+
26+
-- CreateTable
27+
CREATE TABLE "Project" (
28+
"id" TEXT NOT NULL,
29+
"name" TEXT NOT NULL,
30+
"mainBranchName" TEXT NOT NULL DEFAULT 'master',
31+
"buildsCounter" INTEGER NOT NULL DEFAULT 0,
32+
"maxBuildAllowed" INTEGER NOT NULL DEFAULT 100,
33+
"maxBranchLifetime" INTEGER NOT NULL DEFAULT 30,
34+
"updatedAt" TIMESTAMP(3) NOT NULL,
35+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
36+
"autoApproveFeature" BOOLEAN NOT NULL DEFAULT false,
37+
"imageComparison" "ImageComparison" NOT NULL DEFAULT 'pixelmatch',
38+
"imageComparisonConfig" TEXT NOT NULL DEFAULT '{ "threshold": 0.1, "ignoreAntialiasing": true, "allowDiffDimensions": false }',
39+
40+
CONSTRAINT "Project_pkey" PRIMARY KEY ("id")
41+
);
42+
43+
-- CreateTable
44+
CREATE TABLE "TestRun" (
45+
"id" TEXT NOT NULL,
46+
"imageName" TEXT NOT NULL,
47+
"diffName" TEXT,
48+
"diffPercent" DOUBLE PRECISION,
49+
"diffTollerancePercent" DOUBLE PRECISION NOT NULL DEFAULT 0,
50+
"pixelMisMatchCount" INTEGER,
51+
"status" "TestStatus" NOT NULL,
52+
"buildId" TEXT NOT NULL,
53+
"testVariationId" TEXT,
54+
"projectId" TEXT,
55+
"merge" BOOLEAN NOT NULL DEFAULT false,
56+
"updatedAt" TIMESTAMP(3) NOT NULL,
57+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
58+
"name" TEXT NOT NULL DEFAULT '',
59+
"browser" TEXT,
60+
"device" TEXT,
61+
"os" TEXT,
62+
"viewport" TEXT,
63+
"customTags" TEXT DEFAULT '',
64+
"baselineName" TEXT,
65+
"comment" TEXT,
66+
"branchName" TEXT NOT NULL DEFAULT 'master',
67+
"baselineBranchName" TEXT,
68+
"ignoreAreas" TEXT NOT NULL DEFAULT '[]',
69+
"tempIgnoreAreas" TEXT NOT NULL DEFAULT '[]',
70+
71+
CONSTRAINT "TestRun_pkey" PRIMARY KEY ("id")
72+
);
73+
74+
-- CreateTable
75+
CREATE TABLE "TestVariation" (
76+
"id" TEXT NOT NULL,
77+
"name" TEXT NOT NULL,
78+
"branchName" TEXT NOT NULL DEFAULT 'master',
79+
"browser" TEXT NOT NULL DEFAULT '',
80+
"device" TEXT NOT NULL DEFAULT '',
81+
"os" TEXT NOT NULL DEFAULT '',
82+
"viewport" TEXT NOT NULL DEFAULT '',
83+
"customTags" TEXT NOT NULL DEFAULT '',
84+
"baselineName" TEXT,
85+
"ignoreAreas" TEXT NOT NULL DEFAULT '[]',
86+
"projectId" TEXT NOT NULL,
87+
"comment" TEXT,
88+
"updatedAt" TIMESTAMP(3) NOT NULL,
89+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
90+
91+
CONSTRAINT "TestVariation_pkey" PRIMARY KEY ("id")
92+
);
93+
94+
-- CreateTable
95+
CREATE TABLE "Baseline" (
96+
"id" TEXT NOT NULL,
97+
"baselineName" TEXT NOT NULL,
98+
"testVariationId" TEXT NOT NULL,
99+
"testRunId" TEXT,
100+
"userId" TEXT,
101+
"updatedAt" TIMESTAMP(3) NOT NULL,
102+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
103+
104+
CONSTRAINT "Baseline_pkey" PRIMARY KEY ("id")
105+
);
106+
107+
-- CreateTable
108+
CREATE TABLE "User" (
109+
"id" TEXT NOT NULL,
110+
"email" TEXT NOT NULL,
111+
"password" TEXT NOT NULL,
112+
"firstName" TEXT,
113+
"lastName" TEXT,
114+
"apiKey" TEXT NOT NULL,
115+
"isActive" BOOLEAN NOT NULL DEFAULT true,
116+
"role" "Role" NOT NULL DEFAULT 'guest',
117+
"updatedAt" TIMESTAMP(3) NOT NULL,
118+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
119+
120+
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
121+
);
122+
123+
-- CreateIndex
124+
CREATE UNIQUE INDEX "Build_projectId_ciBuildId_key" ON "Build"("projectId", "ciBuildId");
125+
126+
-- CreateIndex
127+
CREATE UNIQUE INDEX "Project_name_key" ON "Project"("name");
128+
129+
-- CreateIndex
130+
CREATE UNIQUE INDEX "TestVariation_projectId_name_browser_device_os_viewport_cus_key" ON "TestVariation"("projectId", "name", "browser", "device", "os", "viewport", "customTags", "branchName");
131+
132+
-- CreateIndex
133+
CREATE UNIQUE INDEX "Baseline_testRunId_key" ON "Baseline"("testRunId");
134+
135+
-- CreateIndex
136+
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
137+
138+
-- CreateIndex
139+
CREATE UNIQUE INDEX "User_apiKey_key" ON "User"("apiKey");
140+
141+
-- AddForeignKey
142+
ALTER TABLE "Build" ADD CONSTRAINT "Build_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
143+
144+
-- AddForeignKey
145+
ALTER TABLE "Build" ADD CONSTRAINT "Build_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
146+
147+
-- AddForeignKey
148+
ALTER TABLE "TestRun" ADD CONSTRAINT "TestRun_buildId_fkey" FOREIGN KEY ("buildId") REFERENCES "Build"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
149+
150+
-- AddForeignKey
151+
ALTER TABLE "TestRun" ADD CONSTRAINT "TestRun_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE SET NULL ON UPDATE CASCADE;
152+
153+
-- AddForeignKey
154+
ALTER TABLE "TestRun" ADD CONSTRAINT "TestRun_testVariationId_fkey" FOREIGN KEY ("testVariationId") REFERENCES "TestVariation"("id") ON DELETE SET NULL ON UPDATE CASCADE;
155+
156+
-- AddForeignKey
157+
ALTER TABLE "TestVariation" ADD CONSTRAINT "TestVariation_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
158+
159+
-- AddForeignKey
160+
ALTER TABLE "Baseline" ADD CONSTRAINT "Baseline_testRunId_fkey" FOREIGN KEY ("testRunId") REFERENCES "TestRun"("id") ON DELETE SET NULL ON UPDATE CASCADE;
161+
162+
-- AddForeignKey
163+
ALTER TABLE "Baseline" ADD CONSTRAINT "Baseline_testVariationId_fkey" FOREIGN KEY ("testVariationId") REFERENCES "TestVariation"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
164+
165+
-- AddForeignKey
166+
ALTER TABLE "Baseline" ADD CONSTRAINT "Baseline_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Please do not edit this file manually
2+
# It should be added in your version-control system (i.e. Git)
3+
provider = "postgresql"

test/builds.e2e-spec.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ import { ProjectsService } from '../src/projects/projects.service';
1111
import { TestRunsService } from '../src/test-runs/test-runs.service';
1212
import { BuildsController } from '../src/builds/builds.controller';
1313
import { TEST_PROJECT } from '../src/_data_';
14-
15-
jest.useFakeTimers('legacy');
14+
import uuidAPIKey from 'uuid-apikey';
1615

1716
describe('Builds (e2e)', () => {
1817
let app: INestApplication;
@@ -43,7 +42,7 @@ describe('Builds (e2e)', () => {
4342
user = await haveUserLogged(usersService);
4443
project = await projecstService.create({
4544
...TEST_PROJECT,
46-
name: 'Builds E2E test',
45+
name: `Builds E2E test${uuidAPIKey.create().uuid}`,
4746
});
4847
});
4948

@@ -53,7 +52,6 @@ describe('Builds (e2e)', () => {
5352
});
5453

5554
afterAll(async () => {
56-
jest.runOnlyPendingTimers();
5755
await app.close();
5856
});
5957

0 commit comments

Comments
 (0)