diff --git a/dev-packages/browser-integration-tests/suites/sessions/initial-scope/init.js b/dev-packages/browser-integration-tests/suites/sessions/initial-scope/init.js index fc0eb65be166..2be1d55b5782 100644 --- a/dev-packages/browser-integration-tests/suites/sessions/initial-scope/init.js +++ b/dev-packages/browser-integration-tests/suites/sessions/initial-scope/init.js @@ -5,6 +5,7 @@ window.Sentry = Sentry; Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', release: '0.1', + integrations: [Sentry.browserSessionIntegration({ lifecycle: 'route' })], initialScope: { user: { id: '1337', diff --git a/dev-packages/browser-integration-tests/suites/sessions/page-lifecycle/init.js b/dev-packages/browser-integration-tests/suites/sessions/page-lifecycle/init.js index 6452dbf515f9..af2df91a7ceb 100644 --- a/dev-packages/browser-integration-tests/suites/sessions/page-lifecycle/init.js +++ b/dev-packages/browser-integration-tests/suites/sessions/page-lifecycle/init.js @@ -5,5 +5,4 @@ window.Sentry = Sentry; Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', release: '0.1', - integrations: [Sentry.browserSessionIntegration({ lifecycle: 'page' })], }); diff --git a/dev-packages/browser-integration-tests/suites/sessions/page-lifecycle/test.ts b/dev-packages/browser-integration-tests/suites/sessions/page-lifecycle/test.ts index 869b194031cf..d98c8b377a4c 100644 --- a/dev-packages/browser-integration-tests/suites/sessions/page-lifecycle/test.ts +++ b/dev-packages/browser-integration-tests/suites/sessions/page-lifecycle/test.ts @@ -8,7 +8,7 @@ import { waitForSession, } from '../../../utils/helpers'; -sentryTest('starts a session on pageload with page lifecycle.', async ({ getLocalTestUrl, page }) => { +sentryTest('starts a session on pageload with page lifecycle (default).', async ({ getLocalTestUrl, page }) => { const url = await getLocalTestUrl({ testDir: __dirname }); const sessionPromise = waitForSession(page, s => !!s.init && s.status === 'ok'); @@ -32,7 +32,7 @@ sentryTest('starts a session on pageload with page lifecycle.', async ({ getLoca }); sentryTest( - "doesn't start a new session on pushState navigation with page lifecycle.", + "doesn't start a new session on pushState navigation with page lifecycle (default).", async ({ getLocalTestUrl, page }) => { const url = await getLocalTestUrl({ testDir: __dirname }); diff --git a/dev-packages/browser-integration-tests/suites/sessions/route-lifecycle/init.js b/dev-packages/browser-integration-tests/suites/sessions/route-lifecycle/init.js index af2df91a7ceb..18ea8864bc65 100644 --- a/dev-packages/browser-integration-tests/suites/sessions/route-lifecycle/init.js +++ b/dev-packages/browser-integration-tests/suites/sessions/route-lifecycle/init.js @@ -5,4 +5,5 @@ window.Sentry = Sentry; Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', release: '0.1', + integrations: [Sentry.browserSessionIntegration({ lifecycle: 'route' })], }); diff --git a/dev-packages/browser-integration-tests/suites/sessions/route-lifecycle/test.ts b/dev-packages/browser-integration-tests/suites/sessions/route-lifecycle/test.ts index 05f10146f3f5..1985ec71196a 100644 --- a/dev-packages/browser-integration-tests/suites/sessions/route-lifecycle/test.ts +++ b/dev-packages/browser-integration-tests/suites/sessions/route-lifecycle/test.ts @@ -3,7 +3,7 @@ import { sentryTest } from '../../../utils/fixtures'; import { waitForSession } from '../../../utils/helpers'; sentryTest( - 'should start new sessions on pushState navigation with route lifecycle (default).', + 'should start new sessions on pushState navigation with route lifecycle.', async ({ getLocalTestUrl, page }) => { const url = await getLocalTestUrl({ testDir: __dirname }); diff --git a/dev-packages/browser-integration-tests/suites/sessions/start-session/init.js b/dev-packages/browser-integration-tests/suites/sessions/start-session/init.js new file mode 100644 index 000000000000..18ea8864bc65 --- /dev/null +++ b/dev-packages/browser-integration-tests/suites/sessions/start-session/init.js @@ -0,0 +1,9 @@ +import * as Sentry from '@sentry/browser'; + +window.Sentry = Sentry; + +Sentry.init({ + dsn: 'https://public@dsn.ingest.sentry.io/1337', + release: '0.1', + integrations: [Sentry.browserSessionIntegration({ lifecycle: 'route' })], +}); diff --git a/dev-packages/browser-integration-tests/suites/sessions/user/init.js b/dev-packages/browser-integration-tests/suites/sessions/user/init.js new file mode 100644 index 000000000000..18ea8864bc65 --- /dev/null +++ b/dev-packages/browser-integration-tests/suites/sessions/user/init.js @@ -0,0 +1,9 @@ +import * as Sentry from '@sentry/browser'; + +window.Sentry = Sentry; + +Sentry.init({ + dsn: 'https://public@dsn.ingest.sentry.io/1337', + release: '0.1', + integrations: [Sentry.browserSessionIntegration({ lifecycle: 'route' })], +}); diff --git a/packages/browser/src/integrations/browsersession.ts b/packages/browser/src/integrations/browsersession.ts index 7d339baa42d5..63e2611586f5 100644 --- a/packages/browser/src/integrations/browsersession.ts +++ b/packages/browser/src/integrations/browsersession.ts @@ -7,13 +7,11 @@ interface BrowserSessionOptions { /** * Controls the session lifecycle - when new sessions are created. * - * - `'route'`: A session is created on page load and on every navigation. - * This is the default behavior. * - `'page'`: A session is created once when the page is loaded. Session is not - * updated on navigation. This is useful for webviews or single-page apps where - * URL changes should not trigger new sessions. + * updated on navigation. This is the default behavior. + * - `'route'`: A session is created on page load and on every navigation. * - * @default 'route' + * @default 'page' */ lifecycle?: 'route' | 'page'; } @@ -25,7 +23,7 @@ interface BrowserSessionOptions { * Note: In order for session tracking to work, you need to set up Releases: https://docs.sentry.io/product/releases/ */ export const browserSessionIntegration = defineIntegration((options: BrowserSessionOptions = {}) => { - const lifecycle = options.lifecycle ?? 'route'; + const lifecycle = options.lifecycle ?? 'page'; return { name: 'BrowserSession',