tester-army/e2e: AI-фреймворк для e2e-тестирования
Обзор tester-army/e2e — open-source TypeScript-фреймворка от TesterArmy (YC P26) для агентного e2e-тестирования веб- и мобильных приложений с поддержкой LLM-агентов, кешированием шагов и единым API для Web, iOS и Android.
tester-army/e2e: агентный e2e-фреймворк нового поколения
«AI где нужно. Код там, где важна точность.» — девиз TesterArmy
e2e — полностью открытый фреймворк от TesterArmy (YC P26), запущенный 1 октября 2026 года. Анонс собрал около 449 тысяч просмотров и более 1000 звёзд на GitHub за первые 24 часа.
Это TypeScript-фреймворк, который позволяет агентным шагам и точным детерминированным assertions сосуществовать в одном тесте, запускаясь на Web, iOS и Android через единый API.
Что это и для кого
В TesterArmy ставят целью сделать end-to-end тестирование максимально простым. Их инструмент e2e направлен прежде всего на:
- Frontend- и fullstack-разработчиков, которые хотят описывать сценарии на естественном языке вместо написания сотен строк кода;
- QA-инженеров, ищущих гибридный подход: детерминированные локаторы + AI-агент там, где UI непредсказуем;
- Команды с мобильной и веб-разработкой, которым нужна единая кодовая база тестов.
Фреймворк лицензирован под Apache 2.0. Вы пишете точные локаторы там, где нужна уверенность, даёте агенту цель там, где прописывать каждый клик нецелесообразно, и запускаете один и тот же набор тестов на Web, iOS и Android.
@o_kwasniewski). Репозиторий написан на TypeScript, имеет 2800+ звёзд и более 100 форков по состоянию на октябрь 2026 года.Ключевые возможности
1. Гибридный API: детерминированный + агентный
Фреймворк смешивает два типа API: детерминированные — для локаторов и assertions, и агентные — для шагов вроде agent.act() и agent.assert(). Оба могут жить в одном файле теста.
// tests/checkout.e2e.ts
import { test, expect } from 'e2e';
test('a member upgrades to Pro', async ({ app, agent, screen }) => {
await app.open('/settings/billing');
// Агентный шаг: цель на естественном языке
await agent.act('upgrade the workspace to the Pro plan');
// Агентная assertion
await agent.assert('the invoice preview shows a prorated amount');
// Детерминированная assertion (Playwright-стиль)
await expect(screen.getByRole('status')).toContainText('Pro');
});
2. Кеширование шагов агента
Агентный шаг, подтверждённый последующей assertion, записывает свои действия — при следующем запуске они воспроизводятся без обращения к модели, пока приложение не изменится. e2e запоминает действия агента и воспроизводит их там, где это возможно, не вызывая модель повторно.
3. Единый API для Web и Mobile
e2e поддерживает Web и Mobile «из коробки»: веб- и мобильные приложения тестируются через один и тот же API в рамках одного набора тестов.
Браузерный движок (@e2e-dev/web) работает через Playwright с Chromium, Firefox и WebKit. Мобильный движок (@e2e-dev/mobile) обслуживает iOS-симуляторы и Android-эмуляторы через agent-device.
4. BYOM — принеси свою модель
Вы можете использовать собственную подписку, API-ключ или локальную модель. Поддерживается подключение любой модели через Vercel AI Gateway, или вход через уже имеющуюся подписку ChatGPT, GitHub Copilot или Grok.
5. Безопасность учётных данных
Тестовые учётные данные хранятся в переменных окружения, вне контекста модели. Агент может вводить пароль в форму входа, не передавая его в промпт — это важно при работе со сторонними API.
6. MCP-сервер и интеграция с coding-агентами
e2e поставляется с agent skill и MCP-сервером. С ними Claude Code, Cursor или Codex могут открывать приложение, исследовать его, писать тесты с локаторами из реального UI и читать отчёт об ошибках при поломке.
7. GitHub-репортер и CI/CD
Пакет @e2e-dev/github — репортер, публикующий результаты тестов в виде комментария к pull request. Тесты можно запускать локально или в CI без дополнительной настройки.
Как это работает: архитектура
graph TD
A[Написание теста .e2e.ts] --> B{Тип шага?}
B -->|Детерминированный| C[Playwright-локатор / assertion]
B -->|Агентный agent.act| D{Есть кеш?}
D -->|Да| E[Воспроизведение без LLM-вызова]
D -->|Нет| F[LLM-агент управляет UI]
F --> G[Assertion подтверждает результат]
G --> H[Шаг записывается в кеш]
C --> I[Результат теста]
E --> I
H --> I
I --> J[GitHub PR Comment / CI Report]
Пакеты фреймворка
Фреймворк состоит из нескольких пакетов:
| Пакет | Назначение |
|---|---|
e2e | SDK, раннер и CLI |
@e2e-dev/web | Браузерный движок (Chromium, Firefox, WebKit через Playwright) |
@e2e-dev/mobile | iOS и Android через agent-device |
@e2e-dev/github | Репортер для PR-комментариев |
@e2e-dev/kernel | Hosted-браузеры для web-движка |
@e2e-dev/eas | Hosted iOS-симуляторы и Android-эмуляторы |
@e2e-dev/decision | Decision-model executors для семантических actions и assertions |
Документация поставляется вместе с пакетом e2e, поэтому coding-агенты могут читать её офлайн прямо из node_modules/e2e/docs.
Быстрый старт
Инициализация выполняется одной командой: npx e2e init. Она задаёт вопросы о движке (web или mobile) и провайдере модели, затем создаёт конфигурацию и пример теста.
# Инициализация проекта
npx e2e init
# Запуск тестов
npx e2e run
# Очистка кеша агента
npx e2e cache clear
# Добавление MCP skill для coding-агентов
npx skills add tester-army/e2e
Пример конфига:
// e2e.config.ts
import { web } from '@e2e-dev/web';
import { createAgent } from 'e2e';
export default {
targets: [{ engine: web({ url: 'https://your-app.com' }) }],
agents: {
default: createAgent({
model: gateway('openai/gpt-4o'),
}),
},
};
import { test, expect } from 'e2e';
test('пользователь оформляет заказ', async ({ app, agent, screen }) => {
await app.open('/cart');
await agent.act('оформи заказ с доставкой на следующий день');
await agent.assert('отображается подтверждение заказа');
await expect(screen.getByRole('heading')).toContainText('Спасибо за заказ');
});
Тарифы и цены
e2e доступен на npm под лицензией Apache 2.0 — это означает, что сам фреймворк полностью бесплатен.
Что может стоить денег:
- LLM API — вы платите за токены своему провайдеру (OpenAI, Anthropic, Vercel AI Gateway и т.д.). Благодаря кешированию расходы минимизируются.
@e2e-dev/kernel— hosted-браузеры (Kernel): тарификация на стороне провайдера.@e2e-dev/eas— hosted iOS/Android симуляторы через Expo EAS: тарификация Expo.- Платформа TesterArmy — облачная платформа для запуска тестов по расписанию и на каждый PR (отдельный продукт, цены уточняются).
Плюсы и минусы
| ✅ Плюсы | ❌ Минусы |
| Open source, Apache 2.0, без vendor lock-in | Pre-1.0: API может меняться между релизами |
| Единый API для Web, iOS и Android | Desktop-приложения и другие платформы пока не поддерживаются |
| Кеширование агентных шагов — экономия токенов | Требует навыков TypeScript (не no-code решение) |
| BYOM: любой LLM-провайдер или локальная модель | Визуальное регрессионное тестирование (image diff) не поддерживается |
| MCP-сервер для интеграции с Claude Code, Cursor | При миграции с Playwright конфиги нужно переписывать заново |
| Безопасное хранение credentials вне LLM-контекста | Молодой проект — экосистема плагинов пока мала |
| GitHub PR-репортер «из коробки» | Hosted-инфраструктура (браузеры, симуляторы) — платная |
Сравнение с альтернативами
| Параметр | tester-army/e2e | Playwright | Maestro |
|---|---|---|---|
| Лицензия | Apache 2.0, бесплатно | Apache 2.0, бесплатно | Apache 2.0, бесплатно |
| Язык тестов | TypeScript (агент + детерм.) | JS/TS/Python/Java/.NET | YAML (декларативный) |
| AI-агент | ✅ Встроен, BYOM | ⚠️ Через Copilot/MCP | ❌ Нет |
| Кеш агент-шагов | ✅ Да | ❌ Нет | ❌ Нет |
| Web | ✅ Chromium/Firefox/WebKit | ✅ Chromium/Firefox/WebKit | ✅ Ограниченно |
| Native iOS/Android | ✅ Да | ❌ Только эмуляция | ✅ Да |
| Кривая обучения | Средняя (TypeScript) | Средняя–высокая | Низкая (YAML, no-code) |
| Визуальный регрессион | ❌ Нет | ✅ Есть | ❌ Нет |
| MCP-сервер | ✅ Да | ❌ Нет | ❌ Нет |
| Статус | pre-1.0, активно | Стабильный | Стабильный (~14k ⭐) |
| GitHub звёзды | ~2800 (октябрь 2026) | 70k+ | ~14k |
Вывод: e2e занимает уникальную нишу — это единственный фреймворк, объединяющий детерминированные тесты Playwright-стиля с нативным AI-агентом и кешированием, работающий одновременно на web и нативных мобильных платформах.
Вердикт: кому подойдёт?
e2e идеально подходит:
- Командам на TypeScript, разрабатывающим и веб-, и мобильные приложения одновременно;
- QA-инженерам и разработчикам, уставшим поддерживать хрупкие Playwright-тесты на динамичных UI;
- Тем, кто хочет интегрировать AI-агент в тестирование без переплаты за токены благодаря кешированию;
- Командам, использующим Claude Code, Cursor или Codex — MCP-интеграция позволяет агенту писать тесты самостоятельно.
Подождать стоит:
- Если нужна production-стабильность прямо сейчас (pre-1.0);
- Если критичен visual regression testing;
- Если команда без разработчиков (нет no-code опции).