Radek Bednařík
Senior Test Automation Engineer
Blog
Radek Bednařík
Senior Test Automation Engineer
Nástroje jako Playwright se v kombinaci s AI agenty, MCP a CLI rozvíjejí v mocný ekosystém. Slibují především nižší náklady na vývoj testů a rychlejší implementaci. Ale je tomu opravdu tak? Automatizace za pomoci AI přináší i nové výzvy a rizika, o kterých se v současném AI “hypu” zase tolik nemluví.
Playwright je automatizační framework, který umožňuje programaticky ovládat webové prohlížeče (Chrome, Firefox, Safari). Slouží nejen pro QA testy, ale i pro web scraping či monitoring webů.
MCP (Model Context Protocol) je open-source standardizovaný protokol pro komunikaci mezi AI aplikacemi a externími systémy. Umožňuje AI agentům „hovořit” s aplikacemi, CLI nástroji a dalšími službami strukturovaným způsobem.
CLI (Command Line Interface) jsou nástroje, které pracují za pomoci příkazové řádky – ideální pro integraci do skriptů, automatizace a CI/CD pipelines.
V kontextu automatizace za pomoci AI a Playwrightu se pak nabízí několik cest.
Asi nejjednodušší způsob, jak zapojit AI do automatizace s využitím Playwrightu, je použít oficiální MCP server. Ten umožní LLM modelu – přes obsluhujícího agenta – automatizovat úkoly, které uživatel zadá přes textový prompt. Použití je jednoduché – v rámci kódu projektu nainstalujete knihovnu s MCP serverem, “zapojíte” ji do konfigurace svého agenta a ten ji začne automaticky používat.
Tento způsob s sebou nicméně nese několik problémů.
Za prvé, automatizace browserů přes MCP přináší velkou spotřebu tokenů, protože MCP posílá do LLM kontextového okna, jehož velikost je omezená, spoustu informací o nástrojích, které MCP má k dispozici, a také veškeré informace o webových stránkách (například celý zdrojový kód či screenshoty), které nejsou k vykonání úkolu nezbytně potřeba. Nezřídka se také stává, že obsah posílaný v kontextu limit okna přesáhne a LLM tak ani nemůže všechny informace zpracovat.
Za druhé, samotné MCP neříká LLM modelu, jakým způsobem má generovat výstup, který po něm chcete. Pokud modelu například zadáte, aby prošel aplikaci a napsal například test pro přihlášení uživatele, výsledný kód může být opravdu nepěkný.
Druhý problém by měli vyřešit Playwright agenti. Konkrétně přišel tým stojící za Playwrightem se třemi:
Funguje to tak, že zadáním jednoduchého příkazu Playwright vygeneruje nutné konfigurace pro podporovaný AI nástroj, který si zvolíte. V současné době podporuje VSCode, Claude Code a Opencode.
Ve své podstatě každý Playwright agent představuje specifický markdown soubor, který specifikuje personu agenta a pravidla, která musí dodržovat při své činnosti. Obsahuje i šablony pro výstupy, pokud je daný agent generuje.
Toto už je mnohem lépe fungující způsob použití AI společně s Playwrightem. Díky definovaným rolím a pravidlům agentů je výstup kvalitnější a více konzistentní.
Bohužel v tomto případě se budete stále potýkat s velkou spotřebou tokenů.
V tuto chvíli nejnovější nástroj od Playwright týmu. Jednoduše řečeno se jedná o knihovnu, která poskytuje CLI rozhraní, přes které se obsluhuje samotný Playwright. Je třeba říct, že je v tuto chvíli stále pod velmi aktivním vývojem a v době psaní tohoto blogu nebyla vydána produkční verze (tj. v1.0.0).
Jeho hlavním výhodou oproti “nativním” Playwright agentům je výrazně nižší spotřeba tokenů, protože neposílá surová data o navštívených webových stránkách do LLM modelu. Do modelu se typicky posílají jen extrahované výstupy nebo stručné shrnutí.
Prakticky tento nástroj použijete tak, že po nainstalování knihovny ji jednoduchým příkazem inicializujete. To prakticky znamená automatické vytvoření markdown souborů s tzv. Skills.
V době psaní tohoto blogu podporovala knihovna automatické generování skills souborů způsobem kompatibilním pouze s Claude Code nástrojem. Nicméně je otázkou chvilky si takto vygenerované soubory přestrukturovat tak, aby vyhovovaly jiným nástrojům. A například Opencode dokáže automaticky najít skills soubory i pokud jsou v konfiguraci pro Claude.
Používání skills je trendem posledních měsíců. Cílem je minimalizovat spotřebu tokenů a tím co nejvíce zpomalit zaplňování kontextového okna. Menší spotřeba tokenů pak také snižuje náklady. Taková úspora u nejnovějších modelů – v době psaní tohoto blogu šlo například o Claude Opus 4.6., který má trojnásobnou spotřebu tokenů oproti např. Claude Sonnet 4.5, není vůbec zanedbatelná. Využití CLI oproti MCP pak může znamenat úsporu o až 60-80 % tokenů v závislosti na povaze zadaného úkolu.
V kontextu Playwrightu pak samotný tým Microsoftu v dokumentaci doporučuje používat MCP u vysoce specializovaných agentických procesů, jako je například průzkumná automatizace nebo samo-léčící se testy.
Pro úkoly, které musí balancovat automatizaci webového prohlížeče s interakcemi s velkým množstvím již existujícího kódu a testy v rozsahu omezeného kontextového okna, doporučuje používat CLI společně se skills.
Skilly jsou jednoduše markdown soubory, které dávají agentům schopnosti “porozumět” specifickým aplikacím, nástrojů a rozhraním. Uživatel na skilly odkáže v promptu, pokud jsou třeba a agent je automaticky nahraje a zařadí do kontextu pro LLM model.
Z pohledu bezpečnosti musím upozornit na to, že pokud si nepíšete skills soubory sami, ale stahujete si je z různých “tržišť”, vždy důkladně čtete, co obsahují. Infikované skills soubory, které obsahují nepřátelské příkazy pro LLM, jsou velké bezpečnostní riziko.
Jak již bylo zmíněno výše, pokud nechcete psát skills soubory sami, existují “tržiště”, kde si můžete zadarmo stáhnout obsah, který byl vytvořený někým jiným.
Nicméně problémem takových skills může být, že mohou obsahovat neexistující příkazy a chybné či rovnou škodlivé informace pro agenty a uživatele obecně.
Příkladem mohou být příkazy pro LLM model, který je v textu markdown souboru “skryt” za pomocí tagu komentáře. V takovém případě, pokud si neprohlížíte obsah souboru v surové formě zdrojového kódu, ale přes náhled (jako mnoho uživatelů), takový škodlivý obsah neuvidíte. LLM ale ano a bude se jím řídit.
Dalším problémem může být šíření neexistujících příkazů napříč skilly. Pokud někdo vygeneruje skill soubor za pomoci AI a neověří platnost obsahu, pak halucinace v něm se velice snadno rozšíří do dalších skillů.
Velice pěkné video na toto téma si můžete pustit zde. Video je v angličtině.
Existuje již řada implementací, ať už na jednoduchých “demo” aplikacích, nebo v produkčních prostředích:
Zní to fantasticky. Realita však naráží na řadu problémů. Některé z nich uvádím níže.
Každý běh AI agenta může generovat jiné výsledky. To není chyba – je to vlastnost. Stejný vstup nemusí produkovat stejný výstup.
Pokud se zaměřím například na vlastní zkušenost s Playwright agentem “plánovačem”, tak stejné zadání pro vygenerování test plánu pokaždé vrátilo více či méně odlišné testovací scénáře. To nemusí být nutně to co chcete. Pomoci může spouštět generování opakovaně a pak manuálně vybrat k implementaci pouze ty scénáře, které dávají reálný smysl. Nicméně toto pak malinko bourá “sen” o zcela autonomní práci agentů. A opakované spouštění stejného promptu pochopitelně není zadarmo.
AI modely jsou trénovány tak, aby byly užitečné a produkovaly výsledky. V kontextu testování to znamená: agenti jsou motivováni psát testy, které projdou.
To pak může způsobovat falešná pozitiva. Test projde, ale nedetekuje skutečné chyby. Agent nemusí pochopit, proč by měl test selhat – jen že má procházet.
Opět z vlastní zkušenosti s Playwright agenty, tentokrát s generátorem testů, mohu říci, že agent se opravdu snaží, aby výsledný test splnil zadání vygenerovaného test plánu. Zejména, pokud se jedná o složitější funkci, či delší E2E průchod aplikací, vygenerovaný kód je složitý na porozumění a velice špatně čitelný.
Agent léčitel je připraven opravit selhávající testy. Cíl se může zdát v pořádku – automaticky opravit selhávající testy a tím zlepšit kvalitu. Problém může být v motivaci – agent se snaží opravit test za každou cenu, tak aby procházel.
Důsledkem může být, že testy se “opravují” nesprávně. Místo diagnózy problému agent může prostě změnit “assertion” nebo přeskočit problémový krok. Výsledné testy pak mohou poskytovat nesprávný obraz o stavu testované aplikace.
Z vlastní zkušenosti mohu říct, že opravy jednoduchých problémů v testech fungují přes Playwright agenta léčitele poměrně dobře. U složitých testů, kde problémem nebyl pouze například zastaralý selektor elementu atp., jsem se nicméně setkal většinou s tím, že agent se zacyklil ve snaze jej opravit a v podstatě toho nebyl schopen.
Mám častou zkušenost s tím, že ať se snažíte sebevíce nastavit mantinely a pravidla pro chování agentů, relativně často se potkáte s tím, že některé z nich bude ignorovat.
Frázi “Máte pravdu. Udělal jsem chybu. Vidím nyní jasně, že jsem měl dělat A a místo toho jsem provedl B”, jsem viděl častěji, než by se mi líbilo.
Určitě má. AI agenti sice zatím nejsou zázračný nástroj, který všechno udělá sám, ale může ulehčit a zrychlit řadu “nudných” a zdlouhavých činností.
Příkladem může být:
Pokud jde o problematické vlastnosti, tak z mé zkušenosti je třeba se zaměřit především na následující:
Don't miss out on the latest updates.
Fill in your email address to stay informed about upcoming training sessions, events, and testing know-how.
Need Advice?
Request our free, non-sales consultation. Fill out the form and we will get back to you.
Watchdog
Did not find a date that works for you? ....
Notice