Налаштування Selenium-тестів для 1С-Бітрікс під ключ

Після оновлення торгового каталогу на сайті 1С-Бітрікс перестав працювати розумний фільтр на третій сторінці. Покупець не міг знайти товар — конверсія впала на 12% до того, як помітив розробник. Налаштування Selenium-тестів для 1С-Бітрікс дозволяє виявляти такі регресії за хвилини. Ручне тестування
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування Selenium-тестів для 1С-Бітрікс під ключ
Простий
~1 день

Наші компетенції:

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

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1454
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1017
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    759
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    802
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1162

Після оновлення торгового каталогу на сайті 1С-Бітрікс перестав працювати розумний фільтр на третій сторінці. Покупець не міг знайти товар — конверсія впала на 12% до того, як помітив розробник. Налаштування Selenium-тестів для 1С-Бітрікс дозволяє виявляти такі регресії за хвилини. Ручне тестування регресій — дороге та ненадійне. Для Бітрікс-сайтів, де бізнес-логіка розповзається по PHP-компонентах і JavaScript, Selenium — найбільш підходящий інструмент: він тестує реальний браузер через Selenium WebDriver, а не моки. Ми налаштовуємо Selenium-тести під ключ, вбудовуємо в CI/CD і навчаємо команду.

Автоматизація регресійного тестування: чому це необхідно?

Кожен реліз на живому магазині — ризик. Якщо фільтр каталогу перестав працювати, це одразу видно в тестах. Selenium перевіряє реальний браузер: він клікає, чекає AJAX, перевіряє DOM. Емуляція через mocks не дає такої впевненості. Для Бітрікс, де часто використовуються кастомні JavaScript-збірки, це єдиний спосіб гарантувати, що користувацький сценарій не зламаний. Згідно з документацією, Selenium Project стверджує, що headless-режим прискорює виконання тестів на 40%, а паралельний запуск у Grid скорочує час прогону ста тестів до 10 хвилин.

Як налаштувати Selenium-тести для Бітрікс?

Інфраструктура Selenium для Бітрікс

Selenium WebDriver + Java або Python — класичний стек. Для PHP-проєктів краще PHP-обгортки: php-webdriver/webdriver (Facebook PHP WebDriver) або Codeception з модулем WebDriver.

Мінімальна інфраструктура:

Тести (PHP/Python) → Selenium WebDriver → ChromeDriver/GeckoDriver → Браузер → Бітрікс-сайт 

Для CI/CD — Selenium Grid або Selenium Standalone у Docker:

docker-compose.selenium.yml
services: selenium-chrome: image: selenium/standalone-chrome:latest ports: - "4444:4444" environment: - SE_NODE_MAX_SESSIONS=3 shm_size: 2g 

Конфігурація для тестування Бітрікс-оточення

// tests/selenium/SeleniumTestCase.php use Facebook\WebDriver\Remote\RemoteWebDriver; use Facebook\WebDriver\Remote\DesiredCapabilities; use Facebook\WebDriver\WebDriverBy; use Facebook\WebDriver\WebDriverExpectedCondition; abstract class BitrixSeleniumTest extends PHPUnit\Framework\TestCase { protected RemoteWebDriver $driver; protected string $baseUrl = 'https://test.site.ru'; protected function setUp(): void { $caps = DesiredCapabilities::chrome(); $caps->setCapability('goog:chromeOptions', [ 'args' => ['--headless', '--no-sandbox', '--disable-dev-shm-usage'], ]); $this->driver = RemoteWebDriver::create( 'http://localhost:4444/wd/hub', $caps, 30000, // таймаут підключення 30000 // таймаут запиту ); $this->driver->manage()->window()->setSize( new \Facebook\WebDriver\WebDriverDimension(1280, 900) ); } protected function tearDown(): void { $this->driver->quit(); } protected function waitForElement(string $selector, int $seconds = 10): \Facebook\WebDriver\WebDriverElement { return $this->driver->wait($seconds)->until( WebDriverExpectedCondition::visibilityOfElementLocated( WebDriverBy::cssSelector($selector) ) ); } protected function loginAsAdmin(): void { $this->driver->get($this->baseUrl . '/bitrix/admin/'); $this->driver->findElement(WebDriverBy::name('USER_LOGIN'))->sendKeys('admin'); $this->driver->findElement(WebDriverBy::name('USER_PASSWORD'))->sendKeys(getenv('BITRIX_ADMIN_PASS')); $this->driver->findElement(WebDriverBy::cssSelector('[type=submit]'))->click(); } } 

Тест критичних користувацьких сценаріїв

// tests/selenium/CheckoutFlowTest.php class CheckoutFlowTest extends BitrixSeleniumTest { public function testAddToCartAndCheckout(): void { // 1. Відкриваємо картку товару $this->driver->get($this->baseUrl . '/catalog/tools/drills/bosch-gsh/'); // 2. Чекаємо завантаження кнопки та натискаємо $addBtn = $this->waitForElement('[data-action="add-to-cart"]'); $addBtn->click(); // 3. Чекаємо оновлення лічильника кошика $counter = $this->waitForElement('.cart-counter'); $this->assertSame('1', $counter->getText()); // 4. Переходимо до кошика $this->driver->get($this->baseUrl . '/cart/'); // 5. Перевіряємо, що товар у кошику $cartItem = $this->waitForElement('.cart-item'); $this->assertStringContainsString('Bosch GSH', $cartItem->getText()); // 6. Натискаємо оформити замовлення $this->driver->findElement( WebDriverBy::cssSelector('.checkout-btn') )->click(); // 7. Чекаємо сторінки чекауту $this->waitForElement('#checkout-form'); $this->assertStringContainsString('/order/', $this->driver->getCurrentURL()); } } 

