БесплатноБесплатный аудит сайта и кода на 1С-Битрикс при заказе доработки или поддержки

Автотесты магазина на Битрикс: Playwright и API

Автотесты интернет-магазина на 1С-Битрикс: сценарии Playwright для каталога, корзины и оплаты плюс проверки через API в CI

Магазин на 1С-Битрикс — это десятки связанных механизмов: каталог с фильтром, корзина с расчётом скидок, оформление заказа, платёжный шлюз, обмен с 1С. Меняете одну мелочь в шаблоне корзины — и незаметно ломается купон или переход к оплате. Ручная проверка всего этого перед каждым релизом съедает часы, а под конец спринта её всё равно делают «по диагонали». Итог знаком многим: сломанная оплата обнаруживается уже на живых заказах.

Автотесты закрывают именно эту дыру. Ниже — как покрыть ключевые сценарии магазина (каталог, корзина, оплата) автотестами на Playwright и проверками через API, как готовить тестовые данные, бороться с «мигающими» тестами и встроить всё в CI, чтобы деплой не уходил на прод со сломанной витриной. Это выжимка из наших проектов по разработке на 1С-Битрикс — с конкретными сценариями, а не общими словами про «важность тестирования».

Коротко

  • Критичный путь покупателя (каталог → корзина → оплата) покрывайте E2E-тестами Playwright, бизнес-логику — быстрыми API-тестами.
  • Оплату тестируйте в sandbox-режиме шлюза и по колбэкам, не проводя реальных платежей.
  • Тестовые данные создавайте фикстурами на staging, изолируйте на каждый тест и удаляйте после прогона.
  • Опирайтесь на стабильные data-testid, а не на классы вёрстки — это лечит половину флаки.
  • Встройте автотесты в CI как ворота: smoke на каждый коммит, полный регресс перед релизом.

Зачем магазину на Битрикс автотесты

Интернет-магазин зарабатывает на одном непрерывном сценарии: покупатель нашёл товар, положил в корзину, оформил и оплатил заказ. Если хоть один шаг этой цепочки сломан, магазин теряет деньги напрямую — и часто молча, потому что пользователь просто уходит, а не пишет в поддержку. Автотесты нужны, чтобы этот критичный путь проверялся автоматически и на каждое изменение, а не раз в квартал силами уставшего тестировщика.

На платформе 1С-Битрикс поводов для регресса особенно много. Обновляется ядро или маркетплейс-модуль, приезжает новый обмен с 1С, дизайнер правит шаблон компонента корзины, маркетолог включает новую акцию — каждое из этих действий может задеть оформление заказа. Ручной регресс всего этого нереалистичен: комбинаций слишком много. Автотесты берут на себя рутину и освобождают людей для исследовательского тестирования, где машина бесполезна.

Важно правильно понимать цель. Автотесты не заменяют ручное и приёмочное тестирование, а дополняют их — про полную картину QA магазина мы писали в отдельном материале про тестирование и QA интернет-магазина на 1С-Битрикс. Задача автотестов — быстро и надёжно ловить регресс в тех местах, где цена ошибки высока, а сценарий стабилен и повторяем. Это ровно каталог, корзина и оплата.

Ещё один эффект, который недооценивают, — автотесты фиксируют ожидаемое поведение. Когда сценарий оформления заказа описан кодом, он превращается в живую документацию: новый разработчик открывает тест и видит, как именно должна работать корзина, какие поля обязательны, какой статус получает заказ. Это ускоряет ввод людей в проект и снижает число «а я не знал, что так нельзя».

Важно: автотесты окупаются на том, что стабильно и часто ломается. Не пытайтесь с первого дня покрыть 100% функциональности — начните с трёх-пяти сценариев вокруг оплаты и оформления заказа, где падение стоит дороже всего.

Пирамида тестов: где браузер, где API

Прежде чем писать первый тест, полезно договориться, что именно проверять на каждом уровне. Классическая пирамида тестирования подсказывает: чем ниже уровень, тем тесты дешевле, быстрее и стабильнее, поэтому их должно быть больше. Для магазина на Битрикс это раскладывается так.

Главная ошибка новичков — перевернуть пирамиду и всё проверять через браузер. Такой набор тестов долго идёт, часто «мигает» и его быстро перестают чинить. Правильный подход: логику отжимаем вниз, в быстрые API-тесты, а через браузер прогоняем только то, что реально видит и делает клиент. Тогда набор остаётся быстрым и ему продолжают доверять.

