Průvodce testováním

Komplexní průvodce testováním pokrývající unit testy s Vitest a end-to-end testování s Playwright pro CatCMS.[object Object]

Přehled

Filozofie testování

CatCMS se řídí komplexním přístupem k testování:

  • Unit testy - Rychlé, izolované testy pro jednotlivé funkce a služby
  • End-to-End testy - Testy v prohlížeči pro kritické cesty uživatele a pracovní postupy

Cíle pokrytí testy

  • 90 % minimální pokrytí kódu pro klíčovou business logiku
  • Všechny API endpointy mají pokrytí E2E testy
  • Klíčové uživatelské pracovní postupy mají komplexní pokrytí testy
  • Funkčnost pluginů je důkladně testována

Aktuální stav pokrytí

Podle posledního spuštění testů:

📊

Overall Coverage

90.86% code coverage

Total Tests

684 passing tests

📁

Test Files

26 test files

🎯

Statements

90.86% coverage

🔀

Branches

90.34% coverage

⚙️

Functions

96.23% coverage


Sada nástrojů pro testování

Základní nástroje pro testování

Vitest

Fast, Vite-native test runner with excellent TypeScript support

🎭

Playwright

Reliable cross-browser testing with powerful debugging

📈

@vitest/coverage-v8

Fast, accurate code coverage using V8's built-in coverage

Proč tyto nástroje?

  • Vitest - Rychlý, nativní test runner pro Vite s vynikající podporou TypeScriptu
  • Playwright - Spolehlivé testování napříč prohlížeči s výkonnými možnostmi ladění
  • Coverage-v8 - Rychlé a přesné pokrytí kódu pomocí vestavěného pokrytí V8

Nastavení a instalace

Předpoklady

Install Dependencies

Konfigurační soubory

Projekt obsahuje předkonfigurovaná nastavení pro testování:

  • vitest.config.ts - Konfigurace Vitest
  • playwright.config.ts - Konfigurace Playwright
  • tests/e2e/utils/test-helpers.ts - Sdílené utility pro testy

Unit testování s Vitest

Konfigurace Vitest

Vitest Config

Příklad unit testu z reálného světa

Cache Plugin Tests

Vzory pro unit testování

Testing with Mocks


End-to-end testování s Playwright

Konfigurace Playwright

Playwright Config

Testy kontroly stavu (Health Check)

Health Check Tests

Testy autentizace

Authentication Tests

Testy správy obsahu

Content Tests

Testování API s Playwright

API Tests


Spouštění testů

Unit testy

Unit Test Commands

E2E testy

E2E Test Commands


Reportování pokrytí

Zobrazení reportů o pokrytí

Coverage Commands

Prahové hodnoty pokrytí

Projekt vynucuje minimální prahové hodnoty pokrytí:

thresholds: {
  global: {
    branches: 90,
    functions: 90,
    lines: 90,
    statements: 90
  }
}

Nedávná zlepšení pokrytí:

Projekt nedávno zvýšil pokrytí z 87 % na více než 90 % přidáním komplexních testů pro:

  • Operace s úložištěm médií - 92,96 %
  • Optimalizace obrázků - 91,74 %
  • Funkčnost cache pluginu - rozsáhlé pokrytí
  • Základní služby (CDN, notifikace, plánovač, workflow) - všechny >93 %

Testování pluginů

Struktura testů pluginu

Pluginy obsahují své vlastní testovací soubory:

src/plugins/cache/
├── services/
│   ├── cache.ts
│   └── cache-config.ts
└── tests/
    └── cache.test.ts

Příklad testu pluginu

Plugin Tests


Pomocné funkce a utility pro testy

Běžné pomocné funkce pro testy

Test Helpers


Osvědčené postupy

1. Organizace testů

  • Udržujte testy blízko kódu - Unit testy jsou umístěny vedle kódu, který testují
  • Logické seskupování - Používejte describe bloky k organizaci souvisejících testů
  • Jasné pojmenování - Názvy testů by měly popisovat, co se testuje a jaký je očekávaný výsledek

Test Organization

2. Nezávislost testů

  • Každý test by měl být nezávislý a neměl by se spoléhat na ostatní testy
  • Používejte beforeEach k nastavení čerstvého stavu
  • V případě potřeby po testech ukliďte

Test Independence

3. Asynchronní testování

  • Vždy používejte async/await pro asynchronní operace
  • Nezapomeňte na await promise v testech

Async Testing

4. Osvědčené postupy pro Playwright

  • Používejte pomocné funkce pro testy - Vytvářejte znovupoužitelné funkce pro běžné operace
  • Čekejte na prvky - Používejte vestavěné mechanismy čekání Playwrightu
  • Vyhněte se pevným časovým limitům - Preferujte waitForSelector před waitForTimeout
  • Zpracování HTMX - Používejte waitForHTMX pomocnou funkci pro dynamické aktualizace

Testing Best Practices

  • Vždy definujte TypeScript rozhraní pro testovací data - Rozdělujte složité testy na menší, cílené testy - Používejte fixtures a factories pro konzistentní testovací data - Testujte úspěšné i neúspěšné případy - Ověřujte chybové zprávy a stavové kódy - Udržujte rychlost testů mockováním externích závislostí - Spouštějte testy v CI/CD pipeline před nasazením

Další kroky

Was this page helpful?