2026-05-12 09:20:13 +03:00
|
|
|
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['"]?/);
|
|
|
|
|
});
|
|
|
|
|
|
2026-05-12 20:23:51 +03:00
|
|
|
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*{`));
|
|
|
|
|
});
|
2026-05-12 09:20:13 +03:00
|
|
|
});
|