4444 ${{ github.workspace }}/packages/*/build
4545 ${{ github.workspace }}/packages/ember/*.d.ts
4646 ${{ github.workspace }}/packages/gatsby/*.d.ts
47- ${{ github.workspace }}/packages/core/src/version.ts
4847 ${{ github.workspace }}/packages/utils/cjs
4948 ${{ github.workspace }}/packages/utils/esm
5049
@@ -796,12 +795,21 @@ jobs:
796795 # - The build job was successful, not skipped
797796 # - AND if the profiling node bindings were either successful or skipped
798797 if : |
799- always() && needs.job_build.result == 'success' &&
798+ always() &&
799+ needs.job_build.result == 'success' &&
800800 (needs.job_compile_bindings_profiling_node.result == 'success' || needs.job_compile_bindings_profiling_node.result == 'skipped')
801801 needs : [job_get_metadata, job_build, job_compile_bindings_profiling_node]
802802 runs-on : ubuntu-20.04-large-js
803803 timeout-minutes : 15
804+ outputs :
805+ matrix : ${{ steps.matrix.outputs.matrix }}
806+ matrix-optional : ${{ steps.matrix-optional.outputs.matrix }}
804807 steps :
808+ - name : Check out base commit (${{ github.event.pull_request.base.sha }})
809+ uses : actions/checkout@v4
810+ if : github.event_name == 'pull_request'
811+ with :
812+ ref : ${{ github.event.pull_request.base.sha }}
805813 - name : Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }})
806814 uses : actions/checkout@v4
807815 with :
@@ -851,11 +859,21 @@ jobs:
851859 path : ${{ github.workspace }}/packages/*/*.tgz
852860 key : ${{ env.BUILD_CACHE_TARBALL_KEY }}
853861
862+ - name : Determine which E2E test applications should be run
863+ id : matrix
864+ run : yarn --silent ci:build-matrix --base=${{ (github.event_name == 'pull_request' && github.event.pull_request.base.sha) || '' }} >> $GITHUB_OUTPUT
865+ working-directory : dev-packages/e2e-tests
866+
867+ - name : Determine which optional E2E test applications should be run
868+ id : matrix-optional
869+ run : yarn --silent ci:build-matrix-optional --base=${{ (github.event_name == 'pull_request' && github.event.pull_request.base.sha) || '' }} >> $GITHUB_OUTPUT
870+ working-directory : dev-packages/e2e-tests
871+
854872 job_e2e_tests :
855873 name : E2E ${{ matrix.label || matrix.test-application }} Test
856874 # We need to add the `always()` check here because the previous step has this as well :(
857875 # See: https://github.com/actions/runner/issues/2205
858- if : always() && needs.job_e2e_prepare.result == 'success'
876+ if : always() && needs.job_e2e_prepare.result == 'success' && needs.job_e2e_prepare.outputs.matrix != '{"include":[]}'
859877 needs : [job_get_metadata, job_build, job_e2e_prepare]
860878 runs-on : ubuntu-20.04
861879 timeout-minutes : 15
@@ -870,103 +888,7 @@ jobs:
870888 E2E_TEST_SENTRY_PROJECT : ' sentry-javascript-e2e-tests'
871889 strategy :
872890 fail-fast : false
873- matrix :
874- is_dependabot :
875- - ${{ github.actor == 'dependabot[bot]' }}
876- test-application :
877- [
878- ' angular-17' ,
879- ' angular-18' ,
880- ' astro-4' ,
881- ' aws-lambda-layer-cjs' ,
882- ' aws-serverless-esm' ,
883- ' node-express' ,
884- ' create-react-app' ,
885- ' create-next-app' ,
886- ' create-remix-app' ,
887- ' create-remix-app-legacy' ,
888- ' create-remix-app-v2' ,
889- ' create-remix-app-v2-legacy' ,
890- ' create-remix-app-express' ,
891- ' create-remix-app-express-legacy' ,
892- ' create-remix-app-express-vite-dev' ,
893- ' default-browser' ,
894- ' node-express-esm-loader' ,
895- ' node-express-esm-preload' ,
896- ' node-express-esm-without-loader' ,
897- ' node-express-cjs-preload' ,
898- ' node-otel-sdk-node' ,
899- ' node-otel-custom-sampler' ,
900- ' node-otel-without-tracing' ,
901- ' ember-classic' ,
902- ' ember-embroider' ,
903- ' nextjs-app-dir' ,
904- ' nextjs-13' ,
905- ' nextjs-14' ,
906- ' nextjs-15' ,
907- ' nextjs-turbo' ,
908- ' nextjs-t3' ,
909- ' react-17' ,
910- ' react-19' ,
911- ' react-create-hash-router' ,
912- ' react-router-6-use-routes' ,
913- ' react-router-5' ,
914- ' react-router-6' ,
915- ' solid' ,
916- ' solidstart' ,
917- ' solidstart-spa' ,
918- ' svelte-5' ,
919- ' sveltekit' ,
920- ' sveltekit-2' ,
921- ' sveltekit-2-svelte-5' ,
922- ' sveltekit-2-twp' ,
923- ' tanstack-router' ,
924- ' generic-ts3.8' ,
925- ' node-fastify' ,
926- ' node-fastify-5' ,
927- ' node-hapi' ,
928- ' node-nestjs-basic' ,
929- ' node-nestjs-distributed-tracing' ,
930- ' nestjs-basic' ,
931- ' nestjs-distributed-tracing' ,
932- ' nestjs-with-submodules' ,
933- ' nestjs-with-submodules-decorator' ,
934- ' nestjs-basic-with-graphql' ,
935- ' nestjs-graphql' ,
936- ' node-exports-test-app' ,
937- ' node-koa' ,
938- ' node-connect' ,
939- ' nuxt-3' ,
940- ' nuxt-4' ,
941- ' vue-3' ,
942- ' webpack-4' ,
943- ' webpack-5'
944- ]
945- build-command :
946- - false
947- label :
948- - false
949- # Add any variations of a test app here
950- # You should provide an alternate build-command as well as a matching label
951- include :
952- - test-application : ' create-react-app'
953- build-command : ' test:build-ts3.8'
954- label : ' create-react-app (TS 3.8)'
955- - test-application : ' react-router-6'
956- build-command : ' test:build-ts3.8'
957- label : ' react-router-6 (TS 3.8)'
958- - test-application : ' create-next-app'
959- build-command : ' test:build-13'
960- label : ' create-next-app (next@13)'
961- - test-application : ' nextjs-app-dir'
962- build-command : ' test:build-13'
963- label : ' nextjs-app-dir (next@13)'
964- exclude :
965- - is_dependabot : true
966- test-application : ' cloudflare-astro'
967- - is_dependabot : true
968- test-application : ' cloudflare-workers'
969-
891+ matrix : ${{ fromJson(needs.job_e2e_prepare.outputs.matrix) }}
970892 steps :
971893 - name : Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }})
972894 uses : actions/checkout@v4
@@ -1060,13 +982,17 @@ jobs:
1060982 directory : dev-packages/e2e-tests
1061983 token : ${{ secrets.CODECOV_TOKEN }}
1062984
985+ # - We skip optional tests on release branches
1063986 job_optional_e2e_tests :
1064987 name : E2E ${{ matrix.label || matrix.test-application }} Test
1065988 # We only run E2E tests for non-fork PRs because the E2E tests require secrets to work and they can't be accessed from forks
1066989 # We need to add the `always()` check here because the previous step has this as well :(
1067990 # See: https://github.com/actions/runner/issues/2205
1068991 if :
1069- always() && needs.job_e2e_prepare.result == 'success' &&
992+ always() &&
993+ needs.job_get_metadata.outputs.is_release != 'true' &&
994+ needs.job_e2e_prepare.result == 'success' &&
995+ needs.job_e2e_prepare.outputs.matrix-optional != '{"include":[]}' &&
1070996 (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) &&
1071997 github.actor != 'dependabot[bot]'
1072998 needs : [job_get_metadata, job_build, job_e2e_prepare]
@@ -1083,58 +1009,7 @@ jobs:
10831009 E2E_TEST_SENTRY_PROJECT : ' sentry-javascript-e2e-tests'
10841010 strategy :
10851011 fail-fast : false
1086- matrix :
1087- test-application :
1088- [
1089- ' cloudflare-astro' ,
1090- ' cloudflare-workers' ,
1091- ' react-send-to-sentry' ,
1092- ' node-express-send-to-sentry' ,
1093- ' debug-id-sourcemaps' ,
1094- ]
1095- build-command :
1096- - false
1097- assert-command :
1098- - false
1099- label :
1100- - false
1101- include :
1102- - test-application : ' create-remix-app'
1103- assert-command : ' test:assert-sourcemaps'
1104- label : ' create-remix-app (sourcemaps)'
1105- - test-application : ' create-remix-app-legacy'
1106- assert-command : ' test:assert-sourcemaps'
1107- label : ' create-remix-app-legacy (sourcemaps)'
1108- - test-application : ' nextjs-app-dir'
1109- build-command : ' test:build-canary'
1110- label : ' nextjs-app-dir (canary)'
1111- - test-application : ' nextjs-app-dir'
1112- build-command : ' test:build-latest'
1113- label : ' nextjs-app-dir (latest)'
1114- - test-application : ' nextjs-13'
1115- build-command : ' test:build-canary'
1116- label : ' nextjs-13 (canary)'
1117- - test-application : ' nextjs-13'
1118- build-command : ' test:build-latest'
1119- label : ' nextjs-13 (latest)'
1120- - test-application : ' nextjs-14'
1121- build-command : ' test:build-canary'
1122- label : ' nextjs-14 (canary)'
1123- - test-application : ' nextjs-14'
1124- build-command : ' test:build-latest'
1125- label : ' nextjs-14 (latest)'
1126- - test-application : ' nextjs-15'
1127- build-command : ' test:build-canary'
1128- label : ' nextjs-15 (canary)'
1129- - test-application : ' nextjs-15'
1130- build-command : ' test:build-latest'
1131- label : ' nextjs-15 (latest)'
1132- - test-application : ' nextjs-turbo'
1133- build-command : ' test:build-canary'
1134- label : ' nextjs-turbo (canary)'
1135- - test-application : ' nextjs-turbo'
1136- build-command : ' test:build-latest'
1137- label : ' nextjs-turbo (latest)'
1012+ matrix : ${{ fromJson(needs.job_e2e_prepare.outputs.matrix-optional) }}
11381013
11391014 steps :
11401015 - name : Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }})
@@ -1234,7 +1109,7 @@ jobs:
12341109 (needs.job_get_metadata.outputs.is_release == 'true')
12351110 )
12361111 needs : [job_get_metadata, job_build, job_e2e_prepare]
1237- runs-on : ubuntu-20 .04
1112+ runs-on : ubuntu-22 .04
12381113 timeout-minutes : 15
12391114 env :
12401115 E2E_TEST_AUTH_TOKEN : ${{ secrets.E2E_TEST_AUTH_TOKEN }}
@@ -1254,19 +1129,24 @@ jobs:
12541129 uses : actions/checkout@v4
12551130 with :
12561131 ref : ${{ env.HEAD_COMMIT }}
1132+
12571133 - uses : pnpm/action-setup@v4
12581134 with :
12591135 version : 9.4.0
1136+
12601137 - name : Set up Node
12611138 uses : actions/setup-node@v4
12621139 with :
12631140 node-version : 22
1141+
12641142 - name : Restore caches
12651143 uses : ./.github/actions/restore-cache
12661144 with :
12671145 dependency_cache_key : ${{ needs.job_build.outputs.dependency_cache_key }}
1146+
12681147 - name : Build Profiling Node
12691148 run : yarn lerna run build:lib --scope @sentry/profiling-node
1149+
12701150 - name : Extract Profiling Node Prebuilt Binaries
12711151 uses : actions/download-artifact@v4
12721152 with :
@@ -1305,6 +1185,18 @@ jobs:
13051185 env :
13061186 E2E_TEST_PUBLISH_SCRIPT_NODE_VERSION : ${{ steps.versions.outputs.node }}
13071187
1188+ - name : Setup xvfb and update ubuntu dependencies
1189+ run : |
1190+ sudo apt-get install xvfb x11-xkb-utils xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic x11-apps
1191+ sudo apt-get install build-essential clang libdbus-1-dev libgtk2.0-dev \
1192+ libnotify-dev libgconf2-dev \
1193+ libasound2-dev libcap-dev libcups2-dev libxtst-dev \
1194+ libxss1 libnss3-dev gcc-multilib g++-multilib
1195+
1196+ - name : Install dependencies
1197+ working-directory : dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
1198+ run : yarn install --ignore-engines --frozen-lockfile
1199+
13081200 - name : Build E2E app
13091201 working-directory : dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
13101202 timeout-minutes : 7
@@ -1313,7 +1205,7 @@ jobs:
13131205 - name : Run E2E test
13141206 working-directory : dev-packages/e2e-tests/test-applications/${{ matrix.test-application }}
13151207 timeout-minutes : 10
1316- run : yarn test:assert
1208+ run : xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn test:assert
13171209
13181210 job_required_jobs_passed :
13191211 name : All required jobs passed or were skipped
0 commit comments