diff --git a/spec-main/api-native-theme-spec.ts b/spec-main/api-native-theme-spec.ts index f4b63851cd90e..3a03eb1ef81a2 100644 --- a/spec-main/api-native-theme-spec.ts +++ b/spec-main/api-native-theme-spec.ts @@ -1,5 +1,5 @@ import { expect } from 'chai'; -import { nativeTheme, systemPreferences, BrowserWindow } from 'electron/main'; +import { nativeTheme, systemPreferences, BrowserWindow, ipcMain } from 'electron/main'; import * as os from 'os'; import * as path from 'path'; import * as semver from 'semver'; @@ -75,14 +75,24 @@ describe('nativeTheme module', () => { }; it('should override the result of prefers-color-scheme CSS media query', async () => { - const w = new BrowserWindow({ show: false }); + const w = new BrowserWindow({ show: false, webPreferences: { contextIsolation: false, nodeIntegration: true } }); await w.loadFile(path.resolve(__dirname, 'fixtures', 'blank.html')); + await w.webContents.executeJavaScript(` + window.matchMedia('(prefers-color-scheme: dark)') + .addEventListener('change', () => require('electron').ipcRenderer.send('theme-change')) + `); const originalSystemIsDark = await getPrefersColorSchemeIsDark(w); + let changePromise: Promise = emittedOnce(ipcMain, 'theme-change'); nativeTheme.themeSource = 'dark'; + if (!originalSystemIsDark) await changePromise; expect(await getPrefersColorSchemeIsDark(w)).to.equal(true); + changePromise = emittedOnce(ipcMain, 'theme-change'); nativeTheme.themeSource = 'light'; + await changePromise; expect(await getPrefersColorSchemeIsDark(w)).to.equal(false); + changePromise = emittedOnce(ipcMain, 'theme-change'); nativeTheme.themeSource = 'system'; + if (originalSystemIsDark) await changePromise; expect(await getPrefersColorSchemeIsDark(w)).to.equal(originalSystemIsDark); w.close(); });