Налаштування Codeception-тестів для 1С-Бітрікс

Налаштування Codeception-тестів для 1С-Бітрікс Ми стикалися з ситуаціями, коли інтернет-магазин на Бітрікс працював роками без жодного автотесту. Кожне оновлення каталогу або платіжного модуля перетворювалося на ручну перевірку сотень сценаріїв. Клієнти скаржилися на баги в кошику, а розробники б
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування Codeception-тестів для 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 для компанії ТЕХНОТОРГКОМПЛЕКС
    1161

Налаштування 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 для ініціалізації середовища Бітрікс, авторизації користувача та роботи з кошиком/замовленнями через CSale 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 та отримайте надійний фундамент для автоматизації тестування.