@interfere/react 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/client.test.d.ts +2 -0
- package/dist/__tests__/client.test.d.ts.map +1 -0
- package/dist/__tests__/client.test.js +447 -0
- package/dist/__tests__/client.test.js.map +1 -0
- package/dist/__tests__/lib/core/error-handlers.test.d.ts +2 -0
- package/dist/__tests__/lib/core/error-handlers.test.d.ts.map +1 -0
- package/dist/__tests__/lib/core/error-handlers.test.js +596 -0
- package/dist/__tests__/lib/core/error-handlers.test.js.map +1 -0
- package/dist/__tests__/lib/core/event-queue.test.d.ts +2 -0
- package/dist/__tests__/lib/core/event-queue.test.d.ts.map +1 -0
- package/dist/__tests__/lib/core/event-queue.test.js +290 -0
- package/dist/__tests__/lib/core/event-queue.test.js.map +1 -0
- package/dist/__tests__/lib/core/runtime.test.d.ts +2 -0
- package/dist/__tests__/lib/core/runtime.test.d.ts.map +1 -0
- package/dist/__tests__/lib/core/runtime.test.js +133 -0
- package/dist/__tests__/lib/core/runtime.test.js.map +1 -0
- package/dist/__tests__/lib/core/session-manager.test.d.ts +2 -0
- package/dist/__tests__/lib/core/session-manager.test.d.ts.map +1 -0
- package/dist/__tests__/lib/core/session-manager.test.js +356 -0
- package/dist/__tests__/lib/core/session-manager.test.js.map +1 -0
- package/dist/__tests__/provider.test.d.ts +2 -0
- package/dist/__tests__/provider.test.d.ts.map +1 -0
- package/dist/__tests__/provider.test.js +143 -0
- package/dist/__tests__/provider.test.js.map +1 -0
- package/dist/client.d.ts +78 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +219 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/core/error-handlers.d.ts +14 -0
- package/dist/lib/core/error-handlers.d.ts.map +1 -0
- package/dist/lib/core/error-handlers.js +191 -0
- package/dist/lib/core/error-handlers.js.map +1 -0
- package/dist/lib/core/event-queue.d.ts +90 -0
- package/dist/lib/core/event-queue.d.ts.map +1 -0
- package/dist/lib/core/event-queue.js +286 -0
- package/dist/lib/core/event-queue.js.map +1 -0
- package/dist/lib/core/runtime.d.ts +7 -0
- package/dist/lib/core/runtime.d.ts.map +1 -0
- package/dist/lib/core/runtime.js +16 -0
- package/dist/lib/core/runtime.js.map +1 -0
- package/dist/lib/core/session-manager.d.ts +96 -0
- package/dist/lib/core/session-manager.d.ts.map +1 -0
- package/dist/lib/core/session-manager.js +431 -0
- package/dist/lib/core/session-manager.js.map +1 -0
- package/dist/lib/persistence/storage.d.ts +5 -0
- package/dist/lib/persistence/storage.d.ts.map +1 -0
- package/dist/lib/persistence/storage.js +67 -0
- package/dist/lib/persistence/storage.js.map +1 -0
- package/dist/lib/session/rage-click.d.ts +2 -0
- package/dist/lib/session/rage-click.d.ts.map +1 -0
- package/dist/lib/session/rage-click.js +51 -0
- package/dist/lib/session/rage-click.js.map +1 -0
- package/dist/lib/session/replay.d.ts +3 -0
- package/dist/lib/session/replay.d.ts.map +1 -0
- package/dist/lib/session/replay.js +106 -0
- package/dist/lib/session/replay.js.map +1 -0
- package/dist/lib/session/session-summary.d.ts +3 -0
- package/dist/lib/session/session-summary.d.ts.map +1 -0
- package/dist/lib/session/session-summary.js +79 -0
- package/dist/lib/session/session-summary.js.map +1 -0
- package/dist/provider.d.ts +76 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +138 -0
- package/dist/provider.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/client.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
|
+
// Constants
|
|
3
|
+
const TEST_SESSION_ID = "ses_test_123";
|
|
4
|
+
const TEST_WINDOW_ID = "win_test_456";
|
|
5
|
+
const POLL_INTERVAL = 1000;
|
|
6
|
+
// Session timing constants
|
|
7
|
+
const SESSION_START_OFFSET_MS = 10_000;
|
|
8
|
+
const LAST_ACTIVITY_OFFSET_MS = 1000;
|
|
9
|
+
const SESSION_TIMEOUT_MS = 1_800_000; // 30 minutes
|
|
10
|
+
const TIME_SINCE_LAST_ACTIVITY_MS = 1000;
|
|
11
|
+
// Response status
|
|
12
|
+
const HTTP_OK = 200;
|
|
13
|
+
// Regex patterns
|
|
14
|
+
const WINDOW_ID_PATTERN = /^win_\d+_[a-z0-9]+$/;
|
|
15
|
+
// Mock modules before imports
|
|
16
|
+
vi.mock("../lib/core/event-queue", () => ({
|
|
17
|
+
EventQueue: vi.fn().mockImplementation(() => ({
|
|
18
|
+
add: vi.fn(),
|
|
19
|
+
flush: vi.fn().mockResolvedValue(undefined),
|
|
20
|
+
destroy: vi.fn(),
|
|
21
|
+
getQueueSize: vi.fn().mockReturnValue(0),
|
|
22
|
+
isOnlineStatus: vi.fn().mockReturnValue(true),
|
|
23
|
+
setWindowId: vi.fn(),
|
|
24
|
+
})),
|
|
25
|
+
}));
|
|
26
|
+
vi.mock("../lib/core/session-manager", () => ({
|
|
27
|
+
SessionManager: vi.fn().mockImplementation((callback) => ({
|
|
28
|
+
getSessionId: vi.fn().mockReturnValue(TEST_SESSION_ID),
|
|
29
|
+
updateActivity: vi.fn(),
|
|
30
|
+
resetSession: vi.fn(),
|
|
31
|
+
getDebugInfo: vi.fn().mockReturnValue({
|
|
32
|
+
sessionId: TEST_SESSION_ID,
|
|
33
|
+
sessionStartTimestamp: Date.now() - SESSION_START_OFFSET_MS,
|
|
34
|
+
lastActivityTimestamp: Date.now() - LAST_ACTIVITY_OFFSET_MS,
|
|
35
|
+
sessionTimeoutMs: SESSION_TIMEOUT_MS,
|
|
36
|
+
sessionAge: SESSION_START_OFFSET_MS,
|
|
37
|
+
timeSinceLastActivity: TIME_SINCE_LAST_ACTIVITY_MS,
|
|
38
|
+
isSessionActive: true,
|
|
39
|
+
storageInfo: {
|
|
40
|
+
canUseLocalStorage: true,
|
|
41
|
+
canUseSessionStorage: true,
|
|
42
|
+
storageKeys: ["interfere_session"],
|
|
43
|
+
localStorageSupported: true,
|
|
44
|
+
sessionStorageSupported: true,
|
|
45
|
+
persistenceType: "localStorage",
|
|
46
|
+
isDisabled: false,
|
|
47
|
+
},
|
|
48
|
+
}),
|
|
49
|
+
onSessionChange: callback,
|
|
50
|
+
})),
|
|
51
|
+
}));
|
|
52
|
+
describe("Client SDK", () => {
|
|
53
|
+
let originalWindow;
|
|
54
|
+
let originalDocument;
|
|
55
|
+
let originalNavigator;
|
|
56
|
+
let originalFetch;
|
|
57
|
+
let windowEvents = {};
|
|
58
|
+
beforeEach(() => {
|
|
59
|
+
vi.clearAllMocks();
|
|
60
|
+
vi.resetModules();
|
|
61
|
+
// Save original globals
|
|
62
|
+
originalWindow = global.window;
|
|
63
|
+
originalDocument = global.document;
|
|
64
|
+
originalNavigator = global.navigator;
|
|
65
|
+
originalFetch = global.fetch;
|
|
66
|
+
// Reset window events
|
|
67
|
+
windowEvents = {};
|
|
68
|
+
// Mock window
|
|
69
|
+
Object.defineProperty(global, "window", {
|
|
70
|
+
value: {
|
|
71
|
+
location: {
|
|
72
|
+
href: "https://example.com/page",
|
|
73
|
+
},
|
|
74
|
+
addEventListener: vi.fn((event, callback) => {
|
|
75
|
+
if (!windowEvents[event]) {
|
|
76
|
+
windowEvents[event] = [];
|
|
77
|
+
}
|
|
78
|
+
windowEvents[event].push(callback);
|
|
79
|
+
}),
|
|
80
|
+
removeEventListener: vi.fn((event, callback) => {
|
|
81
|
+
if (windowEvents[event]) {
|
|
82
|
+
windowEvents[event] = windowEvents[event].filter((cb) => cb !== callback);
|
|
83
|
+
}
|
|
84
|
+
}),
|
|
85
|
+
},
|
|
86
|
+
writable: true,
|
|
87
|
+
configurable: true,
|
|
88
|
+
});
|
|
89
|
+
// Mock document
|
|
90
|
+
Object.defineProperty(global, "document", {
|
|
91
|
+
value: {
|
|
92
|
+
visibilityState: "visible",
|
|
93
|
+
},
|
|
94
|
+
writable: true,
|
|
95
|
+
configurable: true,
|
|
96
|
+
});
|
|
97
|
+
// Mock navigator
|
|
98
|
+
Object.defineProperty(global, "navigator", {
|
|
99
|
+
value: {
|
|
100
|
+
userAgent: "Mozilla/5.0 Test Browser",
|
|
101
|
+
},
|
|
102
|
+
writable: true,
|
|
103
|
+
configurable: true,
|
|
104
|
+
});
|
|
105
|
+
// Mock fetch
|
|
106
|
+
global.fetch = vi.fn().mockResolvedValue({
|
|
107
|
+
ok: true,
|
|
108
|
+
status: HTTP_OK,
|
|
109
|
+
json: () => Promise.resolve({
|
|
110
|
+
sessionId: TEST_SESSION_ID,
|
|
111
|
+
accepted: true,
|
|
112
|
+
}),
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
afterEach(() => {
|
|
116
|
+
vi.clearAllMocks();
|
|
117
|
+
// Restore globals
|
|
118
|
+
global.window = originalWindow;
|
|
119
|
+
global.document = originalDocument;
|
|
120
|
+
global.navigator = originalNavigator;
|
|
121
|
+
global.fetch = originalFetch;
|
|
122
|
+
});
|
|
123
|
+
describe("Initialization", () => {
|
|
124
|
+
it("should initialize in browser environment", async () => {
|
|
125
|
+
const clientModule = await import("../client.js");
|
|
126
|
+
expect(clientModule.getWindowId()).toMatch(WINDOW_ID_PATTERN);
|
|
127
|
+
// Verify event listeners were registered
|
|
128
|
+
expect(global.window.addEventListener).toHaveBeenCalledWith("beforeunload", expect.any(Function));
|
|
129
|
+
expect(global.window.addEventListener).toHaveBeenCalledWith("pagehide", expect.any(Function));
|
|
130
|
+
expect(global.window.addEventListener).toHaveBeenCalledWith("visibilitychange", expect.any(Function));
|
|
131
|
+
});
|
|
132
|
+
it("should not initialize on server side", async () => {
|
|
133
|
+
// Temporarily remove window
|
|
134
|
+
const tempWindow = global.window;
|
|
135
|
+
// biome-ignore lint/performance/noDelete: Needed for testing
|
|
136
|
+
delete global.window;
|
|
137
|
+
vi.resetModules();
|
|
138
|
+
const clientModule = await import("../client.js");
|
|
139
|
+
expect(clientModule.getWindowId()).toBe("");
|
|
140
|
+
expect(clientModule.getSessionId()).toBe("");
|
|
141
|
+
// Restore window
|
|
142
|
+
global.window = tempWindow;
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
describe("capture", () => {
|
|
146
|
+
it("should capture events in browser", async () => {
|
|
147
|
+
const clientModule = await import("../client.js");
|
|
148
|
+
const eventType = "ui_event";
|
|
149
|
+
const payload = { button: "test-button" };
|
|
150
|
+
clientModule.capture(eventType, payload);
|
|
151
|
+
const { EventQueue } = await import("../lib/core/event-queue.js");
|
|
152
|
+
const mockInstance = vi.mocked(EventQueue).mock.results[0]?.value;
|
|
153
|
+
expect(mockInstance?.add).toHaveBeenCalledWith(eventType, payload);
|
|
154
|
+
});
|
|
155
|
+
it("should skip capture on server side", async () => {
|
|
156
|
+
const tempWindow = global.window;
|
|
157
|
+
// biome-ignore lint/performance/noDelete: Needed for testing
|
|
158
|
+
delete global.window;
|
|
159
|
+
vi.resetModules();
|
|
160
|
+
const clientModule = await import("../client.js");
|
|
161
|
+
clientModule.capture("ui_event", {});
|
|
162
|
+
// Should not throw and should not call any methods
|
|
163
|
+
expect(true).toBe(true);
|
|
164
|
+
global.window = tempWindow;
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
describe("flush", () => {
|
|
168
|
+
it("should flush pending events", async () => {
|
|
169
|
+
const clientModule = await import("../client.js");
|
|
170
|
+
await clientModule.flush();
|
|
171
|
+
const { EventQueue } = await import("../lib/core/event-queue.js");
|
|
172
|
+
const mockInstance = vi.mocked(EventQueue).mock.results[0]?.value;
|
|
173
|
+
expect(mockInstance?.flush).toHaveBeenCalled();
|
|
174
|
+
});
|
|
175
|
+
it("should skip flush on server side", async () => {
|
|
176
|
+
const tempWindow = global.window;
|
|
177
|
+
// biome-ignore lint/performance/noDelete: Needed for testing
|
|
178
|
+
delete global.window;
|
|
179
|
+
vi.resetModules();
|
|
180
|
+
const clientModule = await import("../client.js");
|
|
181
|
+
await clientModule.flush();
|
|
182
|
+
// Should not throw
|
|
183
|
+
expect(true).toBe(true);
|
|
184
|
+
global.window = tempWindow;
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
describe("Session Management", () => {
|
|
188
|
+
it("should get session ID", async () => {
|
|
189
|
+
const clientModule = await import("../client.js");
|
|
190
|
+
const sessionId = clientModule.getSessionId();
|
|
191
|
+
expect(sessionId).toBe(TEST_SESSION_ID);
|
|
192
|
+
});
|
|
193
|
+
it("should get window ID", async () => {
|
|
194
|
+
const clientModule = await import("../client.js");
|
|
195
|
+
const windowId = clientModule.getWindowId();
|
|
196
|
+
expect(windowId).toMatch(WINDOW_ID_PATTERN);
|
|
197
|
+
});
|
|
198
|
+
it("should reset session", async () => {
|
|
199
|
+
const clientModule = await import("../client.js");
|
|
200
|
+
clientModule.resetSession();
|
|
201
|
+
const { SessionManager } = await import("../lib/core/session-manager.js");
|
|
202
|
+
const mockInstance = vi.mocked(SessionManager).mock.results[0]?.value;
|
|
203
|
+
expect(mockInstance?.resetSession).toHaveBeenCalled();
|
|
204
|
+
});
|
|
205
|
+
it("should handle session ID subscription", async () => {
|
|
206
|
+
vi.useFakeTimers();
|
|
207
|
+
const clientModule = await import("../client.js");
|
|
208
|
+
const callback = vi.fn();
|
|
209
|
+
const unsubscribe = clientModule.onSessionId(callback);
|
|
210
|
+
// Advance timer to trigger callback
|
|
211
|
+
vi.advanceTimersByTime(POLL_INTERVAL);
|
|
212
|
+
expect(callback).toHaveBeenCalledWith(TEST_SESSION_ID);
|
|
213
|
+
// Clean up
|
|
214
|
+
unsubscribe();
|
|
215
|
+
vi.useRealTimers();
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
describe("Event Capture Helpers", () => {
|
|
219
|
+
it("should capture error events", async () => {
|
|
220
|
+
const clientModule = await import("../client.js");
|
|
221
|
+
const error = new Error("Test error");
|
|
222
|
+
error.stack = "Error stack trace";
|
|
223
|
+
clientModule.captureError(error);
|
|
224
|
+
const { EventQueue } = await import("../lib/core/event-queue.js");
|
|
225
|
+
const mockInstance = vi.mocked(EventQueue).mock.results[0]?.value;
|
|
226
|
+
expect(mockInstance?.add).toHaveBeenCalledWith("error", {
|
|
227
|
+
message: "Test error",
|
|
228
|
+
stack: "Error stack trace",
|
|
229
|
+
name: "Error",
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
it("should capture non-Error objects as errors", async () => {
|
|
233
|
+
const clientModule = await import("../client.js");
|
|
234
|
+
clientModule.captureError("String error");
|
|
235
|
+
const { EventQueue } = await import("../lib/core/event-queue.js");
|
|
236
|
+
const mockInstance = vi.mocked(EventQueue).mock.results[0]?.value;
|
|
237
|
+
expect(mockInstance?.add).toHaveBeenCalledWith("error", {
|
|
238
|
+
message: "String error",
|
|
239
|
+
stack: undefined,
|
|
240
|
+
name: "UnknownError",
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
it("should capture custom events", async () => {
|
|
244
|
+
const clientModule = await import("../client.js");
|
|
245
|
+
const data = { custom: "data" };
|
|
246
|
+
clientModule.captureCustom("test-event", data);
|
|
247
|
+
const { EventQueue } = await import("../lib/core/event-queue.js");
|
|
248
|
+
const mockInstance = vi.mocked(EventQueue).mock.results[0]?.value;
|
|
249
|
+
expect(mockInstance?.add).toHaveBeenCalledWith("custom", {
|
|
250
|
+
name: "test-event",
|
|
251
|
+
data,
|
|
252
|
+
});
|
|
253
|
+
});
|
|
254
|
+
it("should capture UI events", async () => {
|
|
255
|
+
const clientModule = await import("../client.js");
|
|
256
|
+
const metadata = { element: "button" };
|
|
257
|
+
clientModule.captureUIEvent("button_click", metadata);
|
|
258
|
+
const { EventQueue } = await import("../lib/core/event-queue.js");
|
|
259
|
+
const mockInstance = vi.mocked(EventQueue).mock.results[0]?.value;
|
|
260
|
+
expect(mockInstance?.add).toHaveBeenCalledWith("ui_event", {
|
|
261
|
+
action: "button_click",
|
|
262
|
+
metadata,
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
});
|
|
266
|
+
describe("Debug Features", () => {
|
|
267
|
+
it("should set debug logger", async () => {
|
|
268
|
+
const clientModule = await import("../client.js");
|
|
269
|
+
const logger = vi.fn();
|
|
270
|
+
clientModule.setDebugLogger(logger);
|
|
271
|
+
// The logger should be set and shown in debug info
|
|
272
|
+
const debugInfo = clientModule.getDebugInfo();
|
|
273
|
+
expect(debugInfo.hasDebugLogger).toBe(true);
|
|
274
|
+
});
|
|
275
|
+
it("should clear debug logger", async () => {
|
|
276
|
+
const clientModule = await import("../client.js");
|
|
277
|
+
clientModule.setDebugLogger(undefined);
|
|
278
|
+
const debugInfo = clientModule.getDebugInfo();
|
|
279
|
+
expect(debugInfo.hasDebugLogger).toBe(false);
|
|
280
|
+
});
|
|
281
|
+
it("should get debug info in browser", async () => {
|
|
282
|
+
const clientModule = await import("../client.js");
|
|
283
|
+
const debugInfo = clientModule.getDebugInfo();
|
|
284
|
+
expect(debugInfo).toMatchObject({
|
|
285
|
+
sessionId: TEST_SESSION_ID,
|
|
286
|
+
windowId: expect.stringMatching(WINDOW_ID_PATTERN),
|
|
287
|
+
pendingEventsCount: 0,
|
|
288
|
+
hasDebugLogger: false,
|
|
289
|
+
isServerSide: false,
|
|
290
|
+
sessionStartTimestamp: expect.any(Number),
|
|
291
|
+
lastActivityTimestamp: expect.any(Number),
|
|
292
|
+
sessionTimeoutMs: SESSION_TIMEOUT_MS,
|
|
293
|
+
sessionAge: expect.any(Number),
|
|
294
|
+
timeSinceLastActivity: expect.any(Number),
|
|
295
|
+
isSessionActive: true,
|
|
296
|
+
queueSize: 0,
|
|
297
|
+
isOnline: true,
|
|
298
|
+
storageInfo: {
|
|
299
|
+
canUseLocalStorage: true,
|
|
300
|
+
canUseSessionStorage: true,
|
|
301
|
+
storageKeys: ["interfere_session"],
|
|
302
|
+
localStorageSupported: true,
|
|
303
|
+
sessionStorageSupported: true,
|
|
304
|
+
persistenceType: "localStorage",
|
|
305
|
+
isDisabled: false,
|
|
306
|
+
},
|
|
307
|
+
});
|
|
308
|
+
});
|
|
309
|
+
it("should get minimal debug info on server", async () => {
|
|
310
|
+
const tempWindow = global.window;
|
|
311
|
+
// biome-ignore lint/performance/noDelete: Needed for testing
|
|
312
|
+
delete global.window;
|
|
313
|
+
vi.resetModules();
|
|
314
|
+
const clientModule = await import("../client.js");
|
|
315
|
+
const debugInfo = clientModule.getDebugInfo();
|
|
316
|
+
expect(debugInfo).toEqual({
|
|
317
|
+
sessionId: null,
|
|
318
|
+
windowId: null,
|
|
319
|
+
pendingEventsCount: 0,
|
|
320
|
+
hasDebugLogger: false,
|
|
321
|
+
isServerSide: true,
|
|
322
|
+
});
|
|
323
|
+
global.window = tempWindow;
|
|
324
|
+
});
|
|
325
|
+
});
|
|
326
|
+
describe("sendEvents function", () => {
|
|
327
|
+
it("should send events to server", async () => {
|
|
328
|
+
await import("../client.js");
|
|
329
|
+
// Get the sendEvents function through the EventQueue mock
|
|
330
|
+
const { EventQueue } = await import("../lib/core/event-queue.js");
|
|
331
|
+
const sendEventsFn = vi.mocked(EventQueue).mock.calls[0]?.[0];
|
|
332
|
+
const events = [
|
|
333
|
+
{
|
|
334
|
+
id: "event1",
|
|
335
|
+
type: "ui_event",
|
|
336
|
+
payload: { button: "test" },
|
|
337
|
+
timestamp: Date.now(),
|
|
338
|
+
windowId: TEST_WINDOW_ID,
|
|
339
|
+
retryCount: 0,
|
|
340
|
+
},
|
|
341
|
+
];
|
|
342
|
+
if (sendEventsFn) {
|
|
343
|
+
await sendEventsFn(events);
|
|
344
|
+
}
|
|
345
|
+
expect(global.fetch).toHaveBeenCalled();
|
|
346
|
+
const fetchCall = vi.mocked(global.fetch).mock.calls[0];
|
|
347
|
+
expect(fetchCall?.[0]).toBe("/api/interfere");
|
|
348
|
+
expect(fetchCall?.[1]?.method).toBe("POST");
|
|
349
|
+
expect(fetchCall?.[1]?.headers).toEqual({
|
|
350
|
+
"Content-Type": "application/json",
|
|
351
|
+
});
|
|
352
|
+
expect(fetchCall?.[1]?.keepalive).toBe(true);
|
|
353
|
+
const body = JSON.parse(fetchCall?.[1]?.body);
|
|
354
|
+
expect(body.events).toHaveLength(1);
|
|
355
|
+
expect(body.events[0].type).toBe("ui_event");
|
|
356
|
+
expect(body.events[0].payload).toEqual({ button: "test" });
|
|
357
|
+
expect(body.sessionId).toBe(TEST_SESSION_ID);
|
|
358
|
+
expect(body.url).toBe("https://example.com/page");
|
|
359
|
+
expect(body.userAgent).toBe("Mozilla/5.0 Test Browser");
|
|
360
|
+
expect(body.windowId).toMatch(WINDOW_ID_PATTERN);
|
|
361
|
+
});
|
|
362
|
+
it("should handle send errors", async () => {
|
|
363
|
+
const { EventQueue } = await import("../lib/core/event-queue.js");
|
|
364
|
+
const sendEventsFn = vi.mocked(EventQueue).mock.calls[0]?.[0];
|
|
365
|
+
vi.mocked(global.fetch).mockRejectedValueOnce(new Error("Network error"));
|
|
366
|
+
const events = [
|
|
367
|
+
{
|
|
368
|
+
id: "event1",
|
|
369
|
+
type: "ui_event",
|
|
370
|
+
payload: {},
|
|
371
|
+
timestamp: Date.now(),
|
|
372
|
+
windowId: TEST_WINDOW_ID,
|
|
373
|
+
retryCount: 0,
|
|
374
|
+
},
|
|
375
|
+
];
|
|
376
|
+
if (sendEventsFn) {
|
|
377
|
+
await expect(sendEventsFn(events)).rejects.toThrow("Network error");
|
|
378
|
+
}
|
|
379
|
+
});
|
|
380
|
+
});
|
|
381
|
+
describe("Lifecycle", () => {
|
|
382
|
+
it("should destroy SDK and clean up", async () => {
|
|
383
|
+
const clientModule = await import("../client.js");
|
|
384
|
+
clientModule.destroy();
|
|
385
|
+
const { EventQueue } = await import("../lib/core/event-queue.js");
|
|
386
|
+
const mockInstance = vi.mocked(EventQueue).mock.results[0]?.value;
|
|
387
|
+
expect(mockInstance?.flush).toHaveBeenCalled();
|
|
388
|
+
expect(mockInstance?.destroy).toHaveBeenCalled();
|
|
389
|
+
});
|
|
390
|
+
it("should handle page visibility changes", async () => {
|
|
391
|
+
await import("../client.js");
|
|
392
|
+
// Trigger visibility change to hidden
|
|
393
|
+
Object.defineProperty(global.document, "visibilityState", {
|
|
394
|
+
value: "hidden",
|
|
395
|
+
writable: true,
|
|
396
|
+
});
|
|
397
|
+
// Trigger the event listener
|
|
398
|
+
const visibilityCallback = windowEvents.visibilitychange?.[0];
|
|
399
|
+
if (visibilityCallback) {
|
|
400
|
+
visibilityCallback();
|
|
401
|
+
}
|
|
402
|
+
const { EventQueue } = await import("../lib/core/event-queue.js");
|
|
403
|
+
const mockInstance = vi.mocked(EventQueue).mock.results[0]?.value;
|
|
404
|
+
expect(mockInstance?.flush).toHaveBeenCalled();
|
|
405
|
+
});
|
|
406
|
+
it("should flush on beforeunload", async () => {
|
|
407
|
+
await import("../client.js");
|
|
408
|
+
// Trigger beforeunload event
|
|
409
|
+
const beforeunloadCallback = windowEvents.beforeunload?.[0];
|
|
410
|
+
if (beforeunloadCallback) {
|
|
411
|
+
beforeunloadCallback();
|
|
412
|
+
}
|
|
413
|
+
const { EventQueue } = await import("../lib/core/event-queue.js");
|
|
414
|
+
const mockInstance = vi.mocked(EventQueue).mock.results[0]?.value;
|
|
415
|
+
expect(mockInstance?.flush).toHaveBeenCalled();
|
|
416
|
+
});
|
|
417
|
+
it("should flush on pagehide", async () => {
|
|
418
|
+
await import("../client.js");
|
|
419
|
+
// Trigger pagehide event
|
|
420
|
+
const pagehideCallback = windowEvents.pagehide?.[0];
|
|
421
|
+
if (pagehideCallback) {
|
|
422
|
+
pagehideCallback();
|
|
423
|
+
}
|
|
424
|
+
const { EventQueue } = await import("../lib/core/event-queue.js");
|
|
425
|
+
const mockInstance = vi.mocked(EventQueue).mock.results[0]?.value;
|
|
426
|
+
expect(mockInstance?.flush).toHaveBeenCalled();
|
|
427
|
+
});
|
|
428
|
+
it("should not flush when page becomes visible", async () => {
|
|
429
|
+
await import("../client.js");
|
|
430
|
+
// Reset mock to clear any previous calls
|
|
431
|
+
const { EventQueue } = await import("../lib/core/event-queue.js");
|
|
432
|
+
const mockInstance = vi.mocked(EventQueue).mock.results[0]?.value;
|
|
433
|
+
vi.mocked(mockInstance?.flush).mockClear();
|
|
434
|
+
// Trigger visibility change to visible
|
|
435
|
+
Object.defineProperty(global.document, "visibilityState", {
|
|
436
|
+
value: "visible",
|
|
437
|
+
writable: true,
|
|
438
|
+
});
|
|
439
|
+
const visibilityCallback = windowEvents.visibilitychange?.[0];
|
|
440
|
+
if (visibilityCallback) {
|
|
441
|
+
visibilityCallback();
|
|
442
|
+
}
|
|
443
|
+
expect(mockInstance?.flush).not.toHaveBeenCalled();
|
|
444
|
+
});
|
|
445
|
+
});
|
|
446
|
+
});
|
|
447
|
+
//# sourceMappingURL=client.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../src/__tests__/client.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handlers.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/lib/core/error-handlers.test.ts"],"names":[],"mappings":""}
|