From 1def0d341a80533b38aeda66ffaf91d7e646e1bb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 23 Apr 2026 02:36:25 +0000 Subject: [PATCH 1/4] Initial plan From b7a842bcdd61ca5bdeacec656a56633c447a5b85 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 23 Apr 2026 02:39:47 +0000 Subject: [PATCH 2/4] Convert preload to ESM and update preload ESM mocking test Agent-Logs-Url: https://github.com/acrosman/BrainSpeedExercises/sessions/8dbfb95d-4191-4a0f-ad79-53f256035961 Co-authored-by: acrosman <2972053+acrosman@users.noreply.github.com> --- app/preload.js | 2 +- app/preload.test.js | 17 ++++------------- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/app/preload.js b/app/preload.js index 3518232..5042979 100644 --- a/app/preload.js +++ b/app/preload.js @@ -7,7 +7,7 @@ * @file Preload context bridge for renderer-main IPC. */ -const { contextBridge, ipcRenderer } = require('electron'); +import { contextBridge, ipcRenderer } from 'electron'; /** * Expose protected methods that allow the renderer process to use diff --git a/app/preload.test.js b/app/preload.test.js index 331d400..c2c6342 100644 --- a/app/preload.test.js +++ b/app/preload.test.js @@ -11,15 +11,10 @@ const mockContextBridge = { exposeInMainWorld: jest.fn(), }; -global.require = jest.fn((moduleName) => { - if (moduleName === 'electron') { - return { - contextBridge: mockContextBridge, - ipcRenderer: mockIpcRenderer, - }; - } - throw new Error(`Unexpected module requested: ${moduleName}`); -}); +await jest.unstable_mockModule('electron', () => ({ + contextBridge: mockContextBridge, + ipcRenderer: mockIpcRenderer, +})); await import('./preload.js'); @@ -32,10 +27,6 @@ describe('preload.js', () => { mockIpcRenderer.invoke.mockResolvedValue('mocked-result'); }); - afterAll(() => { - delete global.require; - }); - it('exposes "api" with send, receive, and invoke via contextBridge', () => { expect(api).toEqual( expect.objectContaining({ From b96afdac9049f94539685e74f2191df2fba55493 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 23 Apr 2026 02:48:25 +0000 Subject: [PATCH 3/4] Revert preload ESM change to restore startup game loading Agent-Logs-Url: https://github.com/acrosman/BrainSpeedExercises/sessions/b0b5b918-e702-48ea-9b0e-3b9a314be099 Co-authored-by: acrosman <2972053+acrosman@users.noreply.github.com> --- app/preload.js | 2 +- app/preload.test.js | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/app/preload.js b/app/preload.js index 5042979..3518232 100644 --- a/app/preload.js +++ b/app/preload.js @@ -7,7 +7,7 @@ * @file Preload context bridge for renderer-main IPC. */ -import { contextBridge, ipcRenderer } from 'electron'; +const { contextBridge, ipcRenderer } = require('electron'); /** * Expose protected methods that allow the renderer process to use diff --git a/app/preload.test.js b/app/preload.test.js index c2c6342..331d400 100644 --- a/app/preload.test.js +++ b/app/preload.test.js @@ -11,10 +11,15 @@ const mockContextBridge = { exposeInMainWorld: jest.fn(), }; -await jest.unstable_mockModule('electron', () => ({ - contextBridge: mockContextBridge, - ipcRenderer: mockIpcRenderer, -})); +global.require = jest.fn((moduleName) => { + if (moduleName === 'electron') { + return { + contextBridge: mockContextBridge, + ipcRenderer: mockIpcRenderer, + }; + } + throw new Error(`Unexpected module requested: ${moduleName}`); +}); await import('./preload.js'); @@ -27,6 +32,10 @@ describe('preload.js', () => { mockIpcRenderer.invoke.mockResolvedValue('mocked-result'); }); + afterAll(() => { + delete global.require; + }); + it('exposes "api" with send, receive, and invoke via contextBridge', () => { expect(api).toEqual( expect.objectContaining({ From 06c263524415ed6eae949f0f3a00834c6e8ac2db Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 23 Apr 2026 02:56:47 +0000 Subject: [PATCH 4/4] Fix Windows Node24 test script path in npm scripts Agent-Logs-Url: https://github.com/acrosman/BrainSpeedExercises/sessions/74c2c103-b816-4c6a-beb4-49cc640ec2b8 Co-authored-by: acrosman <2972053+acrosman@users.noreply.github.com> --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 0e11ac6..f5a0e7a 100644 --- a/package.json +++ b/package.json @@ -18,9 +18,9 @@ "start": "electron .", "lint": "eslint .", "lint:fix": "eslint . --fix", - "test": "node --experimental-vm-modules node_modules/.bin/jest", - "test:watch": "node --experimental-vm-modules node_modules/.bin/jest --watch", - "test:coverage": "node --experimental-vm-modules node_modules/.bin/jest --coverage", + "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js", + "test:watch": "node --experimental-vm-modules node_modules/jest/bin/jest.js --watch", + "test:coverage": "node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage", "build:icons": "node scripts/build-icons.js", "package": "electron-forge package", "make": "electron-forge make",