diff --git a/.github/workflows/test-e2e-deploy.yml b/.github/workflows/test-e2e-deploy.yml new file mode 100644 index 0000000..3043bbd --- /dev/null +++ b/.github/workflows/test-e2e-deploy.yml @@ -0,0 +1,123 @@ +name: test-e2e-deploy + +on: + workflow_dispatch: + inputs: + nextjsRef: + description: 'Next.js repo ref (branch/tag/SHA)' + default: 'canary' + type: string + # schedule: + # - cron: '0 2 * * *' + +jobs: + build: + name: Build Next.js + adapter + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@v4 + with: + path: adapter + + - uses: actions/checkout@v4 + with: + repository: vercel/next.js + ref: ${{ inputs.nextjsRef || 'canary' }} + path: nextjs + fetch-depth: 25 + + - uses: actions/setup-node@v4 + with: { node-version: '20' } + + - name: Setup pnpm + run: npm i -g corepack@0.31 && corepack enable + + - name: Install & build Next.js + working-directory: nextjs + run: pnpm install && pnpm build && pnpm install + + - name: Install Playwright + working-directory: nextjs + run: pnpm playwright install --with-deps chromium + + - name: Build adapter + working-directory: adapter + run: pnpm install && pnpm build + + - uses: actions/cache/save@v4 + with: + path: | + nextjs + adapter + ~/.cache/ms-playwright + key: build-${{ github.sha }}-${{ github.run_id }} + + test: + name: Tests (${{ matrix.group }}) + needs: build + runs-on: ubuntu-latest + timeout-minutes: 60 + strategy: + fail-fast: false + matrix: + group: + [ + 1/16, + 2/16, + 3/16, + 4/16, + 5/16, + 6/16, + 7/16, + 8/16, + 9/16, + 10/16, + 11/16, + 12/16, + 13/16, + 14/16, + 15/16, + 16/16, + ] + steps: + - uses: actions/cache/restore@v4 + with: + path: | + nextjs + adapter + ~/.cache/ms-playwright + key: build-${{ github.sha }}-${{ github.run_id }} + + - uses: actions/setup-node@v4 + with: { node-version: '20' } + + - name: Setup pnpm + run: npm i -g corepack@0.31 && corepack enable + + - name: Ensure Playwright browser + working-directory: nextjs + run: pnpm playwright install chromium + + - name: Make scripts executable + run: chmod +x adapter/scripts/e2e-deploy.sh + adapter/scripts/e2e-logs.sh + adapter/scripts/e2e-cleanup.sh + + - name: Run deploy tests + working-directory: nextjs + env: + NEXT_TEST_MODE: deploy + NEXT_E2E_TEST_TIMEOUT: 240000 + NEXT_EXTERNAL_TESTS_FILTERS: test/deploy-tests-manifest.json + ADAPTER_DIR: ${{ github.workspace }}/adapter + IS_TURBOPACK_TEST: 1 + NEXT_TEST_JOB: 1 + NEXT_TELEMETRY_DISABLED: 1 + + # Change these to your adapter's scripts + # Keep as-is if the scripts are in the adapter repository `scripts` directory + NEXT_TEST_DEPLOY_SCRIPT_PATH: ${{ github.workspace }}/adapter/scripts/e2e-deploy.sh + NEXT_TEST_DEPLOY_LOGS_SCRIPT_PATH: ${{ github.workspace }}/adapter/scripts/e2e-logs.sh + NEXT_TEST_CLEANUP_SCRIPT_PATH: ${{ github.workspace }}/adapter/scripts/e2e-cleanup.sh + run: node run-tests.js --timings -g ${{ matrix.group }} -c 2 --type e2e