Перейти до основного вмісту
Знижка 50% усі плани, обмежений час. Від $2.48/mo
13 min left
Інструменти розробника та DevOps

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

M Автор: Matej 13 хв читання
Comparison of self-hosted visual regression testing tools BackstopJS, Argos, and the archived Lost Pixel.

Уявіть, що ви стандартизуєте свій CI на одному з трьох інструментів візуального регресійного тестування з відкритим кодом, які всі включають до короткого списку (BackstopJS, Argos, Lost Pixel), і за тиждень після початку дослідження виявляєте, що два з трьох не такі, якими здавалися ззовні. У Argos чудовий код на GitHub, але його супровідник прямо каже, що self-hosting не підтримується й не документований. Lost Pixel було заархівовано 22 квітня 2026 року, коли команда перейшла до Figma, і він не залишив жодного шляху міграції для команд, які вже його використовували.

Це залишає рівно один із трьох, який сьогодні справді можна розгорнути самостійно і який супроводжується. Дивно таке казати про категорію з такою удаваною кількістю вибору, але саме так насправді виглядає ландшафт. Інструменти, які люди сприймають як три рівнозначні, на практиці це один робочий self-hosted варіант, один сильний інструмент, що живе на чужих серверах, і один, з якого вам варто йти.

Це огляд із пріоритетом на self-hosting про ті self-hosted інструменти візуального регресійного тестування, які виживають у зіткненні з реальністю: який підходить під яке обмеження і що робити, якщо ви прямо зараз на Lost Pixel.

