Scenax — не просто DSL: это архитектура
После первой итерации может показаться: “Ну, сделали обёртку над test()
и allure.label()
. Что тут особенного?”
Мы тоже так думали. А потом поняли: это не просто синтаксический сахар. Это архитектурный паттерн.
🧠 Что именно мы изобрели?
Мы отделили 3 уровня:
Слой | Отвечает за |
---|---|
Scenax | DSL, структура сценария, декларативность |
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
, но с той же логикой: понятный сценарий, описанный декларативно.
➡️ Готовы? Переходим ко второй итерации.