Přejít na hlavní obsah
Sleva 50% všechny plány, omezený čas. Od $2.48/mo
13 min left
Vývojářské nástroje a DevOps

Self-Hosted Visual Regression Testing: BackstopJS vs. Argos (and What Happened to Lost Pixel)

M Autor: Matej 13 min čtení
Comparison of self-hosted visual regression testing tools BackstopJS, Argos, and the archived Lost Pixel.

Představte si, že standardizujete své CI na jednom ze tří open source nástrojů pro vizuální regresní testování, které si každý dává do užšího výběru (BackstopJS, Argos, Lost Pixel), a týden po zahájení průzkumu zjistíte, že dva ze tří nejsou tím, jak vypadaly zvenčí. Argos má na GitHubu vynikající kód, ale jeho správce otevřeně říká, že self-hosting není ani podporovaný, ani zdokumentovaný. Lost Pixel byl archivován 22. dubna 2026, když tým přešel do Figmy, a nedodal žádnou cestu migrace týmům, které jej už používaly.

To ponechává přesně jeden ze tří, který je dnes skutečně možné hostovat svépomocí a který je udržovaný. Což je zvláštní říkat o kategorii s tak zdánlivě velkým výběrem, ale takhle ta krajina ve skutečnosti vypadá. Nástroje, které lidé považují za tři rovnocenné, jsou v praxi jedna fungující self-hosted volba, jeden silný nástroj žijící na cizích serverech a jeden, ze kterého byste měli migrovat.

Toto je pohled s prioritou na self-hosting na ty self-hosted nástroje vizuálního regresního testování, které přežijí střet s realitou: který sedí na jaké omezení a co dělat, pokud jste právě teď na Lost Pixel.

Zkrácená verze

  • BackstopJS je self-hosted, udržovaná, MIT-licencovaná volba s nulovými náklady. Puppeteer ve výchozím nastavení s podporou Playwright, porovnávání pixelů přes Resemble.js a HTML rozhraní pro revizi (s výhradami k renderování v Dockeru, které je třeba naplánovat).
  • Argos je silnější nástroj z hlediska pracovního postupu (revize PR a porovnávání ARIA snímků od konce roku 2025), ale v praxi je to spravovaný SaaS. Správce neposkytuje ani podporu, ani dokumentaci pro samostatné provozování.
  • Lost Pixel byl archivován v dubnu 2026. Nepřijímejte jej pro novou práci, a pokud jej používáte, naplánujte migraci hned teď.

Verdikt na jeden řádek: pro plně self-hosted CI pipeline je BackstopJS praktická volba. Pokud chcete nejlepší pracovní postup revize a dokážete přijmout závislost na SaaS, Argos je lepší nástroj.

(Co toto nepokrývá: vizuální testování založené na Cypress, komponentové postupy specifické pro Storybook a ručně naměřená čísla výkonu. Toto porovnání je postavené na faktech z primárních zdrojů, ne na testovací sestavě, kterou jsem sám spustil.)

Krajina self-hosted vizuálního regresního testování se změnila

Dvě konkrétní události za poslední rok přetvořily tento užší výběr, a obě je snadné přehlédnout, pokud vycházíte z výčtového článku napsaného před nimi.

První: v diskuzi na GitHubu v září 2025správce Argos prohlásil, že Argos neposkytuje ani podporu, ani dokumentaci pro provozování mimo spravovanou službu. Kód je MIT-licencovaný a leží otevřeně, takže „můžete jej hostovat sami“ je technicky pravda, ale neexistuje podporovaná cesta, rozlišení, které se stává nesmírně důležitým, jakmile jste vy tou osobou v pohotovosti za něj.

Druhá: repozitář Lost Pixel byl archivován 22. dubna 2026, jen pro čtení, když tým oznámil, že přechází do Figmy. Uzavření neprovázel žádný průvodce migrací. Nástroj, který byl donedávna legitimní bezplatnou self-hosted alternativou k Percy a Chromatic, je nyní závislost bez správce.

Obě změny ukazují stejným směrem. Důvod, proč týmy vůbec skončí tady, cenotvorba SaaS rostoucí jako prohlížeče krát oblasti zobrazení krát stránky, nebo pravidlo compliance proti nahrávání snímků nevydaného rozhraní třetí straně, nezmizel. Změnilo se to, že self-hosted nabídka je kratší, než vypadá.

