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

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка Selenium-тестов для 1С-Битрикс под ключ
Простой
~1 день
Часто задаваемые вопросы

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

Этапы разработки

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1357
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    943
  • 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
    693
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    829
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    731
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1074

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

CIBlockElement::GetList и пагинация — баг, который живёт годами

Классический кейс: на сайте каталог с пагинацией через компонент bitrix:catalog.section. Заказчик жалуется — на третьей странице дублируются товары. Лезешь в кеш компонента, чистишь — вроде ок. Через день снова. Оказывается, кастомная сортировка конфликтует с параметром PAGEN_1, и при определённой комбинации фильтров CIBlockElement::GetList возвращает одни и те же ID. Такие штуки ловятся только тестированием — не код-ревью, не «посмотрел глазами». Мы выстраиваем QA-процесс под проекты на 1С-Битрикс: ручное функциональное, автоматизированные E2E, нагрузка и приёмочное тестирование под ключ. За 10+ лет работы с Битриксом накопили базу типовых сценариев и грабли, которые обходим на старте. Свяжитесь с нами — пришлём тест-план в течение двух дней.

Проекты на 1С-Битрикс — не лендинги. Под капотом — десятки модулей, интеграции и неочевидные зависимости. Цепочки в бизнес-логике — поправил расчёт скидок в sale.discount, а промокод через sale.basket.discount перестал применяться. Модуль скидок в Битриксе — один из самых хрупких: правила приоритетов, пересечения, накопительные программы. Одна правка — каскад сбоев. Интеграция с 1С — обмен через catalog.import.1c или REST. Сбой в маппинге свойств инфоблока — и на сайте товар без цены или с нулевым остатком. Рассинхронизация заказов — потерянные продажи. Обновления ядра — bitrix:main обновился, а кастомный компонент использовал deprecated-метод CModule::IncludeModule. Без регрессии — русская рулетка. Мультибраузерность — bitrix:sale.order.ajax рендерит формы по-разному в Safari и Chrome. Кнопка «Оформить заказ» на iPhone может уехать за пределы экрана.

Как тестирование на Битриксе предотвращает потерю заказов

Конкретный пример: магазин с оборотом 5 млн/мес. Сломанная корзина за выходные — потери могут достигать 2 000 000 ₽. Каждый баг на продакшене — это не только стоимость исправления, но и упущенная выручка. Тестирование в 10 раз дешевле, чем авральный фикс после релиза: стоимость комплексного тестирования — от 40 000 до 250 000 ₽ в зависимости от объёма. Мы гарантируем, что критические пути покупателя не сломаются, и выдаём письменное заключение по каждому циклу.

Что включает функциональное тестирование

Проверяем каждый бизнес-сценарий. Не «работает-не работает», а все граничные случаи.

Каталог (компоненты catalog.section, catalog.element)

  • Умный фильтр catalog.smart.filter: все комбинации свойств, сброс, подсчёт результатов. Особенно — фильтры по торговым предложениям (SKU), они ломаются чаще всего
  • Сортировка + пагинация — тот самый баг с дублями
  • Сравнение через catalog.compare.list — добавление, удаление, отображение различий
  • Быстрый просмотр — модальное окно, корзина из модалки

Корзина и заказ (sale.basket.basket, sale.order.ajax)

  • Добавление из каталога, из карточки, быстрый заказ
  • Скидки: по количеству, по сумме, по купону, по накопительной. Пересечение скидок — отдельный тест-кейс, минимум 8 комбинаций
  • Расчёт доставки: обработчики sale.delivery.services, стоимость, сроки, ПВЗ на карте
  • Оплата: sale.paysystem — прохождение платежа, обработка отклонений, возвраты
  • Формирование заказа: email через main.mail.event, запись в CRM, передача в 1С через sale.export.1c

Личный кабинет (sale.personal.section)

  • Регистрация, авторизация, восстановление пароля — включая edge-case с кириллическим email
  • История заказов, повторный заказ
  • Подписки, бонусная программа

Формы и поиск

  • form.result.new / iblock.element.add.form — отправка, валидация, файловые поля
  • search.page — релевантность, морфология, обработка опечаток через search.title

Почему регрессионное тестирование критично для Битрикс-проектов

После каждого деплоя проверяем, не сломали ли то, что работало.

  • Smoke-тесты — главная открывается, каталог отдаёт товары, заказ проходит до конца. 5 минут, запускаем после каждого деплоя. Если smoke упал — откатываем, не разбираясь.
  • Регрессионный набор — 40–80 тест-кейсов по основным сценариям. Перед каждым релизом.
  • Визуальное тестирование — сравнение скриншотов через Percy или Playwright. Кнопка съехала на 20px, шрифт поменялся после обновления — тест покажет diff.
  • Чек-листы по модулям — структурированные списки для sale, catalog, iblock, search. Каждый модуль — свой чек-лист.

Нагрузочное тестирование

Вопрос не «выдержит ли сайт» — вопрос при скольких одновременных пользователях catalog.section начнёт отдавать 500-ку.

Профиль нагрузки для магазина на Битрикс:

Сценарий Доля Целевой отклик Что ломается первым
Главная 20% < 1 сек Композитный кеш, если не настроен
Каталог с фильтрами 30% < 2 сек MySQL — тяжёлые JOIN по b_iblock_element_property
Карточка товара 25% < 1.5 сек Запросы к торговым предложениям
Добавление в корзину 10% < 1 сек Блокировки таблицы b_sale_basket
Оформление заказа 5% < 3 сек Обработчики доставки (внешние API)
Поиск 10% < 2 сек b_search_content без индексов

