Képzeld el, hogy a CI-det a három nyílt forráskódú vizuális regressziós tesztelő eszköz egyikére szabványosítod, amit mindenki a szűkített listára tesz (BackstopJS, Argos, Lost Pixel), és egy héttel a vizsgálat megkezdése után rájössz, hogy a háromból kettő nem az, aminek kívülről látszott. Az Argosnak kiváló kódja van a GitHubon, de a karbantartója nyíltan kimondja, hogy a self-hosting nincs sem támogatva, sem dokumentálva. A Lost Pixelt 2026. április 22-én archiválták, amikor a csapat a Figmához csatlakozott, és semmilyen migrációs utat nem biztosított azoknak a csapatoknak, akik már használták.
Ez pontosan egyet hagy a háromból, ami ma valóban self-hostolható és karbantartott. Ami furcsa dolog egy ekkora látszólagos választékkal bíró kategóriáról állítani, de a helyzet valójában így fest. Az eszközök, amelyeket az emberek három egyenrangúként kezelnek, a gyakorlatban egy működő self-hosted lehetőség, egy erős eszköz, ami valaki más szerverein él, és egy, amiről el kellene migrálnod.
Ez egy self-hosting-központú áttekintés azokról a self-hosted vizuális regressziós tesztelő eszközökről, amelyek túlélik a valósággal való találkozást: melyik illik melyik megkötéshez, és mit tegyél, ha épp Lost Pixelt használsz.
A rövid verzió
- BackstopJS a self-hostolható, karbantartott, MIT-licencelt, nulla költségű lehetőség. Alapból Puppeteer Playwright-támogatással, pixel-diffelés Resemble.js-en keresztül és egy HTML review-felület (a Docker-rendereléshez tartozó fenntartásokkal, amelyeket be kell tervezned).
- Argos az erősebb eszköz a munkafolyamat terén (PR-review és ARIA-snapshot-diffelés 2025 vége óta), de a gyakorlatban egy menedzselt SaaS. A karbantartó nem nyújt sem támogatást, sem dokumentációt ahhoz, hogy magad futtasd.
- Lost Pixel 2026 áprilisában archiválták. Ne vezesd be új munkához, és ha használod, tervezd meg most a migrációdat.
Az egysoros ítélet: egy teljesen self-hosted CI-folyamathoz a BackstopJS a praktikus választás. Ha a legjobb review-munkafolyamatot akarod, és el tudsz fogadni egy SaaS-függőséget, az Argos a jobb eszköz.
(Amit ez nem fed le: Cypress-alapú vizuális tesztelés, Storybook-specifikus komponens-munkafolyamatok és saját kezűleg mért teljesítményszámok. Ez az összehasonlítás elsődleges forrásokból származó tényekre épül, nem egy általam futtatott tesztkörnyezetre.)
A self-hosted vizuális regressziós tesztelés tája megváltozott
Két konkrét esemény az elmúlt évben átformálta ezt a szűkített listát, és mindkettő könnyen kimarad, ha egy előttük írt listából dolgozol.
Az első: egy 2025. szeptemberi GitHub-vitábanegy Argos-karbantartó kijelentette, hogy az Argos nem nyújt támogatást vagy dokumentációt ahhoz, hogy a menedzselt szolgáltatáson kívül futtassák. A kód MIT-licencelt és nyíltan hozzáférhető, tehát a "self-hostolhatod" technikailag igaz, de nincs támogatott út, ami hatalmas jelentőségűvé válik, amint te vagy az ügyeletes érte.
A második: a Lost Pixel repót archiválták 2026. április 22-én, csak olvashatóra, amikor a csapat bejelentette, hogy a Figmához csatlakozik. Semmilyen migrációs útmutató nem kísérte a leállítást. Egy eszköz, ami a közelmúltig a Percy és a Chromatic legitim, ingyenes self-hosted alternatívája volt, most karbantartó nélküli függőség.
Mindkét változás ugyanabba az irányba mutat. Az ok, amiért a csapatok egyáltalán idejutnak, a böngészők szorozva nézetablakok szorozva oldalak szerint növekvő SaaS-árazás, vagy egy megfelelőségi szabály a nem kiadott felület képernyőképeinek harmadik félhez való feltöltése ellen, nem tűnt el. Ami megváltozott, az az, hogy a self-hosted kínálat rövidebb, mint amilyennek látszik.
A szakasz fő tanulsága: A három eszköz közül, amit az emberek a szűkített listára tesznek, ma csak egy valóban self-hostolható és aktívan karbantartott.

