Files
portal/app/tests/Frontend/typography-css.spec.ts
T

31 lines
1.2 KiB
TypeScript
Raw Normal View History

import { describe, it, expect } from 'vitest';
import fs from 'node:fs';
import path from 'node:path';
const cssPath = path.resolve(__dirname, '../../resources/css/typography.css');
const css = fs.existsSync(cssPath) ? fs.readFileSync(cssPath, 'utf-8') : '';
describe('typography.css', () => {
it('imports Inter variable font', () => {
expect(css).toMatch(/@import\s+url\([^)]*fonts\.googleapis\.com[^)]*Inter[^)]*\)/i);
});
it('imports JetBrains Mono', () => {
expect(css).toMatch(/@import\s+url\([^)]*fonts\.googleapis\.com[^)]*JetBrains[+\s]?Mono/i);
});
it('sets Inter as default body font with tnum', () => {
expect(css).toMatch(/font-family:[^;]*['"]?Inter['"]?[^;]*system-ui/);
expect(css).toMatch(/font-feature-settings:[^;]*['"]?tnum['"]?\s*1/);
});
it('defines .ld-mono utility for JetBrains Mono with tnum', () => {
expect(css).toMatch(/\.ld-mono\s*{[^}]*font-family:[^;]*['"]?JetBrains Mono['"]?/);
expect(css).toMatch(/\.ld-mono\s*{[^}]*font-feature-settings:[^;]*['"]?tnum['"]?/);
});
it.each(['ld-label', 'ld-body', 'ld-body-strong', 'ld-h3', 'ld-h2', 'ld-h1'])('defines %s class', (cls) => {
expect(css).toMatch(new RegExp(`\\.${cls}\\s*{`));
});
});