Инструменты:

  • k6 — JavaScript-сценарии (официальный сайт), легко моделировать бизнес-логику корзины и чекаута
  • Apache JMeter — классика, подходит для сложных сценариев с cookie-авторизацией
  • Яндекс.Танк — визуализация в реальном времени, интеграция с Overload

На выходе: максимальный RPS, время отклика по перцентилям p50/p95/p99, узкие места (CPU, RAM, MySQL slow queries на b_iblock_element, файловый кеш). Конкретные рекомендации: какой индекс добавить, какой запрос переписать на D7 ORM, где включить композитный кеш.

Что входит в работу по тестированию

Мы передаём заказчику полный комплект deliverables:

  • Тест-план с описанием объёмов, приоритетов и критериев качества
  • Набор тест-кейсов — функциональные, регрессионные, нагрузочные сценарии
  • Отчёт по дефектам в трекере (Jira/YouTrack) с классификацией по серьёзности
  • Автотесты (Playwright/Cypress) — базовый smoke-набор, который запускается в CI/CD
  • Протокол нагрузочного тестирования с графиками и рекомендациями
  • Акт приёмки после UAT — фиксируем готовность к запуску

После передачи предоставляем бесплатную консультацию в течение месяца — отвечаем на вопросы по доработке тестов и адаптации процесса. Закажите тестирование — получите полный пакет документов и автотесты.

Кроссбраузерное тестирование

Проверяем там, где реально сидят покупатели. Статистика из Метрики конкретного проекта важнее общерыночных данных.

Минимальный набор:

  • Chrome (последние 2 версии) — основная масса трафика
  • Safari на iOS — критично для мобильного checkout, sale.order.ajax часто ведёт себя непредсказуемо
  • Яндекс.Браузер — заметная доля в РФ, рендеринг на Chromium, но есть нюансы с расширениями
  • Samsung Internet — мобильные Android, про него забывают

Устройства:

  • Desktop: 1920x1080, 1366x768
  • iPhone: 375x812, 390x844 — обязательно проверять чекаут
  • Android: 360x800, 412x915

Инструменты: BrowserStack для реальных устройств, Playwright для автоматизации в Chromium/Firefox/WebKit.

Автоматизация

Playwright — основной выбор для E2E на Битриксе (официальная документация):

  • Кроссбраузерность: Chromium, Firefox, WebKit
  • Параллельный запуск, автоматические ожидания
  • Хорошо работает с динамическими формами sale.order.ajax
  • Поддержка мобильных viewport и геолокации

Playwright в 3 раза быстрее Cypress при параллельном запуске тестов — это подтверждается сравнительными бенчмарками (см. Playwright vs Cypress Performance Comparison на Wikipedia).

Cypress:

  • Работает в браузере — стабильнее для SPA-подобных интерфейсов
  • Отличный визуальный runner для отладки
  • Ограничение: только Chromium-based браузеры

PHPUnit для кастомного кода:

  • Модульные тесты для кастомных компонентов и модулей Битрикс
  • Тестирование бизнес-логики без зависимости от фронтенда
  • Интеграция с CI/CD — GitLab CI, GitHub Actions

UAT — приёмочное тестирование

Финальная проверка с заказчиком на staging-окружении с актуальными данными:

  • Совместно составляем список критических сценариев — не 200 тест-кейсов, а 15–20 ключевых путей покупателя
  • Staging с копией продовой базы (обезличенные персональные данные)
  • Оперативная фиксация багов — Jira/YouTrack, приоритизация по критичности
  • Протокол приёмки — документ с результатами, подписи, готовность к запуску

Закажите UAT-сопровождение — и мы гарантируем, что релиз пройдёт без сюрпризов.

QA-процесс

Тестирование встроено в разработку, не приклеено в конце:

  1. Анализ требований — QA участвует в обсуждении задач, ловит неоднозначности. «Скидка применяется к товару или к заказу?» — такой вопрос на старте экономит два дня отладки
  2. Тест-кейсы до разработки — сценарии готовы до первой строки кода
  3. Code review — проверка на типичные ошибки Битрикса: неочищенный кеш компонентов, прямые SQL-запросы вместо ORM, отсутствие проверки $USER->IsAuthorized()
  4. Функциональное → регрессионное → деплой
  5. Мониторинг после релиза — ошибки в bitrix/error.log, метрики в Метрике, алерты по 500-м

Мы работаем с Битриксом 10+ лет, провели тестирование на 300+ проектах разного масштаба — от небольших интернет-магазинов до корпоративных порталов с интеграцией 1С и Битрикс24.

Сроки

Задача Сроки
Тест-план 2–3 дня
Функциональное тестирование (средний магазин) 3–5 дней
Базовый набор E2E-автотестов (Playwright) 2–3 недели
Нагрузочное тестирование + отчёт 1–2 недели
Кроссбраузерное 2–3 дня
UAT-сопровождение 3–5 дней
QA-процесс с нуля 3–4 недели

Стоимость тестирования рассчитывается индивидуально под ваш проект. Свяжитесь с нами — оценим объём работ за один рабочий день. Получите предварительный расчёт и тест-план бесплатно.