diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml new file mode 100644 index 0000000..d1ccb54 --- /dev/null +++ b/.github/workflows/e2e.yml @@ -0,0 +1,33 @@ +name: e2e +on: + push: + branches: [main] + pull_request: + +jobs: + e2e: + runs-on: ubuntu-latest + services: + postgres: + image: postgres:16 + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: dev # ou test + ports: ["5432:5432"] + options: >- + --health-cmd="pg_isready -U postgres -d dev" + --health-interval=5s + --health-timeout=5s + --health-retries=20 + env: + DATABASE_URL: postgresql://postgres:postgres@localhost:5432/dev?schema=public + TZ: UTC + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: { node-version: '18' } + - run: npm ci + - run: npx prisma migrate deploy + - run: npm run seed:all + - run: npm run test:e2e:ci diff --git a/package.json b/package.json index 8959e5c..29f11ce 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "test:cov": "jest --coverage", "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", "test:e2e": "jest --config ./test/jest-e2e.json", + "test:e2e:ci": "cross-env NODE_ENV=test E2E_RESET_DB=1 jest --config ./test/jest-e2e.json --runInBand --verbose", "prisma:generate": "prisma generate", "db:migrate": "prisma migrate dev --name init", "db:reset": "prisma migrate reset --force", diff --git a/test/jest-e2e.json b/test/jest-e2e.json index 2a1acbe..3fe8559 100644 --- a/test/jest-e2e.json +++ b/test/jest-e2e.json @@ -14,5 +14,12 @@ "setupFilesAfterEnv": ["/test/jest-setup.ts"], "moduleDirectories": ["node_modules", ""], "testTimeout": 30000, - "maxWorkers": 1 + "maxWorkers": 1, + "collectCoverage": true, + "coverageDirectory": "coverage-e2e", + "coverageReporters": ["text", "lcov"], + "coveragePathIgnorePatterns": ["/node_modules/", "/test/utils/", "/test/factories/"], + "coverageThreshold": { + "global": { "branches": 40, "functions": 50, "lines": 60, "statements": 60 } + } }