Skip to content

Commit 55f5af5

Browse files
committed
Also flush on the pagehide event
1 parent 77d9558 commit 55f5af5

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

packages/telemetry/src/helpers.test.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ describe('helpers', () => {
6666

6767
beforeEach(() => {
6868
emittedLogs = [];
69+
flushed = false;
6970
storage = {};
7071
// @ts-ignore
7172
originalSessionStorage = global.sessionStorage;
@@ -154,7 +155,7 @@ describe('helpers', () => {
154155
registerListeners(fakeTelemetry);
155156
});
156157
} else {
157-
it('should flush logs when the page is hidden', () => {
158+
it('should flush logs when the visibility changes to hidden', () => {
158159
registerListeners(fakeTelemetry);
159160

160161
expect(flushed).to.be.false;
@@ -167,6 +168,16 @@ describe('helpers', () => {
167168

168169
expect(flushed).to.be.true;
169170
});
171+
172+
it('should flush logs when the pagehide event fires', () => {
173+
registerListeners(fakeTelemetry);
174+
175+
expect(flushed).to.be.false;
176+
177+
window.dispatchEvent(new Event('pagehide'));
178+
179+
expect(flushed).to.be.true;
180+
});
170181
}
171182
});
172183
});

packages/telemetry/src/helpers.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ export function startNewSession(telemetry: Telemetry): void {
8383
}
8484

8585
/**
86-
* Registers event listeners to flush logs when the page is hidden.
86+
* Registers event listeners to flush logs when the page is hidden. In some cases multiple listeners
87+
* may trigger at the same time, but flushing only occurs once per batch.
8788
*/
8889
export function registerListeners(telemetry: Telemetry): void {
8990
if (typeof window !== 'undefined' && typeof document !== 'undefined') {
@@ -92,6 +93,9 @@ export function registerListeners(telemetry: Telemetry): void {
9293
await flush(telemetry);
9394
}
9495
});
96+
window.addEventListener('pagehide', async () => {
97+
await flush(telemetry);
98+
});
9599
}
96100
}
97101

0 commit comments

Comments
 (0)