Настройка Codeception-тестов для 1С-Битрикс

Настройка Codeception-тестов для 1С-Битрикс Мы сталкивались с ситуациями, когда интернет-магазин на Битрикс работал годами без единого автотеста. Каждое обновление каталога или платёжного модуля превращалось в ручную проверку сотен сценариев. Клиенты жаловались на баги в корзине, а разработчики б
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка Codeception-тестов для 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

Настройка Codeception-тестов для 1С-Битрикс

Мы сталкивались с ситуациями, когда интернет-магазин на Битрикс работал годами без единого автотеста. Каждое обновление каталога или платёжного модуля превращалось в ручную проверку сотен сценариев. Клиенты жаловались на баги в корзине, а разработчики боялись менять legacy-код. Решение — внедрить Codeception. Это PHP-фреймворк, который объединяет unit, functional и acceptance (E2E) тесты в одном инструменте. Для Битрикс он особенно удобен: можно писать functional-тесты, проверяющие PHP-логику без браузера, и acceptance-тесты через WebDriver — всё в одном стеке, с одними хелперами и единым конфигом.

Почему Codeception для Битрикс?

Почему именно Codeception, а не классический PHPUnit? PHPUnit отлично подходит для unit-тестов, но для интеграционных и acceptance-сценариев он требует написания дополнительной инфраструктуры. Codeception предоставляет готовые модули: Db для проверок базы данных, WebDriver для браузера, PHPBrowser для эмуляции HTTP. А главное — модульную архитектуру, в которую мы встраиваем собственный хелпер для Битрикс. Этот хелпер инициализирует инфоблоки, корзину, заказы через Sale API. Сравнение: один functional-тест на Codeception выполняется за 2 минуты вместо 30 минут ручной проверки — в 15 раз быстрее. Наша практика показывает, что регрессионное тестирование сокращается на 30-50% после внедрения.

Что входит в настройку?

Мы отдаём готовый результат, который можно сразу запустить:

  • Конфигурация codeception.yml с тремя суитами: acceptance, functional, unit.
  • Хелпер Bitrix.php для инициализации окружения Битрикс, авторизации пользователя и работы с корзиной/заказами через СSale API.
  • Набор базовых тестов: проверка авторизации, добавление товара в корзину, создание заказа.
  • Интеграция с CI/CD (GitLab CI / GitHub Actions) — пример .gitlab-ci.yml.
  • Документация по запуску и добавлению новых тестов.
  • Консультация команды по поддержке тестов в течение 2 недель после сдачи.

Как Codeception интегрируется с CI/CD?

Мы настраиваем запуск тестов в вашей среде непрерывной интеграции. Для GitLab CI добавляется джоба, которая запускает vendor/bin/codecept run после деплоя на тестовый стенд. Пример конфигурации:

# .gitlab-ci.yml codeception: stage: test script: - composer install --no-progress - cp .env.testing .env - php vendor/bin/codecept run only: - develop 

Для GitHub Actions аналогично. Тесты выполняются в headless-режиме, без реального браузера для functional-суиты, и с WebDriver для acceptance. Интеграция занимает не больше дня и гарантирует, что каждый пуш проверяется автоматически.

Как мы настраиваем Codeception?

Процесс состоит из пяти этапов. На первом мы анализируем ваш проект: версию Битрикс, структуру каталога, используемые модули (sale, catalog, iblock). Затем устанавливаем пакеты через Composer и настраиваем codeception.yml. Самый важный этап — написание хелпера для Битрикс. Он должен корректно подключать пролог, избегать конфликтов с сессиями и статическими файлами. Мы используем константы NO_KEEP_STATISTIC, NOT_CHECK_PERMISSIONS, BX_WITH_ON_AFTER_EPILOG — это типовые решения из документации Битрикс. Затем пишем несколько тестов на критичный функционал: каталог, корзина, оформление заказа. Финальный этап — интеграция с CI/CD, чтобы тесты запускались автоматически при каждом пуше.

Пример: функциональный тест заказа

Вот как выглядит functional-тест на создание заказа через Sale API. Он использует хелпер для авторизации и добавления товара в корзину:

