הגדרת בדיקות Codeception עבור 1C-Bitrix
ראינו זאת פעמים רבות: חנות מקוונת על Bitrix רצה שנים ללא בדיקה אוטומטית אחת. כל עדכון קטלוג או שינוי במודול תשלום הופכים לבדיקה ידנית של מאות תרחישים. לקוחות מתלוננים על באגים בעגלת הקניות, ומפתחים חוששים לגעת בקוד legacy. הפתרון הוא לאמץ את Codeception – framework PHP המאחד בדיקות unit, functional ו-acceptance (E2E) בכלי אחד. עבור Bitrix זה נוח במיוחד: ניתן לכתוב בדיקות functional שבודקות לוגיקת PHP ללא דפדפן, ובדיקות acceptance דרך WebDriver – הכל באותו stack, עם helpers משותפים וקונפיגורציה אחת.
Codeception לעומת PHPUnit עבור Bitrix
Codeception מציע יתרונות על פני PHPUnit עבור תרחישי integration ו-acceptance. PHPUnit מתאים לבדיקות unit, אך עבור תרחישי integration ו-acceptance הוא דורש תשתית נוספת. Codeception מספק מודולים מוכנים: Db לבדיקות מסד נתונים, WebDriver לדפדפן, PHPBrowser לאמולציית HTTP. והכי חשוב – ארכיטקטורה מודולרית שבה אנו מטמיעים helper Bitrix משלנו. helper זה מאתחל infoblocks, עגלת קניות, והזמנות דרך Sale API. השוואה: Codeception מהיר פי 15 מבדיקות ידניות עבור בדיקות functional – בדיקת functional אחת רצה ב-2 דקות במקום 30 דקות של בדיקה ידנית. הניסיון שלנו מראה שזמן בדיקות regression יורד ב-30–50% לאחר האימוץ. עלויות הגדרה טיפוסיות נעות בין $1,500 ל-$5,000 בהתאם למורכבות הפרויקט. בממוצע, לקוחות חוסכים $8,000–$12,000 בשנה בעלויות בדיקה ידנית מופחתות.
מה כלול בהגדרה?
אנו מספקים תוצאה מוכנה להרצה:
-
Dbקונפיגורציה עם שלוש סוויטות: acceptance, functional, unit. -
WebDriverhelper לאתחול סביבת Bitrix, אימות משתמש, ועבודה עם עגלת קניות/הזמנות דרך CSale API. - סט בדיקות בסיסיות: בדיקת התחברות, הוספת מוצר לעגלה, יצירת הזמנה.
- אינטגרציית CI/CD (GitLab CI / GitHub Actions) – דוגמה
PHPBrowser. - תיעוד על הרצה והוספת בדיקות חדשות.
- שבועיים של ייעוץ לצוות לאחר המסירה.
כיצד Codeception משתלב עם CI/CD?
אנו מגדירים הרצת בדיקות בסביבת האינטגרציה הרציפה שלך. עבור GitLab CI, אנו מוסיפים job שמריץ codeception.yml לאחר deployment לסביבת הבדיקה. דוגמת קונפיגורציה:
---
# .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. האינטגרציה אורכת לא יותר מיום ומבטיחה שכל push נבדק אוטומטית.
כיצד אנו מגדירים Codeception (שלב אחר שלב)
- ניתוח הפרויקט – בחינת גרסת Bitrix, מבנה התיקיות, מודולים בשימוש (sale, catalog, iblock).
- התקנת חבילות דרך Composer והגדרת
Bitrix.php. - כתיבת helper Bitrix – הכללה נכונה של prolog, הימנעות מקונפליקטי session ובעיות קבצים סטטיים. שימוש בקבועים כמו
СSale,.gitlab-ci.yml,vendor/bin/codecept run– פתרונות סטנדרטיים מתיעוד Bitrix. - כתיבת מספר בדיקות לפונקציונליות קריטית – קטלוג, עגלת קניות, תשלום.
- אינטגרציה עם CI/CD – כך שבדיקות רצות אוטומטית על כל push.
דוגמה: בדיקת Functional ליצירת הזמנה
הנה בדיקת functional שיוצרת הזמנה באמצעות Sale API. היא משתמשת ב-helper כדי לאמת משתמש ולהוסיף מוצר לעגלה:
// 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
לאימות ממשק משתמש אנו משתמשים ב-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);
}
}
}טעויות נפוצות בכתיבת בדיקות כוללות: שימוש ב-# .gitlab-ci.yml codeception: stage: test script: - composer install --no-progress - cp .env.testing .env - php vendor/bin/codecept run only: - develop או codeception.yml ב-helper, התעלמות מניקוי מסד נתונים לאחר בדיקות, קידוד קשיח של מזהה מוצר ומשתמש, והרצת בדיקות acceptance על production במקום על עותק של מסד הנתונים. אנו תמיד משתמשים במסד נתונים נפרד לבדיקות כדי למנוע השחתת נתונים.
השוואת סוגי בדיקות
| סוג בדיקה | מהירות | מה היא בודקת | כלי | זמן כתיבה |
|---|---|---|---|---|
| Unit | ~1 ms | מחלקה, מתודה | PHPUnit | 5-10 דקות |
| Functional | ~100 ms | לוגיקה עסקית, DB | Codeception + PHPBrowser | 30-60 דקות |
| Acceptance | ~2 s | UI, JS, layout | Codeception + WebDriver | 1-3 שעות |
ציר זמן ותהליך
| שלב | משימה | משך |
|---|---|---|
| ניתוח | לימוד הפרויקט, גרסה, תלויות | יום אחד |
| פיתוח | התקנת Codeception, כתיבת helper, הגדרת סוויטות | 1-2 ימים |
| כתיבת בדיקות | בדיקות functional ללוגיקה עסקית (הזמנות, עגלה, חישובים) | 1-3 ימים |
| בדיקות acceptance | בדיקות WebDriver לקטלוג, תשלום, אימות | 2-4 ימים |
| אינטגרציה | שילוב ב-CI/CD, אימות יציבות | יום אחד |
| תיעוד | מדריך למפתח, תיאור helper | יום אחד |
למהנדסים שלנו יש ניסיון של 5+ שנים עם Bitrix ו-Codeception. יישמנו בדיקות עבור 30+ פרויקטים – מחנויות מקוונות קטנות ועד פורטלי מסחר גדולים עם 50,000 מוצרים. אנו מבטיחים שהבדיקות רצות בסביבה שלך ללא שינויים ומספקים שבועיים של תמיכה חינם לאחר המסירה.
רוצה לחסל regression ידני לתמיד? צור קשר להערכת פרויקט ותוכנית יישום ליום אחד. הזמן הגדרת Codeception וקבל בסיס איתן לאוטומציית בדיקות.

