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

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

Настройка 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 и получите надёжный фундамент для автоматизации тестирования.

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

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

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060
  • Разработка виджета онлайн-записи на прием для медицинского центра
    Разработка виджета онлайн-записи на прием для медицинского центра
    837
  • Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    928
  • Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    864
  • Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1222