# Запуск тестов на 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 /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 ```