Пирамида тестов магазина E2E Интеграционные API-тесты мало, медленно много, быстро
Схема: основание пирамиды — быстрые API-тесты бизнес-логики, вершина — немного медленных E2E-сценариев Playwright по пути покупателя.

Стек: Playwright, API и окружение

Соберём минимальный, но полноценный стек для автотестов магазина. Ничего экзотического — всё ставится штатными средствами и живёт в отдельном каталоге репозитория, не мешая коду сайта.

СлойИнструментЗа что отвечает
E2E-браузерPlaywright TestПрогон сценариев в Chromium/Firefox/WebKit, ожидания, трейсы
API-проверкиrequest-контекст PlaywrightREST-запросы к Битриксу без браузера, проверка ответов
ДанныеFixtures + seed-скриптСоздание товаров, разделов и пользователей перед прогоном
ОплатаSandbox платёжного шлюзаТестовые карты, success/fail-URL, колбэки без реальных списаний
ОкружениеStaging-копия сайтаИзолированная площадка с тестовой базой, не прод
ЗапускCI (GitLab CI / GitHub Actions)Автозапуск на коммит и перед деплоем, отчёты и артефакты

Ключевая мысль: и E2E, и API-тесты можно писать в одном инструменте. Playwright умеет не только водить браузер, но и делать «чистые» HTTP-запросы через request-контекст. Это удобно: один синтаксис, один раннер, один отчёт, а тесты разных уровней лежат рядом. Стартовый конфиг проекта минимален:

// playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
  testDir: './tests',
  timeout: 30_000,
  retries: process.env.CI ? 1 : 0,
  use: {
    baseURL: process.env.BASE_URL, // https://staging.shop.ru
    trace: 'on-first-retry',       // трейс только при повторе
    screenshot: 'only-on-failure',
  },
  reporter: [['list'], ['html', { open: 'never' }]],
});

Обратите внимание на baseURL из переменной окружения — тесты не должны знать конкретный адрес, чтобы одинаково гоняться и локально, и на staging в CI. О том, как поднять и поддерживать такую площадку, есть отдельный разбор про staging-окружение и деплой магазина на Битрикс.

Ключевые сценарии: каталог, корзина, оплата

Не пытайтесь покрыть всё сразу. Есть три группы сценариев, которые дают максимум пользы на единицу усилий, — именно с них начинают. Ниже — карта того, что стоит автоматизировать в первую очередь.

ОбластьСценарийУровень теста
КаталогОткрытие раздела, поиск, работа фильтраE2E + API
КаталогКарточка товара: цена, наличие, выбор SKUE2E
КорзинаДобавление, изменение количества, удалениеE2E + API
КорзинаСкидка, купон, пересчёт итогаAPI
ОформлениеВвод данных, выбор доставки и оплатыE2E
ОплатаПереход на шлюз, success/fail, статус заказаE2E + API

Логика распределения простая. Всё, что покупатель видит и щёлкает мышью, проходит через браузер, потому что тут важна именно верстка и клиентские скрипты. Всё, что считается на бэкенде (итог корзины, применение купона, статус заказа), быстрее и надёжнее проверять запросом к API. Многие сценарии удобно проверять на обоих уровнях: E2E убеждается, что кнопка работает, а API — что за кнопкой посчиталось правильное число.

Совет: начните с одного «золотого пути» — гость добавляет товар в корзину и доходит до успешной оплаты в sandbox. Этот единственный сквозной тест уже ловит большинство критичных поломок релиза.

Автотесты каталога и фильтра

Каталог — вход в магазин, и его поломки видны сразу всем посетителям. Здесь автотесты проверяют, что раздел открывается, товары выводятся, поиск и умный фильтр отдают релевантную выдачу. На большом каталоге особенно важен фильтр: он завязан на фасетный индекс и легко ломается после обмена с 1С или переиндексации.

Базовый E2E-сценарий фильтра выглядит так: открыть раздел, применить значение фильтра, дождаться обновления списка и проверить, что все карточки соответствуют условию. Ключевой момент — не ставить фиксированную паузу, а ждать именно реакцию интерфейса. Playwright это делает сам:

test('фильтр по бренду сужает выдачу', async ({ page }) => {
  await page.goto('/catalog/smartfony/');
  await page.getByTestId('filter-brand-apple').check();
  // ждём обновления списка, а не sleep
  await expect(page.getByTestId('product-card')).not.toHaveCount(0);
  const brands = page.getByTestId('card-brand');
  for (const b of await brands.allInnerTexts()) {
    expect(b).toContain('Apple');
  }
});

