diff --git a/packages/integration-tests/suites/public-api/showReportDialog/init.js b/packages/integration-tests/suites/public-api/showReportDialog/init.js new file mode 100644 index 000000000000..d8c94f36fdd0 --- /dev/null +++ b/packages/integration-tests/suites/public-api/showReportDialog/init.js @@ -0,0 +1,7 @@ +import * as Sentry from '@sentry/browser'; + +window.Sentry = Sentry; + +Sentry.init({ + dsn: 'https://public@dsn.ingest.sentry.io/1337', +}); diff --git a/packages/integration-tests/suites/public-api/showReportDialog/inject-script/subject.js b/packages/integration-tests/suites/public-api/showReportDialog/inject-script/subject.js new file mode 100644 index 000000000000..a7f9e5b6e445 --- /dev/null +++ b/packages/integration-tests/suites/public-api/showReportDialog/inject-script/subject.js @@ -0,0 +1,19 @@ +Sentry.showReportDialog({ + eventId: 'test_id', + user: { + email: 'foo@bar.sentry.io', + name: 'test', + }, + lang: 'en-nz', + title: 'test_title', + subtitle: 'test_subtitle', + subtitle2: 'test_subtitle2', + labelName: 'test_label_name', + labelEmail: 'test_label_email', + labelComments: 'test_label_comments', + labelClose: 'test_label_close', + labelSubmit: 'test_label_submit', + errorGeneric: 'test_error_generic', + errorFormEntry: 'test_error_form_entry', + successMessage: 'test_success_message', +}); diff --git a/packages/integration-tests/suites/public-api/showReportDialog/inject-script/test.ts b/packages/integration-tests/suites/public-api/showReportDialog/inject-script/test.ts new file mode 100644 index 000000000000..e0db0d21cf53 --- /dev/null +++ b/packages/integration-tests/suites/public-api/showReportDialog/inject-script/test.ts @@ -0,0 +1,35 @@ +import { expect } from '@playwright/test'; + +import { sentryTest } from '../../../../utils/fixtures'; + +sentryTest('should inject dialog script into with correct attributes', async ({ getLocalTestPath, page }) => { + const url = await getLocalTestPath({ testDir: __dirname }); + + const dialogScriptSelector = 'head > script[src^="https://dsn.ingest.sentry.io/api/embed/error-page"]'; + + await page.goto(url); + const dialogScript = await page.waitForSelector(dialogScriptSelector, { state: 'attached' }); + const dialogScriptSrc = await dialogScript.getAttribute('src'); + + expect(dialogScriptSrc?.startsWith('https://dsn.ingest.sentry.io/api/embed/error-page/?')).toBe(true); + // After `?` is searchParams. + + const searchParams = new URLSearchParams(new URL(dialogScriptSrc || '').searchParams); + + expect(searchParams.get('dsn')).toBe('https://public@dsn.ingest.sentry.io/1337'); + expect(searchParams.get('eventId')).toBe('test_id'); + expect(searchParams.get('name')).toBe('test'); + expect(searchParams.get('email')).toBe('foo@bar.sentry.io'); + expect(searchParams.get('lang')).toBe('en-nz'); + expect(searchParams.get('title')).toBe('test_title'); + expect(searchParams.get('subtitle')).toBe('test_subtitle'); + expect(searchParams.get('subtitle2')).toBe('test_subtitle2'); + expect(searchParams.get('labelName')).toBe('test_label_name'); + expect(searchParams.get('labelEmail')).toBe('test_label_email'); + expect(searchParams.get('labelComments')).toBe('test_label_comments'); + expect(searchParams.get('labelClose')).toBe('test_label_close'); + expect(searchParams.get('labelSubmit')).toBe('test_label_submit'); + expect(searchParams.get('errorGeneric')).toBe('test_error_generic'); + expect(searchParams.get('errorFormEntry')).toBe('test_error_form_entry'); + expect(searchParams.get('successMessage')).toBe('test_success_message'); +}); diff --git a/packages/integration-tests/suites/public-api/showReportDialog/template.hbs b/packages/integration-tests/suites/public-api/showReportDialog/template.hbs new file mode 100644 index 000000000000..a28a09b7b485 --- /dev/null +++ b/packages/integration-tests/suites/public-api/showReportDialog/template.hbs @@ -0,0 +1,11 @@ + + + + + + + + + + +