diff --git a/dev-packages/e2e-tests/test-applications/nuxt-3/pages/client-error.vue b/dev-packages/e2e-tests/test-applications/nuxt-3/pages/client-error.vue
index 5e1a14931f84..ea353639a3f4 100644
--- a/dev-packages/e2e-tests/test-applications/nuxt-3/pages/client-error.vue
+++ b/dev-packages/e2e-tests/test-applications/nuxt-3/pages/client-error.vue
@@ -1,11 +1,16 @@
-
-
-
+
+
+
+
diff --git a/dev-packages/e2e-tests/test-applications/nuxt-3/tests/errors.client.test.ts b/dev-packages/e2e-tests/test-applications/nuxt-3/tests/errors.client.test.ts
index 4cb23e8b81df..a04ebf73f08d 100644
--- a/dev-packages/e2e-tests/test-applications/nuxt-3/tests/errors.client.test.ts
+++ b/dev-packages/e2e-tests/test-applications/nuxt-3/tests/errors.client.test.ts
@@ -28,6 +28,47 @@ test.describe('client-side errors', async () => {
});
});
+ test('captures error thrown in NuxtErrorBoundary', async ({ page }) => {
+ const errorPromise = waitForError('nuxt-3', async errorEvent => {
+ return errorEvent?.exception?.values?.[0]?.value === 'Error thrown in Error Boundary';
+ });
+
+ await page.goto(`/client-error`);
+ await page.locator('#error-in-error-boundary').click();
+
+ const error = await errorPromise;
+
+ const expectedBreadcrumb = {
+ category: 'console',
+ message: 'Additional functionality in NuxtErrorBoundary',
+ };
+
+ const matchingBreadcrumb = error.breadcrumbs.find(
+ (breadcrumb: { category: string; message: string }) =>
+ breadcrumb.category === expectedBreadcrumb.category && breadcrumb.message === expectedBreadcrumb.message,
+ );
+
+ expect(matchingBreadcrumb).toBeTruthy();
+ expect(matchingBreadcrumb?.category).toBe(expectedBreadcrumb.category);
+ expect(matchingBreadcrumb?.message).toBe(expectedBreadcrumb.message);
+
+ expect(error.transaction).toEqual('/client-error');
+ expect(error.sdk.name).toEqual('sentry.javascript.nuxt');
+ expect(error).toMatchObject({
+ exception: {
+ values: [
+ {
+ type: 'Error',
+ value: 'Error thrown in Error Boundary',
+ mechanism: {
+ handled: false,
+ },
+ },
+ ],
+ },
+ });
+ });
+
test('shows parametrized route on button error', async ({ page }) => {
const errorPromise = waitForError('nuxt-3', async errorEvent => {
return errorEvent?.exception?.values?.[0]?.value === 'Error thrown from Param Route Button';
diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/app/pages/client-error.vue b/dev-packages/e2e-tests/test-applications/nuxt-4/app/pages/client-error.vue
index c2bdabfb4752..9ec99d1e7471 100644
--- a/dev-packages/e2e-tests/test-applications/nuxt-4/app/pages/client-error.vue
+++ b/dev-packages/e2e-tests/test-applications/nuxt-4/app/pages/client-error.vue
@@ -1,11 +1,16 @@
-
-
-
+
+
+
+
diff --git a/dev-packages/e2e-tests/test-applications/nuxt-4/tests/errors.client.test.ts b/dev-packages/e2e-tests/test-applications/nuxt-4/tests/errors.client.test.ts
index c887e255fe57..6694ae851df1 100644
--- a/dev-packages/e2e-tests/test-applications/nuxt-4/tests/errors.client.test.ts
+++ b/dev-packages/e2e-tests/test-applications/nuxt-4/tests/errors.client.test.ts
@@ -28,6 +28,47 @@ test.describe('client-side errors', async () => {
});
});
+ test('captures error thrown in NuxtErrorBoundary', async ({ page }) => {
+ const errorPromise = waitForError('nuxt-4', async errorEvent => {
+ return errorEvent?.exception?.values?.[0]?.value === 'Error thrown in Error Boundary';
+ });
+
+ await page.goto(`/client-error`);
+ await page.locator('#error-in-error-boundary').click();
+
+ const error = await errorPromise;
+
+ const expectedBreadcrumb = {
+ category: 'console',
+ message: 'Additional functionality in NuxtErrorBoundary',
+ };
+
+ const matchingBreadcrumb = error.breadcrumbs.find(
+ (breadcrumb: { category: string; message: string }) =>
+ breadcrumb.category === expectedBreadcrumb.category && breadcrumb.message === expectedBreadcrumb.message,
+ );
+
+ expect(matchingBreadcrumb).toBeTruthy();
+ expect(matchingBreadcrumb?.category).toBe(expectedBreadcrumb.category);
+ expect(matchingBreadcrumb?.message).toBe(expectedBreadcrumb.message);
+
+ expect(error.transaction).toEqual('/client-error');
+ expect(error.sdk.name).toEqual('sentry.javascript.nuxt');
+ expect(error).toMatchObject({
+ exception: {
+ values: [
+ {
+ type: 'Error',
+ value: 'Error thrown in Error Boundary',
+ mechanism: {
+ handled: false,
+ },
+ },
+ ],
+ },
+ });
+ });
+
test('shows parametrized route on button error', async ({ page }) => {
const errorPromise = waitForError('nuxt-4', async errorEvent => {
return errorEvent?.exception?.values?.[0]?.value === 'Error thrown from Param Route Button';