mirror of
https://github.com/documenso/documenso
synced 2026-04-21 21:37:18 +00:00
Replace hono-rate-limiter with a Prisma/PostgreSQL bucketed counter approach that works correctly across multiple instances without sticky sessions. - Add RateLimit model with composite PK (key, action, bucket) and atomic upsert - Create rate limit factory with window parsing, bucket computation, and fail-open - Define auth-tier and API-tier rate limit instances - Add Hono middleware, rateLimitResponse helper, and tRPC assertRateLimit helper - Wire rate limit headers through AppError constructor (was declared but never assigned) - Apply rate limits to auth routes (email-password, passkey), tRPC routes (2FA email, link org account), API routes, and file upload endpoints - Add cleanup cron job for expired rate limit rows (batched delete every 15 min) - Remove hono-rate-limiter dependency
54 lines
1.3 KiB
YAML
54 lines
1.3 KiB
YAML
name: Playwright Tests
|
|
on:
|
|
push:
|
|
branches: ['main']
|
|
pull_request:
|
|
branches: ['main']
|
|
|
|
concurrency:
|
|
group: ci-${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
e2e_tests:
|
|
name: 'E2E Tests'
|
|
timeout-minutes: 60
|
|
runs-on: warp-ubuntu-2204-x64-8x
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Copy env
|
|
run: cp .env.example .env
|
|
|
|
- uses: ./.github/actions/node-install
|
|
|
|
- name: Start Services
|
|
run: npm run dx:up
|
|
|
|
- uses: ./.github/actions/playwright-install
|
|
|
|
- name: Create the database
|
|
run: npm run prisma:migrate-dev
|
|
|
|
- name: Seed the database
|
|
run: npm run prisma:seed
|
|
|
|
- name: Install playwright browsers
|
|
run: npx playwright install --with-deps
|
|
|
|
- name: Run Playwright tests
|
|
run: npm run ci
|
|
env:
|
|
# Needed since we use next start which will set the NODE_ENV to production
|
|
NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH: './example/cert.p12'
|
|
DANGEROUS_BYPASS_RATE_LIMITS: 'true'
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: test-results
|
|
path: 'packages/app-tests/**/test-results/*'
|
|
retention-days: 7
|
|
env:
|
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
|
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
|