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

Настройка Cypress-тестов для 1С-Битрикс Битрикс-проект растёт, и ручное регрессионное тестирование начинает съедать 30% бюджета. Мы сталкивались с этим не раз. Наши инженеры внедряют Cypress-тесты для E2E-покрытия критических путей — фильтрация, корзина, оформление заказа. Результат: прогон набор
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка Cypress-тестов для 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
    733
  • 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

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

Битрикс-проект растёт, и ручное регрессионное тестирование начинает съедать 30% бюджета. Мы сталкивались с этим не раз. Наши инженеры внедряют Cypress-тесты для E2E-покрытия критических путей — фильтрация, корзина, оформление заказа. Результат: прогон набора тестов занимает 10 минут вместо 3 часов ручных проверок. Ошибки ловятся до деплоя, а flaky-тесты почти исчезают.

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

Cypress выполняется внутри браузера, имеет полный доступ к DOM и сети. В отличие от Selenium, он автоматически ждёт появления элементов и AJAX-ответов, поэтому гонки условий с sleep() не нужны. На практике это даёт в 2-3 раза меньше flaky-тестов и сокращает время прогона в среднем на 40%. Кроме того, Cypress умеет делать снимки экрана при падениях и записывать видео — отладка занимает минуты, а не часы. Как подтверждает официальная документация, автоматические ожидания Cypress значительно снижают количество нестабильных тестов.

Какие проблемы решаем

Нестабильные тесты Selenium — частые баги из-за медленных AJAX-запросов Битрикс (фильтрация, обновление корзины). Cypress дожидается завершения всех сетевых запросов до перехода к следующему шагу.

Сложность с CSRF и сессиями — Битрикс использует sessid для защиты от CSRF. Cypress автоматически подхватывает cookies, а мы добавляем кастомные команды для корректной авторизации.

Отсутствие CI-интеграции — тесты запускаются локально, но не в пайплайне. Мы настраиваем запуск в GitHub Actions / GitLab CI, регресс проверяется при каждом пуше.

Как настроить Cypress под Битрикс-проект?

Установка и базовая конфигурация занимают 4–8 часов. Ключевые шаги:

  1. Установка фреймворка
npm install --save-dev cypress 
  1. Создание конфига cypress.config.ts:
import { defineConfig } from 'cypress'; export default defineConfig({ e2e: { baseUrl: 'https://test.site.ru', specPattern: 'cypress/e2e/**/*.cy.ts', supportFile: 'cypress/support/e2e.ts', viewportWidth: 1280, viewportHeight: 900, defaultCommandTimeout: 8000, requestTimeout: 10000, video: false, screenshotOnRunFailure: true, experimentalModifyObstructiveThirdPartyCode: true, }, env: { adminLogin: 'admin', adminPassword: '', // из переменной окружения CYPRESS_adminPassword siteSessid: '', }, }); 
  1. Добавление кастомных команд для работы с Битрикс (авторизация, добавление в корзину, получение sessid).

  2. Написание E2E-тестов, например, для умного фильтра каталога:

// cypress/e2e/catalog/filter.cy.ts describe('Умный фильтр каталога', () => { beforeEach(() => { cy.visit('/catalog/tools/'); cy.get('.catalog-filter').should('be.visible'); cy.get('.product-list').should('be.visible'); }); it('фильтрует товары по бренду', () => { cy.get('[data-filter-prop="BRAND"] [value="bosch"]').click(); cy.get('.catalog-loading').should('not.exist'); cy.url().should('include', 'brand=bosch'); cy.get('.product-brand').each($el => { cy.wrap($el).should('have.text', 'Bosch'); }); }); it('сбрасывает фильтр', () => { cy.get('[data-filter-prop="BRAND"] [value="bosch"]').click(); cy.get('.catalog-loading').should('not.exist'); cy.get('.filter-reset-btn').click(); cy.get('.catalog-loading').should('not.exist'); cy.url().should('not.include', 'brand=bosch'); }); it('отображает корректное количество товаров в счётчике фильтра', () => { cy.get('[data-filter-prop="BRAND"] [value="makita"]').click(); cy.get('.catalog-loading').should('not.exist'); cy.get('.products-count').invoke('text').then(text => { const count = parseInt(text.replace(/\D/g, '')); cy.get('.product-card').should('have.length', Math.min(count, 24)); }); }); }); 

Сравнение Cypress и Selenium для Битрикс

Параметр Cypress Selenium WebDriver
Скорость выполнения Быстрее в 2 раза (нет сетевых задержек между шагами) Медленнее из-за ожиданий и start-stop браузера
Стабильность тестов Flaky-тестов практически нет (автоматическое ожидание) Частые StaleElement и Timeout
Отладка Встроенный Timetravel, видео и скриншоты Требует сторонних решений
Работа с iframe и всплывающими окнами Ограничен (не рекомендуется) Полная поддержка
CI-интеграция Простая, готовые образы Docker Требуется настройка Grid

Для изоляции тестов от внешних сервисов используйте cy.intercept для мока AJAX-запросов. Это особенно полезно при интеграции с 1С, когда обмен данными может быть нестабилен. Практический кейс: в одном проекте с каталогом из 10 000 товаров мы настроили мок для ответов фильтрации, что сократило время прогона с 45 до 12 минут.

Как проходит внедрение?

Аудит текущего функционала — определяем критические сценарии (каталог, корзина, чекаут, личный кабинет).

Настройка инфраструктуры — установка Cypress, конфигурация под ваш шаблон, подключение CI.

Написание тестов — покрываем 5–10 ключевых сценариев на старте, затем расширяем до полного регресса.

Интеграция в CD/CI — настройка запуска при каждом pull request, рассылка отчётов в Slack/Telegram. Обучение команды — проводим сессию по написанию и поддержке тестов.

Что входит в работу

  • Конфигурация проекта Cypress под вашу среду.
  • Набор кастомных команд (авторизация, выбор валюты, получение sessid).
  • Пул E2E-тестов критических путей (от 10 тестов).
  • Интеграция с CI (GitHub Actions / GitLab CI).
  • Документация по запуску и поддержке.
  • 1 месяц сопровождения: фикс flaky-тестов и доработки.
Чек-лист готовности к Cypress
  • [ ] Определены data-атрибуты для элементов в шаблоне ([data-action="add-to-cart"]).
  • [ ] Выделен тестовый стенд с тестовым наполнением (каталог, цены, пользователи).
  • [ ] Настроен CI-сервер с Docker и Node.
  • [ ] Согласованы критерии критических сценариев.

Сроки

Задача Сроки
Установка Cypress, базовая конфигурация, кастомные команды 4–8 часов
E2E-тесты критических сценариев (5–10 тестов) 1–2 дня
Полный набор тестов каталога + корзина + чекаут 2–4 дня
Интеграция в GitHub Actions / GitLab CI 4–8 часов

Наши инженеры имеют более 10 лет опыта с Битрикс и сертификаты 1С-Битрикс. Гарантируем стабильность тестов и прозрачную отчётность. Свяжитесь с нами для консультации и оценки вашего проекта. Закажите внедрение тестирования — сократите затраты на регресс в 2-3 раза. Получите консультацию по вашему проекту — мы оценим сложность и предложим оптимальный набор тестов.