Migrace ze Selenia na Playwright: co zahrnuje
Testovací sadu postavenou na Seleniu jste budovali roky. Funguje – jen ji musíte neustále udržovat při životě. Přibývají pevná čekání, selektory se lámou při každém redesignu a nikdo se už neodváží zasáhnout do jádra, protože by se všechno zhroutilo najednou. Rozhodli jste se přejít na Playwright. Otázkou je, co to reálně znamená.
Častou představou je, že se sada „přepíše“ – vezme se test po testu a přepíše se do nového jazyka. Mechanický přepis bývá drahý a může do nového nástroje přenést slabiny původní sady.
Běžný problém: doslovný přepis přenese i staré nedostatky
Hodnotu sady nesou především platné scénáře a ověření: znalosti o tom, jak se má produkt chovat, co se má stát po odeslání formuláře, jaké hlášení se má zobrazit při neplatné platbě a které kombinace vstupů v minulosti selhaly. Kód, integrace a diagnostické mechanismy je však třeba posoudit samostatně, protože i ony mohou obsahovat znovu použitelné části nebo technická omezení.
Kód je pouze jejich zápisem. A právě tento zápis vám dnes působí problémy – pevná čekání, nestabilní selektory, chybějící struktura. Kdybychom ho mechanicky přeložili, získali byste stejné problémy, jen v novějším nástroji. Zaplatíte za migraci a za rok budete tam, kde jste dnes.
Proto ze staré sady vybíráme platné scénáře a ověření a samostatně posoudíme kód, integrace i diagnostiku. Nepřenášíme je automaticky ani je bez kontroly celé nezahazujeme.
Jak přenést hodnotné scénáře
Nejprve projdeme současnou sadu a zjistíme, co skutečně pokrývá. Část testů bývá mrtvá – ověřují funkci, která už v produktu neexistuje, nebo se celé roky přeskakují. Ty se nepřenášejí. Jiné testují totéž třikrát různými cestami. I na to je užitečné upozornit dříve, než se začne pracovat.
Zbytek přenášíme na základ navržený pro snazší údržbu:
- Přiměřená vrstva objektů stránek nebo komponent. Společné prvky jsou popsány na centrálním místě, takže změnu často není třeba opravovat v každém testu zvlášť.
- Stabilní identifikátory. Selektory stavíme na tom, co má na stránce význam – viditelném textu, roli prvku, testovacích identifikátorech dohodnutých s vývojáři. Ne na pozici ve struktuře stránky ani na třídě, kterou vygeneroval framework.
- Oddělená testovací data. Test si vytvoří, co potřebuje, a po sobě uklidí. Testy si pak navzájem nezasahují do dat a mohou běžet souběžně.
Přenos probíhá postupně podle priority, kritické cesty jako první. Stará a nová sada mohou nějakou dobu běžet vedle sebe a mapa pokrytí určuje, která z nich kontroluje jednotlivé regresní scénáře. Tím lze předejít plánovanému období bez kontroly všech dohodnutých kritických cest.
Co vám nový základ přinese
Playwright před akcemi provádí kontroly připravenosti prvku a podporuje opakované vyhodnocování očekávání. To může odstranit mnoho pevných čekání. Stabilita však stále závisí na datech, prostředí, selektorech a návrhu scénáře.
Playwright podporuje projekty pro několik prohlížečových jader. Podle konfigurace může při selhání uložit snímek obrazovky, video nebo trace, které pomohou při diagnostice; ne každý výstup vzniká automaticky při každém nastavení.
Novou sadu píšeme v jazyce, který vyhovuje vašemu týmu – nejčastěji v Pythonu, případně v TypeScriptu, pokud mají testy žít vedle frontendu. Zapojujeme ji do CI/CD od prvního přeneseného scénáře, ne až na konci projektu.
Kdy migrace nedává smysl
Pokud máte rozsáhlou grid infrastrukturu a tým, který Selenium dobře zná, nemusí být správným rozhodnutím tento nástroj opustit. Pak se vyplatí přepracovat pouze architekturu nebo jazyk a nástroj ponechat. A pokud je sada v pořádku, pouze nestabilní, bývá levnější opravit ji než přenášet.
Řekneme vám to i tehdy, když se portace nevyplatí.
Další krok
Ukažte nám současnou sadu a řekněte, co vás na ní nejvíce trápí. Ozvěte se nám – podíváme se, co má smysl přenést, co zahodit a v jakém pořadí.