Что ещё стоит покрыть в каталоге:

Быстрее всего часть этих проверок делать через API: запрос к списку товаров раздела с параметром фильтра возвращает JSON, в котором легко проверить и количество, и состав, не поднимая браузер. Браузерный тест оставьте для проверки самой вёрстки и клиентского поведения фильтра.

Автотесты корзины и оформления

Корзина — самое «расчётное» место магазина, и именно здесь чаще всего прячутся дорогие ошибки: неверный итог, задвоение товара, слетевшая скидка. Автотесты корзины делятся на две части: браузерные проверяют поведение и вёрстку, API-тесты — арифметику.

Браузерный сценарий проходит путь покупателя: добавить товар, изменить количество, увидеть пересчёт итога, перейти к оформлению. Проверяют не только «кнопка нажалась», но и что число в шапке-счётчике и сумма обновились корректно.

test('корзина пересчитывает итог при +1 к количеству', async ({ page }) => {
  await page.goto('/catalog/smartfony/iphone-15/');
  await page.getByTestId('add-to-cart').click();
  await page.goto('/personal/cart/');
  await page.getByTestId('qty-plus').click();
  await expect(page.getByTestId('cart-qty')).toHaveText('2');
  await expect(page.getByTestId('cart-total')).not.toHaveText('0 ₽');
});

Оформление заказа — отдельный критичный сценарий. Здесь тест заполняет контактные данные, выбирает способ доставки и оплаты, подтверждает заказ и проверяет, что заказ создан и получил корректный статус. Важно гонять этот сценарий и для гостя, и для авторизованного пользователя — логика полей и предзаполнения у них разная.

Важно: проверяйте не только «счастливый путь», но и валидацию. Пустой телефон, некорректная почта, отказ от согласия на обработку данных — заказ не должен оформляться, а пользователь обязан увидеть понятную ошибку. Такие негативные сценарии ловят регресс форм после правок вёрстки.

Автотесты оплаты в sandbox

Оплата пугает автоматизаторов больше всего: «как тестировать деньги?». Ответ — в тестовом режиме шлюза. Все крупные провайдеры (ЮKassa, Сбербанк, Тинькофф, PayKeeper) дают sandbox с тестовыми картами, которые имитируют успех, отказ и таймаут, не списывая реальных средств. Задача автотеста — проверить не сам банк, а корректность интеграции магазина со шлюзом.

Сквозной сценарий оплаты состоит из трёх проверяемых точек:

  1. Переход на шлюз. После оформления заказа пользователь корректно уходит на страницу оплаты с правильной суммой и номером заказа.
  2. Возврат по результату. Тестовая «успешная» карта возвращает покупателя на success-URL, «отклонённая» — на fail-URL с понятным сообщением.
  3. Смена статуса заказа. После успешного колбэка (webhook) от шлюза заказ в Битриксе переходит в статус «оплачен». Это ключевая проверка — именно тут ломается интеграция.

Колбэк оплаты приходит от шлюза на серверный обработчик, а не в браузер, поэтому его удобно проверять API-запросом: имитируем уведомление платёжной системы и убеждаемся, что заказ сменил статус. Так тест не зависит от того, успел ли sandbox прислать колбэк во время браузерного прогона.

Магазин заказ создан Шлюз sandbox-карта success / fail URL Статус: оплачен webhook-колбэк
Схема: тест проверяет переход на sandbox-шлюз, возврат по success/fail-URL и смену статуса заказа по колбэку — без реальных списаний.
Важно: никогда не гоняйте платёжные тесты на боевом шлюзе с реальными реквизитами. Заведите отдельные тестовые ключи sandbox и храните их в секретах CI, а не в репозитории.

Проверки через REST API Битрикса

API-тесты — это дешёвая и быстрая половина покрытия. Вместо того чтобы кликать по интерфейсу, тест обращается к серверу напрямую и проверяет ответ. В 1С-Битрикс для этого есть штатный REST (модуль rest, вебхуки и OAuth-приложения), а для магазина — методы каталога, корзины и заказов. Плюс к этому удобно поднять собственный лёгкий endpoint под тестовые нужды: создать товар, очистить корзину, получить статус заказа.