Тест розумного фільтра каталогу

class CatalogFilterTest extends BitrixSeleniumTest { public function testFilterByBrandUpdatesListing(): void { $this->driver->get($this->baseUrl . '/catalog/tools/'); // Чекаємо завантаження фільтра $this->waitForElement('.catalog-filter'); // Клікаємо чекбокс фільтра «Bosch» $brandCheckbox = $this->driver->findElement( WebDriverBy::cssSelector('[data-filter="brand"][value="bosch"]') ); $brandCheckbox->click(); // Чекаємо AJAX-оновлення списку товарів $this->driver->wait(10)->until( WebDriverExpectedCondition::invisibilityOfElementLocated( WebDriverBy::cssSelector('.catalog-loading') ) ); // Перевіряємо, що URL змінився (ЧПУ-фільтр) $this->assertStringContainsString('brand=bosch', $this->driver->getCurrentURL()); // Перевіряємо, що всі картки містять «Bosch» $cards = $this->driver->findElements( WebDriverBy::cssSelector('.product-card .product-brand') ); foreach ($cards as $card) { $this->assertSame('Bosch', $card->getText()); } } } 

Окупність Selenium-тестів для Бітрікс

Автоматизація окупається, коли кількість релізів перевищує два на місяць. На проєкті з каталогом на 50 000 товарів і частими оновленнями фільтрів Selenium-тести знижують витрати на регресію на 70% за рахунок виключення ручних перевірок. Економія часу на одному релізі — від 4 до 8 людино-годин. Якщо ви викочуєте зміни щотижня, тести окупаються за два релізи. Економія на одному релізі досягає 8 000 ₴ за рахунок виключення ручної праці.

Порівняння: Selenium vs ручне тестування

Параметр Ручне тестування Selenium-автоматизація
Швидкість регресії 1–2 дні на весь каталог 10–20 хвилин на набір тестів
Покриття критичних сценаріїв Залежить від виконавця 100% визначених сценаріїв
Можливість інтеграції в CI/CD Ні Так (GitLab CI, GitHub Actions)
Надійність при частих релізах Низька через людський фактор Висока, тести запускаються автоматично
Вартість підтримки Висока при частих релізах Знижується з ростом набору тестів

Selenium кращий за ручне тестування мінімум у 6 разів за швидкістю регресії та повністю виключає людські помилки при однотипних перевірках.

Інтеграція тестів у CI/CD: налаштування

Ми налаштовуємо запуск набору тестів при кожному push або перед деплоєм. Використовуємо GitLab CI або GitHub Actions. Збираємо Docker-образ із Selenium і тестами, запускаємо паралельно. При падінні тестів пайплайн зупиняється — реліз не йде з багами. Три ключові тести покривають 90% критичних сценаріїв, а повний прогін із 50 тестів займає близько 10 хвилин.

Що входить у роботу

  • Налаштування Selenium Grid у Docker (Chrome, headless-режим).
  • Написання тестів для критичних користувацьких сценаріїв (кошик, фільтр, авторизація, чекаут).
  • Інтеграція в CI/CD (GitLab CI, GitHub Actions, Bitbucket Pipelines).
  • Підготовка документації: як запускати тести локально, як додавати нові.
  • Навчання команди: проведемо воркшоп із написання тестів.
  • Пост-релізна підтримка: виправлення тестів після змін дизайну або логіки.

Процес роботи

  1. Аналітика — аудит поточного сайту, виявлення критичних сценаріїв.
  2. Проєктування — вибір інструментів (Selenium + PHP або Codeception), архітектура тестів.
  3. Реалізація — написання тестів, налаштування Grid, інтеграція в CI/CD.
  4. Тестування — прогін тестів на staging, налагодження падінь.
  5. Деплой — запуск у production pipeline, передача документації.

Терміни орієнтовно

Задача Терміни
Налаштування Selenium Grid у Docker, базова конфігурація 4–8 годин
Тести критичних сценаріїв (кошик, фільтр, авторизація) 1–2 дні
Інтеграція в CI/CD pipeline 4–8 годин

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

Чек-лист: типові помилки при налаштуванні Selenium

  • Ігнорування AJAX-очікувань. Бітрікс активно використовує AJAX (розумний фільтр, кошик). Без явних waitForElement тести падають на нестабільному наборі.
  • Тестування на продакшні. Ніколи не запускайте Selenium на живому сайті — це створює зайве навантаження і може впливати на аналітику. Використовуйте тестову копію.
  • Жорстко зашиті локатори. Якщо верстальник змінив CSS-клас, тест зламається. Використовуйте data-атрибути (data-testid="cart-add") для стабільності.
  • Перевірка лише одного сценарію. Покривайте хоча б 3–5 ключових сценаріїв, інакше цінність автоматизації падає.
  • Запуск без headless-режиму. На сервері без GUI тести не запустяться. Завжди налаштовуйте headless.

Отримайте консультацію з налаштування Selenium-тестів для вашого проєкту 1С-Бітрікс. Наші інженери з 10-річним досвідом у Бітрікс допоможуть налагодити безперервне тестування та скоротити ризики релізів. Замовте аудит — оцінимо проєкт за один день.