diff --git a/.github/workflows/build_and_deploy.yml b/.github/workflows/build_and_deploy.yml index d3427c8bdc43..3d9c45d65f65 100644 --- a/.github/workflows/build_and_deploy.yml +++ b/.github/workflows/build_and_deploy.yml @@ -457,7 +457,7 @@ jobs: continue-on-error: true run: | ls -al ./test - npm install -g junit-report-merger@6.0.2 @datadog/datadog-ci@2.14.0 + npm install -g junit-report-merger@6.0.2 @datadog/datadog-ci@2.14.0 @aws-sdk/property-provider@3 jrm ./nextjs-test-result-junit.xml "test/test-junit-report/**/*.xml" DD_ENV=ci datadog-ci junit upload --tags test.type:nextjs_deploy_e2e --service nextjs ./nextjs-test-result-junit.xml @@ -506,7 +506,7 @@ jobs: - name: Upload to Datadog run: | ls -al turbopack-bin-size - npm install -g @datadog/datadog-ci + npm install -g @datadog/datadog-ci@2.14.0 @aws-sdk/property-provider@3 for filename in turbopack-bin-size/*; do export BYTESIZE+=" --metrics $(cat $filename)" done diff --git a/.github/workflows/build_reusable.yml b/.github/workflows/build_reusable.yml index a933b5b6271e..8cefde14c0d5 100644 --- a/.github/workflows/build_reusable.yml +++ b/.github/workflows/build_reusable.yml @@ -200,7 +200,7 @@ jobs: continue-on-error: true run: | ls -al ./test - npm install -g junit-report-merger@6.0.2 @datadog/datadog-ci@2.14.0 + npm install -g junit-report-merger@6.0.2 @datadog/datadog-ci@2.14.0 @aws-sdk/property-provider@3 jrm ./nextjs-test-result-junit.xml "test/test-junit-report/**/*.xml" jrm ./turbopack-test-result-junit.xml "test/turbopack-test-junit-report/**/*.xml" # Put a separate tag for the tests with turbopack to distinguish between same test names diff --git a/jest.config.js b/jest.config.js index e33a02a765e4..72aab27f0e8f 100644 --- a/jest.config.js +++ b/jest.config.js @@ -39,13 +39,20 @@ if (shouldEnableTestTrace) { customJestConfig.reporters = ['default'] } - const outputDirectory = process.env.TURBOPACK - ? '/turbopack-test-junit-report' - : '/test-junit-report' + const outputDirectory = + process.env.TURBOPACK || process.env.EXPERIMENTAL_TURBOPACK + ? '/turbopack-test-junit-report' + : '/test-junit-report' + customJestConfig.reporters.push([ 'jest-junit', { outputDirectory, + // note: {filename} is not a full path, since putting full path + // makes suite name too long and truncates and not able to read the suite name + suiteNameTemplate: `{title} [${process.env.NEXT_TEST_MODE ?? 'default'}${ + process.env.TURBOPACK ? '/t' : '' + }${process.env.EXPERIMENTAL_TURBOPACK ? '/et' : ''}/{filename}]`, reportTestSuiteErrors: 'true', uniqueOutputName: 'true', outputName: 'nextjs-test-junit', diff --git a/test/lib/e2e-utils.ts b/test/lib/e2e-utils.ts index 1d739f6de28c..9efd2432839c 100644 --- a/test/lib/e2e-utils.ts +++ b/test/lib/e2e-utils.ts @@ -7,6 +7,7 @@ import { NextDevInstance } from './next-modes/next-dev' import { NextStartInstance } from './next-modes/next-start' import { NextDeployInstance } from './next-modes/next-deploy' import { shouldRunTurboDevTest } from './next-test-utils' +import { shouldRunExperimentalTurboDevTest } from './turbo' export type { NextInstance } @@ -14,7 +15,10 @@ export type { NextInstance } // if either test runs for the --turbo or have a custom timeout, set reduced timeout instead. // this is due to current --turbo test have a lot of tests fails with timeouts, ends up the whole // test job exceeds the 6 hours limit. -let testTimeout = shouldRunTurboDevTest() ? (240 * 1000) / 4 : 240 * 1000 +let testTimeout = + shouldRunTurboDevTest() || shouldRunExperimentalTurboDevTest() + ? (240 * 1000) / 4 + : 240 * 1000 if (process.env.NEXT_E2E_TEST_TIMEOUT) { try { testTimeout = parseInt(process.env.NEXT_E2E_TEST_TIMEOUT, 10) @@ -147,7 +151,8 @@ export async function createNext( return await trace('createNext').traceAsyncFn(async (rootSpan) => { const useTurbo = !!process.env.TEST_WASM ? false - : opts?.turbo ?? shouldRunTurboDevTest() + : opts?.turbo ?? + (shouldRunTurboDevTest() || shouldRunExperimentalTurboDevTest()) if (testMode === 'dev') { // next dev diff --git a/test/lib/next-modes/next-dev.ts b/test/lib/next-modes/next-dev.ts index c1aaddd64bf2..16940f670879 100644 --- a/test/lib/next-modes/next-dev.ts +++ b/test/lib/next-modes/next-dev.ts @@ -1,6 +1,7 @@ import spawn from 'cross-spawn' import { Span } from 'next/src/trace' import { NextInstance } from './base' +import { getTurbopackFlag } from '../turbo' export class NextDevInstance extends NextInstance { private _cliOutput: string = '' @@ -22,12 +23,14 @@ export class NextDevInstance extends NextInstance { throw new Error('next already started') } - const useTurbo = !process.env.TEST_WASM && (this as any).turbo + const useTurbo = + !process.env.TEST_WASM && + ((this as any).turbo || (this as any).experimentalTurbo) let startArgs = [ 'yarn', 'next', - useTurbo ? '--turbo' : undefined, + useTurbo ? getTurbopackFlag() : undefined, useDirArg && this.testDir, ].filter(Boolean) as string[] diff --git a/test/lib/next-test-utils.ts b/test/lib/next-test-utils.ts index 018e13d53591..9b0a1692c103 100644 --- a/test/lib/next-test-utils.ts +++ b/test/lib/next-test-utils.ts @@ -27,6 +27,7 @@ import type { NextServer } from 'next/dist/server/next' import type { BrowserInterface } from './browsers/base' import { + getTurbopackFlag, shouldRunExperimentalTurboDevTest, shouldRunTurboDevTest, } from './turbo' @@ -448,9 +449,12 @@ export function launchApp( const useExperimentalTurbo = shouldRunExperimentalTurboDevTest() return runNextCommandDev( - [useTurbo ? '--turbo' : undefined, dir, '-p', port as string].filter( - Boolean - ), + [ + useTurbo || useExperimentalTurbo ? getTurbopackFlag() : undefined, + dir, + '-p', + port as string, + ].filter(Boolean), undefined, { ...options, diff --git a/test/lib/turbo.ts b/test/lib/turbo.ts index ab295ba467f8..e8261cde5dbd 100644 --- a/test/lib/turbo.ts +++ b/test/lib/turbo.ts @@ -50,3 +50,13 @@ export function shouldRunExperimentalTurboDevTest(): boolean { return shouldRunExperimentalTurboDev } + +export function getTurbopackFlag(): string { + if (!!process.env.TURBOPACK) { + return '--turbo' + } else if (!!process.env.EXPERIMENTAL_TURBOPACK) { + return '--experimental-turbo' + } else { + throw Error(`Cannot get the flag for running turbopack`) + } +}