devel/electron40: Update to 40.10.0

Changelog: https://github.com/electron/electron/releases/tag/v40.10.0

Reported by:	GitHub (watch releases)
This commit is contained in:
Hiroki Tagato
2026-05-11 21:41:32 +09:00
parent d04cc57387
commit 9d4405b709
38 changed files with 1187 additions and 2465 deletions
+1 -1
View File
@@ -217,7 +217,7 @@ SNDIO_VARS_OFF= GN_ARGS+=use_sndio=false
# See ${WRKSRC}/electron/DEPS for CHROMIUM_VER
CHROMIUM_VER= 144.0.7559.236
# See ${WRKSRC}/electron/DEPS for NODE_VER
NODE_VER= 24.14.1
NODE_VER= 24.15.0
# See ${WRKSRC}/electron/DEPS for NAN_VER
NAN_VER= 675cefebca42410733da8a454c8d9391fcebfbc2
# See ${WRKSRC}/electron/DEPS for SQUIRREL_MAC_VER
+1 -1
View File
@@ -1,2 +1,2 @@
ELECTRON_VER= 40.9.3
ELECTRON_VER= 40.10.0
ELECTRON_VER_MAJOR= ${ELECTRON_VER:C/\..*//}
+7 -7
View File
@@ -1,4 +1,4 @@
TIMESTAMP = 1778141435
TIMESTAMP = 1778490992
SHA256 (electron/chromium-144.0.7559.236.tar.xz.0) = 21556e44d5f5e464a7603afc1e912127c4546d3c55d777055614b769247d2714
SIZE (electron/chromium-144.0.7559.236.tar.xz.0) = 2000000000
SHA256 (electron/chromium-144.0.7559.236.tar.xz.1) = 389e96ab80e7f3ea7a330060c51ed714f2277810b13bbd1d72bb9e6119dce3a2
@@ -9,12 +9,12 @@ SHA256 (electron/pulseaudio-16.1.tar.gz) = 027266c62f2a84422ac45fa721a649508f0f1
SIZE (electron/pulseaudio-16.1.tar.gz) = 2763111
SHA256 (electron/yarn-4.12.0.tgz) = bd58d06826ce9542c4cd904fe10bab7bc718ea2cc39a45d9fbd15f2edb45761c
SIZE (electron/yarn-4.12.0.tgz) = 1056794
SHA256 (electron/electron40-40.9.3-node-modules.tar.xz) = b0068fa06ba9c5bc449a2ab423a3a4c65e77a7f6cff3255e2d9aae61ac036df1
SIZE (electron/electron40-40.9.3-node-modules.tar.xz) = 59792711
SHA256 (electron/electron-electron-v40.9.3_GH0.tar.gz) = db5da7cf3bb3d9c5a20c4082470135a714a56e99b93c7a6ae9ab76e283d4458a
SIZE (electron/electron-electron-v40.9.3_GH0.tar.gz) = 17331287
SHA256 (electron/nodejs-node-v24.14.1_GH0.tar.gz) = dd9da50596e7b1c4edeb56daf0e81f57e1b61e43c36f40eadeee77be7d779e08
SIZE (electron/nodejs-node-v24.14.1_GH0.tar.gz) = 126384322
SHA256 (electron/electron40-40.10.0-node-modules.tar.xz) = 3e0231cb2e5bf812eacdcd28c0b9c6cdff62e499b245585d5f4ad54141c85e05
SIZE (electron/electron40-40.10.0-node-modules.tar.xz) = 68768407
SHA256 (electron/electron-electron-v40.10.0_GH0.tar.gz) = fa1dcd716ee3c2ad0a28d6d49d7cbff4b5ecfde7d6508163628b87e48516ef3f
SIZE (electron/electron-electron-v40.10.0_GH0.tar.gz) = 17327416
SHA256 (electron/nodejs-node-v24.15.0_GH0.tar.gz) = 5cfb169b21878f50876e0c6a77db1a5e40d733960232682bebb5e267246a2e80
SIZE (electron/nodejs-node-v24.15.0_GH0.tar.gz) = 126716937
SHA256 (electron/nodejs-nan-675cefebca42410733da8a454c8d9391fcebfbc2_GH0.tar.gz) = 3983c68f19ed75dd37dc228eab385093ae2533132730f253f0c3d19ff10788e3
SIZE (electron/nodejs-nan-675cefebca42410733da8a454c8d9391fcebfbc2_GH0.tar.gz) = 111323
SHA256 (electron/Squirrel-Squirrel.Mac-0e5d146ba13101a1302d59ea6e6e0b3cace4ae38_GH0.tar.gz) = f4ebb40a8d85dbb7ef02aa0571b2f8e22182c6d73b6992484a53c90047779d01
@@ -20,20 +20,10 @@
"@types/semver": "^7.5.8",
"@types/stream-json": "^1.7.8",
"@types/temp": "^0.9.4",
"@typescript-eslint/eslint-plugin": "^8.32.1",
"@typescript-eslint/parser": "^8.7.0",
"@xmldom/xmldom": "^0.8.11",
"buffer": "^6.0.3",
"chalk": "^4.1.0",
"check-for-leaks": "^1.2.1",
"eslint": "^8.57.1",
"eslint-config-standard": "^17.1.0",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-markdown": "^5.1.0",
"eslint-plugin-mocha": "^10.5.0",
"eslint-plugin-n": "^16.6.2",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^6.6.0",
"events": "^3.2.0",
"folder-hash": "^4.1.1",
"got": "^11.8.5",
@@ -43,6 +33,8 @@
"minimist": "^1.2.8",
"node-gyp": "^11.4.2",
"null-loader": "^4.0.1",
"oxfmt": "^0.42.0",
"oxlint": "^1.57.0",
"pre-flight": "^2.0.0",
"process": "^0.11.10",
"remark-cli": "^12.0.1",
@@ -65,15 +57,17 @@
"scripts": {
"asar": "asar",
"generate-version-json": "node script/generate-version-json.js",
"lint": "node ./script/lint.js && npm run lint:docs",
"lint": "node ./script/lint.js && npm run lint:fmt && npm run lint:docs",
"lint:js": "node ./script/lint.js --js",
"lint:fmt": "oxfmt --check \"{lib,spec,script,build,default_app,npm}/**/*.{js,ts,mjs,cjs}\"",
"format": "oxfmt --write \"{lib,spec,script,build,default_app,npm}/**/*.{js,ts,mjs,cjs}\"",
"lint:clang-format": "python3 script/run-clang-format.py -r -c shell/ || (echo \"\\nCode not formatted correctly.\" && exit 1)",
"lint:clang-tidy": "ts-node ./script/run-clang-tidy.ts",
"lint:cpp": "node ./script/lint.js --cc",
"lint:objc": "node ./script/lint.js --objc",
"lint:py": "node ./script/lint.js --py",
"lint:gn": "node ./script/lint.js --gn",
"lint:docs": "remark docs -qf && npm run lint:js-in-markdown && npm run create-typescript-definitions && npm run lint:ts-check-js-in-markdown && npm run lint:docs-fiddles && npm run lint:docs-relative-links && npm run lint:markdown && npm run lint:api-history",
"lint:docs": "npm run lint:js-in-markdown && npm run create-typescript-definitions && npm run lint:ts-check-js-in-markdown && npm run lint:docs-fiddles && npm run lint:docs-relative-links && npm run lint:markdown && npm run lint:api-history",
"lint:docs-fiddles": "standard \"docs/fiddles/**/*.js\"",
"lint:docs-relative-links": "lint-roller-markdown-links --resource-root . --root docs \"**/*.md\"",
"lint:markdown": "node ./script/lint.js --md",
@@ -102,8 +96,12 @@
"electron"
],
"lint-staged": {
"*.{js,ts,mjs,cjs}": [
"oxfmt --write"
],
"*.{js,ts}": [
"node script/lint.js --js --fix --only --"
"node script/lint.js --js --fix --only --",
"oxfmt --write"
],
"*.{js,ts,d.ts}": [
"ts-node script/gen-filenames.ts"
@@ -142,7 +140,8 @@
"resolutions": {
"dbus-native/xml2js": "0.5.0",
"abstract-socket": "github:deepak1556/node-abstractsocket#928cc591decd12aff7dad96449da8afc29832c19",
"minimist@npm:~0.0.1": "0.2.4"
"minimist@npm:~0.0.1": "0.2.4",
"put": "npm:@nornagon/put@0.0.8"
},
"packageManager": "yarn@4.12.0",
"workspaces": [
@@ -32,7 +32,7 @@
"chai": "^4.2.0",
"chai-as-promised": "^7.1.1",
"coffeescript": "^2.4.1",
"dbus-native": "github:nornagon/dbus-native#master",
"dbus-native": "^0.4.0",
"dirty-chai": "^2.0.1",
"express": "^4.20.0",
"graceful-fs": "^4.1.15",
File diff suppressed because it is too large Load Diff
@@ -1,6 +1,6 @@
--- electron/default_app/default_app.ts.orig 2026-04-15 14:05:49 UTC
--- electron/default_app/default_app.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/default_app/default_app.ts
@@ -101,7 +101,7 @@ async function createWindow (backgroundColor?: string)
@@ -100,7 +100,7 @@ async function createWindow(backgroundColor?: string)
show: false
};
@@ -1,6 +1,6 @@
--- electron/lib/browser/api/app.ts.orig 2025-10-27 17:58:27 UTC
--- electron/lib/browser/api/app.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/lib/browser/api/app.ts
@@ -70,7 +70,7 @@ if (process.platform === 'darwin') {
@@ -71,7 +71,7 @@ if (process.platform === 'darwin') {
app.dock!.getMenu = () => dockMenu;
}
@@ -1,6 +1,6 @@
--- electron/lib/browser/api/dialog.ts.orig 2024-10-09 13:53:06 UTC
--- electron/lib/browser/api/dialog.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/lib/browser/api/dialog.ts
@@ -41,7 +41,7 @@ const normalizeAccessKey = (text: string) => {
@@ -49,7 +49,7 @@ const normalizeAccessKey = (text: string) => {
// existing single underscores with a second underscore, replace double
// ampersands with a single ampersand, and replace a single ampersand with
// a single underscore
@@ -1,11 +1,11 @@
--- electron/lib/browser/api/menu-item-roles.ts.orig 2022-05-18 15:31:32 UTC
--- electron/lib/browser/api/menu-item-roles.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/lib/browser/api/menu-item-roles.ts
@@ -2,7 +2,7 @@ import { app, BrowserWindow, session, webContents, Web
@@ -10,7 +10,7 @@ const isWindows = process.platform === 'win32';
const isMac = process.platform === 'darwin';
const isWindows = process.platform === 'win32';
-const isLinux = process.platform === 'linux';
+const isLinux = (process.platform === 'linux' || process.platform === 'freebsd');
type RoleId = 'about' | 'close' | 'copy' | 'cut' | 'delete' | 'forcereload' | 'front' | 'help' | 'hide' | 'hideothers' | 'minimize' |
'paste' | 'pasteandmatchstyle' | 'quit' | 'redo' | 'reload' | 'resetzoom' | 'selectall' | 'services' | 'recentdocuments' | 'clearrecentdocuments' |
type RoleId =
| 'about'
@@ -1,6 +1,6 @@
--- electron/lib/browser/api/power-monitor.ts.orig 2026-03-17 08:46:36 UTC
--- electron/lib/browser/api/power-monitor.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/lib/browser/api/power-monitor.ts
@@ -23,7 +23,7 @@ class PowerMonitor extends EventEmitter implements Ele
@@ -18,7 +18,7 @@ class PowerMonitor extends EventEmitter implements Ele
pm = createPowerMonitor();
pm.emit = this.emit.bind(this);
@@ -1,7 +1,7 @@
--- electron/script/spec-runner.js.orig 2025-12-03 04:41:24 UTC
--- electron/script/spec-runner.js.orig 2026-05-08 13:55:13 UTC
+++ electron/script/spec-runner.js
@@ -359,7 +359,7 @@ async function runTestUsingElectron (specDir, testName
argsToPass = argsToPass.filter(arg => (arg.toString().indexOf('--files') === -1 && arg.toString().indexOf('spec/') === -1));
@@ -356,7 +356,7 @@ async function runTestUsingElectron(specDir, testName,
);
}
const runnerArgs = [`electron/${specDir}`, ...argsToPass, ...additionalArgs];
- if (process.platform === 'linux') {
@@ -9,7 +9,7 @@
runnerArgs.unshift(path.resolve(__dirname, 'dbus_mock.py'), exe);
exe = 'python3';
}
@@ -431,7 +431,7 @@ async function installSpecModules (dir) {
@@ -428,7 +428,7 @@ async function installSpecModules(dir) {
process.exit(1);
}
@@ -1,6 +1,6 @@
--- electron/shell/browser/browser.h.orig 2026-03-17 08:46:36 UTC
--- electron/shell/browser/browser.h.orig 2026-05-08 13:55:13 UTC
+++ electron/shell/browser/browser.h
@@ -152,7 +152,7 @@ class Browser : private WindowListObserver {
@@ -155,7 +155,7 @@ class Browser : private WindowListObserver {
std::u16string GetApplicationNameForProtocol(const GURL& url);
@@ -9,7 +9,7 @@
// get the name, icon and path for an application
v8::Local<v8::Promise> GetApplicationInfoForProtocol(v8::Isolate* isolate,
const GURL& url);
@@ -280,10 +280,10 @@ class Browser : private WindowListObserver {
@@ -283,10 +283,10 @@ class Browser : private WindowListObserver {
PCWSTR GetAppUserModelID();
#endif // BUILDFLAG(IS_WIN)
@@ -1,6 +1,6 @@
--- electron/spec/api-app-spec.ts.orig 2026-04-30 19:26:43 UTC
--- electron/spec/api-app-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/api-app-spec.ts
@@ -145,11 +145,11 @@ describe('app module', () => {
@@ -146,11 +146,11 @@ describe('app module', () => {
});
describe('app.getPreferredSystemLanguages()', () => {
@@ -14,7 +14,7 @@
const languages = app.getPreferredSystemLanguages();
if (languages.length) {
expect(languages).to.not.include('C');
@@ -226,7 +226,7 @@ describe('app module', () => {
@@ -229,7 +229,7 @@ describe('app module', () => {
expect(code).to.equal(123, 'exit code should be 123, if you see this please tag @MarshallOfSound');
});
@@ -23,7 +23,7 @@
const electronPath = process.execPath;
const appPath = path.join(fixturesPath, 'api', 'singleton');
appProcess = cp.spawn(electronPath, [appPath]);
@@ -390,7 +390,7 @@ describe('app module', () => {
@@ -400,7 +400,7 @@ describe('app module', () => {
});
// GitHub Actions macOS-13 runners used for x64 seem to have a problem with this test.
@@ -32,7 +32,7 @@
const tempFiles = [
path.join(fixturesPath, 'foo.txt'),
path.join(fixturesPath, 'bar.txt'),
@@ -518,7 +518,7 @@ describe('app module', () => {
@@ -529,7 +529,7 @@ describe('app module', () => {
// let w = null
// before(function () {
@@ -41,25 +41,25 @@
// this.skip()
// }
// })
@@ -625,7 +625,7 @@ describe('app module', () => {
@@ -639,7 +639,7 @@ describe('app module', () => {
describe('app.badgeCount', () => {
const platformIsNotSupported =
(process.platform === 'win32') ||
- (process.platform === 'linux' && !app.isUnityRunning());
+ (process.platform === 'linux' && !app.isUnityRunning()) || (process.platform === 'freebsd');
- process.platform === 'win32' || (process.platform === 'linux' && !app.isUnityRunning());
+ process.platform === 'win32' || (process.platform === 'linux' && !app.isUnityRunning()) || process.platform === 'freebsd';
const expectedBadgeCount = 42;
@@ -669,7 +669,7 @@ describe('app module', () => {
});
@@ -686,7 +686,7 @@ describe('app module', () => {
});
- ifdescribe(process.platform !== 'linux' && !process.mas && (process.platform !== 'darwin' || process.arch === 'arm64'))('app.get/setLoginItemSettings API', function () {
+ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd' && !process.mas && (process.platform !== 'darwin' || process.arch === 'arm64'))('app.get/setLoginItemSettings API', function () {
ifdescribe(
- process.platform !== 'linux' && !process.mas && (process.platform !== 'darwin' || process.arch === 'arm64')
+ process.platform !== 'linux' && process.platform !== 'freebsd' && !process.mas && (process.platform !== 'darwin' || process.arch === 'arm64')
)('app.get/setLoginItemSettings API', function () {
const isMac = process.platform === 'darwin';
const isWin = process.platform === 'win32';
@@ -1049,7 +1049,7 @@ describe('app module', () => {
@@ -1103,7 +1103,7 @@ describe('app module', () => {
});
});
@@ -68,7 +68,7 @@
it('is mutable', () => {
const values = [false, true, false];
const setters: Array<(arg: boolean) => void> = [
@@ -1318,7 +1318,7 @@ describe('app module', () => {
@@ -1373,7 +1373,7 @@ describe('app module', () => {
});
});
@@ -77,7 +77,7 @@
let w: BrowserWindow;
before(function () {
@@ -1451,7 +1451,7 @@ describe('app module', () => {
@@ -1514,7 +1514,7 @@ describe('app module', () => {
});
});
@@ -86,16 +86,16 @@
const protocol = 'electron-test-linux';
const desktopFileId = 'electron-test.desktop';
const protocolMimeType = `x-scheme-handler/${protocol}`;
@@ -1541,7 +1541,7 @@ describe('app module', () => {
@@ -1604,7 +1604,7 @@ describe('app module', () => {
describe('getApplicationNameForProtocol()', () => {
// TODO: Linux CI doesn't have registered http & https handlers
- ifit(!(process.env.CI && process.platform === 'linux'))('returns application names for common protocols', function () {
+ ifit(!(process.env.CI && (process.platform === 'linux' || process.platform === 'freebsd')))('returns application names for common protocols', function () {
// We can't expect particular app names here, but these protocols should
// at least have _something_ registered. Except on our Linux CI
// environment apparently.
@@ -1558,7 +1558,7 @@ describe('app module', () => {
- ifit(!(process.env.CI && process.platform === 'linux'))(
+ ifit(!(process.env.CI && (process.platform === 'linux' || process.platform === 'freebsd')))(
'returns application names for common protocols',
function () {
// We can't expect particular app names here, but these protocols should
@@ -1621,7 +1621,7 @@ describe('app module', () => {
expect(app.getApplicationNameForProtocol('bogus-protocol://')).to.equal('');
});
@@ -104,16 +104,16 @@
const fixtureApp = path.join(fixturesPath, 'api', 'protocol-name');
const desktopFileId = 'mock-browser.desktop';
const mockScheme = 'mockproto';
@@ -1685,7 +1685,7 @@ describe('app module', () => {
@@ -1748,7 +1748,7 @@ describe('app module', () => {
});
});
- ifdescribe(process.platform !== 'linux')('getApplicationInfoForProtocol()', () => {
+ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('getApplicationInfoForProtocol()', () => {
it('returns promise rejection for a bogus protocol', async function () {
await expect(
app.getApplicationInfoForProtocol('bogus-protocol://')
@@ -1758,7 +1758,7 @@ describe('app module', () => {
await expect(app.getApplicationInfoForProtocol('bogus-protocol://')).to.eventually.be.rejectedWith(
'Unable to retrieve installation path to app'
@@ -1819,7 +1819,7 @@ describe('app module', () => {
});
// FIXME Get these specs running on Linux CI
@@ -122,7 +122,7 @@
const iconPath = path.join(__dirname, 'fixtures/assets/icon.ico');
const sizes = {
small: 16,
@@ -1840,7 +1840,7 @@ describe('app module', () => {
@@ -1901,7 +1901,7 @@ describe('app module', () => {
expect(entry.memory).to.have.property('privateBytes').that.is.greaterThan(0);
}
@@ -131,7 +131,7 @@
expect(entry.sandboxed).to.be.a('boolean');
}
@@ -1914,7 +1914,7 @@ describe('app module', () => {
@@ -1970,7 +1970,7 @@ describe('app module', () => {
it('succeeds with complete GPUInfo', async () => {
const completeInfo = await getGPUInfo('complete');
@@ -140,12 +140,12 @@
// For linux and macOS complete info is same as basic info
await verifyBasicGPUInfo(completeInfo);
const basicInfo = await getGPUInfo('basic');
@@ -1938,7 +1938,7 @@ describe('app module', () => {
@@ -1994,7 +1994,7 @@ describe('app module', () => {
});
});
- ifdescribe(!(process.platform === 'linux' && (process.arch === 'arm64' || process.arch === 'arm')))('sandbox options', () => {
+ ifdescribe(!((process.platform === 'linux' || process.platform === 'freebsd') && (process.arch === 'arm64' || process.arch === 'arm')))('sandbox options', () => {
let appProcess: cp.ChildProcess = null as any;
let server: net.Server = null as any;
const socketPath = process.platform === 'win32' ? '\\\\.\\pipe\\electron-mixed-sandbox' : '/tmp/electron-mixed-sandbox';
- ifdescribe(!(process.platform === 'linux' && (process.arch === 'arm64' || process.arch === 'arm')))(
+ ifdescribe(!((process.platform === 'linux' || process.platform === 'freebsd') && (process.arch === 'arm64' || process.arch === 'arm')))(
'sandbox options',
() => {
let appProcess: cp.ChildProcess = null as any;
@@ -1,6 +1,6 @@
--- electron/spec/api-browser-window-spec.ts.orig 2026-04-21 14:16:24 UTC
--- electron/spec/api-browser-window-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/api-browser-window-spec.ts
@@ -69,7 +69,7 @@ describe('BrowserWindow module', () => {
@@ -85,7 +85,7 @@ describe('BrowserWindow module', () => {
}).not.to.throw();
});
@@ -9,7 +9,7 @@
const appPath = path.join(fixtures, 'apps', 'xwindow-icon');
const appProcess = childProcess.spawn(process.execPath, [appPath]);
await once(appProcess, 'exit');
@@ -326,7 +326,7 @@ describe('BrowserWindow module', () => {
@@ -342,7 +342,7 @@ describe('BrowserWindow module', () => {
});
});
@@ -18,7 +18,7 @@
afterEach(closeAllWindows);
it('can set content protection', async () => {
const w = new BrowserWindow({ show: false });
@@ -1197,7 +1197,7 @@ describe('BrowserWindow module', () => {
@@ -1252,7 +1252,7 @@ describe('BrowserWindow module', () => {
describe('BrowserWindow.minimize()', () => {
// TODO(codebytere): Enable for Linux once maximize/minimize events work in CI.
@@ -27,7 +27,7 @@
const minimize = once(w, 'minimize');
w.minimize();
await minimize;
@@ -1214,7 +1214,7 @@ describe('BrowserWindow module', () => {
@@ -1269,7 +1269,7 @@ describe('BrowserWindow module', () => {
});
// TODO(dsanders11): Enable for Linux once CI plays nice with these kinds of tests
@@ -36,7 +36,7 @@
const maximize = once(w, 'maximize');
const shown = once(w, 'show');
w.maximize();
@@ -1279,7 +1279,7 @@ describe('BrowserWindow module', () => {
@@ -1334,7 +1334,7 @@ describe('BrowserWindow module', () => {
expect(w.isFocused()).to.equal(true);
});
@@ -45,7 +45,7 @@
const w1 = new BrowserWindow({ show: false });
const w2 = new BrowserWindow({ show: false });
const w3 = new BrowserWindow({ show: false });
@@ -1381,7 +1381,7 @@ describe('BrowserWindow module', () => {
@@ -1437,7 +1437,7 @@ describe('BrowserWindow module', () => {
expect(w.isFocused()).to.equal(false);
});
@@ -54,7 +54,7 @@
const w1 = new BrowserWindow({ show: false });
const w2 = new BrowserWindow({ show: false });
const w3 = new BrowserWindow({ show: false });
@@ -1840,7 +1840,7 @@ describe('BrowserWindow module', () => {
@@ -1895,7 +1895,7 @@ describe('BrowserWindow module', () => {
});
});
@@ -63,7 +63,7 @@
it('checks normal bounds when maximized', async () => {
const bounds = w.getBounds();
const maximize = once(w, 'maximize');
@@ -2050,7 +2050,7 @@ describe('BrowserWindow module', () => {
@@ -2113,7 +2113,7 @@ describe('BrowserWindow module', () => {
});
});
@@ -72,25 +72,25 @@
it('checks normal bounds when minimized', async () => {
const bounds = w.getBounds();
const minimize = once(w, 'minimize');
@@ -3151,7 +3151,7 @@ describe('BrowserWindow module', () => {
@@ -3216,7 +3216,7 @@ describe('BrowserWindow module', () => {
describe('BrowserWindow.setOpacity(opacity)', () => {
afterEach(closeAllWindows);
- ifdescribe(process.platform !== 'linux')(('Windows and Mac'), () => {
+ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')(('Windows and Mac'), () => {
- ifdescribe(process.platform !== 'linux')('Windows and Mac', () => {
+ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('Windows and Mac', () => {
it('make window with initial opacity', () => {
const w = new BrowserWindow({ show: false, opacity: 0.5 });
expect(w.getOpacity()).to.equal(0.5);
@@ -3177,7 +3177,7 @@ describe('BrowserWindow module', () => {
@@ -3242,7 +3242,7 @@ describe('BrowserWindow module', () => {
});
});
- ifdescribe(process.platform === 'linux')(('Linux'), () => {
+ ifdescribe(process.platform === 'linux' || process.platform === 'freebsd')(('Linux'), () => {
- ifdescribe(process.platform === 'linux')('Linux', () => {
+ ifdescribe(process.platform === 'linux' || process.platform === 'freebsd')('Linux', () => {
it('sets 1 regardless of parameter', () => {
const w = new BrowserWindow({ show: false });
w.setOpacity(0);
@@ -3388,7 +3388,7 @@ describe('BrowserWindow module', () => {
@@ -3456,7 +3456,7 @@ describe('BrowserWindow module', () => {
expect(overlayRectPreMax.height).to.equal(size);
// 'maximize' event is not emitted on Linux in CI.
@@ -99,7 +99,7 @@
const maximize = once(w, 'maximize');
w.show();
w.maximize();
@@ -3454,7 +3454,7 @@ describe('BrowserWindow module', () => {
@@ -3522,7 +3522,7 @@ describe('BrowserWindow module', () => {
expect(preMaxHeight).to.equal(size);
// 'maximize' event is not emitted on Linux in CI.
@@ -108,7 +108,7 @@
const maximize = once(w, 'maximize');
w.show();
w.maximize();
@@ -4147,7 +4147,7 @@ describe('BrowserWindow module', () => {
@@ -4224,7 +4224,7 @@ describe('BrowserWindow module', () => {
expect(test.nodeTimers).to.equal(true);
expect(test.nodeUrl).to.equal(true);
@@ -117,7 +117,7 @@
expect(test.creationTime).to.be.null('creation time');
expect(test.systemMemoryInfo).to.be.null('system memory info');
} else {
@@ -4652,7 +4652,7 @@ describe('BrowserWindow module', () => {
@@ -4740,7 +4740,7 @@ describe('BrowserWindow module', () => {
});
});
@@ -126,25 +126,25 @@
afterEach(closeAllWindows);
it('emits an event when window is maximized', async () => {
const w = new BrowserWindow({ show: false });
@@ -4923,7 +4923,7 @@ describe('BrowserWindow module', () => {
@@ -5010,7 +5010,7 @@ describe('BrowserWindow module', () => {
// TODO(zcbenz):
// This test does not run on Linux CI. See:
// https://github.com/electron/electron/issues/28699
- ifit(process.platform === 'linux' && !process.env.CI)('should bring a minimized maximized window back to maximized state', async () => {
+ ifit((process.platform === 'linux' || process.platform === 'freebsd') && !process.env.CI)('should bring a minimized maximized window back to maximized state', async () => {
const w = new BrowserWindow({});
const maximize = once(w, 'maximize');
w.maximize();
@@ -4938,7 +4938,7 @@ describe('BrowserWindow module', () => {
expect(w.isMaximized()).to.equal(true);
});
- ifit(process.platform === 'linux' && !process.env.CI)(
+ ifit((process.platform === 'linux' || process.platform === 'freebsd') && !process.env.CI)(
'should bring a minimized maximized window back to maximized state',
async () => {
const w = new BrowserWindow({});
@@ -5028,7 +5028,7 @@ describe('BrowserWindow module', () => {
}
);
- ifit(process.platform !== 'linux')('should not break fullscreen state', async () => {
+ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('should not break fullscreen state', async () => {
const w = new BrowserWindow({ show: false });
w.show();
@@ -4961,7 +4961,7 @@ describe('BrowserWindow module', () => {
@@ -5051,7 +5051,7 @@ describe('BrowserWindow module', () => {
});
// TODO(dsanders11): Enable once maximize event works on Linux again on CI
@@ -153,7 +153,7 @@
afterEach(closeAllWindows);
it('should show the window if it is not currently shown', async () => {
const w = new BrowserWindow({ show: false });
@@ -4998,7 +4998,7 @@ describe('BrowserWindow module', () => {
@@ -5088,7 +5088,7 @@ describe('BrowserWindow module', () => {
// TODO(dsanders11): Enable once minimize event works on Linux again.
// See https://github.com/electron/electron/issues/28699
@@ -162,7 +162,7 @@
const w = new BrowserWindow();
const minimize = once(w, 'minimize');
w.minimize();
@@ -5484,7 +5484,7 @@ describe('BrowserWindow module', () => {
@@ -5585,7 +5585,7 @@ describe('BrowserWindow module', () => {
});
// On Linux there is no "resizable" property of a window.
@@ -171,7 +171,7 @@
const w = new BrowserWindow({ show: false });
expect(w.resizable).to.be.true('resizable');
@@ -5724,7 +5724,7 @@ describe('BrowserWindow module', () => {
@@ -5825,7 +5825,7 @@ describe('BrowserWindow module', () => {
});
});
@@ -180,12 +180,12 @@
// Not implemented on Linux.
afterEach(closeAllWindows);
@@ -7035,7 +7035,7 @@ describe('BrowserWindow module', () => {
@@ -7142,7 +7142,7 @@ describe('BrowserWindow module', () => {
describe('"transparent" option', () => {
afterEach(closeAllWindows);
- ifit(process.platform !== 'linux')('correctly returns isMaximized() when the window is maximized then minimized', async () => {
+ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('correctly returns isMaximized() when the window is maximized then minimized', async () => {
const w = new BrowserWindow({
frame: false,
transparent: true
- ifit(process.platform !== 'linux')(
+ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')(
'correctly returns isMaximized() when the window is maximized then minimized',
async () => {
const w = new BrowserWindow({
@@ -1,15 +1,15 @@
--- electron/spec/api-content-tracing-spec.ts.orig 2025-04-04 05:26:44 UTC
--- electron/spec/api-content-tracing-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/api-content-tracing-spec.ts
@@ -9,7 +9,7 @@ import { ifdescribe } from './lib/spec-helpers';
import { ifdescribe } from './lib/spec-helpers';
// FIXME: The tests are skipped on linux arm/arm64
-ifdescribe(!(['arm', 'arm64'].includes(process.arch)) || (process.platform !== 'linux'))('contentTracing', () => {
+ifdescribe(!(['arm', 'arm64'].includes(process.arch)) || (process.platform !== 'linux' && process.platform !== 'freebsd'))('contentTracing', () => {
const record = async (options: TraceConfig | TraceCategoriesAndOptions, outputFilePath: string | undefined, recordTimeInMilliseconds = 1e1) => {
await app.whenReady();
@@ -91,7 +91,7 @@ ifdescribe(!(['arm', 'arm64'].includes(process.arch))
-ifdescribe(!['arm', 'arm64'].includes(process.arch) || process.platform !== 'linux')('contentTracing', () => {
+ifdescribe(!['arm', 'arm64'].includes(process.arch) || (process.platform !== 'linux' && process.platform !== 'freebsd'))('contentTracing', () => {
const record = async (
options: TraceConfig | TraceCategoriesAndOptions,
outputFilePath: string | undefined,
@@ -95,7 +95,7 @@ ifdescribe(!['arm', 'arm64'].includes(process.arch) ||
});
});
@@ -1,4 +1,4 @@
--- electron/spec/api-crash-reporter-spec.ts.orig 2026-04-15 14:05:49 UTC
--- electron/spec/api-crash-reporter-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/api-crash-reporter-spec.ts
@@ -14,7 +14,7 @@ const isWindowsOnArm = process.platform === 'win32' &&
import { ifdescribe, ifit, defer, startRemoteControlApp, repeatedly, listen } from './lib/spec-helpers';
@@ -8,8 +8,8 @@
+const isLinuxOnArm = ((process.platform === 'linux' || process.platform === 'freebsd') && process.arch.includes('arm'));
type CrashInfo = {
prod: string
@@ -47,7 +47,7 @@ function checkCrash (expectedProcessType: string, fiel
prod: string;
@@ -47,7 +47,7 @@ function checkCrash(expectedProcessType: string, field
// TODO(nornagon): minidumps are sometimes (not always) turning up empty on
// 32-bit Linux. Figure out why.
@@ -18,39 +18,39 @@
expect(fields.upload_file_minidump.length).to.be.greaterThan(0);
}
}
@@ -184,7 +184,7 @@ ifdescribe(!isLinuxOnArm && !process.mas && !process.e
@@ -186,7 +186,7 @@ ifdescribe(!isLinuxOnArm && !process.mas && !process.e
// Ensures that passing in crashpadHandlerPID flag for Linx child processes
// does not affect child process args.
- ifit(process.platform === 'linux')('ensure linux child process args are not modified', async () => {
+ ifit(process.platform === 'linux' || process.platform === 'freebsd')('ensure linux child process args are not modified', async () => {
const { port, waitForCrash } = await startServer();
let exitCode: number | null = null;
const appPath = path.join(__dirname, 'fixtures', 'apps', 'crash');
@@ -561,7 +561,7 @@ ifdescribe(!isLinuxOnArm && !process.mas && !process.e
// Ensures that passing in crashpadHandlerPID flag for Linx child processes
// does not affect child process args.
- ifit(process.platform === 'linux')('ensure linux child process args are not modified', async () => {
+ ifit(process.platform === 'linux' || process.platform === 'freebsd')('ensure linux child process args are not modified', async () => {
const { port, waitForCrash } = await startServer();
let exitCode: number | null = null;
const appPath = path.join(__dirname, 'fixtures', 'apps', 'crash');
@@ -612,7 +612,7 @@ ifdescribe(!isLinuxOnArm && !process.mas && !process.e
}
}
- const processList = process.platform === 'linux'
+ const processList = (process.platform === 'linux' || process.platform === 'freebsd')
? ['main', 'renderer', 'sandboxed-renderer']
: ['main', 'renderer', 'sandboxed-renderer', 'node'];
for (const crashingProcess of processList) {
@@ -574,7 +574,7 @@ ifdescribe(!isLinuxOnArm && !process.mas && !process.e
return app.getPath('crashDumps');
});
let reportsDir = crashesDir;
- if (process.platform === 'darwin' || process.platform === 'linux') {
+ if (process.platform === 'darwin' || process.platform === 'linux' || process.platform === 'freebsd') {
reportsDir = path.join(crashesDir, 'completed');
} else if (process.platform === 'win32') {
reportsDir = path.join(crashesDir, 'reports');
@@ -598,7 +598,7 @@ ifdescribe(!isLinuxOnArm && !process.mas && !process.e
expect(remoteCrashesDir).to.equal(crashesDir);
const processList =
- process.platform === 'linux'
+ (process.platform === 'linux' || process.platform === 'freebsd')
? ['main', 'renderer', 'sandboxed-renderer']
: ['main', 'renderer', 'sandboxed-renderer', 'node'];
for (const crashingProcess of processList) {
@@ -629,7 +629,7 @@ ifdescribe(!isLinuxOnArm && !process.mas && !process.e
return app.getPath('crashDumps');
});
let reportsDir = crashesDir;
- if (process.platform === 'darwin' || process.platform === 'linux') {
+ if (process.platform === 'darwin' || process.platform === 'linux' || process.platform === 'freebsd') {
reportsDir = path.join(crashesDir, 'completed');
} else if (process.platform === 'win32') {
reportsDir = path.join(crashesDir, 'reports');
@@ -657,7 +657,7 @@ ifdescribe(!isLinuxOnArm && !process.mas && !process.e
expect(remoteCrashesDir).to.equal(crashesDir);
let reportsDir = crashesDir;
- if (process.platform === 'darwin' || process.platform === 'linux') {
+ if (process.platform === 'darwin' || process.platform === 'linux' || process.platform === 'freebsd') {
reportsDir = path.join(crashesDir, 'completed');
} else if (process.platform === 'win32') {
reportsDir = path.join(crashesDir, 'reports');
let reportsDir = crashesDir;
- if (process.platform === 'darwin' || process.platform === 'linux') {
+ if (process.platform === 'darwin' || process.platform === 'linux' || process.platform === 'freebsd') {
reportsDir = path.join(crashesDir, 'completed');
} else if (process.platform === 'win32') {
reportsDir = path.join(crashesDir, 'reports');
@@ -1,9 +1,9 @@
--- electron/spec/api-desktop-capturer-spec.ts.orig 2026-04-15 14:05:49 UTC
--- electron/spec/api-desktop-capturer-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/api-desktop-capturer-spec.ts
@@ -9,7 +9,7 @@ function getSourceTypes (): ('window' | 'screen')[] {
@@ -9,7 +9,7 @@ function getSourceTypes(): ('window' | 'screen')[] {
import { closeAllWindows } from './lib/window-helpers';
function getSourceTypes (): ('window' | 'screen')[] {
function getSourceTypes(): ('window' | 'screen')[] {
- if (process.platform === 'linux') {
+ if (process.platform === 'linux' || process.platform === 'freebsd') {
return ['screen'];
@@ -36,7 +36,7 @@
const displays = screen.getAllDisplays();
const sources = await desktopCapturer.getSources({ types: ['screen'] });
expect(sources).to.be.an('array').of.length(displays.length);
@@ -99,7 +99,7 @@ describe('desktopCapturer', () => {
@@ -103,7 +103,7 @@ describe('desktopCapturer', () => {
});
// Linux doesn't return any window sources.
@@ -45,7 +45,7 @@
const w2 = new BrowserWindow({ show: false, width: 100, height: 100, webPreferences: { contextIsolation: false } });
const wShown = once(w2, 'show');
const wFocused = once(w2, 'focus');
@@ -123,7 +123,7 @@ describe('desktopCapturer', () => {
@@ -127,7 +127,7 @@ describe('desktopCapturer', () => {
});
// Linux doesn't return any window sources.
@@ -54,7 +54,7 @@
const w2 = new BrowserWindow({ show: false, width: 100, height: 100, webPreferences: { contextIsolation: false } });
const wShown = once(w2, 'show');
const wFocused = once(w2, 'focus');
@@ -169,7 +169,7 @@ describe('desktopCapturer', () => {
@@ -173,7 +173,7 @@ describe('desktopCapturer', () => {
});
// Linux doesn't return any window sources.
@@ -63,7 +63,7 @@
// DesktopCapturer.getSources() is guaranteed to return in the correct
// z-order from foreground to background.
const MAX_WIN = 4;
@@ -256,7 +256,7 @@ describe('desktopCapturer', () => {
@@ -259,7 +259,7 @@ describe('desktopCapturer', () => {
});
// Linux doesn't return any window sources.
@@ -1,6 +1,6 @@
--- electron/spec/api-menu-spec.ts.orig 2025-05-06 23:52:46 UTC
--- electron/spec/api-menu-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/api-menu-spec.ts
@@ -891,7 +891,7 @@ describe('Menu module', function () {
@@ -893,7 +893,7 @@ describe('Menu module', function () {
// https://github.com/electron/electron/issues/35724
// Maximizing window is enough to trigger the bug
// FIXME(dsanders11): Test always passes on CI, even pre-fix
@@ -1,6 +1,6 @@
--- electron/spec/api-native-image-spec.ts.orig 2025-11-13 22:50:46 UTC
--- electron/spec/api-native-image-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/api-native-image-spec.ts
@@ -439,7 +439,7 @@ describe('nativeImage module', () => {
@@ -433,7 +433,7 @@ describe('nativeImage module', () => {
});
});
@@ -1,29 +1,29 @@
--- electron/spec/api-net-log-spec.ts.orig 2024-10-09 13:53:06 UTC
--- electron/spec/api-net-log-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/api-net-log-spec.ts
@@ -121,7 +121,7 @@ describe('netLog module', () => {
expect(JSON.parse(dump).events.some((x: any) => x.params && x.params.bytes && Buffer.from(x.params.bytes, 'base64').includes(unique))).to.be.true('uuid present in dump');
@@ -125,7 +125,7 @@ describe('netLog module', () => {
).to.be.true('uuid present in dump');
});
- ifit(process.platform !== 'linux')('should begin and end logging automatically when --log-net-log is passed', async () => {
+ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('should begin and end logging automatically when --log-net-log is passed', async () => {
const appProcess = ChildProcess.spawn(process.execPath,
[appPath], {
env: {
@@ -134,7 +134,7 @@ describe('netLog module', () => {
expect(fs.existsSync(dumpFile)).to.be.true('dump file exists');
});
- ifit(process.platform !== 'linux')(
+ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')(
'should begin and end logging automatically when --log-net-log is passed',
async () => {
const appProcess = ChildProcess.spawn(process.execPath, [appPath], {
@@ -140,7 +140,7 @@ describe('netLog module', () => {
}
);
- ifit(process.platform !== 'linux')('should begin and end logging automatically when --log-net-log is passed, and behave correctly when .startLogging() and .stopLogging() is called', async () => {
+ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('should begin and end logging automatically when --log-net-log is passed, and behave correctly when .startLogging() and .stopLogging() is called', async () => {
const appProcess = ChildProcess.spawn(process.execPath,
[appPath], {
env: {
@@ -150,7 +150,7 @@ describe('netLog module', () => {
expect(fs.existsSync(dumpFileDynamic)).to.be.true('dynamic dump file exists');
});
- ifit(process.platform !== 'linux')(
+ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')(
'should begin and end logging automatically when --log-net-log is passed, and behave correctly when .startLogging() and .stopLogging() is called',
async () => {
const appProcess = ChildProcess.spawn(process.execPath, [appPath], {
@@ -158,7 +158,7 @@ describe('netLog module', () => {
}
);
- ifit(process.platform !== 'linux')('should end logging automatically when only .startLogging() is called', async () => {
+ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('should end logging automatically when only .startLogging() is called', async () => {
const appProcess = ChildProcess.spawn(process.execPath,
[appPath], {
env: {
- ifit(process.platform !== 'linux')(
+ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')(
'should end logging automatically when only .startLogging() is called',
async () => {
const appProcess = ChildProcess.spawn(process.execPath, [appPath], {
@@ -1,11 +1,11 @@
--- electron/spec/api-notification-dbus-spec.ts.orig 2024-10-09 13:53:06 UTC
--- electron/spec/api-notification-dbus-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/api-notification-dbus-spec.ts
@@ -19,7 +19,7 @@ const fixturesPath = path.join(__dirname, 'fixtures');
@@ -20,7 +20,7 @@ const skip =
const fixturesPath = path.join(__dirname, 'fixtures');
-const skip = process.platform !== 'linux' ||
+const skip = (process.platform !== 'linux' && process.platform !== 'freebsd') ||
process.arch === 'ia32' ||
process.arch.indexOf('arm') === 0 ||
!process.env.DBUS_SESSION_BUS_ADDRESS;
const skip =
- process.platform !== 'linux' ||
+ (process.platform !== 'linux' && process.platform !== 'freebsd') ||
process.arch === 'ia32' ||
process.arch.indexOf('arm') === 0 ||
!process.env.DBUS_SESSION_BUS_ADDRESS;
@@ -1,11 +1,11 @@
--- electron/spec/api-power-monitor-spec.ts.orig 2024-10-09 13:53:06 UTC
--- electron/spec/api-power-monitor-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/api-power-monitor-spec.ts
@@ -18,7 +18,7 @@ describe('powerMonitor', () => {
describe('powerMonitor', () => {
let logindMock: any, dbusMockPowerMonitor: any, getCalls: any, emitSignal: any, reset: any;
- ifdescribe(process.platform === 'linux' && process.env.DBUS_SYSTEM_BUS_ADDRESS != null)('when powerMonitor module is loaded with dbus mock', () => {
+ ifdescribe((process.platform === 'linux' || process.platform === 'freebsd') && process.env.DBUS_SYSTEM_BUS_ADDRESS != null)('when powerMonitor module is loaded with dbus mock', () => {
before(async () => {
const systemBus = dbus.systemBus();
const loginService = systemBus.getService('org.freedesktop.login1');
- ifdescribe(process.platform === 'linux' && process.env.DBUS_SYSTEM_BUS_ADDRESS != null)(
+ ifdescribe((process.platform === 'linux' || process.platform === 'freebsd') && process.env.DBUS_SYSTEM_BUS_ADDRESS != null)(
'when powerMonitor module is loaded with dbus mock',
() => {
before(async () => {
@@ -1,6 +1,6 @@
--- electron/spec/api-process-spec.ts.orig 2025-03-12 08:26:33 UTC
--- electron/spec/api-process-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/api-process-spec.ts
@@ -39,7 +39,7 @@ describe('process module', () => {
@@ -41,7 +41,7 @@ describe('process module', () => {
it('resolves promise successfully with valid data', async () => {
const memoryInfo = await invoke(() => process.getProcessMemoryInfo());
expect(memoryInfo).to.be.an('object');
@@ -1,6 +1,6 @@
--- electron/spec/api-protocol-spec.ts.orig 2026-04-30 19:26:43 UTC
--- electron/spec/api-protocol-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/api-protocol-spec.ts
@@ -1899,7 +1899,7 @@ describe('protocol module', () => {
@@ -2056,7 +2056,7 @@ describe('protocol module', () => {
// TODO(nornagon): this test doesn't pass on Linux currently, investigate.
// test is also flaky on CI on macOS so it is currently disabled there as well.
@@ -1,6 +1,6 @@
--- electron/spec/api-safe-storage-spec.ts.orig 2024-10-09 13:53:06 UTC
--- electron/spec/api-safe-storage-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/api-safe-storage-spec.ts
@@ -29,7 +29,7 @@ describe('safeStorage module', () => {
@@ -33,7 +33,7 @@ describe('safeStorage module', () => {
describe('safeStorage module', () => {
before(() => {
@@ -9,7 +9,7 @@
safeStorage.setUsePlainTextEncryption(true);
}
});
@@ -47,7 +47,7 @@ describe('safeStorage module', () => {
@@ -51,7 +51,7 @@ describe('safeStorage module', () => {
});
});
@@ -1,6 +1,6 @@
--- electron/spec/api-subframe-spec.ts.orig 2025-09-02 20:56:04 UTC
--- electron/spec/api-subframe-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/api-subframe-spec.ts
@@ -247,7 +247,7 @@ describe('subframe with non-standard schemes', () => {
@@ -248,7 +248,7 @@ describe('subframe with non-standard schemes', () => {
});
// app.getAppMetrics() does not return sandbox information on Linux.
@@ -1,6 +1,6 @@
--- electron/spec/api-tray-spec.ts.orig 2025-08-25 07:57:03 UTC
--- electron/spec/api-tray-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/api-tray-spec.ts
@@ -30,13 +30,13 @@ describe('tray module', () => {
@@ -32,13 +32,13 @@ describe('tray module', () => {
}).to.throw(/Failed to load image from path (.+)/);
});
@@ -16,9 +16,9 @@
expect(() => {
tray = new Tray(nativeImage.createEmpty(), '0019A433-3526-48BA-A66C-676742C0FEFB');
}).to.not.throw();
@@ -131,7 +131,7 @@ describe('tray module', () => {
describe('tray.getBounds()', () => {
afterEach(() => { tray.destroy(); });
@@ -139,7 +139,7 @@ describe('tray module', () => {
tray.destroy();
});
- ifit(process.platform !== 'linux')('returns a bounds object', function () {
+ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('returns a bounds object', function () {
@@ -1,6 +1,6 @@
--- electron/spec/api-utility-process-spec.ts.orig 2026-03-26 20:19:14 UTC
--- electron/spec/api-utility-process-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/api-utility-process-spec.ts
@@ -538,7 +538,7 @@ describe('utilityProcess module', () => {
@@ -566,7 +566,7 @@ describe('utilityProcess module', () => {
expect(output).to.include(result);
});
@@ -9,7 +9,7 @@
const message = 'Message from utility process';
const child = utilityProcess.fork(path.join(fixturesPath, 'expose-main-process-module.js'));
await once(child, 'spawn');
@@ -575,7 +575,7 @@ describe('utilityProcess module', () => {
@@ -603,7 +603,7 @@ describe('utilityProcess module', () => {
await closeWindow(w);
});
@@ -1,15 +1,15 @@
--- electron/spec/api-web-contents-spec.ts.orig 2026-04-30 19:26:43 UTC
--- electron/spec/api-web-contents-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/api-web-contents-spec.ts
@@ -1245,7 +1245,7 @@ describe('webContents module', () => {
@@ -1260,7 +1260,7 @@ describe('webContents module', () => {
// back to OpenFolder() which does a blocking DirectoryExists() on the UI
// thread (pre-existing behavior). Workspace-gating is covered by the test
// above.
- ifit(process.platform !== 'linux')('reveals paths under a registered workspace folder without executing them', async () => {
+ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('reveals paths under a registered workspace folder without executing them', async () => {
const w = new BrowserWindow({ show: false });
await openDevTools(w);
@@ -2990,7 +2990,7 @@ describe('webContents module', () => {
- ifit(process.platform !== 'linux')(
+ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')(
'reveals paths under a registered workspace folder without executing them',
async () => {
const w = new BrowserWindow({ show: false });
@@ -3050,7 +3050,7 @@ describe('webContents module', () => {
});
// TODO(codebytere): OOPIF printing is disabled on Linux at the moment due to crashes.
@@ -1,6 +1,6 @@
--- electron/spec/api-web-frame-main-spec.ts.orig 2025-09-02 20:56:04 UTC
--- electron/spec/api-web-frame-main-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/api-web-frame-main-spec.ts
@@ -317,7 +317,7 @@ describe('webFrameMain module', () => {
@@ -307,7 +307,7 @@ describe('webFrameMain module', () => {
afterEach(closeAllWindows);
// TODO(jkleinsc) fix this flaky test on linux
@@ -1,7 +1,7 @@
--- electron/spec/chromium-spec.ts.orig 2026-04-21 14:16:24 UTC
--- electron/spec/chromium-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/chromium-spec.ts
@@ -475,13 +475,13 @@ describe('command line switches', () => {
it('should not set an invalid locale', async () => testLocale('asdfkl', `${currentLocale}|${currentSystemLocale}|${currentPreferredLanguages}`));
@@ -549,15 +549,15 @@ describe('command line switches', () => {
testLocale('asdfkl', `${currentLocale}|${currentSystemLocale}|${currentPreferredLanguages}`));
const lcAll = String(process.env.LC_ALL);
- ifit(process.platform === 'linux')('current process has a valid LC_ALL env', async () => {
@@ -10,15 +10,17 @@
expect(lcAll).to.not.equal(app.getLocale());
});
- ifit(process.platform === 'linux')('should not change LC_ALL', async () => testLocale('fr', lcAll, true));
- ifit(process.platform === 'linux')('should not change LC_ALL when setting invalid locale', async () => testLocale('asdfkl', lcAll, true));
- ifit(process.platform === 'linux')('should not change LC_ALL when --lang is not set', async () => testLocale('', lcAll, true));
- ifit(process.platform === 'linux')('should not change LC_ALL when setting invalid locale', async () =>
+ ifit(process.platform === 'linux' || process.platform === 'freebsd')('should not change LC_ALL', async () => testLocale('fr', lcAll, true));
+ ifit(process.platform === 'linux' || process.platform === 'freebsd')('should not change LC_ALL when setting invalid locale', async () => testLocale('asdfkl', lcAll, true));
+ ifit(process.platform === 'linux' || process.platform === 'freebsd')('should not change LC_ALL when --lang is not set', async () => testLocale('', lcAll, true));
+ ifit(process.platform === 'linux' || process.platform === 'freebsd')('should not change LC_ALL when setting invalid locale', async () =>
testLocale('asdfkl', lcAll, true)
);
- ifit(process.platform === 'linux')('should not change LC_ALL when --lang is not set', async () =>
+ ifit(process.platform === 'linux' || process.platform === 'freebsd')('should not change LC_ALL when --lang is not set', async () =>
testLocale('', lcAll, true)
);
});
describe('--remote-debugging-pipe switch', () => {
@@ -3435,12 +3435,12 @@ describe('font fallback', () => {
@@ -3669,12 +3669,12 @@ describe('font fallback', () => {
expect(fonts[0].familyName).to.equal('Arial');
} else if (process.platform === 'darwin') {
expect(fonts[0].familyName).to.equal('Helvetica');
@@ -28,17 +30,17 @@
} // I think this depends on the distro? We don't specify a default.
});
- ifit(process.platform !== 'linux')('should fall back to Japanese font for sans-serif Japanese script', async function () {
+ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('should fall back to Japanese font for sans-serif Japanese script', async function () {
const html = `
<html lang="ja-JP">
<head>
@@ -3993,7 +3993,7 @@ describe('paste execCommand', () => {
- ifit(process.platform !== 'linux')(
+ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')(
'should fall back to Japanese font for sans-serif Japanese script',
async function () {
const html = `
@@ -4241,7 +4241,7 @@ describe('paste execCommand', () => {
});
});
-ifdescribe((process.platform !== 'linux' || app.isUnityRunning()))('navigator.setAppBadge/clearAppBadge', () => {
+ifdescribe(((process.platform !== 'linux' && process.platform !== 'freebsd') || app.isUnityRunning()))('navigator.setAppBadge/clearAppBadge', () => {
-ifdescribe(process.platform !== 'linux' || app.isUnityRunning())('navigator.setAppBadge/clearAppBadge', () => {
+ifdescribe((process.platform !== 'linux' && process.platform !== 'freebsd') || app.isUnityRunning())('navigator.setAppBadge/clearAppBadge', () => {
let w: BrowserWindow;
const expectedBadgeCount = 42;
@@ -1,11 +1,11 @@
--- electron/spec/crash-spec.ts.orig 2025-03-26 14:46:58 UTC
--- electron/spec/crash-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/crash-spec.ts
@@ -52,7 +52,7 @@ const shouldRunCase = (crashCase: string) => {
if (process.platform === 'win32') {
return process.arch !== 'ia32';
} else {
- return (process.platform !== 'linux' || (process.arch !== 'arm64' && process.arch !== 'arm'));
+ return ((process.platform !== 'linux' && process.platform !== 'freebsd') || (process.arch !== 'arm64' && process.arch !== 'arm'));
- return process.platform !== 'linux' || (process.arch !== 'arm64' && process.arch !== 'arm');
+ return (process.platform !== 'linux' && process.platform !== 'freebsd') || (process.arch !== 'arm64' && process.arch !== 'arm');
}
}
default: {
@@ -1,6 +1,6 @@
--- electron/spec/fixtures/crash-cases/safe-storage/index.js.orig 2024-10-09 13:53:06 UTC
--- electron/spec/fixtures/crash-cases/safe-storage/index.js.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/fixtures/crash-cases/safe-storage/index.js
@@ -22,7 +22,7 @@ const { expect } = require('chai');
@@ -24,7 +24,7 @@ const { expect } = require('chai');
await app.whenReady();
// isEncryptionAvailable() will always return false on CI due to a mocked
// dbus as mentioned above.
@@ -1,6 +1,6 @@
--- electron/spec/node-spec.ts.orig 2024-10-09 13:53:06 UTC
--- electron/spec/node-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/node-spec.ts
@@ -148,7 +148,7 @@ describe('node feature', () => {
@@ -206,7 +206,7 @@ describe('node feature', () => {
});
describe('child_process.exec', () => {
@@ -1,11 +1,11 @@
--- electron/spec/version-bump-spec.ts.orig 2026-01-15 18:39:20 UTC
--- electron/spec/version-bump-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/version-bump-spec.ts
@@ -54,7 +54,7 @@ describe('version-bumper', () => {
}
describe('version-bumper', () => {
- ifdescribe(!(process.platform === 'linux' && process.arch.indexOf('arm') === 0) && process.platform !== 'darwin')('nextVersion', () => {
+ ifdescribe(!((process.platform === 'linux' || process.platform === 'freebsd') && process.arch.indexOf('arm') === 0) && process.platform !== 'darwin')('nextVersion', () => {
describe('bump versions', () => {
const nightlyPattern = /[0-9.]*(-nightly.(\d{4})(\d{2})(\d{2}))$/g;
const betaPattern = /[0-9.]*(-beta[0-9.]*)/g;
- ifdescribe(!(process.platform === 'linux' && process.arch.indexOf('arm') === 0) && process.platform !== 'darwin')(
+ ifdescribe(!((process.platform === 'linux' || process.platform === 'freebsd') && process.arch.indexOf('arm') === 0) && process.platform !== 'darwin')(
'nextVersion',
() => {
describe('bump versions', () => {
@@ -1,11 +1,11 @@
--- electron/spec/visibility-state-spec.ts.orig 2024-10-22 02:29:46 UTC
--- electron/spec/visibility-state-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/visibility-state-spec.ts
@@ -11,7 +11,7 @@ import { closeAllWindows } from './lib/window-helpers'
@@ -18,7 +18,7 @@ import { closeAllWindows } from './lib/window-helpers'
// visibilityState specs pass on linux with a real window manager but on CI
// the environment does not let these specs pass
-ifdescribe(process.platform !== 'linux')('document.visibilityState', () => {
+ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('document.visibilityState', () => {
let w: BaseWindow & {webContents: WebContents};
let w: BaseWindow & { webContents: WebContents };
before(() => {
@@ -1,6 +1,6 @@
--- electron/spec/webview-spec.ts.orig 2024-10-09 13:53:06 UTC
--- electron/spec/webview-spec.ts.orig 2026-05-08 13:55:13 UTC
+++ electron/spec/webview-spec.ts
@@ -559,7 +559,7 @@ describe('<webview> tag', function () {
@@ -578,7 +578,7 @@ describe('<webview> tag', function () {
});
// FIXME(zcbenz): Fullscreen events do not work on Linux.