Debug tests #57133
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: build-and-test | |
on: | |
push: | |
branches: ['canary', 'sebbie/debug-amp'] | |
pull_request: | |
types: [opened, synchronize] | |
env: | |
NAPI_CLI_VERSION: 2.14.7 | |
TURBO_VERSION: 2.3.3 | |
NODE_MAINTENANCE_VERSION: 18 | |
NODE_LTS_VERSION: 20 | |
TEST_CONCURRENCY: 8 | |
# disable backtrace for test snapshots | |
RUST_BACKTRACE: 0 | |
TURBO_TEAM: 'vercel' | |
TURBO_CACHE: 'remote:rw' | |
NEXT_TELEMETRY_DISABLED: 1 | |
# we build a dev binary for use in CI so skip downloading | |
# canary next-swc binaries in the monorepo | |
NEXT_SKIP_NATIVE_POSTINSTALL: 1 | |
DATADOG_API_KEY: ${{ secrets.DATA_DOG_API_KEY }} | |
NEXT_JUNIT_TEST_REPORT: 'true' | |
DD_ENV: 'ci' | |
TEST_TIMINGS_TOKEN: ${{ secrets.TEST_TIMINGS_TOKEN }} | |
NEXT_TEST_JOB: 1 | |
NEXT_TEST_PREFER_OFFLINE: 1 | |
jobs: | |
optimize-ci: | |
uses: ./.github/workflows/graphite_ci_optimizer.yml | |
secrets: inherit | |
changes: | |
name: Determine changes | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 25 | |
- name: check for docs only change | |
id: docs-change | |
run: | | |
echo "DOCS_ONLY<<EOF" >> $GITHUB_OUTPUT; | |
echo "$(node scripts/run-for-change.js --not --type docs --exec echo 'false')" >> $GITHUB_OUTPUT; | |
echo 'EOF' >> $GITHUB_OUTPUT | |
- name: check for release | |
id: is-release | |
run: | | |
if [[ $(node ./scripts/check-is-release.js 2> /dev/null || :) = v* ]]; | |
then | |
echo "IS_RELEASE=true" >> $GITHUB_OUTPUT | |
else | |
echo "IS_RELEASE=false" >> $GITHUB_OUTPUT | |
fi | |
outputs: | |
docs-only: ${{ steps.docs-change.outputs.DOCS_ONLY != 'false' }} | |
is-release: ${{ steps.is-release.outputs.IS_RELEASE == 'true' }} | |
build-native: | |
name: build-native | |
uses: ./.github/workflows/build_reusable.yml | |
with: | |
skipInstallBuild: 'yes' | |
stepName: 'build-native' | |
secrets: inherit | |
build-native-windows: | |
name: build-native-windows | |
uses: ./.github/workflows/build_reusable.yml | |
with: | |
skipInstallBuild: 'yes' | |
stepName: 'build-native-windows' | |
runs_on_labels: '["windows","self-hosted","x64"]' | |
buildNativeTarget: 'x86_64-pc-windows-msvc' | |
secrets: inherit | |
build-next: | |
name: build-next | |
uses: ./.github/workflows/build_reusable.yml | |
with: | |
skipNativeBuild: 'yes' | |
stepName: 'build-next' | |
secrets: inherit | |
validate-docs-links: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- name: Setup corepack | |
run: | | |
npm i -g [email protected] | |
corepack enable | |
- name: 'Run link checker' | |
run: node ./.github/actions/validate-docs-links/dist/index.js | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
test-bench: | |
name: test cargo benches | |
needs: ['optimize-ci', 'changes', 'build-next'] | |
if: ${{ needs.optimize-ci.outputs.skip == 'false' && needs.changes.outputs.docs-only == 'false' }} | |
uses: ./.github/workflows/test-turbopack-rust-bench-test.yml | |
secrets: inherit | |
ast-grep: | |
needs: ['changes', 'build-next'] | |
runs-on: ubuntu-latest | |
name: ast-grep lint | |
steps: | |
- uses: actions/checkout@v4 | |
- name: ast-grep lint step | |
uses: ast-grep/[email protected] | |
with: | |
# Keep in sync with the next.js repo's root package.json | |
version: 0.31.0 | |
test-turbopack-production-integration: | |
name: test turbopack production integration | |
needs: ['optimize-ci', 'changes', 'build-next', 'build-native'] | |
if: ${{ needs.optimize-ci.outputs.skip == 'false' && needs.changes.outputs.docs-only == 'false' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
group: | |
# - 1/7 | |
# - 2/7 | |
# - 3/7 | |
# - 4/7 | |
# - 5/7 | |
# - 6/7 | |
- 7/7 | |
uses: ./.github/workflows/build_reusable.yml | |
with: | |
nodeVersion: 18.18.2 | |
afterBuild: RUST_BACKTRACE=0 NEXT_EXTERNAL_TESTS_FILTERS="$(pwd)/test/turbopack-build-tests-manifest.json" TURBOPACK=1 TURBOPACK_BUILD=1 node run-tests.js --timings -g ${{ matrix.group }} -c ${TEST_CONCURRENCY} --type integration --debug | |
stepName: 'test-turbopack-production-integration-${{ matrix.group }}' | |
secrets: inherit | |
test-integration: | |
name: test integration | |
needs: ['optimize-ci', 'changes', 'build-native', 'build-next'] | |
if: ${{ needs.optimize-ci.outputs.skip == 'false' && needs.changes.outputs.docs-only == 'false' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
group: | |
# - 1/13 | |
# - 2/13 | |
# - 3/13 | |
# - 4/13 | |
# - 5/13 | |
# - 6/13 | |
# - 7/13 | |
- 8/13 | |
# - 9/13 | |
# - 10/13 | |
# - 11/13 | |
# - 12/13 | |
# - 13/13 | |
# Empty value uses default | |
# TODO: Run with React 18. | |
# Integration tests use the installed React version in next/package.json.include: | |
# We can't easily switch like we do for e2e tests. | |
# Skipping this dimensions until we can figure out a way to test multiple React versions. | |
react: [''] | |
uses: ./.github/workflows/build_reusable.yml | |
with: | |
nodeVersion: 18.18.2 | |
afterBuild: NEXT_TEST_REACT_VERSION="${{ matrix.react }}" node run-tests.js --timings -g ${{ matrix.group }} -c ${TEST_CONCURRENCY} --type integration --debug | |
stepName: 'test-integration-${{ matrix.group }}-react-${{ matrix.react }}' | |
secrets: inherit | |
tests-pass: | |
needs: | |
[ | |
'build-native', | |
'build-next', | |
'validate-docs-links', | |
'test-integration', | |
'test-turbopack-production-integration', | |
] | |
if: always() | |
runs-on: ubuntu-latest | |
name: thank you, next | |
steps: | |
- run: exit 1 | |
if: ${{ always() && (contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')) }} |