diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/.gitignore b/dev-packages/e2e-tests/test-applications/sveltekit/.gitignore deleted file mode 100644 index 6635cf554275..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -.DS_Store -node_modules -/build -/.svelte-kit -/package -.env -.env.* -!.env.example -vite.config.js.timestamp-* -vite.config.ts.timestamp-* diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/.npmrc b/dev-packages/e2e-tests/test-applications/sveltekit/.npmrc deleted file mode 100644 index 070f80f05092..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/.npmrc +++ /dev/null @@ -1,2 +0,0 @@ -@sentry:registry=http://127.0.0.1:4873 -@sentry-internal:registry=http://127.0.0.1:4873 diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/README.md b/dev-packages/e2e-tests/test-applications/sveltekit/README.md deleted file mode 100644 index 7c0d9fbb26ab..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# create-svelte - -Everything you need to build a Svelte project, powered by -[`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte). - -## Creating a project - -If you're seeing this, you've probably already done this step. Congrats! - -```bash -# create a new project in the current directory -npm create svelte@latest - -# create a new project in my-app -npm create svelte@latest my-app -``` - -## Developing - -Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a -development server: - -```bash -npm run dev - -# or start the server and open the app in a new browser tab -npm run dev -- --open -``` - -## Building - -To create a production version of your app: - -```bash -npm run build -``` - -You can preview the production build with `npm run preview`. - -> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target -> environment. diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/package.json b/dev-packages/e2e-tests/test-applications/sveltekit/package.json deleted file mode 100644 index 369e1715adcb..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "sveltekit", - "version": "0.0.1", - "private": true, - "scripts": { - "dev": "vite dev", - "build": "vite build", - "preview": "vite preview", - "clean": "npx rimraf node_modules pnpm-lock.yaml", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "test:prod": "TEST_ENV=production playwright test", - "test:build": "pnpm install && pnpm build", - "test:assert": "pnpm test:prod" - }, - "dependencies": { - "@sentry/sveltekit": "latest || *" - }, - "devDependencies": { - "@playwright/test": "^1.44.1", - "@sentry-internal/test-utils": "link:../../../test-utils", - "@sentry/core": "latest || *", - "@sveltejs/adapter-auto": "^2.0.0", - "@sveltejs/adapter-node": "^1.2.4", - "@sveltejs/kit": "1.20.5", - "svelte": "^3.54.0", - "svelte-check": "^3.0.1", - "typescript": "^5.0.0", - "vite": "^4.5.2" - }, - "type": "module" -} diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/playwright.config.mjs b/dev-packages/e2e-tests/test-applications/sveltekit/playwright.config.mjs deleted file mode 100644 index 222c54f87389..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/playwright.config.mjs +++ /dev/null @@ -1,14 +0,0 @@ -import { getPlaywrightConfig } from '@sentry-internal/test-utils'; - -const testEnv = process.env.TEST_ENV; - -if (!testEnv) { - throw new Error('No test env defined'); -} - -const config = getPlaywrightConfig({ - startCommand: testEnv === 'development' ? `pnpm dev --port 3030` : `pnpm preview --port 3030`, - port: 3030, -}); - -export default config; diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/app.html b/dev-packages/e2e-tests/test-applications/sveltekit/src/app.html deleted file mode 100644 index 435cf39f2268..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/app.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - %sveltekit.head% - - -
%sveltekit.body%
- - diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/hooks.client.ts b/dev-packages/e2e-tests/test-applications/sveltekit/src/hooks.client.ts deleted file mode 100644 index b174e9671b8d..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/hooks.client.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { env } from '$env/dynamic/public'; -import * as Sentry from '@sentry/sveltekit'; - -Sentry.init({ - environment: 'qa', // dynamic sampling bias to keep transactions - dsn: env.PUBLIC_E2E_TEST_DSN, - debug: !!env.PUBLIC_DEBUG, - tunnel: `http://localhost:3031/`, // proxy server - tracesSampleRate: 1.0, -}); - -const myErrorHandler = ({ error, event }: any) => { - console.error('An error occurred on the client side:', error, event); -}; - -export const handleError = Sentry.handleErrorWithSentry(myErrorHandler); diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/hooks.server.ts b/dev-packages/e2e-tests/test-applications/sveltekit/src/hooks.server.ts deleted file mode 100644 index aca7e1b75139..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/hooks.server.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { env } from '$env/dynamic/private'; -import * as Sentry from '@sentry/sveltekit'; - -Sentry.init({ - environment: 'qa', // dynamic sampling bias to keep transactions - dsn: env.E2E_TEST_DSN, - debug: !!process.env.DEBUG, - tunnel: `http://localhost:3031/`, // proxy server - tracesSampleRate: 1.0, -}); - -// not logging anything to console to avoid noise in the test output -const myErrorHandler = ({ error, event }: any) => {}; - -export const handleError = Sentry.handleErrorWithSentry(myErrorHandler); - -export const handle = Sentry.sentryHandle(); diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/+layout.svelte b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/+layout.svelte deleted file mode 100644 index 8b7db6f720bf..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/+layout.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/+page.svelte b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/+page.svelte deleted file mode 100644 index 31f6cb802950..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/+page.svelte +++ /dev/null @@ -1,32 +0,0 @@ -

Welcome to SvelteKit

-

Visit kit.svelte.dev to read the documentation

- - diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/api/users/+server.ts b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/api/users/+server.ts deleted file mode 100644 index d0e4371c594b..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/api/users/+server.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const GET = () => { - return new Response(JSON.stringify({ users: ['alice', 'bob', 'carol'] })); -}; diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/building/+page.server.ts b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/building/+page.server.ts deleted file mode 100644 index b07376ba97c9..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/building/+page.server.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type { PageServerLoad } from './$types'; - -export const load = (async _event => { - return { name: 'building (server)' }; -}) satisfies PageServerLoad; diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/building/+page.svelte b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/building/+page.svelte deleted file mode 100644 index fde274c60705..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/building/+page.svelte +++ /dev/null @@ -1,6 +0,0 @@ -

Check Build

- -

- This route only exists to check that Typescript definitions - and auto instrumentation are working when the project is built. -

diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/building/+page.ts b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/building/+page.ts deleted file mode 100644 index 049acdc1fafa..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/building/+page.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type { PageLoad } from './$types'; - -export const load = (async _event => { - return { name: 'building' }; -}) satisfies PageLoad; diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/client-error/+page.svelte b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/client-error/+page.svelte deleted file mode 100644 index ba6b464e9324..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/client-error/+page.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - -

Client error

- - diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/components/+page.svelte b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/components/+page.svelte deleted file mode 100644 index eff3fa3f2e8d..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/components/+page.svelte +++ /dev/null @@ -1,15 +0,0 @@ - -

Demonstrating Component Tracking

- - - - diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/components/Component1.svelte b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/components/Component1.svelte deleted file mode 100644 index a675711e4b68..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/components/Component1.svelte +++ /dev/null @@ -1,10 +0,0 @@ - -

Howdy, I'm component 1

- - diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/components/Component2.svelte b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/components/Component2.svelte deleted file mode 100644 index 2b2f38308077..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/components/Component2.svelte +++ /dev/null @@ -1,9 +0,0 @@ - -

Howdy, I'm component 2

- - diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/components/Component3.svelte b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/components/Component3.svelte deleted file mode 100644 index 9b4e028f78e7..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/components/Component3.svelte +++ /dev/null @@ -1,6 +0,0 @@ - - -

Howdy, I'm component 3

diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/server-load-error/+page.server.ts b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/server-load-error/+page.server.ts deleted file mode 100644 index 17dd53fb5bbb..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/server-load-error/+page.server.ts +++ /dev/null @@ -1,6 +0,0 @@ -export const load = async () => { - throw new Error('Server Load Error'); - return { - msg: 'Hello World', - }; -}; diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/server-load-error/+page.svelte b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/server-load-error/+page.svelte deleted file mode 100644 index 3a0942971d06..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/server-load-error/+page.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - -

Server load error

- -

- Message: {data.msg} -

diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/server-load-fetch/+page.server.ts b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/server-load-fetch/+page.server.ts deleted file mode 100644 index 709e52bcf351..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/server-load-fetch/+page.server.ts +++ /dev/null @@ -1,5 +0,0 @@ -export const load = async ({ fetch }) => { - const res = await fetch('/api/users'); - const data = await res.json(); - return { data }; -}; diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/server-load-fetch/+page.svelte b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/server-load-fetch/+page.svelte deleted file mode 100644 index f7f814d31b4d..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/server-load-fetch/+page.svelte +++ /dev/null @@ -1,8 +0,0 @@ - - -
-

Server Load Fetch

-

{JSON.stringify(data, null, 2)}

-
diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/server-route-error/+page.svelte b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/server-route-error/+page.svelte deleted file mode 100644 index 3d682e7e3462..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/server-route-error/+page.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - -

Server Route error

- -

- Message: {data.msg} -

diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/server-route-error/+page.ts b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/server-route-error/+page.ts deleted file mode 100644 index 298240827714..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/server-route-error/+page.ts +++ /dev/null @@ -1,7 +0,0 @@ -export const load = async ({ fetch }) => { - const res = await fetch('/server-route-error'); - const data = await res.json(); - return { - msg: data, - }; -}; diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/server-route-error/+server.ts b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/server-route-error/+server.ts deleted file mode 100644 index f1a4b94b7706..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/server-route-error/+server.ts +++ /dev/null @@ -1,6 +0,0 @@ -export const GET = async () => { - throw new Error('Server Route Error'); - return { - msg: 'Hello World', - }; -}; diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/universal-load-error/+page.svelte b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/universal-load-error/+page.svelte deleted file mode 100644 index dc2d311a0ece..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/universal-load-error/+page.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - -

Universal load error

- -

- To trigger from client: Load on another route, then navigate to this route. -

- -

- To trigger from server: Load on this route -

- -

- Message: {data.msg} -

diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/universal-load-error/+page.ts b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/universal-load-error/+page.ts deleted file mode 100644 index 3d72bf4a890f..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/universal-load-error/+page.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { browser } from '$app/environment'; - -export const load = async () => { - throw new Error(`Universal Load Error (${browser ? 'browser' : 'server'})`); - return { - msg: 'Hello World', - }; -}; diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/universal-load-fetch/+page.svelte b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/universal-load-fetch/+page.svelte deleted file mode 100644 index 563c51e8c850..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/universal-load-fetch/+page.svelte +++ /dev/null @@ -1,14 +0,0 @@ - - -

Fetching in universal load

- -

Here's a list of a few users:

- - diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/universal-load-fetch/+page.ts b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/universal-load-fetch/+page.ts deleted file mode 100644 index 63c1ee68e1cb..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/universal-load-fetch/+page.ts +++ /dev/null @@ -1,5 +0,0 @@ -export const load = async ({ fetch }) => { - const usersRes = await fetch('/api/users'); - const data = await usersRes.json(); - return { users: data.users }; -}; diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/users/+page.server.ts b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/users/+page.server.ts deleted file mode 100644 index a34c5450f682..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/users/+page.server.ts +++ /dev/null @@ -1,5 +0,0 @@ -export const load = async () => { - return { - msg: 'Hi everyone!', - }; -}; diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/users/+page.svelte b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/users/+page.svelte deleted file mode 100644 index aa804a4518fa..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/users/+page.svelte +++ /dev/null @@ -1,10 +0,0 @@ - -

- All Users: -

- -

- message: {data.msg} -

diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/users/[id]/+page.server.ts b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/users/[id]/+page.server.ts deleted file mode 100644 index 9388f3927018..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/users/[id]/+page.server.ts +++ /dev/null @@ -1,5 +0,0 @@ -export const load = async ({ params }) => { - return { - msg: `This is a special message for user ${params.id}`, - }; -}; diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/users/[id]/+page.svelte b/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/users/[id]/+page.svelte deleted file mode 100644 index d348a8c57dad..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/src/routes/users/[id]/+page.svelte +++ /dev/null @@ -1,14 +0,0 @@ - - -

Route with dynamic params

- -

- User id: {$page.params.id} -

- -

- Secret message for user: {data.msg} -

diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/start-event-proxy.mjs b/dev-packages/e2e-tests/test-applications/sveltekit/start-event-proxy.mjs deleted file mode 100644 index db60ac582eb7..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/start-event-proxy.mjs +++ /dev/null @@ -1,6 +0,0 @@ -import { startEventProxyServer } from '@sentry-internal/test-utils'; - -startEventProxyServer({ - port: 3031, - proxyServerName: 'sveltekit', -}); diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/static/favicon.png b/dev-packages/e2e-tests/test-applications/sveltekit/static/favicon.png deleted file mode 100644 index 825b9e65af7c..000000000000 Binary files a/dev-packages/e2e-tests/test-applications/sveltekit/static/favicon.png and /dev/null differ diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/svelte.config.js b/dev-packages/e2e-tests/test-applications/sveltekit/svelte.config.js deleted file mode 100644 index ba3eb7ca4745..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/svelte.config.js +++ /dev/null @@ -1,18 +0,0 @@ -import adapter from '@sveltejs/adapter-node'; -import { vitePreprocess } from '@sveltejs/kit/vite'; - -/** @type {import('@sveltejs/kit').Config} */ -const config = { - // Consult https://kit.svelte.dev/docs/integrations#preprocessors - // for more information about preprocessors - preprocess: vitePreprocess(), - - kit: { - // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. - // If your environment is not supported or you settled on a specific environment, switch out the adapter. - // See https://kit.svelte.dev/docs/adapters for more information about adapters. - adapter: adapter(), - }, -}; - -export default config; diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/tests/errors.client.test.ts b/dev-packages/e2e-tests/test-applications/sveltekit/tests/errors.client.test.ts deleted file mode 100644 index 2676a690a517..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/tests/errors.client.test.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { expect, test } from '@playwright/test'; -import { waitForError } from '@sentry-internal/test-utils'; -import { waitForInitialPageload } from '../utils'; - -test.describe('client-side errors', () => { - test('captures error thrown on click', async ({ page }) => { - await waitForInitialPageload(page, { route: '/client-error' }); - - const errorEventPromise = waitForError('sveltekit', errorEvent => { - return errorEvent?.exception?.values?.[0]?.value === 'Click Error'; - }); - - await page.getByText('Throw error').click(); - - await expect(errorEventPromise).resolves.toBeDefined(); - - const errorEvent = await errorEventPromise; - - const errorEventFrames = errorEvent.exception?.values?.[0]?.stacktrace?.frames; - - expect(errorEventFrames?.[errorEventFrames?.length - 1]).toEqual( - expect.objectContaining({ - function: expect.stringContaining('HTMLButtonElement'), - lineno: 1, - in_app: true, - }), - ); - }); - - test('captures universal load error', async ({ page }) => { - await waitForInitialPageload(page); - await page.reload(); - - const errorEventPromise = waitForError('sveltekit', errorEvent => { - return errorEvent?.exception?.values?.[0]?.value === 'Universal Load Error (browser)'; - }); - - // navigating triggers the error on the client - await page.getByText('Universal Load error').click(); - - const errorEvent = await errorEventPromise; - const errorEventFrames = errorEvent.exception?.values?.[0]?.stacktrace?.frames; - - expect(errorEventFrames?.[errorEventFrames?.length - 1]).toEqual( - expect.objectContaining({ - lineno: 1, - in_app: true, - }), - ); - }); -}); diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/tests/errors.server.test.ts b/dev-packages/e2e-tests/test-applications/sveltekit/tests/errors.server.test.ts deleted file mode 100644 index fbf8cf6e673a..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/tests/errors.server.test.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { expect, test } from '@playwright/test'; -import { waitForError } from '@sentry-internal/test-utils'; - -test.describe('server-side errors', () => { - test('captures universal load error', async ({ page }) => { - const errorEventPromise = waitForError('sveltekit', errorEvent => { - return errorEvent?.exception?.values?.[0]?.value === 'Universal Load Error (server)'; - }); - - await page.goto('/universal-load-error'); - - const errorEvent = await errorEventPromise; - const errorEventFrames = errorEvent.exception?.values?.[0]?.stacktrace?.frames; - - expect(errorEventFrames?.[errorEventFrames?.length - 1]).toEqual( - expect.objectContaining({ - function: 'load$1', - lineno: 3, - in_app: true, - }), - ); - - expect(errorEvent.request).toEqual({ - cookies: {}, - headers: expect.objectContaining({ - accept: expect.any(String), - 'user-agent': expect.any(String), - }), - method: 'GET', - url: 'http://localhost:3030/universal-load-error', - }); - }); - - test('captures server load error', async ({ page }) => { - const errorEventPromise = waitForError('sveltekit', errorEvent => { - return errorEvent?.exception?.values?.[0]?.value === 'Server Load Error'; - }); - - await page.goto('/server-load-error'); - - const errorEvent = await errorEventPromise; - const errorEventFrames = errorEvent.exception?.values?.[0]?.stacktrace?.frames; - - expect(errorEventFrames?.[errorEventFrames?.length - 1]).toEqual( - expect.objectContaining({ - function: 'load$1', - lineno: 3, - in_app: true, - }), - ); - - expect(errorEvent.request).toEqual({ - cookies: {}, - headers: expect.objectContaining({ - accept: expect.any(String), - 'user-agent': expect.any(String), - }), - method: 'GET', - url: 'http://localhost:3030/server-load-error', - }); - }); - - test('captures server route (GET) error', async ({ page }) => { - const errorEventPromise = waitForError('sveltekit', errorEvent => { - return errorEvent?.exception?.values?.[0]?.value === 'Server Route Error'; - }); - - await page.goto('/server-route-error'); - - const errorEvent = await errorEventPromise; - const errorEventFrames = errorEvent.exception?.values?.[0]?.stacktrace?.frames; - - expect(errorEventFrames?.[errorEventFrames?.length - 1]).toEqual( - expect.objectContaining({ - filename: 'app:///_server.ts.js', - function: 'GET', - lineno: 2, - in_app: true, - }), - ); - - expect(errorEvent.transaction).toEqual('GET /server-route-error'); - - expect(errorEvent.request).toEqual({ - cookies: {}, - headers: expect.objectContaining({ - accept: expect.any(String), - }), - method: 'GET', - url: 'http://localhost:3030/server-route-error', - }); - }); -}); diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/tests/performance.client.test.ts b/dev-packages/e2e-tests/test-applications/sveltekit/tests/performance.client.test.ts deleted file mode 100644 index 33515a950d3c..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/tests/performance.client.test.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { expect, test } from '@playwright/test'; -import { waitForTransaction } from '@sentry-internal/test-utils'; -import { waitForInitialPageload } from '../utils.js'; - -test('records manually added component tracking spans', async ({ page }) => { - const componentTxnEventPromise = waitForTransaction('sveltekit', txnEvent => { - return txnEvent?.transaction === '/components'; - }); - - await waitForInitialPageload(page); - - await page.getByText('Component Tracking').click(); - - const componentTxnEvent = await componentTxnEventPromise; - - expect(componentTxnEvent.spans).toEqual( - expect.arrayContaining([ - expect.objectContaining({ - data: { 'sentry.op': 'ui.svelte.init', 'sentry.origin': 'auto.ui.svelte' }, - description: '', - op: 'ui.svelte.init', - origin: 'auto.ui.svelte', - }), - expect.objectContaining({ - data: { 'sentry.op': 'ui.svelte.init', 'sentry.origin': 'auto.ui.svelte' }, - description: '', - op: 'ui.svelte.init', - origin: 'auto.ui.svelte', - }), - expect.objectContaining({ - data: { 'sentry.op': 'ui.svelte.init', 'sentry.origin': 'auto.ui.svelte' }, - description: '', - op: 'ui.svelte.init', - origin: 'auto.ui.svelte', - }), - expect.objectContaining({ - data: { 'sentry.op': 'ui.svelte.init', 'sentry.origin': 'auto.ui.svelte' }, - description: '', - op: 'ui.svelte.init', - origin: 'auto.ui.svelte', - }), - expect.objectContaining({ - data: { 'sentry.op': 'ui.svelte.update', 'sentry.origin': 'auto.ui.svelte' }, - description: '', - op: 'ui.svelte.update', - origin: 'auto.ui.svelte', - }), - expect.objectContaining({ - data: { 'sentry.op': 'ui.svelte.update', 'sentry.origin': 'auto.ui.svelte' }, - description: '', - op: 'ui.svelte.update', - origin: 'auto.ui.svelte', - }), - expect.objectContaining({ - data: { 'sentry.op': 'ui.svelte.update', 'sentry.origin': 'auto.ui.svelte' }, - description: '', - op: 'ui.svelte.update', - origin: 'auto.ui.svelte', - }), - expect.objectContaining({ - data: { 'sentry.op': 'ui.svelte.update', 'sentry.origin': 'auto.ui.svelte' }, - description: '', - op: 'ui.svelte.update', - origin: 'auto.ui.svelte', - }), - ]), - ); -}); diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/tests/performance.server.test.ts b/dev-packages/e2e-tests/test-applications/sveltekit/tests/performance.server.test.ts deleted file mode 100644 index 5c3fd61e5467..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/tests/performance.server.test.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { expect, test } from '@playwright/test'; -import { waitForTransaction } from '@sentry-internal/test-utils'; - -test('server pageload request span has nested request span for sub request', async ({ page }) => { - const serverTxnEventPromise = waitForTransaction('sveltekit', txnEvent => { - return txnEvent?.transaction === 'GET /server-load-fetch'; - }); - - await page.goto('/server-load-fetch'); - - const serverTxnEvent = await serverTxnEventPromise; - const spans = serverTxnEvent.spans; - - expect(serverTxnEvent).toMatchObject({ - transaction: 'GET /server-load-fetch', - transaction_info: { source: 'route' }, - type: 'transaction', - contexts: { - trace: { - op: 'http.server', - origin: 'auto.http.sveltekit', - }, - }, - }); - - expect(spans).toEqual( - expect.arrayContaining([ - // load span where the server load function initiates the sub request: - expect.objectContaining({ op: 'function.sveltekit.server.load', description: '/server-load-fetch' }), - // sub request span: - expect.objectContaining({ op: 'http.server', description: 'GET /api/users' }), - ]), - ); - - expect(serverTxnEvent.request).toEqual({ - cookies: {}, - headers: expect.objectContaining({ - accept: expect.any(String), - 'user-agent': expect.any(String), - }), - method: 'GET', - url: 'http://localhost:3030/server-load-fetch', - }); -}); diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/tests/performance.test.ts b/dev-packages/e2e-tests/test-applications/sveltekit/tests/performance.test.ts deleted file mode 100644 index c452e1d48cb3..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/tests/performance.test.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { expect, test } from '@playwright/test'; -import { waitForTransaction } from '@sentry-internal/test-utils'; -import { waitForInitialPageload } from '../utils.js'; - -test('sends a pageload transaction', async ({ page }) => { - const pageloadTransactionEventPromise = waitForTransaction('sveltekit', (transactionEvent: any) => { - return transactionEvent?.contexts?.trace?.op === 'pageload' && transactionEvent?.transaction === '/'; - }); - - await page.goto('/'); - - const transactionEvent = await pageloadTransactionEventPromise; - - expect(transactionEvent).toMatchObject({ - transaction: '/', - transaction_info: { - source: 'route', - }, - contexts: { - trace: { - op: 'pageload', - origin: 'auto.pageload.sveltekit', - }, - }, - }); -}); - -test('captures a distributed pageload trace', async ({ page }) => { - const clientTxnEventPromise = waitForTransaction('sveltekit', txnEvent => { - return txnEvent?.transaction === '/users/[id]'; - }); - - const serverTxnEventPromise = waitForTransaction('sveltekit', txnEvent => { - return txnEvent?.transaction === 'GET /users/[id]'; - }); - - await page.goto('/users/123xyz'); - - const [clientTxnEvent, serverTxnEvent] = await Promise.all([clientTxnEventPromise, serverTxnEventPromise]); - - expect(clientTxnEvent).toMatchObject({ - transaction: '/users/[id]', - transaction_info: { source: 'route' }, - type: 'transaction', - contexts: { - trace: { - op: 'pageload', - origin: 'auto.pageload.sveltekit', - }, - }, - }); - - expect(serverTxnEvent).toMatchObject({ - transaction: 'GET /users/[id]', - transaction_info: { source: 'route' }, - type: 'transaction', - contexts: { - trace: { - op: 'http.server', - origin: 'auto.http.sveltekit', - }, - }, - }); - // connected trace - expect(clientTxnEvent.contexts?.trace?.trace_id).toBe(serverTxnEvent.contexts?.trace?.trace_id); - - // weird but server txn is parent of client txn - expect(clientTxnEvent.contexts?.trace?.parent_span_id).toBe(serverTxnEvent.contexts?.trace?.span_id); -}); - -test('captures a distributed navigation trace', async ({ page }) => { - const clientNavigationTxnEventPromise = waitForTransaction('sveltekit', txnEvent => { - return txnEvent?.transaction === '/users/[id]'; - }); - - const serverTxnEventPromise = waitForTransaction('sveltekit', txnEvent => { - return txnEvent?.transaction === 'GET /users/[id]'; - }); - - await waitForInitialPageload(page); - - // navigation to page - const clickPromise = page.getByText('Route with Params').click(); - - const [clientTxnEvent, serverTxnEvent, _1] = await Promise.all([ - clientNavigationTxnEventPromise, - serverTxnEventPromise, - clickPromise, - ]); - - expect(clientTxnEvent).toMatchObject({ - transaction: '/users/[id]', - transaction_info: { source: 'route' }, - type: 'transaction', - contexts: { - trace: { - op: 'navigation', - origin: 'auto.navigation.sveltekit', - }, - }, - }); - - expect(serverTxnEvent).toMatchObject({ - transaction: 'GET /users/[id]', - transaction_info: { source: 'route' }, - type: 'transaction', - contexts: { - trace: { - op: 'http.server', - origin: 'auto.http.sveltekit', - }, - }, - }); - - // trace is connected - expect(clientTxnEvent.contexts?.trace?.trace_id).toBe(serverTxnEvent.contexts?.trace?.trace_id); -}); diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/tsconfig.json b/dev-packages/e2e-tests/test-applications/sveltekit/tsconfig.json deleted file mode 100644 index 115dd34bec96..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - "allowJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true, - "allowImportingTsExtensions": true - } - // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias - // - // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes - // from the referenced tsconfig.json - TypeScript does not merge them in -} diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/utils.ts b/dev-packages/e2e-tests/test-applications/sveltekit/utils.ts deleted file mode 100644 index 320d41aba389..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/utils.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { Page } from '@playwright/test'; -import { waitForTransaction } from '@sentry-internal/test-utils'; - -/** - * Helper function that waits for the initial pageload to complete. - * - * This function - * - loads the given route ("/" by default) - * - waits for SvelteKit's hydration - * - waits for the pageload transaction to be sent (doesn't assert on it though) - * - * Useful for tests that test outcomes of _navigations_ after an initial pageload. - * Waiting on the pageload transaction excludes edge cases where navigations occur - * so quickly that the pageload idle transaction is still active. This might lead - * to cases where the routing span would be attached to the pageload transaction - * and hence eliminates a lot of flakiness. - * - */ -export async function waitForInitialPageload( - page: Page, - opts?: { route?: string; parameterizedRoute?: string; debug?: boolean }, -) { - const route = opts?.route ?? '/'; - const txnName = opts?.parameterizedRoute ?? route; - const debug = opts?.debug ?? false; - - const clientPageloadTxnEventPromise = waitForTransaction('sveltekit', txnEvent => { - debug && - console.log({ - txn: txnEvent?.transaction, - op: txnEvent.contexts?.trace?.op, - trace: txnEvent.contexts?.trace?.trace_id, - span: txnEvent.contexts?.trace?.span_id, - parent: txnEvent.contexts?.trace?.parent_span_id, - }); - - return txnEvent?.transaction === txnName && txnEvent.contexts?.trace?.op === 'pageload'; - }); - - await Promise.all([ - page.goto(route), - // the test app adds the "hydrated" class to the body when hydrating - page.waitForSelector('body.hydrated'), - // also waiting for the initial pageload txn so that later navigations don't interfere - clientPageloadTxnEventPromise, - ]); - - // let's add a buffer because it seems like the hydrated flag isn't enough :( - // guess: The layout finishes hydration/mounting before the components within finish - // await page.waitForTimeout(10_000); - - debug && console.log('hydrated'); -} diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/vite.config.js b/dev-packages/e2e-tests/test-applications/sveltekit/vite.config.js deleted file mode 100644 index 1a410bee7e11..000000000000 --- a/dev-packages/e2e-tests/test-applications/sveltekit/vite.config.js +++ /dev/null @@ -1,12 +0,0 @@ -import { sentrySvelteKit } from '@sentry/sveltekit'; -import { sveltekit } from '@sveltejs/kit/vite'; -import { defineConfig } from 'vite'; - -export default defineConfig({ - plugins: [ - sentrySvelteKit({ - autoUploadSourceMaps: false, - }), - sveltekit(), - ], -}); diff --git a/packages/sveltekit/package.json b/packages/sveltekit/package.json index d5f79f099aed..caf46d50b3d7 100644 --- a/packages/sveltekit/package.json +++ b/packages/sveltekit/package.json @@ -31,7 +31,7 @@ "access": "public" }, "peerDependencies": { - "@sveltejs/kit": "1.x || 2.x", + "@sveltejs/kit": "2.x", "vite": "*" }, "peerDependenciesMeta": {