diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 44057f39da11..41e4e5c2a3b3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -954,7 +954,7 @@ jobs: - name: Build E2E app working-directory: ${{ runner.temp }}/test-application timeout-minutes: 7 - run: pnpm ${{ matrix.build-command || 'test:build' }} + run: ${{ matrix.build-command || 'pnpm test:build' }} - name: Install Playwright uses: ./.github/actions/install-playwright @@ -965,7 +965,7 @@ jobs: - name: Run E2E test working-directory: ${{ runner.temp }}/test-application timeout-minutes: 10 - run: pnpm test:assert + run: ${{ matrix.assert-command || 'pnpm test:assert' }} - name: Upload Playwright Traces uses: actions/upload-artifact@v4 @@ -1075,7 +1075,7 @@ jobs: - name: Build E2E app working-directory: ${{ runner.temp }}/test-application timeout-minutes: 7 - run: pnpm ${{ matrix.build-command || 'test:build' }} + run: ${{ matrix.build-command || 'pnpm test:build' }} - name: Install Playwright uses: ./.github/actions/install-playwright @@ -1086,7 +1086,7 @@ jobs: - name: Run E2E test working-directory: ${{ runner.temp }}/test-application timeout-minutes: 10 - run: pnpm ${{ matrix.assert-command || 'test:assert' }} + run: ${{ matrix.assert-command || 'pnpm test:assert' }} - name: Pre-process E2E Test Dumps if: failure() diff --git a/dev-packages/e2e-tests/test-applications/aws-serverless/package.json b/dev-packages/e2e-tests/test-applications/aws-serverless/package.json index 83437b2f9fbf..bf8085c4e892 100644 --- a/dev-packages/e2e-tests/test-applications/aws-serverless/package.json +++ b/dev-packages/e2e-tests/test-applications/aws-serverless/package.json @@ -23,5 +23,19 @@ }, "volta": { "extends": "../../package.json" + }, + "sentryTest": { + "variants": [ + { + "build-command": "NODE_VERSION=20 ./pull-sam-image.sh && pnpm test:build", + "assert-command": "NODE_VERSION=20 pnpm test:assert", + "label": "aws-serverless (Node 20)" + }, + { + "build-command": "NODE_VERSION=18 ./pull-sam-image.sh && pnpm test:build", + "assert-command": "NODE_VERSION=18 pnpm test:assert", + "label": "aws-serverless (Node 18)" + } + ] } } diff --git a/dev-packages/e2e-tests/test-applications/aws-serverless/playwright.config.ts b/dev-packages/e2e-tests/test-applications/aws-serverless/playwright.config.ts index 174593c307df..e47333c66e76 100644 --- a/dev-packages/e2e-tests/test-applications/aws-serverless/playwright.config.ts +++ b/dev-packages/e2e-tests/test-applications/aws-serverless/playwright.config.ts @@ -1,3 +1,5 @@ import { getPlaywrightConfig } from '@sentry-internal/test-utils'; -export default getPlaywrightConfig(); +export default getPlaywrightConfig(undefined, { + timeout: 60 * 1000 * 3, // 3 minutes +}); diff --git a/dev-packages/e2e-tests/test-applications/aws-serverless/pull-sam-image.sh b/dev-packages/e2e-tests/test-applications/aws-serverless/pull-sam-image.sh new file mode 100755 index 000000000000..0c27c1eac24d --- /dev/null +++ b/dev-packages/e2e-tests/test-applications/aws-serverless/pull-sam-image.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Script to pull the correct SAM docker image based on the NODE_VERSION environment variable. + +set -e + +if [[ -z "$NODE_VERSION" ]]; then + echo "Error: NODE_VERSION not set" + exit 1 +fi + +echo "Pulling SAM Node $NODE_VERSION docker image..." +docker pull "public.ecr.aws/sam/build-nodejs${NODE_VERSION}.x:latest" + +echo "Successfully pulled SAM Node $NODE_VERSION docker image" diff --git a/dev-packages/e2e-tests/test-applications/aws-serverless/src/stack.ts b/dev-packages/e2e-tests/test-applications/aws-serverless/src/stack.ts index 825c9648ee66..d23feae60811 100644 --- a/dev-packages/e2e-tests/test-applications/aws-serverless/src/stack.ts +++ b/dev-packages/e2e-tests/test-applications/aws-serverless/src/stack.ts @@ -12,8 +12,8 @@ const LAMBDA_FUNCTIONS_WITH_LAYER_DIR = './src/lambda-functions-layer'; const LAMBDA_FUNCTIONS_WITH_NPM_DIR = './src/lambda-functions-npm'; const LAMBDA_FUNCTION_TIMEOUT = 10; const LAYER_DIR = './node_modules/@sentry/aws-serverless/'; +const DEFAULT_NODE_VERSION = '22'; export const SAM_PORT = 3001; -const NODE_RUNTIME = `nodejs${process.version.split('.').at(0)?.replace('v', '')}.x`; export class LocalLambdaStack extends Stack { sentryLayer: CfnResource; @@ -73,14 +73,12 @@ export class LocalLambdaStack extends Stack { execFileSync('npm', ['install', '--prefix', path.join(functionsDir, lambdaDir)], { stdio: 'inherit' }); } - const isEsm = fs.existsSync(path.join(functionsDir, lambdaDir, 'index.mjs')); - new CfnResource(this, functionName, { type: 'AWS::Serverless::Function', properties: { CodeUri: path.join(functionsDir, lambdaDir), Handler: 'index.handler', - Runtime: NODE_RUNTIME, + Runtime: `nodejs${process.env.NODE_VERSION ?? DEFAULT_NODE_VERSION}.x`, Timeout: LAMBDA_FUNCTION_TIMEOUT, Layers: addLayer ? [{ Ref: this.sentryLayer.logicalId }] : undefined, Environment: { @@ -88,7 +86,7 @@ export class LocalLambdaStack extends Stack { SENTRY_DSN: dsn, SENTRY_TRACES_SAMPLE_RATE: 1.0, SENTRY_DEBUG: true, - NODE_OPTIONS: `--${isEsm ? 'import' : 'require'}=@sentry/aws-serverless/awslambda-auto`, + NODE_OPTIONS: `--import=@sentry/aws-serverless/awslambda-auto`, }, }, }, diff --git a/dev-packages/e2e-tests/test-applications/aws-serverless/tests/lambda-fixtures.ts b/dev-packages/e2e-tests/test-applications/aws-serverless/tests/lambda-fixtures.ts index 707f808218fb..561086fcdb9d 100644 --- a/dev-packages/e2e-tests/test-applications/aws-serverless/tests/lambda-fixtures.ts +++ b/dev-packages/e2e-tests/test-applications/aws-serverless/tests/lambda-fixtures.ts @@ -29,23 +29,27 @@ export const test = base.extend<{ testEnvironment: LocalLambdaStack; lambdaClien const debugLog = tmp.fileSync({ prefix: 'sentry_aws_lambda_tests_sam_debug', postfix: '.log' }); console.log(`[test_environment fixture] Writing SAM debug log to: ${debugLog.name}`); - const process = spawn( - 'sam', - [ - 'local', - 'start-lambda', - '--debug', - '--template', - SAM_TEMPLATE_FILE, - '--warm-containers', - 'EAGER', - '--docker-network', - DOCKER_NETWORK_NAME, - ], - { - stdio: ['ignore', debugLog.fd, debugLog.fd], - }, - ); + const args = [ + 'local', + 'start-lambda', + '--debug', + '--template', + SAM_TEMPLATE_FILE, + '--warm-containers', + 'EAGER', + '--docker-network', + DOCKER_NETWORK_NAME, + ]; + + if (process.env.NODE_VERSION) { + args.push('--invoke-image', `public.ecr.aws/sam/build-nodejs${process.env.NODE_VERSION}.x:latest`); + } + + console.log(`[testEnvironment fixture] Running SAM with args: ${args.join(' ')}`); + + const samProcess = spawn('sam', args, { + stdio: ['ignore', debugLog.fd, debugLog.fd], + }); try { await LocalLambdaStack.waitForStack(); @@ -54,12 +58,12 @@ export const test = base.extend<{ testEnvironment: LocalLambdaStack; lambdaClien } finally { console.log('[testEnvironment fixture] Tearing down AWS Lambda test infrastructure'); - process.kill('SIGTERM'); + samProcess.kill('SIGTERM'); await new Promise(resolve => { - process.once('exit', resolve); + samProcess.once('exit', resolve); setTimeout(() => { - if (!process.killed) { - process.kill('SIGKILL'); + if (!samProcess.killed) { + samProcess.kill('SIGKILL'); } resolve(void 0); }, 5000); diff --git a/dev-packages/e2e-tests/test-applications/create-next-app/package.json b/dev-packages/e2e-tests/test-applications/create-next-app/package.json index 5eeac69d422e..d87aed0de03e 100644 --- a/dev-packages/e2e-tests/test-applications/create-next-app/package.json +++ b/dev-packages/e2e-tests/test-applications/create-next-app/package.json @@ -31,7 +31,7 @@ "sentryTest": { "variants": [ { - "build-command": "test:build-13", + "build-command": "pnpm test:build-13", "label": "create-next-app (next@13)" } ] diff --git a/dev-packages/e2e-tests/test-applications/create-react-app/package.json b/dev-packages/e2e-tests/test-applications/create-react-app/package.json index 981123625b96..0c2bc337d396 100644 --- a/dev-packages/e2e-tests/test-applications/create-react-app/package.json +++ b/dev-packages/e2e-tests/test-applications/create-react-app/package.json @@ -47,7 +47,7 @@ "sentryTest": { "variants": [ { - "build-command": "test:build-ts3.8", + "build-command": "pnpm test:build-ts3.8", "label": "create-react-app (TS 3.8)" } ] diff --git a/dev-packages/e2e-tests/test-applications/nextjs-13/package.json b/dev-packages/e2e-tests/test-applications/nextjs-13/package.json index ebb4d632127d..32430917ddc0 100644 --- a/dev-packages/e2e-tests/test-applications/nextjs-13/package.json +++ b/dev-packages/e2e-tests/test-applications/nextjs-13/package.json @@ -32,11 +32,11 @@ "sentryTest": { "optionalVariants": [ { - "build-command": "test:build-canary", + "build-command": "pnpm test:build-canary", "label": "nextjs-13 (canary)" }, { - "build-command": "test:build-latest", + "build-command": "pnpm test:build-latest", "label": "nextjs-13 (latest)" } ] diff --git a/dev-packages/e2e-tests/test-applications/nextjs-14/package.json b/dev-packages/e2e-tests/test-applications/nextjs-14/package.json index acffda8eeed5..822d321b2028 100644 --- a/dev-packages/e2e-tests/test-applications/nextjs-14/package.json +++ b/dev-packages/e2e-tests/test-applications/nextjs-14/package.json @@ -33,11 +33,11 @@ "sentryTest": { "optionalVariants": [ { - "build-command": "test:build-canary", + "build-command": "pnpm test:build-canary", "label": "nextjs-14 (canary)" }, { - "build-command": "test:build-latest", + "build-command": "pnpm test:build-latest", "label": "nextjs-14 (latest)" } ] diff --git a/dev-packages/e2e-tests/test-applications/nextjs-15/package.json b/dev-packages/e2e-tests/test-applications/nextjs-15/package.json index 063f36d3b164..052dd62697a1 100644 --- a/dev-packages/e2e-tests/test-applications/nextjs-15/package.json +++ b/dev-packages/e2e-tests/test-applications/nextjs-15/package.json @@ -37,15 +37,15 @@ "sentryTest": { "optionalVariants": [ { - "build-command": "test:build-canary", + "build-command": "pnpm test:build-canary", "label": "nextjs-15 (canary)" }, { - "build-command": "test:build-latest", + "build-command": "pnpm test:build-latest", "label": "nextjs-15 (latest)" }, { - "build-command": "test:build-turbo", + "build-command": "pnpm test:build-turbo", "assert-command": "pnpm test:prod && pnpm test:dev-turbo", "label": "nextjs-15 (turbo)" } diff --git a/dev-packages/e2e-tests/test-applications/nextjs-app-dir/package.json b/dev-packages/e2e-tests/test-applications/nextjs-app-dir/package.json index e25c4ec84053..e37e4a0c8ca3 100644 --- a/dev-packages/e2e-tests/test-applications/nextjs-app-dir/package.json +++ b/dev-packages/e2e-tests/test-applications/nextjs-app-dir/package.json @@ -36,17 +36,17 @@ "sentryTest": { "variants": [ { - "build-command": "test:build-13", + "build-command": "pnpm test:build-13", "label": "nextjs-app-dir (next@13)" } ], "optionalVariants": [ { - "build-command": "test:build-canary", + "build-command": "pnpm test:build-canary", "label": "nextjs-app-dir (canary)" }, { - "build-command": "test:build-latest", + "build-command": "pnpm test:build-latest", "label": "nextjs-app-dir (latest)" } ] diff --git a/dev-packages/e2e-tests/test-applications/nextjs-pages-dir/package.json b/dev-packages/e2e-tests/test-applications/nextjs-pages-dir/package.json index 03a7efd1d521..233ceb802536 100644 --- a/dev-packages/e2e-tests/test-applications/nextjs-pages-dir/package.json +++ b/dev-packages/e2e-tests/test-applications/nextjs-pages-dir/package.json @@ -36,17 +36,17 @@ "sentryTest": { "variants": [ { - "build-command": "test:build-13", + "build-command": "pnpm test:build-13", "label": "nextjs-pages-dir (next@13)" } ], "optionalVariants": [ { - "build-command": "test:build-canary", + "build-command": "pnpm test:build-canary", "label": "nextjs-pages-dir (canary)" }, { - "build-command": "test:build-latest", + "build-command": "pnpm test:build-latest", "label": "nextjs-pages-dir (latest)" } ] diff --git a/dev-packages/e2e-tests/test-applications/nextjs-turbo/package.json b/dev-packages/e2e-tests/test-applications/nextjs-turbo/package.json index 46aba39d865c..1cfbd8eb6628 100644 --- a/dev-packages/e2e-tests/test-applications/nextjs-turbo/package.json +++ b/dev-packages/e2e-tests/test-applications/nextjs-turbo/package.json @@ -34,11 +34,11 @@ "optional": true, "optionalVariants": [ { - "build-command": "test:build-canary", + "build-command": "pnpm test:build-canary", "label": "nextjs-turbo (canary)" }, { - "build-command": "test:build-latest", + "build-command": "pnpm test:build-latest", "label": "nextjs-turbo (latest)" } ] diff --git a/dev-packages/e2e-tests/test-applications/nuxt-3/package.json b/dev-packages/e2e-tests/test-applications/nuxt-3/package.json index 536043eec631..b38943d6e3eb 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-3/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-3/package.json @@ -27,7 +27,7 @@ "sentryTest": { "optionalVariants": [ { - "build-command": "test:build-canary", + "build-command": "pnpm test:build-canary", "label": "nuxt-3 (canary)" } ] diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json index f73e7ff99200..a68c4c823738 100644 --- a/dev-packages/e2e-tests/test-applications/nuxt-4/package.json +++ b/dev-packages/e2e-tests/test-applications/nuxt-4/package.json @@ -30,7 +30,7 @@ "sentryTest": { "optionalVariants": [ { - "build-command": "test:build-canary", + "build-command": "pnpm test:build-canary", "label": "nuxt-4 (canary)" } ] diff --git a/dev-packages/e2e-tests/test-applications/react-router-6/package.json b/dev-packages/e2e-tests/test-applications/react-router-6/package.json index 6de1a0f9b76a..bcab38dad727 100644 --- a/dev-packages/e2e-tests/test-applications/react-router-6/package.json +++ b/dev-packages/e2e-tests/test-applications/react-router-6/package.json @@ -55,7 +55,7 @@ "sentryTest": { "variants": [ { - "build-command": "test:build-ts3.8", + "build-command": "pnpm test:build-ts3.8", "label": "react-router-6 (TS 3.8)" } ] diff --git a/dev-packages/e2e-tests/test-applications/react-router-7-spa/package.json b/dev-packages/e2e-tests/test-applications/react-router-7-spa/package.json index 41ff42c14f09..2c6bf1654cae 100644 --- a/dev-packages/e2e-tests/test-applications/react-router-7-spa/package.json +++ b/dev-packages/e2e-tests/test-applications/react-router-7-spa/package.json @@ -52,7 +52,7 @@ "sentryTest": { "variants": [ { - "build-command": "test:build-ts3.8", + "build-command": "pnpm test:build-ts3.8", "label": "react-router-7-spa (TS 3.8)" } ]