Настройка Selenium-тестов для 1С-Битрикс под ключ

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

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

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1415
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    995
  • 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 Appointment Booking Widget for a Medical Center
    734
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    863
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    772
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1134

После обновления торгового каталога на сайте 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-летним опытом в Битрикс помогут наладить непрерывное тестирование и сократить риски релизов. Закажите аудит — оценим проект за один день.