diff --git a/playground/src/index.html b/playground/src/index.html
index f65b35dd..a8819b2a 100644
--- a/playground/src/index.html
+++ b/playground/src/index.html
@@ -178,6 +178,7 @@
Session ID:
SDK Actions
+
diff --git a/playground/src/main.ts b/playground/src/main.ts
index fed8134f..d55d731c 100644
--- a/playground/src/main.ts
+++ b/playground/src/main.ts
@@ -54,6 +54,21 @@ function createWindow() {
});
}
+function createNewWindow() {
+ const win = new BrowserWindow({
+ width: 1024,
+ height: 768,
+ show: !isTestMode,
+ webPreferences: {
+ preload: path.join(__dirname, 'preload.js'),
+ contextIsolation: true,
+ nodeIntegration: false,
+ },
+ });
+
+ void win.loadFile(path.join(__dirname, 'index.html'));
+}
+
// IPC handler to get internal context
ipcMain.handle('get-internal-context', () => getInternalContext());
@@ -61,6 +76,10 @@ ipcMain.handle('stop-session', () => {
stopSession();
});
+ipcMain.handle('open-new-window', () => {
+ createNewWindow();
+});
+
ipcMain.handle('generateTelemetryError', () => {
_generateTelemetryError();
});
diff --git a/playground/src/preload.ts b/playground/src/preload.ts
index 1875b57c..373af41d 100644
--- a/playground/src/preload.ts
+++ b/playground/src/preload.ts
@@ -4,6 +4,7 @@ import { contextBridge, ipcRenderer } from 'electron';
contextBridge.exposeInMainWorld('electronAPI', {
getInternalContext: () => ipcRenderer.invoke('get-internal-context'),
stopSession: () => ipcRenderer.invoke('stop-session'),
+ openNewWindow: () => ipcRenderer.invoke('open-new-window'),
generateTelemetryError: () => ipcRenderer.invoke('generateTelemetryError'),
generateUncaughtException: () => ipcRenderer.invoke('generateUncaughtException'),
generateUnhandledRejection: () => ipcRenderer.invoke('generateUnhandledRejection'),
diff --git a/playground/src/renderer.ts b/playground/src/renderer.ts
index 4bcbedbc..bb1d8335 100644
--- a/playground/src/renderer.ts
+++ b/playground/src/renderer.ts
@@ -20,6 +20,7 @@ datadogRum.init({
interface ElectronAPI {
getInternalContext: () => Promise<{ session_id: string } | undefined>;
stopSession: () => Promise;
+ openNewWindow: () => Promise;
generateTelemetryError: () => Promise;
generateUncaughtException: () => Promise;
generateUnhandledRejection: () => Promise;
@@ -120,6 +121,12 @@ crashBtn.addEventListener('click', () => {
void window.electronAPI.crash();
});
+// Handle new window button click
+const newWindowBtn = document.getElementById('new-window-btn') as HTMLButtonElement;
+newWindowBtn.addEventListener('click', () => {
+ void window.electronAPI.openNewWindow();
+});
+
// Handle open in RUM Explorer button click
const openRumExplorerBtn = document.getElementById('open-rum-explorer') as HTMLButtonElement;
openRumExplorerBtn.addEventListener('click', () => {