Автотесты для методов sendMessage, getChatHistory и getStateInstance сервиса GREEN-API (WhatsApp API), реализованные на Jest + TypeScript.
- Node.js 20+
- npm
- Аккаунт GREEN-API (тариф Developer)
- Активный WhatsApp-аккаунт для авторизации инстанса и тестового получателя
git clone https://github.com/edk5593903/green-api-whatsapp-tests.git
cd green-api-whatsapp-tests
npm install
## Настройка `.env`
В корне проекта создайте файл `.env` по образцу:
```env
API_URL=https://api.green-api.com
ID_INSTANCE=your_instance_id
API_TOKEN_INSTANCE=your_api_token
[email protected]ID_INSTANCE и API_TOKEN_INSTANCE берутся из консоли GREEN-API для созданного инстанса. TEST_CHAT_ID — номер WhatsApp получателя в формате номер@c.us (номер без +).
Файл .env не хранится в репозитории и добавлен в .gitignore.
Текст + код:
text
Все тесты (API + Selenium-шаблон):
npm testТолько API-тесты отправки/получения сообщений:
npx jest tests/greenApiMessages.test.ts(опционально) Шаблон Selenium-теста UI консоли (помечен skip и не влияет на общий результат):
npx jest tests/seleniumConsole.test.tsПример результата прогона всех тестов: 3 test suites (1 skipped, 3 passed), 11 tests (1 skipped, 10 passed).
Проверка состояния инстанса выполняется в блоке beforeAll файла tests/greenApiMessages.test.ts:
- вызывается метод
getStateInstanceклиента GREEN-API; - проверяется статус-код 200;
- проверяется наличие поля
stateInstanceи значениеauthorized.
Это выполняет требование задания «проверять, что инстанс авторизован с помощью метода getStateInstance».
В tests/greenApiMessages.test.ts реализованы сценарии для sendMessage:
- позитивный сценарий: корректные
chatIdиmessage→ ожидается статус-код 200 и наличие поляidMessageв ответе; - негативные сценарии: пустой или некорректный
chatId/message→ ожидается статус-код 400, отдельный блокdescribe('sendMessage required fields')проверяет обязательные поля.
Там же реализованы сценарии для getChatHistory:
- позитивный сценарий: корректные
chatIdиcount→ ожидается статус-код 200 и массив сообщений с ожидаемой структурой; - негативные сценарии: пустой
chatId, некорректныйcount→ ожидается статус-код 400, отдельный блокdescribe('getChatHistory required fields')проверяет обязательные поля.
Для тарифного плана Developer GREEN-API действует лимит запросов; при превышении API возвращает статус 429 Too Many Requests.
В тестах учтён этот статус: при его получении проверки корректно обрабатывают ответ и при необходимости пропускают часть сценариев, чтобы тесты не падали только из-за rate limit.
Файл tests/seleniumConsole.test.ts содержит шаблон UI-теста на Selenium:
- поднимает браузер Chrome через
selenium-webdriver; - открывает консоль GREEN-API;
- ищет статус инстанса по CSS-классу
statusesAuth statusesAuth__authи проверяет текстАвторизован.
Тест помечен как it.skip, чтобы не зависеть от наличия активной UI-сессии и возможных изменений верстки консоли, и служит демонстрацией подхода к UI-автотестам для GREEN-API.
src/config.ts— загрузка.envчерезdotenvи экспорт конфигурации API.src/httpClient.ts— axios-клиент с базовым URL и JSON-заголовками.src/greenApiClient.ts— обёртки над методами GREEN-API:getStateInstance,sendMessage,getChatHistory.tests/smoke.test.ts— smoke-тест (проверка, что Jest + TypeScript настроены).tests/greenApiMessages.test.ts— основной набор API-тестов (getStateInstanceвbeforeAll,sendMessage/getChatHistory: 200/400, обязательные поля, обработка 429).tests/seleniumConsole.test.ts— шаблон UI-теста на Selenium, помеченныйskip.
Проект прошёл проверку со стороны GREEN-API — выдан сертификат о выполнении тестового задания (март 2026). Сертификат GREEN-API (PDF)