Klíčové ponaučení sekce: Jen jeden ze tří nástrojů, které si lidé dávají do užšího výběru, je dnes skutečně self-hosted a aktivně udržovaný.

Timeline showing the self-hosted visual regression landscape in 2025-2026: BackstopJS remains maintained and self-hosted, Argos shifts to SaaS-only in practice, and Lost Pixel is archived and read-only.

BackstopJS: skutečně self-hosted volba

Instalace je npm install -g backstopjs (nebo lokální projektová instalace), a tento jediný fakt vysvětluje většinu toho, proč BackstopJS vyhrává na ose self-hostingu: neexistuje služba, kterou by bylo třeba reverzně inženýrovat, žádný spravovaný backend, na kterém by tajně závisel. Běží jako npm balíček nebo Docker kontejner na infrastruktuře, kterou ovládáte, pod MIT licencí, s nulovými náklady na licenci. README uvádí, že aktuální řada (6.3.x) podporuje Node 20.

Pod kapotou ve výchozím nastavení řídí Puppeteer (headless Chrome) a podporuje také Playwright napříč chromium, firefox a webkit. Porovnávání je založené na pixelech přes Resemble.js, s konfigurovatelnou hodnotou misMatchThreshold která řídí, jaká odchylka pixelů se počítá jako selhání. Schvalování probíhá přes HTML report s rozhraním v prohlížeči pro přijímání změn.

Omezení jsou místem, kde se přijímá strategické rozhodnutí. BackstopJS nemá vestavěný postup blokování PR: řekne vám, že rozdíl existuje, ale zapojit to do brány „tento PR nelze sloučit“ je na vás. Jeho konfigurace žije v JSON, jeden scénář po druhém, a při několika stovkách testovacích případů se ten JSON sám stává plochou údržby. Vývoj je spíše pomalý než rychlý: projekt není archivovaný, balíček je aktuálně na verzi 6.3.25, a repozitář ukazuje zhruba 7 200 hvězd na GitHubu a 516 otevřených issue. Berte tedy BackstopJS jako zralý a použitelný, ne jako rychle se vyvíjející platformu vizuálního testování.

