Skip to main content

Scenax — не просто DSL: это архитектура

После первой итерации может показаться: “Ну, сделали обёртку над test() и allure.label(). Что тут особенного?”

Мы тоже так думали. А потом поняли: это не просто синтаксический сахар. Это архитектурный паттерн.


🧠 Что именно мы изобрели?

Мы отделили 3 уровня:

СлойОтвечает за
ScenaxDSL, структура сценария, декларативность
VitestИсполнение, ассерты, test-runner
AllureОтчётность, визуализация, TestOps

Мы не просто вызываем allure.step(). Мы проектируем сценарии, которые могут быть перенесены в любой другой runtime.

Это значит, что:

  • Сценарий можно запустить с другим runner (например, Playwright или Mocha)
  • В будущем можно заменить Allure на другой отчётчик — структура теста сохранится
  • Один и тот же DSL можно использовать как для API, так и для UI тестов

✍️ Почему это важно

Любая большая команда сталкивается с:

  • Расхождением в стиле написания тестов
  • Дублированием шагов (copy-paste)
  • Разными форматами отчётности

Мы предлагаем решение:

  • Один DSL для всей команды
  • Единый слой намерений, независимый от фреймворка
  • Сценарии, которые можно показывать не только QA, но и бизнесу

🔍 Scenax = декларация намерений

testCase('Создание пользователя', async () => {
const res = await step('POST /users', () => api.createUser(...))
attach('Ответ', res.data)
})

Здесь нет привязки к vitest, jest, cypress или playwright. Это просто декларация сценария.


🚀 Что дальше?

В следующей итерации мы начнём превращать сценарии в тест-классы с @TestCase, @Feature, @Severity и общим runTest().

Тесты станут ближе к Cucumber, но без Gherkin. Без шагов Given/When/Then, но с той же логикой: понятный сценарий, описанный декларативно.

➡️ Готовы? Переходим ко второй итерации.