Removes the IBM Plex Mono Google Fonts @import, replaces the --font CSS variable with a cross-platform system sans-serif stack, and adds a --font-mono variable for the share-URL readonly input so copy/share text stays monospace. Also adds line-height: 1.5 to body to compensate for the system fonts' tighter default leading. No font asset files exist in /public; layout.ts has no font <link> tags to remove. Acceptance check: build + 112 tests pass; new tests/integration/style.test.ts asserts no @import / IBM Plex / external font URL remains and that the system stack is wired up.
44 lines
1.5 KiB
TypeScript
44 lines
1.5 KiB
TypeScript
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
import { readFileSync } from 'fs';
|
|
import { join } from 'path';
|
|
import { createTestApp, type TestContext } from '../helpers/setup.ts';
|
|
|
|
const STYLE_PATH = join(process.cwd(), 'public', 'style.css');
|
|
|
|
describe('public/style.css (file contents)', () => {
|
|
const css = readFileSync(STYLE_PATH, 'utf8');
|
|
|
|
it('does not @import any external font CSS', () => {
|
|
expect(css).not.toContain('googleapis.com');
|
|
expect(css).not.toContain('@import');
|
|
});
|
|
|
|
it('does not reference the previous IBM Plex Mono webfont', () => {
|
|
expect(css).not.toContain('IBM Plex');
|
|
});
|
|
|
|
it('uses the system sans-serif stack as its default font', () => {
|
|
expect(css).toContain('-apple-system');
|
|
});
|
|
|
|
it('keeps a monospace stack available via --font-mono for code-like UI', () => {
|
|
expect(css).toContain('--font-mono');
|
|
expect(css).toMatch(/\.share-box input\[readonly\][\s\S]*?font-family:\s*var\(--font-mono\)/);
|
|
});
|
|
});
|
|
|
|
describe('GET /public/style.css', () => {
|
|
let ctx: TestContext;
|
|
|
|
beforeEach(() => { ctx = createTestApp(); });
|
|
afterEach(async () => { await ctx.app.close(); ctx.cleanup(); });
|
|
|
|
it('serves the stylesheet as text/css with no external font import', async () => {
|
|
const res = await ctx.app.inject({ method: 'GET', url: '/public/style.css' });
|
|
expect(res.statusCode).toBe(200);
|
|
expect(res.headers['content-type']).toMatch(/text\/css/);
|
|
expect(res.body).not.toContain('googleapis.com');
|
|
expect(res.body).toContain('-apple-system');
|
|
});
|
|
});
|