Nejostřejší provozní riziko je renderování v Dockeru. Dvě issue, bílé nebo oříznuté snímky obrazovky v Dockeru (#1156) a nekonzistentní výsledky po upgradu Dockeru na v5.3.0 (#1303), zůstávají léta otevřené bez řešení. Docker je zároveň přesně to, co pro CI chcete, protože normalizuje renderování napříč stroji. Takže nástroj, který vám dává nejvíce kontroly, vám také předává známou, neopravenou třídu nestability přesně v té konfiguraci, ve které jej budete provozovat. To je riziko, které lze naplánovat, ne důvod k odmítnutí, ale mělo by ležet na stole, než se zavážete.

Tip: past kroszplatformních základních snímků. Pokud vaši vývojáři pořizují základní snímky na macOS a vaše CI runnery jsou Linux, vaše testy budou padat už jen kvůli rozdílům ve vyhlazování písem, ještě předtím, než vznikne jakákoli skutečná regrese. Jak zdokumentovaljeden praktik, renderování písem se liší mezi Linux obrazem používaným v CI službách a lokálním strojem s macOS, dost na to, aby vizuální test selhal sám o sobě. Řešením je generovat a porovnávat základní snímky v jednom prostředí (spouštějte BackstopJS lokálně ve stejném Docker obrazu, jaký používáte v CI), aby referenční a porovnávané obrázky pocházely z identického renderování.

Argos: nejlepší pracovní postup, ale v praxi SaaS

Argos trefuje zážitek z revize způsobem, který se BackstopJS-u nedaří, a to je celý důvod, proč je na tomto seznamu navzdory výhradě k self-hostingu. Integruje se s Playwright, Cypress, Storybook, WebdriverIO a Puppeteer a napojuje se na GitHub Actions, GitLab CI, Bitbucket a Azure DevOps. Postup revize PR je prvotřídní produktová plocha a stále se vyvíjel. Nedávné záznamy v changelogu přidávají společné revize s připnutými komentáři (červen 2026) a automatické ignorování nestabilních změn.

Jeho nejzajímavějším technickým odlišením je porovnávání. Nad rámec deterministického porovnávání pixelů Argos přidal porovnávání ARIA snímků pro své Playwright SDK 4. listopadu 2025. Porovnávání ARIA snímků porovnává strom přístupnosti (role, popisky a strukturu) vedle pixelového snímku obrazovky, což zachytí třídu sémantických regresí a regresí přístupnosti, které čisté porovnání pixelů může přehlédnout (například tlačítko, které stále vypadá identicky, ale ztratilo svůj přístupný popisek). Pro týmy se závazky k přístupnosti je to skutečná schopnost, kterou čistě pixelové nástroje nenabízejí.

Pak přichází omezení. Kód je MIT, ale produktem je spravovaná služba, a správce byl explicitní, že self-hosting není zdokumentovaný a není podporovaný. Můžete jej postavit ze zdrojů. Děláte to jen s vědomím, že jakákoli změna proti proudu může rozbít vaše nasazení a nikdo není povinen pomoci. Existuje související nejistota, kterou stojí za to označit, ne tvrdit: hlášení komunity naznačují, že integrace s GitLab Self-Managed očekává plán Enterprise (beru to jako signál komunity, ne potvrzenou specifikaci, takže si to ověřte na své vlastní konfiguraci, než to bude řídit rozhodnutí).

To vytváří nepříjemnou mezeru. Tým s přísnými požadavky na soukromí (přesně ten tým, který je nejvíce motivovaný k self-hostingu), který chce také zážitek z revize Argos, nemá dobrou cestu. Mohou použít spravovanou službu a přijmout závislost na třetí straně, nebo hostovat svépomocí bez podpory, nebo zvolit jiný nástroj. Neexistuje čisté čtvrté dveře, a je poctivější to pojmenovat než předstírat, že open source licence je zavírá.

Klíčové ponaučení sekce: Argos je silnější nástroj. Hostovat jej svépomocí není podporováno a je provozně křehké.

Lost Pixel: archivováno, a co dělat, pokud jste na něm

Vlastní banner repozitáře Lost Pixel je celý příběh na jednom řádku: repozitář byl archivován vlastníkem 22. dubna 2026 a nyní je jen pro čtení. Tým přešel do Figmy, poslední vydání bylo v3.22.0 v listopadu 2024, a žádný průvodce migrací nebyl publikován.

Až do archivace byl Lost Pixel rozumnou volbou (renderování založené na Dockeru, podpora Playwright a Storybook plus Ladle a Histoire, a vizuální testování jak celostránkové, tak na úrovni komponent). Nic z toho se 22. dubna technicky nezměnilo. Změnilo se to, že nyní nemá správce, nemá bezpečnostní záplaty a nemá roadmapu, což je pro CI závislost diskvalifikující pro novou práci bez ohledu na to, jak dobře aktuální verze běží.

Pokud jej dnes používáte, migrace se dělí podle toho, jak jste jej používali. Pokud jste se spoléhali na jeho testování na úrovni komponent, zejména postupy Storybook nebo Ladle, vaší nejbližší náhradou je spravovaná služba Argos nebo nativní testování snímků obrazovky v Playwright. BackstopJS umí zachytit selektory nebo URL Storybooku, ale nedává vám stejný vestavěný komponentový postup jako Lost Pixel, takže byste si ty stavy komponent museli modelovat sami. Pokud jste jej používali pro celostránkovou vizuální regresi, BackstopJS je přímý self-hosted nástupce. Ať tak či onak, přesun není naléhavý ve smyslu „vaše buildy se zítra rozbijí“, ale čas běží: neudržovaný testovací nástroj tiše hnije, jak se verze vašeho prohlížeče, OS a frameworku vzdalují od těch, proti kterým byl naposledy sestaven.

Porovnání na první pohled

Zde je stejná informace vedle sebe, abyste mohli proletět osy důležité pro rozhodnutí o CI, než je namapujete na svá vlastní omezení.

OsaBackstopJSArgosLost Pixel
LicenceMITKód MIT, spravovaný SaaS produktMIT
Realita self-hostinguPlně self-hosted z principuMožné, ale bez podpory a bez dokumentaceBýval self-hosted, nyní archivováno
Stav údržbyUdržovaný, pomalu se vyvíjející a zralýAktivní (spravovaná služba)Archivováno 22. dubna 2026
Přístup k porovnáváníPorovnání pixelů (Resemble.js)Porovnání pixelů plus porovnání ARIA snímkůPorovnání pixelů (neudržované)
Podpora frameworků a enginůPuppeteer (výchozí), PlaywrightPlaywright, Cypress, Storybook, WebdriverIO, PuppeteerPlaywright, Storybook, Ladle, Histoire (v době archivace)
Postup revizeHTML report, ruční schválení, bez brány PRRevize PR, společné komentáře, bránění PRNepoužije se (archivováno)
NákladyZdarmaCeny SaaS (na základě snímků)Zdarma, ale neudržované
Side-by-side comparison of BackstopJS, Argos, and Lost Pixel across self-hosting, maintenance, diffing, review workflow, and cost.

Jak vybírat (rozhodovací rámec)

Vyjděte ze svého nejtvrdšího omezení, ne ze seznamu funkcí. Omezení za vás vyřadí většinu nabídky.

  • Plně self-hosted, nulový rozpočet, a dokážete přijmout jen celostránkové testování s ruční revizí: BackstopJS. Je to jediná volba, která zároveň splňuje self-hosted, udržovaný a zdarma, a kompromisy (bez brány PR, konfigurace v JSON, nestabilita Dockeru) jsou známé veličiny, kolem kterých můžete navrhovat.
  • Chcete nejlepší zážitek z revize, bránění PR a porovnávání ARIA, a dokážete přijmout závislost na SaaS: spravovaná služba Argos. To je cesta k silným stránkám Argos bez rizika nepodporovaného self-hostingu. Pokud pravidlo compliance zakazuje nahrávání snímků obrazovky třetí straně, tyto dveře jsou zavřené a vracíte se k BackstopJS.
  • Malá sada testů nebo Playwright na prvním místě: zvažte, že vůbec nepřidáte vyhrazený nástroj. Playwright dodává toHaveScreenshot() nativně, a pro sady pod zhruba 100 testů to může být vše, co potřebujete. Jeden průvodce od praktika umisťuje bod zlomu, kde se vyhrazený nástroj začíná vyplácet, zhruba na tuto škálu (berte to jako oborové pozorování, ne oficiální číslo Playwright). Režie správy souborů základních snímků v gitu roste za tímto bodem, a právě tam se vyhrazený nástroj zaplatí.
  • Aktuálně na Lost Pixel: migrujte nyní, podle rozdělení z předchozí sekce. Neberte „stále to funguje“ jako důvod zůstat.

Výhrada, která předchází všem těmto nástrojům a přežívá je: tým Sparkbox, který psal před lety, zvolil hostovanou volbu právě proto, že přimět inženýry, aby testy skutečně používali, bylo těžší než samotné nastavení. Self-hosted nástroj se slabším rozhraním revize může vyhrát na nákladech a prohrát na přijetí (pokud váš tým ignoruje hlučný report BackstopJS, jeho nulové náklady na licenci vám nic nepřinesly). Zahrňte zážitek z revize do rozhodnutí, ne jen cenu.

Klíčové ponaučení sekce: Omezení vybírá nástroj. Self-hosted a zdarma ukazuje na BackstopJS, nejlepší pracovní postup s přijatelným SaaS ukazuje na Argos, a malý a Playwright na prvním místě může ukazovat vůbec na žádný nástroj.

Dimenzování CI runneru pro headless Chromium

Všechny tři nástroje řídí headless Chromium, a je to paměťová stopa Chromia (ne CPU), co určuje velikost vašeho runneru, protože každý souběžný prohlížečový worker chce svých pár gigabajtů RAM. Poddimenzujte stroj a vaše vizuální testy neselhávají čistě. Uprostřed běhu je zabije OOM a jsou hlášeny jako nestabilní infrastrukturní šum, nejhorší druh selhání pro ladění.

Jako přibližné vodítko, dimenzované podle paralelismu, ne jako pevná čísla (skutečné využití závisí na složitosti stránky a na tom, kolik workerů spouštíte paralelně):

  • Malý tým nebo sériové testy: zhruba 2 vCPU / 4 GB RAM zvládne jednoho headless Chromium workera plus režii CI démona.
  • Týmové využití CI: zhruba 4 vCPU / 8 GB RAM podpoří přibližně 2 až 4 paralelní prohlížečové workery, kde končí většina týmů.
  • Vysoká propustnost nebo velké sady: zhruba 8 vCPU / 16 GB RAM pro vysoký paralelismus, nebo když běh vizuální regrese sdílí runner s jinou CI prací.

Úložiště je tichá položka. Artefakty snímků obrazovky a historické základní snímky se hromadí běh za během, takže tento růst naplánujte: vyhraďte štědrou rezervu úložiště, pokud držíte základní snímky lokálně, nebo posílejte základní snímky a artefakty do objektového úložiště, aby disk runneru nebyl omezením.

VPS je přirozený hostitel pro self-hosted CI runner, který tohle dělá, protože chcete předvídatelnou, vyhrazenou RAM pro Chromium workery, a domácí stroj dává smysl jen tehdy, pokud hardware už stojí. Pokud stavíte i okolní CI stack, části kolem nástroje vizuálního testování jsou nasazení na jedno kliknutí v marketplace Cloudzy: Gitea, GitLab, Jenkins a Forgejo pro CI forge a Docker pro konzistenci renderování, kterou nástroje potřebují. Samotný nástroj vizuální regrese se instaluje navrch přes npm nebo Docker, takže spusťte Linux VPS dimenzovaný podle rozsahů výše a provozujte jej tam. Pokud spojujete CI založené na Dockeru, průvodci Cloudzy o self-hosted alternativách ke GitLabu a výpisu Docker kontejnerů pokrývají sousedící nastavení.

CI runner sizing for headless Chromium across three tiers: 2 vCPU / 4 GB for serial tests, 4 vCPU / 8 GB for 2 to 4 parallel workers, and 8 vCPU / 16 GB for large suites, with storage headroom for baselines.

Časté dotazy

Je Argos self-hosted?

Technicky ano (kód je MIT-licencovaný), ale správce v září 2025 prohlásil, že Argos neposkytuje ani podporu, ani dokumentaci pro provozování mimo spravovanou službu. Berte self-hosting jako nepodporovaný a provozně křehký: může se rozbít při jakékoli změně proti proudu, aniž by byl kterýkoli správce povinen pomoci. Pro většinu týmů je spravovaná služba praktickým způsobem, jak získat výhody Argos.

Co se stalo s Lost Pixel?

Lost Pixel byl archivován 22. dubna 2026, když tým přešel do Figmy a produkt uzavřel. Repozitář je jen pro čtení, poslední vydání bylo v3.22.0 v listopadu 2024, a žádný průvodce migrací nebyl poskytnut. Nepřijímejte jej pro novou práci. Pokud jej používáte, naplánujte migraci na BackstopJS (celostránkové testování) nebo na Argos a Playwright-nativní (testování komponent).

Co je porovnávání ARIA snímků?

Porovnávání ARIA snímků porovnává strom přístupnosti (role, popisky a strukturu) vedle pixelového snímku obrazovky a zachytí sémantické regrese a regrese přístupnosti, které porovnání pixelů samo o sobě může přehlédnout, jako vizuálně identické tlačítko, které ztratilo svůj přístupný popisek. Argos přidal tuto funkci 4. listopadu 2025.

Kolik RAM potřebuje headless Chromium v CI?

Jeden sériový worker obvykle běží na zhruba 2 až 4 GB, a souběžné workery škálují RAM odtud zhruba lineárně. Skutečné využití závisí na složitosti stránky a na tom, kolik instancí prohlížeče spouštíte paralelně, takže berte tyto hodnoty jako vodítka, ne jako pevná čísla, a nechte rezervu, abyste se vyhnuli běhům testů zabitým OOM.

Podporuje BackstopJS Playwright?

Ano. Puppeteer je výchozí engine (headless Chrome), a BackstopJS podporuje také Playwright napříč chromium, firefox a webkit. Engine vybíráte ve své konfiguraci.

Sdílet

Další z blogu

Pokračuj ve čtení.

Hotov k nasazení? Od 2,48 $/měs.

Nezávislý cloud od roku 2008. AMD EPYC, NVMe, 40 Gbps. Vrácení peněz do 14 dnů.