35 lines
1.6 KiB
TypeScript
35 lines
1.6 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { loadAllAppCss } from "../../test/cssFixture";
|
|
|
|
describe("SettingsModal backup CSS contract", () => {
|
|
it("defines themed backup section selectors with tokenized styles", async () => {
|
|
const css = await loadAllAppCss();
|
|
|
|
expect(css).toMatch(/\.backup-stats\s*\{[\s\S]*?\}/);
|
|
expect(css).toMatch(/\.backup-stat\s*\{[\s\S]*?\}/);
|
|
expect(css).toMatch(/\.backup-stat-value\s*\{[\s\S]*?\}/);
|
|
expect(css).toMatch(/\.backup-stat-label\s*\{[\s\S]*?\}/);
|
|
expect(css).toMatch(/\.backup-list\s*\{[\s\S]*?\}/);
|
|
expect(css).toMatch(/\.backup-list ul\s*\{[\s\S]*?\}/);
|
|
expect(css).toMatch(/\.backup-list li\s*\{[\s\S]*?\}/);
|
|
expect(css).toMatch(/\.backup-size\s*\{[\s\S]*?\}/);
|
|
|
|
const backupBlock = (css.match(/\/\* === Settings Backups:[\s\S]*?\.settings-layout\s*\{/)?.[0] ?? "");
|
|
expect(backupBlock).toContain("var(--space-");
|
|
expect(backupBlock).toContain("var(--text");
|
|
expect(backupBlock).toContain("var(--border");
|
|
expect(backupBlock).toContain("var(--surface");
|
|
expect(backupBlock).toContain("var(--font-mono");
|
|
expect(backupBlock).toContain("var(--radius-");
|
|
expect(backupBlock).toContain("color-mix(");
|
|
expect(backupBlock).not.toMatch(/#[0-9a-fA-F]{3,8}\b/);
|
|
expect(backupBlock).not.toContain("rgba(");
|
|
});
|
|
|
|
it("keeps mobile backup list scroll behavior", async () => {
|
|
const css = await loadAllAppCss();
|
|
|
|
expect(css).toMatch(/@media\s*\(max-width:\s*768px\)\s*\{[\s\S]*?\.backup-list ul\s*\{[^}]*max-height\s*:[^;]+;[^}]*overflow-y\s*:\s*auto;[^}]*-webkit-overflow-scrolling\s*:\s*touch;[^}]*\}/);
|
|
});
|
|
});
|