Playwright делает такие запросы без браузера — через request-контекст. Это тот же тест-раннер и тот же отчёт, что для E2E:

test('API: применение купона снижает итог', async ({ request }) => {
  // добавляем товар в корзину тестового пользователя
  await request.post('/api/test/cart/add', {
    data: { productId: 101, quantity: 1 },
  });
  const before = await (await request.get('/api/test/cart')).json();
  // применяем купон
  await request.post('/api/test/cart/coupon', { data: { code: 'TEST10' } });
  const after = await (await request.get('/api/test/cart')).json();
  expect(after.total).toBeLessThan(before.total);
  expect(after.discount).toBeGreaterThan(0);
});

Что особенно удобно проверять через API:

API-тесты не только быстрее браузерных на порядок — они ещё и стабильнее, потому что не зависят от вёрстки и клиентских скриптов. Держите на этом уровне максимум бизнес-логики: набор останется быстрым, а E2E возьмёт на себя только то, что действительно требует настоящего браузера.

Тестовые данные и фикстуры

Автотесты магазина падают чаще всего не из-за бага в коде, а из-за данных. Кто-то поменял цену товара, на который завязан тест; обмен с 1С убрал позицию с витрины; предыдущий прогон оставил «грязную» корзину. Лечится это одним принципом: каждый тест сам создаёт нужные данные и сам за собой убирает, а гоняется всё на изолированном окружении, а не на проде.

Практическая схема работы с данными:

Фикстуры Playwright удобно оформить так, чтобы тест получал готовое окружение и не думал о подготовке:

// fixtures.ts — тестовый заказ создаётся и удаляется автоматически
import { test as base } from '@playwright/test';

export const test = base.extend<{ order: { id: number } }>({
  order: async ({ request }, use) => {
    const res = await request.post('/api/test/order', {
      data: { productId: 101, quantity: 1 },
    });
    const order = await res.json();
    await use(order);                         // отдаём тесту
    await request.delete(`/api/test/order/${order.id}`); // убираем за собой
  },
});

Такой подход делает тесты повторяемыми: их можно запускать в любом порядке, параллельно и много раз подряд — результат не меняется. Именно повторяемость отличает набор, которому доверяют, от набора, который «иногда красный, но это, наверное, ничего».

Стабильные селекторы и data-атрибуты

Отдельная и очень частая причина хрупких тестов — привязка к вёрстке. Если тест ищет кнопку по классу .btn-primary.js-buy, он сломается, как только дизайнер переименует класс или поменяет структуру блока. А в магазине вёрстку правят постоянно. Решение — договориться о стабильных атрибутах для автотестов.

Заведите атрибут data-testid (или другой согласованный) на ключевых элементах: кнопка «Купить», счётчик корзины, поле итога, элементы фильтра. Эти атрибуты существуют только для тестов и не меняются при рестайлинге. Playwright их прекрасно понимает:

<!-- в шаблоне компонента корзины -->
<button data-testid="add-to-cart" class="btn btn-primary">Купить</button>
<span data-testid="cart-total"><?= $total ?> ₽</span>

// в тесте — привязка к смыслу, а не к оформлению
await page.getByTestId('add-to-cart').click();
await expect(page.getByTestId('cart-total')).toBeVisible();

Правила хорошего тона по селекторам:

Реализация в 1С-Битрикс

Теперь конкретика по платформе: что и где настраивать, чтобы автотесты завелись на магазине именно 1С-Битрикс. Ничего в ядре менять не нужно — работаем штатными механизмами.

  1. Включите модуль REST. В «Marketplace → Установленные решения» и «Настройки → REST API» активируйте модуль rest. Для серверных проверок заведите входящий вебхук с правами на каталог, корзину и заказы (catalog, sale).
  2. Заведите тестовые endpoint'ы. Небольшой обработчик (например, в /api/test/) с методами создать/очистить корзину, создать/удалить заказ, получить статус. Он живёт только на staging и закрыт токеном — через него фикстуры готовят данные.
  3. Проставьте data-атрибуты в шаблонах. В кастомизированных шаблонах компонентов sale.basket.basket, catalog.section и оформления заказа добавьте data-testid на ключевые элементы. Это разовая правка, которая стабилизирует все E2E-тесты.
  4. Настройте sandbox платёжной системы. В «Магазин → Настройки → Платёжные системы» заведите тестовый режим шлюза с тестовыми ключами. Пропишите отдельные success/fail-URL для тестового окружения.
  5. Разверните staging. Копия сайта с тестовой базой и синтетическими данными, куда деплоятся изменения перед продом. Именно на ней CI гоняет автотесты.

