256 lines
10 KiB
Markdown
256 lines
10 KiB
Markdown
# Запуск тестов на Windows
|
||
|
||
## Оглавление
|
||
|
||
1. [Быстрый старт](#1-быстрый-старт)
|
||
2. [Вспомогательные скрипты](#2-вспомогательные-скрипты)
|
||
3. [Генерация FETCH_TRANSACTIONS задач](#3-генерация-fetch_transactions-задач)
|
||
4. [Ручной запуск (пошагово)](#4-ручной-запуск-пошагово)
|
||
5. [Мониторинг и отчёт](#5-мониторинг-и-отчёт)
|
||
6. [Ручной инжект задач](#6-ручной-инжект-задач)
|
||
7. [ADB на Windows](#7-adb-на-windows)
|
||
8. [Типовые проблемы](#8-типовые-проблемы)
|
||
9. [Быстрый чеклист](#9-быстрый-чеклист)
|
||
|
||
---
|
||
|
||
## 1. Быстрый старт
|
||
|
||
```powershell
|
||
cd tests\mock_server
|
||
powershell -ExecutionPolicy Bypass -File setup.ps1
|
||
```
|
||
|
||
Скрипт `setup.ps1` автоматически:
|
||
1. Проверяет / устанавливает **Python 3.12+** (через winget)
|
||
2. Устанавливает **Flask**
|
||
3. Создаёт вспомогательные скрипты `gen_transactions.ps1` и `run_server.ps1`
|
||
4. Находит `config.ini` и проверяет **базу данных**
|
||
5. Удаляет старые сгенерированные данные (профиль + scenarios, пул не трогает)
|
||
6. Генерирует `default_profile.json` и FETCH_PROFILE scenarios из БД
|
||
7. Очищает таблицу `events` в БД
|
||
8. Если порт занят — убивает старый процесс
|
||
9. Переключает `config.ini` на mock (`apiBase=http://127.0.0.1:8888`)
|
||
10. Показывает сводку: устройства, профили, материалы, пул транзакций
|
||
11. Запускает mock-сервер и открывает HTML-отчёт в браузере
|
||
|
||
### Параметры
|
||
|
||
| Параметр | По умолчанию | Описание |
|
||
|---|---|---|
|
||
| `-Port` | 8888 | Порт mock-сервера |
|
||
| `-FtPerMaterial` | 3 | FETCH_TRANSACTIONS на материал при бутстрапе (из пула) |
|
||
| `-Banks` | все | Банки через запятую: `ozon`, `dushanbe_city_bank`, `black` |
|
||
| `-Types` | все | Типы задач: `FETCH_PROFILE`, `FETCH_TRANSACTIONS` |
|
||
| `-SkipInstall` | — | Пропустить установку Python/Flask |
|
||
| `-GenerateOnly` | — | Только сгенерировать данные, не запускать сервер |
|
||
| `-Clean` | — | Также очистить пул транзакций (`scenarios/pool/`) |
|
||
| `-Debug` | — | Flask debug режим (auto-reload при изменении кода) |
|
||
|
||
### Примеры
|
||
|
||
```powershell
|
||
# Всё автоматически
|
||
.\setup.ps1
|
||
|
||
# Только Ozon, только FETCH_TRANSACTIONS
|
||
.\setup.ps1 -Banks ozon -Types FETCH_TRANSACTIONS
|
||
|
||
# Debug режим с 5 транзакциями на материал
|
||
.\setup.ps1 -Banks ozon -FtPerMaterial 5 -Debug
|
||
|
||
# Полная очистка (включая пул транзакций)
|
||
.\setup.ps1 -Clean
|
||
```
|
||
|
||
---
|
||
|
||
## 2. Вспомогательные скрипты
|
||
|
||
После первого запуска `setup.ps1` в папке `tests\mock_server\` появляются
|
||
скрипты с зашитым путём до Python:
|
||
|
||
| Скрипт | Назначение | Запуск |
|
||
|---|---|---|
|
||
| `gen_transactions.ps1` | Генерация FETCH_TRANSACTIONS с устройства | `powershell -ExecutionPolicy Bypass -File gen_transactions.ps1` |
|
||
| `run_server.ps1` | Запуск mock-сервера | `powershell -ExecutionPolicy Bypass -File run_server.ps1` |
|
||
| `setup.ps1` | Полная установка + генерация + запуск | `powershell -ExecutionPolicy Bypass -File setup.ps1` |
|
||
|
||
Скрипты принимают дополнительные аргументы:
|
||
|
||
```powershell
|
||
# Запуск сервера только для Ozon, только FETCH_TRANSACTIONS
|
||
powershell -ExecutionPolicy Bypass -File run_server.ps1 --banks ozon --types FETCH_TRANSACTIONS
|
||
|
||
# Генерация с явным серийником
|
||
powershell -ExecutionPolicy Bypass -File gen_transactions.ps1 --serial 28291FDH300712
|
||
```
|
||
|
||
---
|
||
|
||
## 3. Генерация FETCH_TRANSACTIONS задач
|
||
|
||
FETCH_TRANSACTIONS задачи генерируются **только вручную** с живого устройства.
|
||
|
||
### Подготовка
|
||
|
||
1. Подключите устройство по USB
|
||
2. Убедитесь что ADB видит устройство:
|
||
```powershell
|
||
tools\adb\windows\adb.exe devices
|
||
```
|
||
3. Откройте на устройстве банковское приложение на экране **списка транзакций**
|
||
|
||
### Запуск
|
||
|
||
```powershell
|
||
cd tests\mock_server
|
||
powershell -ExecutionPolicy Bypass -File gen_transactions.ps1
|
||
```
|
||
|
||
Скрипт:
|
||
1. Покажет меню с активными материалами
|
||
2. Выберите нужный или `all`
|
||
3. Подтвердите что список транзакций открыт → **Enter**
|
||
4. Автоматически пройдёт по транзакциям (**не трогайте телефон!**)
|
||
5. Для **Ozon**: парсит заголовки дат, определяет дату каждой транзакции по позиции на экране, из деталей берёт только время
|
||
6. Для **Dushanbe**: время конвертируется из Asia/Dushanbe (UTC+5)
|
||
7. Сохраняет в `scenarios/pool/` с номером карты в имени файла:
|
||
```
|
||
pixel_7_ozon_7919_01_minus_108_ft_01.json
|
||
pixel_7_ozon_9865_01_minus_108_ft_01.json
|
||
pixel_7_dushanbe_city_bank_3258_01_plus_5_ft_01.json
|
||
```
|
||
|
||
### Важно
|
||
|
||
- Если у банка **два материала** (две карты), генерируются **отдельные файлы** для каждого
|
||
- При смене устройств/аккаунтов нужно перегенерировать pool — `material_id` в файлах должны совпадать с `default_profile.json`
|
||
|
||
---
|
||
|
||
## 4. Ручной запуск (пошагово)
|
||
|
||
### 4.1. Установка зависимостей
|
||
|
||
```powershell
|
||
python --version # Python 3.9+
|
||
pip install flask
|
||
```
|
||
|
||
### 4.2. Подготовка config.ini
|
||
|
||
```ini
|
||
[net]
|
||
apiBase=http://127.0.0.1:8888
|
||
```
|
||
|
||
### 4.3. Генерация данных + запуск
|
||
|
||
```powershell
|
||
# Генерация профиля
|
||
python tests\mock_server\gen_mock_data.py
|
||
|
||
# Запуск сервера
|
||
cd tests\mock_server
|
||
python mock_server.py --port 8888 --banks ozon --types FETCH_TRANSACTIONS
|
||
|
||
# Debug режим (auto-reload)
|
||
python mock_server.py --port 8888 --banks ozon --debug
|
||
```
|
||
|
||
### 4.4. Запуск ARC
|
||
|
||
```powershell
|
||
cd C:\ARC\Ver.18 # или build\Release
|
||
ARC.exe
|
||
```
|
||
|
||
---
|
||
|
||
## 5. Мониторинг и отчёт
|
||
|
||
```powershell
|
||
# Открыть отчёт в браузере (авто-обновление каждые 2 сек)
|
||
start http://127.0.0.1:8888/_admin/report/html
|
||
```
|
||
|
||
Отчёт показывает:
|
||
- **Сводку**: всего / выполнено / ошибки / в очереди
|
||
- **Группировку**: устройство → банк → задачи
|
||
- **Для каждой задачи**:
|
||
- Статус (completed / error / pending)
|
||
- Task JSON + Result JSON (успешные свёрнуты, ошибки развёрнуты)
|
||
- Скриншот (если есть) — клик для полноэкранного просмотра
|
||
- Кнопка "Копировать" на каждом JSON блоке
|
||
- Авто-обновление без сброса состояния развёрнутых блоков
|
||
|
||
```powershell
|
||
# Счётчики
|
||
(Invoke-WebRequest http://127.0.0.1:8888/_admin/state).Content | ConvertFrom-Json
|
||
```
|
||
|
||
---
|
||
|
||
## 6. Ручной инжект задач
|
||
|
||
```powershell
|
||
# Одна задача
|
||
curl -X POST http://127.0.0.1:8888/_admin/inject ^
|
||
-H "Content-Type: application/json" ^
|
||
--data-binary @scenarios\pixel_7_ozon_7919_fetch_profile.json
|
||
|
||
# Повторный бутстрап
|
||
curl -X POST http://127.0.0.1:8888/_admin/bootstrap
|
||
|
||
# Сброс (очистка всего + скриншоты)
|
||
curl -X POST http://127.0.0.1:8888/_admin/reset
|
||
```
|
||
|
||
---
|
||
|
||
## 7. ADB на Windows
|
||
|
||
ARC использует ADB из `tools\adb\windows\`:
|
||
|
||
```powershell
|
||
tools\adb\windows\adb.exe devices
|
||
```
|
||
|
||
Если ADB занят:
|
||
```powershell
|
||
tools\adb\windows\adb.exe kill-server
|
||
tools\adb\windows\adb.exe start-server
|
||
```
|
||
|
||
---
|
||
|
||
## 8. Типовые проблемы
|
||
|
||
| Проблема | Решение |
|
||
|---|---|
|
||
| `python` не найден | Запустите `setup.ps1` — установит автоматически |
|
||
| Порт 8888 занят | `setup.ps1` убивает автоматически. Вручную: `netstat -ano \| findstr :8888` → `taskkill /PID <pid> /F` |
|
||
| `App restarted` ошибки | Мок-сервер чистит events в БД при старте. Запускайте сервер **до** ARC |
|
||
| Pool material_id не совпадает | `gen_mock_data.py` обновил material_id. Перегенерируйте pool |
|
||
| `Transaction not found` | Баг поиска — анализировать логи (device= в ошибке) |
|
||
| `Page load error` | Ozon WebView не загрузился — проблема интернета/устройства |
|
||
| Скриншот не привязался | Нет `internal_task_id` — обновить ARC |
|
||
| Кракозябры в консоли | `chcp 65001` (UTF-8). Скрипты `.ps1` делают автоматически |
|
||
| No active materials | Нет профилей с проверенным PIN. Запустить ARC с боевым сервером |
|
||
| Firewall | Разрешить `python.exe`. Мок слушает только `127.0.0.1` |
|
||
|
||
---
|
||
|
||
## 9. Быстрый чеклист
|
||
|
||
```
|
||
[ ] powershell -ExecutionPolicy Bypass -File setup.ps1 -Banks ozon
|
||
[ ] Устройства в adb devices → device
|
||
[ ] (опционально) gen_transactions.ps1 для пула транзакций
|
||
[ ] ARC.exe запущен (отдельный терминал)
|
||
[ ] Браузер: http://127.0.0.1:8888/_admin/report/html
|
||
[ ] Дождаться completed = всего в отчёте
|
||
[ ] Вернуть config.ini: apiBase=http://93.183.75.134:8005
|
||
```
|