// tests/Functional/OrderCest.php namespace Tests\Functional; use Tests\Support\FunctionalTester; class OrderCest { public function _before(FunctionalTester $I): void { // Очищаем корзину перед каждым тестом $I->executeQuery('DELETE FROM b_sale_basket WHERE FUSER_ID = ?', [1]); } public function addItemAndCreateOrder(FunctionalTester $I): void { // Добавляем товар в корзину через хелпер $I->loginAs('testuser', 'testpassword'); $count = $I->addProductToCart(42, 2); // товар ID=42, 2 штуки $I->assertEquals(1, $count, 'В корзине должен быть 1 товар'); // Создаём заказ через Sale API $I->executeCustomAction(function () { \Bitrix\Main\Loader::includeModule('sale'); $basket = \Bitrix\Sale\Basket::loadItemsForFUser(1, 's1'); $order = \Bitrix\Sale\Order::create('s1', 1); // сайт, пользователь $order->setBasket($basket); $order->setField('CURRENCY', 'RUB'); $propertyCollection = $order->getPropertyCollection(); $prop = $propertyCollection->getPayerName(); $prop?->setValue('Тестовый Пользователь'); $result = $order->save(); return $result; }, function ($result) use ($I) { $I->assertTrue($result->isSuccess(), implode(', ', $result->getErrorMessages())); }); // Проверяем, что заказ создан в базе $I->seeInDatabase('b_sale_order', [ 'USER_ID' => 1, 'CURRENCY' => 'RUB', 'STATUS_ID' => 'N', ]); } } 

Acceptance-тест через WebDriver

Для проверки UI используем WebDriver с Chrome в headless-режиме. Пример фильтрации по бренду в каталоге:

// tests/Acceptance/CatalogCest.php namespace Tests\Acceptance; use Tests\Support\AcceptanceTester; class CatalogCest { public function filterByBrandShowsCorrectProducts(AcceptanceTester $I): void { $I->amOnPage('/catalog/tools/'); $I->waitForElement('.catalog-filter', 10); // Применяем фильтр по бренду $I->checkOption('[data-filter="brand"][value="bosch"]'); $I->waitForElementNotVisible('.catalog-loading', 10); // Проверяем URL $I->seeInCurrentUrl('brand=bosch'); // Проверяем, что все карточки — Bosch $I->seeNumberOfElementsGreaterThan('.product-card', 0); $brands = $I->grabMultiple('.product-brand'); foreach ($brands as $brand) { $I->assertEquals('Bosch', $brand); } } } 
Типичные ошибки при написании тестов
  • Использование die() или exit() в хелпере — это убивает тест.
  • Игнорирование очистки базы данных после тестов: нужно удалять созданные заказы и корзины.
  • Хардкод ID товаров и пользователей — лучше создавать через фабрики.
  • Запуск acceptance-тестов на продакшене — только на копии базы.

Сравнение типов тестов

Тип теста Скорость Что проверяет Инструмент Время написания
Unit ~1 мс Класс, метод PHPUnit 5-10 мин
Functional ~100 мс Бизнес-логика, БД Codeception + PHPBrowser 30-60 мин
Acceptance ~2 с UI, JS, вёрстка Codeception + WebDriver 1-3 ч

Сроки и процесс

Этап Задача Сроки
Анализ Изучение проекта, версий, зависимостей 1 день
Разработка Установка Codeception, написание хелпера, конфигурация суит 1-2 дня
Написание тестов Functional-тесты для бизнес-логики (заказы, корзина, расчёты) 1-3 дня
Acceptance-тесты WebDriver-тесты для каталога, чекаута, авторизации 2-4 дня
Интеграция Встройка в CI/CD, проверка стабильности 1 день
Документация Инструкция для разработчиков, описание хелпера 1 день

Наши инженеры имеют 5+ лет опыта работы с Битрикс и Codeception. За это время мы реализовали тестирование для 30+ проектов — от небольших интернет-магазинов до крупных торговых порталов с нагрузкой 50 000 товаров. Мы гарантируем, что тесты проходят на вашем окружении без доработок, и предоставляем 2 недели бесплатной поддержки после сдачи.

Хотите навсегда забыть о ручном регрессе? Свяжитесь с нами — оценим проект и предложим план внедрения за 1 день. Закажите настройку Codeception и получите надёжный фундамент для автоматизации тестирования.