Схематично тестовый обработчик и настройки платёжки в админке выглядят так:

Настройки: REST и платёжная система Входящий вебхук https://staging/rest/1/xxx… Права доступа catalog sale Платёжная система Тестовый режим (sandbox) Проверка интеграции Соединение установлено Проверить
Схема: входящий вебхук REST с правами на каталог и заказы плюс платёжная система в тестовом режиме. Реальные подписи зависят от версии и редакции платформы.
Важно: тестовые endpoint'ы и вебхуки с правами записи не должны существовать на боевом сайте. Держите их только на staging и закрывайте токеном и ограничением по IP — иначе это дыра в безопасности.

Встраивание в CI/CD

Автотесты приносят пользу, только когда запускаются автоматически. Тесты, которые «гоняет кто-то иногда руками», быстро устаревают и перестают отражать реальность. Поэтому их встраивают в конвейер CI/CD как обязательный этап между сборкой и деплоем. Подробно про сам конвейер для платформы мы писали в материале про CI/CD и деплой для 1С-Битрикс — здесь сосредоточимся на месте автотестов в нём.

Разумная стратегия запуска делит тесты по скорости и важности:

НаборКогда запускатьЧто входит
Smoke + APIНа каждый коммит / pull requestЗолотой путь, ключевые API-проверки — минуты
Регресс E2EПеред деплоем на продВсе критичные браузерные сценарии
Полный ночнойПо расписанию ночьюРасширенное покрытие, кросс-браузерность

Ключевая идея — тесты становятся воротами: не прошёл smoke — pull request не мёржится; упал регресс — деплой на прод не уходит. Так сломанная оплата ловится в конвейере, а не на живых заказах. Минимальный job для GitHub Actions:

# .github/workflows/e2e.yml
name: e2e
on: [push]
jobs:
  playwright:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 20 }
      - run: npm ci
      - run: npx playwright install --with-deps chromium
      - run: npx playwright test
        env:
          BASE_URL: ${{ secrets.STAGING_URL }}
      - uses: actions/upload-artifact@v4
        if: failure()
        with: { name: playwright-report, path: playwright-report/ }

Обратите внимание на две детали. Во-первых, адрес staging и платёжные ключи приходят из секретов CI, а не лежат в коде. Во-вторых, при падении в артефакты выгружается HTML-отчёт с трейсами и скриншотами — по нему падение разбирают, не воспроизводя вручную. Это резко ускоряет починку красных прогонов.

Автотесты как ворота деплоя Коммит Сборка Автотесты Playwright + API Деплой на прод passed failed → деплой заблокирован
Схема: автотесты стоят между сборкой и деплоем; зелёный прогон открывает выкладку, красный — блокирует её до починки.

Борьба с флаки-тестами

Флаки-тест — тот, что при неизменном коде то падает, то проходит. Это худшее, что может случиться с набором: красным прогонам перестают верить, начинают перезапускать «на всякий случай», и в какой-то момент пропускают настоящий баг. Поэтому нестабильные тесты чинят немедленно, а не терпят. Основные причины флаки и как их лечить:

Полезная практика — карантин. Тест, который начал мигать, временно помечают и уводят из блокирующего набора, но заводят задачу на починку с дедлайном. Так красный «шум» не блокирует команду, но и нестабильный тест не забывается навсегда. Ключевое правило: карантин — это временно, а не кладбище тестов.

Частые ошибки

Мини-FAQ. Нужно ли покрывать автотестами админку и обмен с 1С? Критичные места — да, но точечно и через API: проверить, что импорт создал товар и обновил цену. Гонять через браузер весь бэкофис дорого и хрупко — там больше пользы от ручного и приёмочного тестирования.

Чек-лист внедрения