BackstopJS: a valóban self-hostolható lehetőség
A telepítés a npm install -g backstopjs (vagy egy helyi projekttelepítés), és ez az egy tény adja a legnagyobb részét annak, miért nyer a BackstopJS a self-hosting tengelyén: nincs visszafejtendő szolgáltatás, nincs menedzselt háttérrendszer, amitől titokban függene. npm-csomagként vagy Docker-konténerként fut az általad felügyelt infrastruktúrán, MIT-licenc alatt, nulla licencköltséggel. A README megjegyzi, hogy a jelenlegi vonal (6.3.x) a Node 20-at támogatja.
A motorháztető alatt alapból a Puppeteert vezérli (headless Chrome), és támogatja a Playwrightot is chromium, firefox és webkit felett. A diffelés pixelalapú Resemble.js-en keresztül, egy konfigurálható értékkel misMatchThreshold amely szabályozza, mennyi pixeleltérés számít hibának. A jóváhagyások egy HTML-jelentésen keresztül történnek, böngészőn belüli felülettel a változtatások elfogadásához.
A korlátok ott vannak, ahol egy stratégiai döntés születik. A BackstopJS-nek nincs beépített PR-blokkoló munkafolyamata: közli veled, hogy létezik egy diff, de ennek egy "ez a PR nem mergelhető" kapuba kötése rád marad. A konfigurációja JSON-ban él, egyszerre egy forgatókönyv, és néhány száz tesztesetnél az a JSON maga is karbantartási felületté válik. A fejlesztés inkább lassú, mint gyors: a projekt nincs archiválva, a csomag jelenleg a 6.3.25 verziónáltart, és a repó nagyjából 7200 GitHub-csillagot és 516 nyitott issue-t mutat. Kezeld tehát a BackstopJS-t érettként és használhatóként, nem gyorsan fejlődő vizuális tesztelő platformként.
A legélesebb működési kockázat a Docker-renderelés. Két issue, fehér vagy levágott képernyőképek Dockerben (#1156) és inkonzisztens eredmények a v5.3.0 Docker-frissítés után (#1303), évek óta megoldatlanul nyitva áll. A Docker egyben pontosan az, amit a CI-hez akarsz, mert normalizálja a renderelést a gépek között. Így az eszköz, ami a legtöbb kontrollt adja, egyben a instabilitás egy ismert, javítatlan osztályát is átadja pontosan abban a felállásban, amelyben futtatni fogod. Ez egy betervezhető kockázat, nem kizáró ok, de az asztalon kell lennie, mielőtt elköteleződsz.
Profi tipp: az operációs rendszerek közötti baseline-csapda. Ha a fejlesztőid macOS-en rögzítik a baseline-okat, a CI-futtatóid pedig Linuxosak, a tesztjeid pusztán a betűkészletek élsimítási különbségei miatt elbuknak, még mielőtt bármilyen valódi regresszió létezne. Ahogy egy gyakorló szakember dokumentálta, a betűkészletek renderelése eltér a CI-szolgáltatások által használt Linux-image és egy helyi macOS-gép között, épp eléggé ahhoz, hogy egy vizuális teszt magától elbukjon. A megoldás az, hogy a baseline-okat egyetlen környezetben állítsd elő és hasonlítsd össze (futtasd a BackstopJS-t helyben ugyanabban a Docker-image-ben, amit a CI-ben használsz), hogy a referencia- és összehasonlító képek azonos renderelésből származzanak.
Argos: a legjobb munkafolyamat, de a gyakorlatban SaaS
Az Argos úgy találja el a review-élményt, ahogy a BackstopJS-nek nem sikerül, és ez a teljes oka annak, miért van ezen a listán a self-hosting fenntartás ellenére. Integrálódik a Playwrighttal, Cypressszel, Storybookkal, WebdriverIO-val és Puppeteerrel, és kapcsolódik a GitHub Actionshöz, GitLab CI-hoz, Bitbuckethez és Azure DevOpshoz. A PR-review-munkafolyamat elsőosztályú termékfelület, és folyamatosan mozgásban maradt. A friss changelog-bejegyzések kollaboratív review-kat adnak hozzá rögzített megjegyzésekkel (2026 június) és az instabil változások automatikus figyelmen kívül hagyását.
A legérdekesebb technikai megkülönböztetője a diffelés. A determinisztikus pixel-diffelés tetejére az Argos az ARIA-snapshot-diffelést a Playwright SDK-jához 2025. november 4-én adta hozzá. Az ARIA-snapshot-diffelés az akadálymentességi fát (szerepek, címkék és struktúra) hasonlítja össze a pixel-képernyőkép mellett, ami a szemantikai és akadálymentességi regressziók egy osztályát kapja el, amelyet egy tisztán pixeles diff kihagyhat (például egy gomb, ami még mindig azonosnak látszik, de elvesztette az akadálymentes címkéjét). Az akadálymentességi vállalásokkal bíró csapatoknak ez egy valódi képesség, amit a csak pixeles eszközök nem kínálnak.
Aztán jön a megkötés. A kód MIT, de a termék a menedzselt szolgáltatás, és a karbantartó egyértelmű volt abban, hogy a self-hosting nincs dokumentálva és nincs támogatva. Fel tudod állítani forráskódból. Csak annak tudatában teszed, hogy bármilyen upstream változás megtörheti a deploymentedet, és senki sem köteles segíteni. Van egy kapcsolódó bizonytalanság, amit érdemes jelezni, nem pedig állítani: közösségi jelentések arra utalnak, hogy a GitLab Self-Managed integráció egy Enterprise csomagot vár el (ezt közösségi jelzésként kezelem, nem megerősített specifikációként, tehát ellenőrizd a saját felállásodon, mielőtt döntést vezérelne).
Ez egy kényelmetlen rést szül. Egy szigorú adatvédelmi követelményekkel bíró csapatnak (pontosan az a csapat, amelyik a legmotiváltabb a self-hostingra), amelyik az Argos review-élményét is akarja, nincs jó útja. Használhatják a menedzselt szolgáltatást és elfogadhatják a harmadik féltől való függőséget, vagy self-hostolhatnak támogatás nélkül, vagy választhatnak másik eszközt. Nincs tiszta negyedik ajtó, és becsületesebb ezt kimondani, mint úgy tenni, mintha a nyílt forráskódú licenc bezárná.
A szakasz fő tanulsága: Az Argos az erősebb eszköz. Self-hostolni nem támogatott és működésileg törékeny.
Lost Pixel: archiválva, és mit tegyél, ha használod
A Lost Pixel repó saját bannere egyetlen sorban elmondja az egész történetet: a repót a tulajdonos 2026. április 22-én archiválta, és most csak olvasható. A csapat a Figmához csatlakozott, az utolsó kiadás a v3.22.0 volt 2024 novemberében, és semmilyen migrációs útmutatót nem tettek közzé.
Az archiválásig a Lost Pixel ésszerű választás volt (Docker-alapú renderelés, Playwright- és Storybook-támogatás, plusz Ladle és Histoire, és teljes oldalas, valamint komponensszintű vizuális tesztelés is). Ebből semmi sem változott technikailag április 22-én. Ami megváltozott, az az, hogy most nincs karbantartója, nincsenek biztonsági javításai és nincs roadmapje, ami egy CI-függőség számára kizáró ok az új munkához, bármilyen jól is fut a jelenlegi verzió.
Ha ma használod, a migráció aszerint válik szét, ahogyan használtad. Ha a komponensszintű tesztelésére támaszkodtál, különösen Storybook- vagy Ladle-munkafolyamatokra, a legközelebbi helyettesítőd a menedzselt Argos-szolgáltatás vagy a Playwright natív képernyőkép-tesztelése. A BackstopJS képes szelektorokat vagy Storybook-URL-eket rögzíteni, de nem adja meg ugyanazt a beépített komponens-munkafolyamatot, amit a Lost Pixel adott, tehát neked kellene modelleznedt azokat a komponensállapotokat. Ha teljes oldalas vizuális regresszióhoz használtad, a BackstopJS a közvetlen self-hosted utód. Bárhogy is, a váltás nem sürgős abban az értelemben, hogy "a buildjeid holnap eltörnek", de ketyeg az óra: egy karbantartatlan tesztelő eszköz csendben rohad, ahogy a böngésződ, operációs rendszered és framework-öd verziói elsodródnak azoktól, amelyekkel utoljára fordították.
Összehasonlítás egy pillantásra
Íme ugyanaz az információ egymás mellett, hogy átfuthasd a CI-döntéshez fontos tengelyeket, mielőtt a saját megkötéseidre vetítenéd őket.
| Tengely | BackstopJS | Argos | Lost Pixel |
|---|---|---|---|
| Licenc | MIT | MIT-kód, menedzselt SaaS-termék | MIT |
| A self-hosting valósága | Tervezésénél fogva teljesen self-hostolható | Lehetséges, de támogatás és dokumentáció nélkül | Self-hostolható volt, most archiválva |
| Karbantartási állapot | Karbantartott, lassan mozgó és érett | Aktív (menedzselt szolgáltatás) | Archiválva 2026. április 22-én |
| Diffelési megközelítés | Pixel-diff (Resemble.js) | Pixel-diff plusz ARIA-snapshot-diff | Pixel-diff (karbantartatlan) |
| Framework- és motortámogatás | Puppeteer (alapértelmezett), Playwright | Playwright, Cypress, Storybook, WebdriverIO, Puppeteer | Playwright, Storybook, Ladle, Histoire (az archiváláskor) |
| Review-munkafolyamat | HTML-jelentés, manuális jóváhagyás, nincs PR-kapu | PR-review, kollaboratív megjegyzések, PR-kapuzás | Nem alkalmazható (archiválva) |
| Költség | Ingyenes | SaaS-árazás (snapshot-alapú) | Ingyenes, de karbantartatlan |

Hogyan válassz (döntési keret)
A legkeményebb megkötésedből indulj ki, ne egy funkciólistából. A megkötés a menü nagy részét kiszűri helyetted.
- Teljesen self-hosted, nulla költségvetés, és el tudsz fogadni csak teljes oldalas tesztelést manuális review-val: BackstopJS. Ez az egyetlen lehetőség, ami egyszerre teljesíti a self-hosted, karbantartott és ingyenes hármast, és a kompromisszumok (nincs PR-kapu, JSON-konfiguráció, Docker-instabilitás) ismert mennyiségek, amelyek köré tervezhetsz.
- A legjobb review-élményt, PR-kapuzást és ARIA-diffelést akarod, és el tudsz fogadni egy SaaS-függőséget: a menedzselt Argos-szolgáltatás. Ez az út az Argos erősségeihez a nem támogatott self-hosting kockázata nélkül. Ha egy megfelelőségi szabály tiltja a képernyőképek harmadik félhez való feltöltését, ez az ajtó zárva, és visszakerülsz a BackstopJS-hez.
- Kis tesztkészlet vagy Playwright-first: fontold meg, hogy egyáltalán ne adj hozzá dedikált eszközt. A Playwright natívan tartalmazza a
toHaveScreenshot()funkciót, és nagyjából 100 teszt alatti készleteknél lehet, hogy ez minden, amire szükséged van. Egy szakmai útmutató a fordulópontot, ahol egy dedikált eszköz kezdi megérni magát, nagyjából erre a nagyságrendre helyezi (ezt iparági megfigyelésként kezeld, nem hivatalos Playwright-számként). A baseline-fájlok gitben való kezelésének költsége e ponton túl növekszik, és itt fizetődik ki egy dedikált eszköz. - Jelenleg Lost Pixelen: migrálj most, az előző szakasz felosztása szerint. Ne vedd a "még működik"-et okként a maradásra.
Egy fenntartás, ami mindezen eszközöket megelőzi és túl is éli őket: a Sparkbox csapat, évekkel ezelőtt írva, kifejezetten azért választott egy hostolt lehetőséget, mert nehezebb volt rávenni a mérnököket, hogy valóban használják a teszteket, mint maga a felállítás. Egy self-hosted eszköz gyengébb review-felülettel nyerhet a költségen és veszíthet az elfogadottságon (ha a csapatod figyelmen kívül hagy egy zajos BackstopJS-jelentést, a nulla licencköltsége semmit sem hozott neked). Vedd bele a review-élményt a döntésbe, ne csak az árat.
A szakasz fő tanulsága: A megkötés választja ki az eszközt. A self-hosted és ingyenes a BackstopJS-re mutat, a legjobb munkafolyamat elfogadható SaaS-szal az Argosra, a kicsi és Playwright-first pedig lehet, hogy semmilyen eszközre.
A CI-futtató méretezése headless Chromiumhoz
Mindhárom eszköz headless Chromiumot vezérel, és a Chromium memóriaigénye (nem a CPU) az, ami megszabja a futtatód méretét, mert minden egyidejű böngésző-worker a saját néhány gigabájt RAM-ját akarja. Ha túl kicsire méretezed a gépet, a vizuális tesztjeid nem buknak el tisztán. Futás közben OOM-mal kilövik őket, és instabil infrastrukturális zajként jelentik, ami a legrosszabb fajta hiba a hibakereséshez.
Nagyjábóli útmutatóként, párhuzamosság szerint méretezve, nem kemény számokként (a tényleges használat az oldal komplexitásától és attól függ, hány workert futtatsz párhuzamosan):
- Kis csapat vagy soros tesztek: nagyjából 2 vCPU / 4 GB RAM elbír egyetlen headless Chromium-workert a CI-daemon terheléssel.
- Csapat CI-használat: nagyjából 4 vCPU / 8 GB RAM körülbelül 2-4 párhuzamos böngésző-workert támogat, ahol a legtöbb csapat landol.
- Nagy áteresztőképesség vagy nagy készletek: nagyjából 8 vCPU / 16 GB RAM a nagy párhuzamossághoz, vagy amikor a vizuális regressziós futás egy futtatót oszt meg más CI-munkával.
A tárolás a csendes tétel. A képernyőkép-artefaktumok és a történeti baseline-ok futásról futásra halmozódnak, tehát tervezz ezzel a növekedéssel: szánj bőséges tárhelytartalékot, ha a baseline-okat helyben tartod, vagy tolds a baseline-okat és artefaktumokat objektumtárolóba, hogy a futtató lemeze ne legyen a szűk keresztmetszet.
Egy VPS a természetes host egy ilyet végző self-hosted CI-futtatóhoz, mert kiszámítható, dedikált RAM-ot akarsz a Chromium-workereknek, és egy homelab-gép csak akkor van értelme, ha a hardver már ott van. Ha a körülvevő CI-stacket is felállítod, a vizuális tesztelő eszköz körüli darabok egykattintásos deploymentek a Cloudzy marketplace-en: Gitea, GitLab, Jenkins és Forgejo a CI-forge-hoz, és Docker a renderelési konzisztenciához, amire az eszközöknek szükségük van. Maga a vizuális regressziós eszköz npm-en vagy Dockeren keresztül települ a tetejére, tehát indíts egy Linux VPS a fenti tartományok szerint méretezve, és futtasd ott. Ha Docker-alapú CI-t drótozol össze, a Cloudzy útmutatói a self-hosted GitLab-alternatívákról és a Docker-konténerek listázásáról lefedik a szomszédos felállítást.

Gyakran ismételt kérdések
Self-hostolható az Argos?
Technikailag igen (a kód MIT-licencelt), de a karbantartó 2025 szeptemberében kijelentette, hogy az Argos nem nyújt támogatást vagy dokumentációt ahhoz, hogy a menedzselt szolgáltatáson kívül futtassák. Kezeld a self-hostingot nem támogatottként és működésileg törékenyként: bármilyen upstream változásnál eltörhet, anélkül hogy bármelyik karbantartó köteles lenne segíteni. A legtöbb csapat számára a menedzselt szolgáltatás a praktikus módja az Argos előnyeinek megszerzésére.
Mi történt a Lost Pixellel?
A Lost Pixelt 2026. április 22-én archiválták, amikor a csapat a Figmához csatlakozott és leállította a terméket. A repó csak olvasható, az utolsó kiadás a v3.22.0 volt 2024 novemberében, és semmilyen migrációs útmutatót nem biztosítottak. Ne vezesd be új munkához. Ha használod, tervezz migrációt a BackstopJS-re (teljes oldalas tesztelés) vagy az Argosra és a Playwright-natívra (komponenstesztelés).
Mi az ARIA-snapshot-diffelés?
Az ARIA-snapshot-diffelés az akadálymentességi fát (szerepek, címkék és struktúra) hasonlítja össze a pixel-képernyőkép mellett, és elkapja azokat a szemantikai és akadálymentességi regressziókat, amelyeket egy pixel-diff önmagában kihagyhat, például egy vizuálisan azonos gombot, ami elvesztette az akadálymentes címkéjét. Az Argos a funkciót 2025. november 4-én adta hozzá.
Mennyi RAM kell a headless Chromiumnak a CI-ben?
Egyetlen soros worker jellemzően nagyjából 2-4 GB-on fut, és az egyidejű workerek innen nagyjából lineárisan skálázzák a RAM-ot. A tényleges használat az oldal komplexitásától és attól függ, hány böngészőpéldányt futtatsz párhuzamosan, tehát kezeld ezeket az értékeket útmutatóként, nem kemény számokként, és hagyj tartalékot, hogy elkerüld az OOM-mal kilőtt tesztfutásokat.
Támogatja a BackstopJS a Playwrightot?
Igen. A Puppeteer az alapértelmezett motor (headless Chrome), és a BackstopJS a Playwrightot is támogatja chromium, firefox és webkit felett. A motort a konfigurációdban választod ki.