Files
Firelink/scripts/window-frame.node-test.js
T
NimBold 31720954e8 chore(deps): refresh Firelink packages
- Refresh npm and Rust dependency lockfiles to compatible stable versions
- Require Tauri 2.12.1 for macOS Properties transparency
- Pin verified Windows/Linux FFmpeg builds in the engine source lock
2026-10-03 19:00:52 +03:30

98 lines
4.1 KiB
JavaScript

import assert from 'node:assert/strict';
import fs from 'node:fs';
import test from 'node:test';
const windowStyles = fs.readFileSync('src/index.css', 'utf8');
const propertiesWindowSource = fs.readFileSync('src-tauri/src/properties_window.rs', 'utf8');
const mainWindowSource = fs.readFileSync('src-tauri/src/lib.rs', 'utf8');
const cargoManifest = fs.readFileSync('src-tauri/Cargo.toml', 'utf8');
const tauriConfiguration = JSON.parse(fs.readFileSync('src-tauri/tauri.conf.json', 'utf8'));
const windowsConfiguration = JSON.parse(
fs.readFileSync('src-tauri/tauri.windows.conf.json', 'utf8')
);
const cssBlock = selector => {
const opening = `${selector} {`;
const start = windowStyles.indexOf(opening);
assert.notEqual(start, -1, `${selector} should exist`);
const end = windowStyles.indexOf('}', start + opening.length);
assert.notEqual(end, -1, `${selector} should have a closing brace`);
return windowStyles.slice(start, end + 1);
};
test('Windows native shadows remain disabled for the main and Properties windows', () => {
assert.deepEqual(
{
transparent: windowsConfiguration.app.windows[0].transparent,
decorations: windowsConfiguration.app.windows[0].decorations,
shadow: windowsConfiguration.app.windows[0].shadow,
},
{ transparent: true, decorations: false, shadow: false }
);
assert.match(
mainWindowSource,
/let main_window_config = app\s*\.config\(\)\s*\.app\s*\.windows[\s\S]*?\.find\(\|window\| window\.label == "main"\)/
);
assert.match(
mainWindowSource,
/WebviewWindowBuilder::from_config\(\s*app\.handle\(\),\s*&main_window_config,\s*\)/
);
assert.match(
propertiesWindowSource,
/#\[cfg\(target_os = "windows"\)\]\s*let builder = builder\.transparent\(true\)\.shadow\(false\);/
);
});
test('macOS Properties transparency uses a Tauri baseline that no longer needs the private API feature', () => {
const version = cargoManifest.match(/^tauri\s*=\s*\{\s*version\s*=\s*"(\d+)\.(\d+)\.(\d+)"/m);
assert.ok(version, 'Tauri dependency must declare a three-part minimum version');
const [, major, minor, patch] = version.map(Number);
assert.ok(
major > 2 || (major === 2 && (minor > 12 || (minor === 12 && patch >= 1))),
'macOS transparency without macos-private-api requires Tauri 2.12.1 or newer'
);
assert.doesNotMatch(cargoManifest, /macos-private-api/);
assert.equal(tauriConfiguration.app.macOSPrivateApi, undefined);
assert.match(
propertiesWindowSource,
/#\[cfg\(target_os = "macos"\)\]\s*let builder = builder\.transparent\(true\)/
);
});
test('Windows selects stronger renderer-owned contours for every theme', () => {
const expectedTokens = [
[':root', '220 12% 30% / 0.60', '220 10% 30% / 0.18'],
['.theme-light', '220 12% 30% / 0.60', '220 10% 30% / 0.18'],
['.theme-dark', '0 0% 100% / 0.35', '0 0% 100% / 0.14'],
['.theme-dracula', '228 14% 84% / 0.45', '228 14% 84% / 0.18'],
['.theme-nord', '218 27% 88% / 0.45', '218 27% 88% / 0.18'],
];
for (const [selector, active, inactive] of expectedTokens) {
const block = cssBlock(selector);
assert.match(block, new RegExp(`--window-frame-windows-active: ${active.replace('.', '\\.')}\\s*;`));
assert.match(block, new RegExp(`--window-frame-windows-inactive: ${inactive.replace('.', '\\.')}\\s*;`));
}
const windowsBlock = cssBlock('html[data-platform="windows"]');
assert.match(
windowsBlock,
/--window-frame-active:\s*var\(--window-frame-windows-active\);/
);
assert.match(
windowsBlock,
/--window-frame-inactive:\s*var\(--window-frame-windows-inactive\);/
);
});
test('maximized Windows shells remain square and borderless', () => {
assert.match(
windowStyles,
/html\[data-platform="windows"\] :is\(\.app-shell, \.properties-window-shell\)\[data-window-maximized="true"\] \{\s*border-color:\s*transparent;/
);
assert.match(
windowStyles,
/html\[data-platform="linux"\] :is\(\.app-shell, \.properties-window-shell\),\s*html\[data-platform="windows"\] :is\(\.app-shell, \.properties-window-shell\)\[data-window-maximized="true"\] \{\s*border-radius:\s*0;/
);
});