Skip to main content
ExodeUI

EXODEUI DESKTOP

A little space for good ideas.

Choose your platform to get the official ExodeUI installer.

Looking for Intel Mac or other builds? Explore the web studio or check all download options.

Prefer the browser? Try for free in your browser →
Návod · Testovanie7 minút čítania·Updated október 2026·Tím ExodeUI

Testovanie stavov používateľského rozhrania a animácií pomocou Playwright

Ako písať stabilné testy pre animované používateľské rozhranie so Playwright: ovládanie času pomocou page.clock, emulácia zníženého pohybu a tmavého režimu a snímky obrazovky s vypnutými animáciami.

Priame zhrnutie a definícia

Core Takeaway

Urobte testy animácií deterministickými: kontrolujte čas pomocou page.clock, ktorý pokrýva časovače, requestAnimationFrame a výkon; emulovať používateľské nastavenia pomocou page.emulateMedia({ reductionMotion, colorScheme }); uplatňovať skôr stavy než pixely strednej animácie; a urobte snímky obrazovky s vypnutými animáciami. Otestujte cestu so zníženým pohybom ako prvotriedny prípad.

Prečo sú animačné testy nekvalitné

Animácie závisia od času a reálny čas sa medzi behom a strojmi líši. Snímka obrazovky urobená o 10 milisekúnd skôr alebo neskôr zobrazuje inú snímku. Opravou je ovládanie času a nastavení a testovanie animácií stavov, ktoré sa pohybujú medzi jednotlivými snímkami, nie medzi jednotlivými snímkami.

Štyri kroky: nastavenie stavu, ovládanie času pomocou page.clock, emulácia nastavení, ako je znížený pohyb, potvrdenie pomocou kontrol DOM a snímok obrazovky
Pevný čas a pevné nastavenia umožňujú testovať animované používateľské rozhranie.

Kontrolný čas

Rozhranie Clock API Playwright umožňuje testom nainštalovať falošné hodiny a potom ich pozastaviť, previnúť dopredu alebo spustiť na nastavenú dobu. Zahŕňa nastavenia setTimeout, setInterval, requestAnimationFrame a výkon, takže môžete napríklad rýchlo prejsť po oneskorení načítania a skontrolovať, či sa zobrazuje stav úspechu.

Emulovať používateľské nastavenia

page.emulateMedia() môže nastaviť Znížený pohyb na "zmenšiť" a colorScheme na "tmavý" alebo "svetlý". Spúšťajte kľúčové toky so zníženým pohybom, aby ste potvrdili, že nič dôležité nezávisí od animácie a v oboch témach, aby ste zachytili problémy s kontrastom.

Stabilné snímky obrazovky

Test Playwright dokáže porovnať snímky obrazovky s programom expect(page).toHaveScreenshot() a možnosti snímky obrazovky zahŕňajú animácie: „disabled“, ktoré zastavia animácie a prechody CSS na zachytenie. Použite vizuálne porovnania pre koncové stavy a DOM alebo tvrdenia dostupnosti pre správanie.

Testovanie komponentov na báze plátna

Animácie plátna, ako napríklad tie, ktoré boli nakreslené runtimemi Lottie, Rive alebo ExodeUI, nie sú v DOM viditeľné. Otestujte vstupy, ktoré váš kód odosiela, a udalosti, ktoré prijíma, ponechajte reálne prístupné prvky vedľa plátna a použite snímky obrazovky na vizuálne kontroly po kontrole času.

Snippet implementácie výroby

Implementácia interaktívnych komponentov
import { test, expect } from '@playwright/test';

test('save button shows success, also with reduced motion', async ({ page }) => {
  await page.clock.install();                         // fake timers + rAF
  await page.emulateMedia({ reducedMotion: 'reduce' }); // test the calm path
  await page.goto('/settings');

  await page.getByRole('button', { name: 'Save' }).click();
  await expect(page.getByRole('status')).toHaveText('Saving…');

  await page.clock.runFor(2000);                      // skip the wait deterministically
  await expect(page.getByRole('status')).toHaveText('Saved');

  await expect(page).toHaveScreenshot('saved.png', { animations: 'disabled' });
});

Kľúč Principle na zapamätanie

  • Ovládanie času pomocou page.clock (časovače, requestAnimationFrame, výkon)
  • Emulujte redukovaný pohyb a colorScheme pomocou page.emulateMedia
  • Uplatnite sa na stavoch a dostupnom texte, nie na pixeloch uprostred animácie
  • Snímka obrazovky s animáciami: "zakázané"
  • Otestujte cestu so zníženým pohybom ako prvotriedny prípad

Často kladené otázky

Zdroje

  1. Clock — Dokumenty Playwright
  2. Page.emulateMedia and screenshot options — Dokumenty Playwright
  3. Visual comparisons — Dokumenty Playwright

Súvisiace príručky a príklady

Komponenty postavené na testovateľných stavoch

Komponenty ExodeUI sú riadené pomenovanými vstupmi, čo uľahčuje testovanie ich stavov z vášho kódu.

Prečítajte si príručku React
Vyskúšajte zadarmo