Коротко

  • BackstopJS це self-hosted, супроводжуваний, ліцензований за MIT варіант із нульовою вартістю. Puppeteer за замовчуванням із підтримкою Playwright, попіксельне порівняння через Resemble.js та HTML-інтерфейс рев'ю (із застереженнями щодо рендерингу в Docker, які потрібно врахувати).
  • Argos це сильніший інструмент за робочим процесом (рев'ю PR і порівняння ARIA-знімків із кінця 2025 року), але на практиці це керований SaaS. Супровідник не надає ні підтримки, ні документації для самостійного запуску.
  • Lost Pixel було заархівовано у квітні 2026 року. Не беріть його для нової роботи, а якщо ви на ньому, плануйте міграцію вже зараз.

Вердикт в один рядок: для повністю self-hosted CI-конвеєра BackstopJS практичний вибір. Якщо вам потрібен найкращий робочий процес рев'ю і ви можете прийняти залежність від SaaS, Argos кращий інструмент.

(Чого це не охоплює: візуальне тестування на основі Cypress, специфічні для Storybook компонентні процеси та виміряні вручну показники продуктивності. Це порівняння побудоване на фактах із першоджерел, а не на тестовому стенді, який я запускав сам.)

Ландшафт self-hosted візуального регресійного тестування змінився

Дві конкретні події за останній рік переформували цей короткий список, і обидві легко пропустити, якщо ви працюєте зі статтею-списком, написаною до того, як вони сталися.

Перша: у обговоренні на GitHub у вересні 2025 рокусупровідник Argos заявив, що Argos не надає ні підтримки, ні документації для запуску поза керованим сервісом. Код ліцензований за MIT і лежить відкрито, тож «ви можете розгорнути його самі» технічно правильно, але підтримуваного шляху немає — відмінність, яка стає колосально важливою, щойно саме ви чергуєте по ньому.

Друга: репозиторій Lost Pixel було заархівовано 22 квітня 2026 року, у режимі лише для читання, коли команда оголосила, що вона переходить до Figma. Жодного посібника з міграції закриття не супроводжувало. Інструмент, який донедавна був законною безкоштовною self-hosted альтернативою Percy і Chromatic, тепер залежність без супровідника.

Обидві зміни вказують в одному напрямку. Причина, з якої команди взагалі сюди приходять — ціноутворення SaaS, що зростає як браузери на область перегляду на сторінки, або вимога комплаєнсу проти завантаження скріншотів невипущеного інтерфейсу третій стороні — не зникла. Змінилося те, що self-hosted меню коротше, ніж здається.

Ключовий висновок розділу: Лише один із трьох інструментів, які люди включають до короткого списку, сьогодні справді self-hosted і активно супроводжується.

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: справді self-hosted варіант

Встановлення це npm install -g backstopjs (або локальне встановлення в проєкті), і один цей факт пояснює більшу частину того, чому BackstopJS виграє за віссю self-hosting: немає сервісу, який треба реверс-інжинірити, немає керованого бекенду, від якого він таємно залежить. Він працює як npm-пакет або Docker-контейнер на інфраструктурі, яку ви контролюєте, під ліцензією MIT, із нульовою вартістю ліцензії. README зазначає, що поточна лінійка (6.3.x) підтримує Node 20.

Під капотом він за замовчуванням керує Puppeteer (headless Chrome), а також підтримує Playwright у chromium, firefox і webkit. Порівняння попіксельне через Resemble.js, із налаштовуваним значенням misMatchThreshold яке визначає, яке відхилення пікселів вважається провалом. Схвалення відбуваються через HTML-звіт з інтерфейсом у браузері для прийняття змін.

Обмеження — там, де ухвалюється стратегічне рішення. У BackstopJS немає вбудованого процесу блокування PR: він скаже вам, що відмінність є, але вбудувати це у шлюз «цей PR не можна злити» вже на вас. Його конфігурація живе в JSON, по одному сценарію за раз, і на кількох сотнях тест-кейсів цей JSON сам стає поверхнею супроводу. Розробка радше повільна, ніж швидка: проєкт не заархівований, пакет зараз на версії 6.3.25, а репозиторій показує приблизно 7 200 зірок на GitHub і 516 відкритих issue. Тож ставтеся до BackstopJS як до зрілого й придатного, а не як до платформи візуального тестування, що швидко розвивається.

Найгостріший експлуатаційний ризик це рендеринг у Docker. Два issue, білі або обрізані скріншоти в Docker (#1156) та неузгоджені результати після оновлення Docker до v5.3.0 (#1303), роками лишаються відкритими без розв'язання. При цьому Docker саме те, що ви хочете для CI, бо він нормалізує рендеринг між машинами. Тож інструмент, що дає вам найбільше контролю, вручає вам і відомий, невиправлений клас нестабільності рівно в тій конфігурації, у якій ви його запускатимете. Це планований ризик, а не стоп-фактор, але він має лежати на столі до того, як ви ухвалите рішення.

Порада: пастка кросплатформних базових знімків. Якщо ваші розробники знімають базові знімки на macOS, а ваші CI-раннери на Linux, ваші тести падатимуть лише через відмінності у згладжуванні шрифтів, ще до того як з'явиться хоч якась реальна регресія. Як задокументуваводин практик, рендеринг шрифтів відрізняється між Linux-образом, що використовується в CI-сервісах, і локальною машиною на macOS, достатньо щоб візуальний тест провалився сам по собі. Рішення генерувати й порівнювати базові знімки в одному середовищі (запускайте BackstopJS локально в тому самому Docker-образі, що й у CI), щоб еталонні та порівнювані зображення походили з ідентичного рендерингу.

Argos: найкращий робочий процес, але на практиці SaaS

Argos влучає в досвід рев'ю так, як у BackstopJS не виходить, і це єдина причина, чому він у цьому списку попри застереження про self-hosting. Він інтегрується з Playwright, Cypress, Storybook, WebdriverIO і Puppeteer та підключається до GitHub Actions, GitLab CI, Bitbucket і Azure DevOps. Процес рев'ю PR це першокласна продуктова поверхня, і він продовжував рухатися. Свіжі записи в журналі змін додають спільні рев'ю із закріпленими коментарями (червень 2026 року) та автоматичне ігнорування нестабільних змін.

Його найцікавіша технічна відмінна риса це порівняння. Поверх детермінованого попіксельного порівняння Argos додав порівняння ARIA-знімків для свого Playwright SDK 4 листопада 2025 року. Порівняння ARIA-знімків зіставляє дерево доступності (ролі, мітки та структуру) поряд із попіксельним скріншотом, що вловлює клас семантичних регресій і регресій доступності, які суто попіксельне порівняння може пропустити (наприклад, кнопку, яка все ще виглядає ідентично, але втратила свою доступну мітку). Для команд із зобов'язаннями щодо доступності це справжня можливість, якої не пропонують суто попіксельні інструменти.

Потім обмеження. Код це MIT, але продукт це керований сервіс, і супровідник прямо заявив, що self-hosting не документований і не підтримується. Ви можете підняти його з вихідників. Ви просто робите це, розуміючи, що будь-яка зміна вгору за течією може зламати ваше розгортання, і ніхто не зобов'язаний допомагати. Є пов'язана невизначеність, яку варто позначити, а не стверджувати: повідомлення спільноти припускають, що інтеграція з GitLab Self-Managed очікує план Enterprise (я розглядаю це як сигнал спільноти, а не підтверджену специфікацію, тож перевірте на своїй власній конфігурації, перш ніж це рухатиме рішення).

Це породжує незручний розрив. У команди зі суворими вимогами до приватності (саме тієї команди, яка найбільше вмотивована на self-hosting), яка при цьому хоче досвід рев'ю Argos, немає доброго шляху. Вони можуть використовувати керований сервіс і прийняти залежність від третьої сторони, або розгорнути без підтримки, або обрати інший інструмент. Чистих четвертих дверей немає, і чесніше це назвати, ніж вдавати, ніби ліцензія з відкритим кодом їх зачиняє.

Ключовий висновок розділу: Argos сильніший інструмент. Розгортати його самостійно не підтримується й експлуатаційно крихко.

Lost Pixel: заархівований, і що робити, якщо ви на ньому

Власний банер репозиторію Lost Pixel це вся історія в одному рядку: репозиторій було заархівовано власником 22 квітня 2026 року, і тепер він доступний лише для читання. Команда перейшла до Figma, останній реліз був v3.22.0 у листопаді 2024 року, і жодного посібника з міграції опубліковано не було.

До архівації Lost Pixel був розумним вибором (рендеринг на основі Docker, підтримка Playwright і Storybook плюс Ladle і Histoire, а також візуальне тестування як повносторінкове, так і на рівні компонентів). Ніщо з цього технічно не змінилося 22 квітня. Змінилося те, що тепер у нього немає супровідника, немає патчів безпеки і немає дорожньої карти, що для CI-залежності дискваліфікує його для нової роботи, хоч би як добре працювала поточна версія.

Якщо ви на ньому сьогодні, міграція ділиться за тим, як ви його використовували. Якщо ви покладалися на його тестування на рівні компонентів, особливо процеси Storybook або Ladle, ваша найближча заміна це керований сервіс Argos або нативне тестування скріншотів у Playwright. BackstopJS може знімати селектори або URL-адреси Storybook, але не дає вам той самий вбудований компонентний процес, що давав Lost Pixel, тож вам довелося б моделювати ці стани компонентів самостійно. Якщо ви використовували його для повносторінкової візуальної регресії, BackstopJS це прямий self-hosted наступник. У будь-якому разі перехід не терміновий у сенсі «ваші збірки зламаються завтра», але час іде: несупроводжуваний інструмент тестування тихо гниє в міру того, як версії вашого браузера, ОС і фреймворку відходять від тих, під які він збирався востаннє.

Порівняння з одного погляду

Ось та сама інформація пліч-о-пліч, щоб ви могли пробігтися по осях, важливих для рішення щодо CI, перш ніж накладати їх на свої власні обмеження.

ВісьBackstopJSArgosLost Pixel
ЛіцензіяMITКод MIT, керований SaaS-продуктMIT
Реальність self-hostingПовністю self-hosted за задумомМожливо, але без підтримки й без документаціїБув self-hosted, тепер заархівований
Статус супроводуСупроводжується, повільно розвивається і зрілийАктивний (керований сервіс)Заархівований 22 квітня 2026 року
Підхід до порівнянняПопіксельне порівняння (Resemble.js)Попіксельне порівняння плюс порівняння ARIA-знімківПопіксельне порівняння (несупроводжуване)
Підтримка фреймворків і рушіївPuppeteer (за замовчуванням), PlaywrightPlaywright, Cypress, Storybook, WebdriverIO, PuppeteerPlaywright, Storybook, Ladle, Histoire (на момент архівації)
Процес рев'юHTML-звіт, ручне схвалення, без шлюзу PRРев'ю PR, спільні коментарі, шлюзування PRНезастосовно (заархівований)
ВартістьБезкоштовноЦіни SaaS (на основі знімків)Безкоштовно, але несупроводжуване
Side-by-side comparison of BackstopJS, Argos, and Lost Pixel across self-hosting, maintenance, diffing, review workflow, and cost.

Як обирати (рамка ухвалення рішення)

Відштовхуйтеся від свого найжорсткішого обмеження, а не від списку функцій. Обмеження викреслює більшу частину меню за вас.

  • Повністю self-hosted, нульовий бюджет, і ви можете прийняти лише повносторінкове тестування з ручним рев'ю: BackstopJS. Це єдиний варіант, який одночасно задовольняє self-hosted, супроводжуваний і безкоштовний, а компроміси (без шлюзу PR, конфігурація в JSON, нестабільність Docker) це відомі величини, навколо яких можна проєктувати.
  • Вам потрібен найкращий досвід рев'ю, шлюзування PR і ARIA-порівняння, і ви можете прийняти залежність від SaaS: керований сервіс Argos. Це шлях до сильних сторін Argos без ризику непідтримуваного self-hosting. Якщо вимога комплаєнсу забороняє завантаження скріншотів третій стороні, ці двері зачинені, і ви повертаєтеся до BackstopJS.
  • Невеликий набір тестів або Playwright насамперед: подумайте про те, щоб узагалі не додавати виділений інструмент. Playwright постачається з toHaveScreenshot() нативно, і для наборів приблизно до 100 тестів цього може бути все, що вам потрібно. Один посібник практика розміщує точку перелому, де виділений інструмент починає виправдовувати себе, приблизно на цьому масштабі (ставтеся до цього як до галузевого спостереження, а не до офіційної цифри Playwright). Накладні витрати на керування файлами базових знімків у git зростають за цією точкою, і ось тут виділений інструмент окупається.
  • Зараз на Lost Pixel: мігруйте зараз, згідно з поділом із попереднього розділу. Не сприймайте «воно ще працює» як причину лишитися.

Застереження, що передує всім цим інструментам і переживає їх: команда Sparkbox, яка писала багато років тому, обрала хостований варіант саме тому, що змусити інженерів справді користуватися тестами було важче, ніж налаштування. Self-hosted інструмент зі слабшим інтерфейсом рев'ю може виграти за вартістю і програти за впровадженням (якщо ваша команда ігнорує галасливий звіт BackstopJS, його нульова вартість ліцензії нічого вам не принесла). Враховуйте досвід рев'ю в рішенні, а не лише ціну.

Ключовий висновок розділу: Обмеження обирає інструмент. Self-hosted і безкоштовно вказує на BackstopJS, найкращий робочий процес за прийнятного SaaS вказує на Argos, а малий і Playwright насамперед може вказувати взагалі ні на який інструмент.

Визначення розміру CI-раннера під headless Chromium

Усі три інструменти керують headless Chromium, і саме споживання пам'яті Chromium (а не CPU) задає розмір вашого раннера, бо кожен паралельний браузерний воркер хоче свої кілька гігабайтів RAM. Занизьте розмір машини, і ваші візуальні тести не падають чисто. Їх убиває OOM посеред прогону, і вони доповідаються як нестабільний інфраструктурний шум, найгірший вид збою для налагодження.

Як приблизний орієнтир, розмічений за паралелізмом, а не як жорсткі цифри (фактичне використання залежить від складності сторінки і від того, скільки воркерів ви запускаєте паралельно):

  • Невелика команда або послідовні тести: приблизно 2 vCPU / 4 GB RAM справляються з одним воркером headless Chromium плюс накладні витрати CI-демона.
  • Командне використання CI: приблизно 4 vCPU / 8 GB RAM підтримують близько 2–4 паралельних браузерних воркерів, де опиняється більшість команд.
  • Висока пропускна здатність або великі набори: приблизно 8 vCPU / 16 GB RAM для високого паралелізму, або коли прогін візуальної регресії ділить раннер з іншою CI-роботою.

Сховище це тиха стаття витрат. Артефакти скріншотів та історичні базові знімки накопичуються від прогону до прогону, тож плануйте це зростання: закладіть щедрий запас сховища, якщо тримаєте базові знімки локально, або відправляйте базові знімки й артефакти в об'єктне сховище, щоб диск раннера не був обмеженням.

VPS це природний хост для self-hosted CI-раннера, що робить це, бо вам потрібна передбачувана, виділена RAM для воркерів Chromium, а домашня машина має сенс, лише якщо залізо вже стоїть. Якщо ви піднімаєте й навколишній CI-стек, частини навколо інструмента візуального тестування це розгортання в один клік у маркетплейсі Cloudzy: Gitea, GitLab, Jenkins і Forgejo для CI-форжа та Docker для узгодженості рендерингу, яка потрібна інструментам. Сам інструмент візуальної регресії встановлюється зверху через npm або Docker, тож підніміть Linux VPS розмічений за діапазонами вище, і запускайте його там. Якщо ви зв'язуєте CI на основі Docker, посібники Cloudzy щодо self-hosted альтернатив GitLab та переліку Docker-контейнерів охоплюють суміжне налаштування.

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.

Часті запитання

Чи можна розгорнути Argos самостійно?

Технічно так (код ліцензований за MIT), але супровідник заявив у вересні 2025 року, що Argos не надає ні підтримки, ні документації для запуску поза керованим сервісом. Ставтеся до self-hosting як до непідтримуваного й експлуатаційно крихкого: він може зламатися за будь-якої зміни вгору за течією, і жоден супровідник не зобов'язаний допомагати. Для більшості команд керований сервіс це практичний спосіб отримати переваги Argos.

Що сталося з Lost Pixel?

Lost Pixel було заархівовано 22 квітня 2026 року, коли команда перейшла до Figma й закрила продукт. Репозиторій доступний лише для читання, останній реліз був v3.22.0 у листопаді 2024 року, і жодного посібника з міграції надано не було. Не беріть його для нової роботи. Якщо ви його використовуєте, плануйте міграцію на BackstopJS (повносторінкове тестування) або на Argos і Playwright-нативне (тестування компонентів).

Що таке порівняння ARIA-знімків?

Порівняння ARIA-знімків зіставляє дерево доступності (ролі, мітки та структуру) поряд із попіксельним скріншотом і вловлює семантичні регресії та регресії доступності, які попіксельне порівняння саме по собі може пропустити, наприклад візуально ідентичну кнопку, що втратила свою доступну мітку. Argos додав цю функцію 4 листопада 2025 року.

Скільки RAM потрібно headless Chromium у CI?

Один послідовний воркер зазвичай працює приблизно на 2–4 GB, а паралельні воркери масштабують RAM звідти приблизно лінійно. Фактичне використання залежить від складності сторінки і від того, скільки екземплярів браузера ви запускаєте паралельно, тож ставтеся до цих значень як до орієнтирів, а не жорстких цифр, і залишайте запас, щоб уникнути вбитих OOM прогонів тестів.

Чи підтримує BackstopJS Playwright?

Так. Puppeteer це рушій за замовчуванням (headless Chrome), і BackstopJS також підтримує Playwright у chromium, firefox і webkit. Рушій ви обираєте у своїй конфігурації.

Поділитися

Більше з блогу

Продовжуйте читати.

Gitea vs Forgejo vs OneDev: choosing between a lightweight self-hosted git server and an all-in-one dev platform.
Інструменти розробника та DevOps

Gitea проти Forgejo проти OneDev: вибір платформи для самостійного хостингу git

Gitea, Forgejo та OneDev порівняно для самостійного хостингу: управління, CI/CD, витрати RAM і яка з них підходить для вашої команди. Прямий гайд для прийняття рішення, без зайвого

Bill 14 хв читання

Готові розгортати? Від $2,48/міс.

Незалежна хмара з 2008 року. AMD EPYC, NVMe, 40 Gbps. Повернення коштів за 14 днів.