Seznam úkolu:
- Fork repozitáře k sobě, ve kterém budeš provádět jednotilvé změny.
- Seznámení se s knihovnou Playwright pro end to end testování
- Nainicializování základní konfigurace a závislostí pro spouštění prvních testů pomocí dokumentace
- Vytvoření souboru či více, které budou obsahovat testy, pokrývající minimálně následující testové scénáře
Testové scénáře:
- Příchod na Hlavní stránku a vyhledání výrazu
Kazma
, kontrola přesměrování a existence neprázdných výsledků (Nejlepší výsledek, Pořady, Videa) - Vyhledání neexistujícího výrazu, např.
abcdsuperbullshit42
a kontrola vypsání upozorńující hlášky, že jsme nic nenašli - Příchod na prázdnou stránku vyhledávání (
/hledani
) a kontrola, že již neobshauje nějaké výsledky, tedy čeká na zadání výrazu - Zahledání z libovolné stránky výrazu
Kazma
, kontrola existence videí, klik naNačíst další videa
a kontrola zdali načtení proběhlo správně a položky přibyly - Libovolný test funkcionality filtrování výpisu videí. Nad seznamem videí máme Tlačítko
Filtry
, které vyroluje možnosti filtrace (jde nám o akci a změnu, nikoliv programatickou kontrolu jestli jsou položky správně seřazené) - Další testy, které by podle tebe měly být součástí testování funkcionality stránky vyhledávání
Možné problémy a tipy:
- Debugování: Pro debugování doporučujeme využívat Trace Viewer. Testy se ve výchozím stavu spouští v tzv.
headless
režimu, zjednodušeně řečeno pouze v terminálu. Testy lze zapnout i mimoheadless
režim a rovnou vidět potřebné kroky ({ headless: false, slowMo: 100 }
). Použivej pro celou adresu variantu swww
, pokud nechceš kontrolovat přesměrování. - Stabilita testů: Napsání stabilních testů není úplně triviální, záleží na prostředí, ve kterém se testy spouští, prohlížeč, stroj, typ stránky atd. Často pomůže zvýšení timeoutů či spouštět neúspešný test s více opakováním a vyhnout se tak zbytečnému debuggování.
- CMP dialog: e2e testy se v základu tváří jako nepřihlášený uživatel. Na streamu aktuálně máme modal, který se zobrazuje po pár sekundách uživateli a chce zakliknout jeho uživatelské preference kvůli různému sledování. Tento modal může blokovat další akce e2e testů a nelze deterministicky určit, kdy se zobrazí. Řešením může být zamezení jeho zobrazení, pokud správně nastavíme cookies ještě před příchodem na dannou stránku. Pro nastavení cookies využij BrowserContext.
const CMP_COOKIES: Cookie[] = [
{
name: "euconsent-v2", // TCF string v2
value: "CPWQiJUPWQiJUD3ACBCSCHCsAP_AAEPAAATIIDoBhCokBSFCAGpYIIMAAAAHxxAAYCACABAAoAABABIAIAQAAAAQAAAgBAAAABQAIAIAAAAACEAAAAAAAAAAAQAAAAAAAAAAIQIAAAAAACBAAAAAAABAAAAAAABAQAAAggAAAAIAAAAAAAEAgAAAAAAAAAAAAAAAAAgAAAAAAAAAAAgd1AmAAWABUAC4AGQAQAAyABoADmAIgAigBMACeAFUAMQAfgBCQCIAIkARwAnABSgCxAGWAM0AdwA_QCEAEWALQAXUAwIBrAD5AJBATaAtQBeYDSgGpgO6AAAA.YAAAAAAAAAAA",
domain: ".stream.cz",
path: "/",
expires: Math.floor(Date.now() / 1000) + 30 * 24 * 60 * 60, // next month in secs
secure: true,
sameSite: "None",
httpOnly: false,
},
{
name: "cmppersisttestcookie", // unix timestamp of first visit, yup could be 1
value: "1",
domain: ".stream.cz",
path: "/",
expires: Math.floor(Date.now() / 1000) + 30 * 24 * 60 * 60,
secure: true,
sameSite: "None",
httpOnly: false,
},
{
name: "szncmpone", // some helper to track purpose1 consent
value: "1",
domain: ".stream.cz",
path: "/",
expires: Math.floor(Date.now() / 1000) + 30 * 24 * 60 * 60,
secure: true,
sameSite: "None",
httpOnly: false,
},
];