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

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

Останні роботи

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