Commit 215c16e
authored
chore(e2e-tests): Use tarball symlinks for E2E tests instead of verdaccio (#20386)
This PR completely removes verdaccio in favor of referencing the built
tarballs directly.
We rely on pnpm overrides which we inject into the test app to ensure
that also transitive dependencies are correct.
This is basically instant and reduces about 20s of verdaccio/registry
preparation time we used to have before each e2e test app.
## How it works
* We use a reference to a tarball for internal dependencies in our e2e
tests. these are virtual files in /packed directory, e.g.
`"@sentry/browser": "file:../../packed/sentry-browser-packed.tgz",`
* `yarn test:prepare` will create/update those packed files with
symlinks to the current tarballs (which have the version in their
filename so we cannot just link to them directly consistently)
* Additionally, we adjust the created test apps in the tmp dir by adding
a `pnpm.overrides` section for all our apps pointing them to the packed
folder, to ensure we get these as transitive dependencies as well
Locally, you can continue to use `yarn test:run test-app-name` and it
will do all of that under the hood, nothing else needed (except to
generate the tarballs, as before). On CI I adjusted the places to run
the necessary pieces in addition to ensure everything works as expected.
## Example generated test app
It effectively creates a package.json for the test app that looks like
this:
```json
{
"name": "node-hapi",
"version": "1.0.0",
"private": true,
"scripts": {
"build": "tsc",
"start": "node src/app.js",
"test": "playwright test",
"clean": "npx rimraf node_modules pnpm-lock.yaml",
"test:build": "pnpm install",
"test:assert": "pnpm test"
},
"dependencies": {
"@hapi/boom": "10.0.1",
"@hapi/hapi": "21.3.10",
"@sentry/node": "file:../../packed/sentry-node-packed.tgz"
},
"devDependencies": {
"@playwright/test": "~1.56.0",
"@sentry-internal/test-utils": "link:~/my-app/dev-packages/test-utils"
},
"volta": {
"extends": "~/my-app/dev-packages/e2e-tests/package.json"
},
"pnpm": {
"overrides": {
"@sentry-internal/browser-utils": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-internal-browser-utils-packed.tgz",
"@sentry-internal/eslint-config-sdk": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-internal-eslint-config-sdk-packed.tgz",
"@sentry-internal/eslint-plugin-sdk": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-internal-eslint-plugin-sdk-packed.tgz",
"@sentry-internal/feedback": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-internal-feedback-packed.tgz",
"@sentry-internal/replay": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-internal-replay-packed.tgz",
"@sentry-internal/replay-canvas": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-internal-replay-canvas-packed.tgz",
"@sentry-internal/typescript": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-internal-typescript-packed.tgz",
"@sentry/angular": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-angular-packed.tgz",
"@sentry/astro": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-astro-packed.tgz",
"@sentry/aws-serverless": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-aws-serverless-packed.tgz",
"@sentry/browser": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-browser-packed.tgz",
"@sentry/bun": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-bun-packed.tgz",
"@sentry/cloudflare": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-cloudflare-packed.tgz",
"@sentry/core": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-core-packed.tgz",
"@sentry/deno": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-deno-packed.tgz",
"@sentry/effect": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-effect-packed.tgz",
"@sentry/elysia": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-elysia-packed.tgz",
"@sentry/ember": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-ember-packed.tgz",
"@sentry/gatsby": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-gatsby-packed.tgz",
"@sentry/google-cloud-serverless": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-google-cloud-serverless-packed.tgz",
"@sentry/hono": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-hono-packed.tgz",
"@sentry/nestjs": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-nestjs-packed.tgz",
"@sentry/nextjs": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-nextjs-packed.tgz",
"@sentry/node": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-node-packed.tgz",
"@sentry/node-core": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-node-core-packed.tgz",
"@sentry/node-native": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-node-native-packed.tgz",
"@sentry/nuxt": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-nuxt-packed.tgz",
"@sentry/opentelemetry": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-opentelemetry-packed.tgz",
"@sentry/profiling-node": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-profiling-node-packed.tgz",
"@sentry/react": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-react-packed.tgz",
"@sentry/react-router": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-react-router-packed.tgz",
"@sentry/remix": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-remix-packed.tgz",
"@sentry/solid": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-solid-packed.tgz",
"@sentry/solidstart": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-solidstart-packed.tgz",
"@sentry/svelte": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-svelte-packed.tgz",
"@sentry/sveltekit": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-sveltekit-packed.tgz",
"@sentry/tanstackstart": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-tanstackstart-packed.tgz",
"@sentry/tanstackstart-react": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-tanstackstart-react-packed.tgz",
"@sentry/types": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-types-packed.tgz",
"@sentry/vercel-edge": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-vercel-edge-packed.tgz",
"@sentry/vue": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-vue-packed.tgz",
"@sentry/wasm": "file:~/my-app/dev-packages/e2e-tests/packed/sentry-wasm-packed.tgz"
}
}
}
```
then installs this normally with the regular registry.1 parent 617fede commit 215c16e
314 files changed
Lines changed: 677 additions & 2142 deletions
File tree
- .agents/skills/e2e
- .github/workflows
- dev-packages/e2e-tests
- lib
- test-applications
- angular-17
- angular-18
- angular-19
- angular-20
- angular-21
- astro-4
- astro-5-cf-workers
- astro-5
- astro-6-cf-workers
- astro-6
- aws-serverless
- browser-mfe-vite
- apps
- mfe-header
- mfe-one
- shell
- browser-webworker-vite
- cloudflare-hono
- cloudflare-local-workers
- cloudflare-mcp
- cloudflare-workersentrypoint
- cloudflare-workers
- create-react-app
- create-remix-app-express-vite-dev
- create-remix-app-express
- create-remix-app-v2-non-vite
- create-remix-app-v2
- debug-id-sourcemaps
- default-browser
- deno-streamed
- deno
- effect-3-browser
- effect-4-node
- elysia-bun
- elysia-node
- ember-classic
- ember-embroider
- generic-ts3.8
- generic-ts5.0
- hydrogen-react-router-7
- nestjs-11
- nestjs-8
- nestjs-basic-with-graphql
- nestjs-basic
- nestjs-bullmq
- nestjs-distributed-tracing
- nestjs-fastify
- nestjs-graphql
- nestjs-microservices
- nestjs-websockets
- nestjs-with-submodules-decorator
- nestjs-with-submodules
- nextjs-13
- nextjs-14
- nextjs-15-basepath
- nextjs-15-intl
- nextjs-15-t3
- nextjs-15
- nextjs-16-bun
- nextjs-16-cacheComponents
- nextjs-16-cf-workers
- nextjs-16-trailing-slash
- nextjs-16-tunnel
- nextjs-16-userfeedback
- nextjs-16
- nextjs-app-dir
- nextjs-orpc
- nextjs-pages-dir
- nextjs-sourcemaps
- node-connect
- node-core-express-otel-v1-custom-sampler
- node-core-express-otel-v1-sdk-node
- node-core-express-otel-v1
- node-core-express-otel-v2-custom-sampler
- node-core-express-otel-v2-sdk-node
- node-core-express-otel-v2
- node-core-light-express
- node-core-light-otlp
- node-exports-test-app
- node-express-cjs-preload
- node-express-esm-loader
- node-express-esm-preload
- node-express-esm-without-loader
- node-express-incorrect-instrumentation
- node-express-mcp-v2
- node-express-send-to-sentry
- node-express-v5
- node-express
- node-fastify-3
- node-fastify-4
- node-fastify-5
- node-firebase
- firestore-app
- functions
- node-hapi
- node-koa
- node-otel-custom-sampler
- node-otel-sdk-node
- node-otel-without-tracing
- node-otel
- node-profiling-cjs
- node-profiling-electron
- node-profiling-esm
- nuxt-3-dynamic-import
- nuxt-3-min
- nuxt-3-top-level-import
- nuxt-3
- nuxt-4
- nuxt-5
- react-17
- react-19
- react-create-browser-router
- react-create-hash-router
- react-create-memory-router
- react-router-5
- react-router-6-descendant-routes
- react-router-6-use-routes
- react-router-6
- react-router-7-cross-usage
- react-router-7-framework-custom
- react-router-7-framework-instrumentation
- react-router-7-framework-node-20-18
- react-router-7-framework-spa-node-20-18
- react-router-7-framework-spa
- react-router-7-framework
- react-router-7-lazy-routes
- react-router-7-spa
- react-send-to-sentry
- remix-hydrogen
- remix-server-timing
- solid-tanstack-router
- solidstart-dynamic-import
- solidstart-spa
- solidstart-top-level-import
- solidstart
- solid
- supabase-nextjs
- svelte-5
- sveltekit-2-kit-tracing
- sveltekit-2-svelte-5
- sveltekit-2.5.0-twp
- sveltekit-2
- sveltekit-cloudflare-pages
- tanstack-router
- tanstackstart-react
- tsx-express
- vue-3
- vue-tanstack-router
- webpack-4
- webpack-5
- verdaccio-config
- packages/aws-serverless/scripts
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
116 | 116 | | |
117 | 117 | | |
118 | 118 | | |
119 | | - | |
| 119 | + | |
120 | 120 | | |
121 | 121 | | |
122 | 122 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
961 | 961 | | |
962 | 962 | | |
963 | 963 | | |
964 | | - | |
965 | | - | |
| 964 | + | |
| 965 | + | |
966 | 966 | | |
967 | 967 | | |
968 | | - | |
969 | | - | |
| 968 | + | |
| 969 | + | |
970 | 970 | | |
971 | 971 | | |
972 | 972 | | |
973 | 973 | | |
974 | 974 | | |
975 | 975 | | |
| 976 | + | |
| 977 | + | |
| 978 | + | |
| 979 | + | |
| 980 | + | |
| 981 | + | |
976 | 982 | | |
977 | 983 | | |
978 | 984 | | |
| |||
1071 | 1077 | | |
1072 | 1078 | | |
1073 | 1079 | | |
1074 | | - | |
1075 | | - | |
| 1080 | + | |
| 1081 | + | |
1076 | 1082 | | |
1077 | 1083 | | |
1078 | | - | |
1079 | | - | |
| 1084 | + | |
| 1085 | + | |
1080 | 1086 | | |
1081 | 1087 | | |
1082 | 1088 | | |
1083 | 1089 | | |
1084 | 1090 | | |
1085 | 1091 | | |
| 1092 | + | |
| 1093 | + | |
| 1094 | + | |
| 1095 | + | |
| 1096 | + | |
| 1097 | + | |
1086 | 1098 | | |
1087 | 1099 | | |
1088 | 1100 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
140 | 140 | | |
141 | 141 | | |
142 | 142 | | |
143 | | - | |
144 | | - | |
| 143 | + | |
| 144 | + | |
145 | 145 | | |
146 | 146 | | |
147 | | - | |
148 | | - | |
| 147 | + | |
| 148 | + | |
149 | 149 | | |
150 | 150 | | |
151 | 151 | | |
152 | 152 | | |
153 | 153 | | |
154 | 154 | | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
155 | 161 | | |
156 | 162 | | |
157 | 163 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | 42 | | |
46 | 43 | | |
47 | 44 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | | - | |
19 | | - | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| |||
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
38 | | - | |
| 38 | + | |
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
| |||
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
48 | | - | |
| 48 | + | |
| 49 | + | |
49 | 50 | | |
50 | | - | |
51 | | - | |
52 | | - | |
53 | | - | |
54 | | - | |
55 | | - | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
56 | 55 | | |
57 | | - | |
58 | | - | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
59 | 59 | | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
60 | 67 | | |
61 | 68 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
0 commit comments