Сведём всё в практический список, по которому удобно оценивать готовность автотестов магазина.

  1. Определён критичный путь. Золотой сценарий «каталог → корзина → оплата» описан и покрыт сквозным E2E-тестом в первую очередь.
  2. Разделены уровни. Бизнес-логика ушла в быстрые API-тесты, браузер оставлен для того, что видит покупатель.
  3. Оплата в sandbox. Платёжные сценарии гоняются в тестовом режиме шлюза, статус заказа проверяется по колбэку.
  4. Данные изолированы. Фикстуры создают и удаляют тестовые товары, заказы и пользователей; прогоны идут на staging.
  5. Селекторы стабильны. Ключевые элементы помечены data-testid, тесты не завязаны на классы вёрстки.
  6. Секреты вынесены. Адрес staging и платёжные ключи лежат в секретах CI, а не в коде.
  7. Тесты в CI как ворота. Smoke на каждый коммит, регресс перед деплоем; красный прогон блокирует выкладку.
  8. Флаки под контролем. Нестабильные тесты чинятся или уходят в карантин с задачей, а не терпятся молча.

Вывод

Автотесты для магазина на 1С-Битрикс — это не про «покрыть всё», а про надёжную защиту денежного пути покупателя. Покройте каталог, корзину и оплату сквозными сценариями Playwright, отожмите бизнес-логику в быстрые API-тесты, готовьте данные фикстурами на staging и встройте набор в CI как ворота деплоя. Тогда сломанная оплата будет всплывать в конвейере за минуты, а не на живых заказах спустя сутки — и релизы перестанут быть лотереей.

Частые вопросы

Чем Playwright лучше Selenium для магазина на 1С-Битрикс?

Playwright из коробки ждёт готовности элементов (auto-waiting), поэтому тесты реже «мигают» на медленных страницах каталога и корзины. Он ставит браузеры одной командой, умеет параллелить прогоны, перехватывать сетевые запросы и снимать трейсы для разбора падений. Для типового интернет-магазина это меньше кода обвязки и заметно стабильнее прогоны в CI, чем на классическом Selenium.

Что покрывать API-тестами, а что — браузерными?

Браузерными (E2E) сценариями покрывают то, что видит и делает покупатель: поиск и фильтр каталога, добавление в корзину, оформление заказа, шаги оплаты. API-тестами быстро и дёшево проверяют бизнес-логику: расчёт корзины, применение скидок и купонов, статусы заказа, доступность товара. Правило простое: логику — на уровне API, критичный путь покупателя — через браузер.

Как тестировать оплату, не проводя реальные платежи?

Используйте тестовый (sandbox) режим платёжного шлюза и его тестовые карты — большинство провайдеров (ЮKassa, Сбербанк, Тинькофф) их предоставляют. В автотестах проверяют переход на страницу оплаты, возврат по success/fail URL и корректную смену статуса заказа по колбэку. Сам «внешний» банк при этом мокают или используют песочницу, чтобы не списывать деньги и не зависеть от доступности боевого шлюза.

Где брать тестовые данные, чтобы не портить боевую базу?

Тесты гоняют на staging-окружении с копией или синтетическим набором данных, а не на проде. Товары, разделы и тестовых пользователей создают заранее фикстурами через REST API или seed-скрипт и удаляют после прогона. Так тесты не зависят от того, что кто-то поменял цену или убрал товар с витрины, и не оставляют «мусорных» заказов в реальной базе.

Почему автотесты «мигают» (flaky) и как это лечить?

Главные причины флаки — фиксированные паузы вместо ожидания элементов, гонки при обмене с 1С, общие данные между тестами и завязка на нестабильные селекторы. Лечится это ожиданиями Playwright вместо sleep, изоляцией данных на каждый тест, стабильными data-атрибутами в вёрстке и повтором только по-настоящему внешних шагов. Флаки-тест хуже отсутствующего: ему перестают верить, поэтому нестабильные сценарии чинят сразу.

Нужно ли запускать автотесты на каждый деплой?

Да, смысл автотестов именно в этом: быстрый набор (smoke + API) гоняют на каждый коммит и перед выкладкой, полный E2E-регресс — ночью или перед релизом. В CI тесты становятся воротами: не прошли критичные сценарии каталога, корзины и оплаты — деплой не уходит на прод. Это дешевле, чем ловить сломанную оплату уже на живых заказах.

Поделиться:

Нужны автотесты, которые ловят баги до релиза?

Настроим автотесты каталога, корзины и оплаты на Playwright и API, поднимем staging и встроим прогоны в CI, чтобы сломанная витрина не уходила на прод. Оценим объём по вашему магазину.

Услуга «Разработка»

Игорь Воскресенский

Основатель студии B2Bsite. С 2014 года команда разрабатывает и поддерживает интернет-магазины и корпоративные сайты на 1С-Битрикс, настраивает автотесты, CI/CD и обмен с 1С для среднего и крупного бизнеса.

← Все статьи блога