feat: deliver the redesigned desktop workspace
Rebuild downloads, link collection, settings, history, and statistics around a responsive desktop shell with compact account and queue tables, contextual navigation, persistent update affordances, unified overlays, and accessible keyboard interactions. Add safe history-folder reveal IPC, responsive 2560/1920/1366/1120 coverage, deterministic visual fixtures, focused component regressions, and release-tree exclusions for internal working files. Bump the public application version to 2.0.13.
This commit is contained in:
@@ -1,15 +1,27 @@
|
||||
import { readFileSync } from "node:fs";
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
const appSource = readFileSync(new URL("../src/renderer/App.tsx", import.meta.url), "utf8");
|
||||
const styles = readFileSync(new URL("../src/renderer/styles.css", import.meta.url), "utf8");
|
||||
const workspaceSource = readFileSync(
|
||||
new URL("../src/renderer/views/settings/AccountWorkspace.tsx", import.meta.url),
|
||||
"utf8"
|
||||
);
|
||||
const styles = readFileSync(
|
||||
new URL("../src/renderer/views/settings/settings.css", import.meta.url),
|
||||
"utf8"
|
||||
);
|
||||
|
||||
describe("account management layout", () => {
|
||||
it("keeps both account tabs inside the same fixed content row", () => {
|
||||
expect(appSource).toContain('<div className="account-settings-layout">');
|
||||
expect(appSource).not.toContain("account-settings-layout ${accountManagementTab}");
|
||||
expect(appSource).toContain('<div className="account-rules-panel" hidden={accountManagementTab !== "rules"}>');
|
||||
expect(styles).not.toMatch(/\.account-settings-layout\.rules\s*{/);
|
||||
expect(styles).toMatch(/\.account-rules-panel\s*{[^}]*min-width:\s*0;[^}]*min-height:\s*0;[^}]*overflow-y:\s*auto;/s);
|
||||
expect(workspaceSource).toContain('<div className="settings-account-workspace">');
|
||||
expect(workspaceSource.match(/className="settings-account-panel"/g)).toHaveLength(2);
|
||||
expect(workspaceSource).toContain('hidden={model.activePanel !== "overview"}');
|
||||
expect(workspaceSource).toContain('hidden={model.activePanel !== "rules"}');
|
||||
expect(styles).toMatch(
|
||||
/\.settings-account-workspace\s*{[^}]*grid-template-rows:\s*auto auto minmax\(0, 1fr\);[^}]*min-width:\s*0;[^}]*min-height:\s*0;/s
|
||||
);
|
||||
expect(styles).toMatch(
|
||||
/\.settings-account-panel\s*{[^}]*width:\s*100%;[^}]*min-width:\s*0;[^}]*min-height:\s*0;/s
|
||||
);
|
||||
expect(styles).toMatch(/\.settings-account-rules\s*{[^}]*min-width:\s*0;[^}]*overflow-y:\s*auto;/s);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user