59 lines
1.8 KiB
TypeScript
59 lines
1.8 KiB
TypeScript
import { describe, expect, test } from "bun:test";
|
|
import { readFileSync } from "node:fs";
|
|
|
|
const RESPONSIVE_PREFIX_PATTERN = /\b(?:max-sm|sm:|md:|lg:|xl:|2xl:)/;
|
|
|
|
const HOOK_DRIVEN_FILES = [
|
|
"src/app/page.tsx",
|
|
"src/app/demo/combined-date-picker/page.tsx",
|
|
"src/components/ai-toolbar.tsx",
|
|
"src/components/event-dialog.tsx",
|
|
"src/components/settings-panel.tsx",
|
|
"src/components/ui/calendar.tsx",
|
|
"src/components/ui/date-picker.tsx",
|
|
"src/components/ui/dialog.tsx",
|
|
"src/components/ui/input-group.tsx",
|
|
"src/components/ui/textarea.tsx",
|
|
"src/lib/ui-shell-contract.ts",
|
|
];
|
|
|
|
const DIRECT_HOOK_FILES = [
|
|
"src/app/page.tsx",
|
|
"src/app/demo/combined-date-picker/page.tsx",
|
|
"src/components/ai-toolbar.tsx",
|
|
"src/components/event-dialog.tsx",
|
|
"src/components/settings-panel.tsx",
|
|
"src/components/ui/calendar.tsx",
|
|
"src/components/ui/date-picker.tsx",
|
|
"src/components/ui/dialog.tsx",
|
|
"src/components/ui/input-group.tsx",
|
|
"src/components/ui/textarea.tsx",
|
|
];
|
|
|
|
const BOOLEAN_HELPER_FILES = [
|
|
"src/lib/ui-shell-contract.ts",
|
|
];
|
|
|
|
describe("mobile hook adoption", () => {
|
|
test("responsive source files stop using Tailwind breakpoint prefixes for mobile behavior", () => {
|
|
for (const filePath of HOOK_DRIVEN_FILES) {
|
|
const source = readFileSync(filePath, "utf8");
|
|
expect(source).not.toMatch(RESPONSIVE_PREFIX_PATTERN);
|
|
}
|
|
});
|
|
|
|
test("mobile-responsive component files explicitly depend on the shared useIsMobile hook", () => {
|
|
for (const filePath of DIRECT_HOOK_FILES) {
|
|
const source = readFileSync(filePath, "utf8");
|
|
expect(source).toContain("useIsMobile");
|
|
}
|
|
});
|
|
|
|
test("utility files accept isMobile booleans instead of embedding breakpoint strings", () => {
|
|
for (const filePath of BOOLEAN_HELPER_FILES) {
|
|
const source = readFileSync(filePath, "utf8");
|
|
expect(source).toContain("isMobile");
|
|
}
|
|
});
|
|
});
|