diff --git a/.github/workflows/e2e-api-tests.yaml b/.github/workflows/e2e-api-tests.yaml index a0a20357e..c1b487388 100644 --- a/.github/workflows/e2e-api-tests.yaml +++ b/.github/workflows/e2e-api-tests.yaml @@ -34,10 +34,10 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile - - name: Create .env.local file for stack-backend + - name: Create .env.production.local file for stack-backend run: cp apps/backend/.env.development apps/backend/.env.production.local - - name: Create .env.local file for stack-dashboard + - name: Create .env.production.local file for stack-dashboard run: cp apps/dashboard/.env.development apps/dashboard/.env.production.local - name: Build stack-backend @@ -51,6 +51,11 @@ jobs: - name: Initialize database run: pnpm run prisma -- migrate reset --force + - name: Start stack-backend in background + run: pnpm run start:backend & + - name: Wait for stack-backend to start + run: npx wait-on@7.2.0 http://localhost:8102 + - name: Start stack-dashboard in background run: pnpm run start:dashboard & - name: Wait for stack-dashboard to start diff --git a/apps/e2e/package.json b/apps/e2e/package.json index 460eec3b9..f44dbc143 100644 --- a/apps/e2e/package.json +++ b/apps/e2e/package.json @@ -4,13 +4,13 @@ "private": true, "type": "module", "scripts": { - "test:watch": "dotenv -c development -- vitest watch", - "test": "dotenv -c development -- vitest run", + "test:watch": "vitest watch", + "test": "vitest run", "lint": "eslint --ext .tsx,.ts .", "clean": "rimraf dist && rimraf node_modules" }, "dependencies": {}, "devDependencies": { - "dotenv-cli": "7.4.1" + "dotenv": "^16.4.5" } } diff --git a/apps/e2e/tests/api/internal-project.test.ts b/apps/e2e/tests/api/internal-project.test.ts index 1a991a0b6..fc07a624c 100644 --- a/apps/e2e/tests/api/internal-project.test.ts +++ b/apps/e2e/tests/api/internal-project.test.ts @@ -40,13 +40,11 @@ async function signInWithEmailPassword(email: string, password: string) { describe("Various internal project tests", () => { test("Main Page", async () => { const response = await request(BASE_URL).get("/"); - console.log(response); expect(response.status).toBe(307); }); test("API root (no authentication)", async () => { const response = await request(BASE_URL).get("/api/v1"); - console.log(response); expect(response.status).toBe(200); expect(response.text).contains("Stack API"); expect(response.text).contains("Authentication: None"); @@ -54,21 +52,18 @@ describe("Various internal project tests", () => { test("Credential sign up", async () => { const { response } = await signUpWithEmailPassword(); - console.log(response); expect(response.status).toBe(200); }); test("Credential sign in", async () => { const { email, password } = await signUpWithEmailPassword(); const { response } = await signInWithEmailPassword(email, password); - console.log(response); expect(response.status).toBe(200); }); test("No current user without authentication", async () => { const response = await request(BASE_URL).get("/api/v1/current-user").set(AUTH_HEADER); - console.log(response); expect(response.status).toBe(200); expect(response.body).toBe(null); }); diff --git a/apps/e2e/tests/global-setup.ts b/apps/e2e/tests/global-setup.ts new file mode 100644 index 000000000..d2c42bbf3 --- /dev/null +++ b/apps/e2e/tests/global-setup.ts @@ -0,0 +1,14 @@ +import dotenv from "dotenv"; + +export default function globalSetup() { + dotenv.config({ + path: [ + ".env.development.local", + ".env.local", + ".env.development", + ".env", + ], + }); + + return () => {}; +} diff --git a/apps/e2e/tsconfig.json b/apps/e2e/tsconfig.json index 5a9c1404c..1f1a8f44d 100644 --- a/apps/e2e/tsconfig.json +++ b/apps/e2e/tsconfig.json @@ -5,8 +5,8 @@ "rootDir": "tests", "declaration": true, "target": "ESNext", - "module": "NodeNext", - "moduleResolution": "NodeNext", + "module": "ESNext", + "moduleResolution": "Bundler", "esModuleInterop": true, "noErrorTruncation": true, "strict": true, diff --git a/apps/e2e/vitest.config.ts b/apps/e2e/vitest.config.ts index 12c7af772..925c8a794 100644 --- a/apps/e2e/vitest.config.ts +++ b/apps/e2e/vitest.config.ts @@ -1,10 +1,11 @@ import { defineConfig } from 'vitest/config' import react from '@vitejs/plugin-react' - + export default defineConfig({ plugins: [react()], test: { environment: 'node', testTimeout: 20_000, + globalSetup: './tests/global-setup.ts', }, }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4fc338cf5..1c7680b4d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -506,9 +506,9 @@ importers: apps/e2e: devDependencies: - dotenv-cli: - specifier: 7.4.1 - version: 7.4.1 + dotenv: + specifier: ^16.4.5 + version: 16.4.5 docs: dependencies: @@ -10018,7 +10018,7 @@ snapshots: rollup: 2.78.0 stacktrace-parser: 0.1.10 optionalDependencies: - webpack: 5.92.0(@swc/core@1.3.101)(esbuild@0.21.5) + webpack: 5.92.0(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11) transitivePeerDependencies: - encoding - supports-color @@ -14994,7 +14994,7 @@ snapshots: term-size@2.2.1: {} - terser-webpack-plugin@5.3.10(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11)(webpack@5.92.0(@swc/core@1.3.101)(esbuild@0.21.5)): + terser-webpack-plugin@5.3.10(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11)(webpack@5.92.0(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 @@ -15006,19 +15006,6 @@ snapshots: '@swc/core': 1.3.101(@swc/helpers@0.5.11) esbuild: 0.19.11 - terser-webpack-plugin@5.3.10(@swc/core@1.3.101)(esbuild@0.21.5)(webpack@5.92.0(@swc/core@1.3.101)(esbuild@0.21.5)): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.31.1 - webpack: 5.92.0(@swc/core@1.3.101)(esbuild@0.21.5) - optionalDependencies: - '@swc/core': 1.3.101(@swc/helpers@0.5.11) - esbuild: 0.21.5 - optional: true - terser@5.31.1: dependencies: '@jridgewell/source-map': 0.3.6 @@ -15508,7 +15495,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11)(webpack@5.92.0(@swc/core@1.3.101)(esbuild@0.21.5)) + terser-webpack-plugin: 5.3.10(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11)(webpack@5.92.0(@swc/core@1.3.101(@swc/helpers@0.5.11))(esbuild@0.19.11)) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -15516,38 +15503,6 @@ snapshots: - esbuild - uglify-js - webpack@5.92.0(@swc/core@1.3.101)(esbuild@0.21.5): - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/wasm-edit': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.12.0 - acorn-import-attributes: 1.9.5(acorn@8.12.0) - browserslist: 4.23.1 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.0 - es-module-lexer: 1.5.3 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.3.101)(esbuild@0.21.5)(webpack@5.92.0(@swc/core@1.3.101)(esbuild@0.21.5)) - watchpack: 2.4.1 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - optional: true - whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3