diff --git a/packages/nextjs/src/index.server.ts b/packages/nextjs/src/index.server.ts index f572583edb2e..e2a77553c53d 100644 --- a/packages/nextjs/src/index.server.ts +++ b/packages/nextjs/src/index.server.ts @@ -15,7 +15,7 @@ export * from '@sentry/node'; // Here we want to make sure to only include what doesn't have browser specifics // because or SSR of next.js we can only use this. -export { ErrorBoundary, withErrorBoundary } from '@sentry/react'; +export { ErrorBoundary, showReportDialog, withErrorBoundary } from '@sentry/react'; type GlobalWithDistDir = typeof global & { __rewriteFramesDistDir__: string }; const domain = domainModule as typeof domainModule & { active: (domainModule.Domain & Carrier) | null }; diff --git a/packages/nextjs/test/integration/pages/reportDialog.tsx b/packages/nextjs/test/integration/pages/reportDialog.tsx new file mode 100644 index 000000000000..b3337c0ee389 --- /dev/null +++ b/packages/nextjs/test/integration/pages/reportDialog.tsx @@ -0,0 +1,13 @@ +import { showReportDialog } from '@sentry/nextjs'; + +const ReportDialogPage = (): JSX.Element => ( + +); + +export default ReportDialogPage; diff --git a/packages/nextjs/test/integration/test/client/reportDialog.js b/packages/nextjs/test/integration/test/client/reportDialog.js new file mode 100644 index 000000000000..f2926cecd303 --- /dev/null +++ b/packages/nextjs/test/integration/test/client/reportDialog.js @@ -0,0 +1,14 @@ +const assert = require('assert'); + +module.exports = async ({ page, url }) => { + await page.goto(`${url}/reportDialog`); + + await page.click('button'); + + const dialogScriptSelector = 'head > script[src^="https://dsn.ingest.sentry.io/api/embed/error-page"]'; + + const dialogScript = await page.waitForSelector(dialogScriptSelector, { state: 'attached' }); + const dialogScriptSrc = await (await dialogScript.getProperty('src')).jsonValue(); + + assert(dialogScriptSrc.startsWith('https://dsn.ingest.sentry.io/api/embed/error-page/?')); +};