test(e2e): assert crossfade window against the sizing rule

This commit is contained in:
Ilia Mashkov
2026-06-03 16:07:48 +03:00
parent 8dbea97a33
commit a2ec025a65
+8 -4
View File
@@ -1,3 +1,4 @@
import { windowSizeForLine } from '../src/entities/Font/domain/windowSizeForLine/windowSizeForLine';
import { import {
expect, expect,
test, test,
@@ -5,12 +6,15 @@ import {
test.describe('preview text', () => { test.describe('preview text', () => {
test('drives the slider character rendering', async ({ comparison }) => { test('drives the slider character rendering', async ({ comparison }) => {
const text = 'Sphinx';
await comparison.pickPair('Inter', 'Roboto'); await comparison.pickPair('Inter', 'Roboto');
await comparison.setPreviewText('Sphinx'); await comparison.setPreviewText(text);
// Window chars render as `.char-wrap` cells for crossfade. // Window chars render as `.char-wrap` cells for crossfade. The window
// With WINDOW_SIZE=5, "Sphinx" (6 chars) fits 5 in the window. // size is a pure function of the line's grapheme count — assert against
await expect(comparison.slider.locator('.char-wrap')).toHaveCount(5); // the rule, not a hardcoded constant, so tuning the policy can't silently
// break this. "Sphinx" is one unwrapped line of 6 graphemes.
await expect(comparison.slider.locator('.char-wrap')).toHaveCount(windowSizeForLine(text.length));
}); });
test('preserves the typed value in the input', async ({ comparison }) => { test('preserves the typed value in the input', async ({ comparison }) => {