diff --git a/dev-packages/browser-integration-tests/suites/integrations/webWorker/assets/worker.js b/dev-packages/browser-integration-tests/suites/integrations/webWorker/assets/worker.js index 59af46d764e2..8b70a34fc46e 100644 --- a/dev-packages/browser-integration-tests/suites/integrations/webWorker/assets/worker.js +++ b/dev-packages/browser-integration-tests/suites/integrations/webWorker/assets/worker.js @@ -1,14 +1,34 @@ +// This worker manually replicates what Sentry.registerWebWorker() does +// (In real code with a bundler, you'd import and call Sentry.registerWebWorker({ self })) + self._sentryDebugIds = { 'Error at http://sentry-test.io/worker.js': 'worker-debug-id-789', }; +// Send debug IDs self.postMessage({ _sentryMessage: true, _sentryDebugIds: self._sentryDebugIds, }); +// Set up unhandledrejection handler (same as registerWebWorker) +self.addEventListener('unhandledrejection', event => { + self.postMessage({ + _sentryMessage: true, + _sentryWorkerError: { + reason: event.reason, + filename: self.location.href, + }, + }); +}); + self.addEventListener('message', event => { if (event.data.type === 'throw-error') { throw new Error('Worker error for testing'); } + + if (event.data.type === 'throw-rejection') { + // Create an unhandled rejection + Promise.reject(new Error('Worker unhandled rejection')); + } }); diff --git a/dev-packages/browser-integration-tests/suites/integrations/webWorker/init.js b/dev-packages/browser-integration-tests/suites/integrations/webWorker/init.js index aa08cd652418..100b16a2d408 100644 --- a/dev-packages/browser-integration-tests/suites/integrations/webWorker/init.js +++ b/dev-packages/browser-integration-tests/suites/integrations/webWorker/init.js @@ -9,10 +9,17 @@ const worker = new Worker('/worker.js'); Sentry.addIntegration(Sentry.webWorkerIntegration({ worker })); -const btn = document.getElementById('errWorker'); +const btnError = document.getElementById('errWorker'); +const btnRejection = document.getElementById('rejectionWorker'); -btn.addEventListener('click', () => { +btnError.addEventListener('click', () => { worker.postMessage({ type: 'throw-error', }); }); + +btnRejection.addEventListener('click', () => { + worker.postMessage({ + type: 'throw-rejection', + }); +}); diff --git a/dev-packages/browser-integration-tests/suites/integrations/webWorker/template.html b/dev-packages/browser-integration-tests/suites/integrations/webWorker/template.html index 1c36227c5a3d..d1124baa59a9 100644 --- a/dev-packages/browser-integration-tests/suites/integrations/webWorker/template.html +++ b/dev-packages/browser-integration-tests/suites/integrations/webWorker/template.html @@ -5,5 +5,6 @@
+