Skip to content

Новый код вернул на macOS отказ, который там уже вычищали #55

Новый код вернул на macOS отказ, который там уже вычищали

Новый код вернул на macOS отказ, который там уже вычищали #55

Workflow file for this run

# Быстрые тесты на каждый пуш.
#
# Здесь только то, что ничего не трогает: ни микрофона, ни клавиатуры, ни сети,
# ни модели. `test_insert.py` и `test_hotkey.py` шлют настоящие нажатия и двигают
# мышь - им место на живой машине, а не в CI, где за ними никто не смотрит.
# `test_e2e.py` тянет модель на 226 МБ, и гонять её на каждый пуш незачем.
#
# Польза одному человеку скромная, и преувеличивать её не надо: соло-разработчик
# и так прогоняет тесты локально. Но `import app` ловит опечатку, из-за которой
# приложение молча не стартует под pythonw, - класс отказов, который выглядит
# как «кликнул по ярлыку, ничего не произошло». Такое уже случалось.
#
# windows-latest, потому что половина проекта - Win32: pywin32, keyboard, хуки.
# На Linux это просто не поставится.
name: тесты
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
jobs:
fast:
runs-on: windows-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.13"
cache: pip
- name: зависимости
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: приложение вообще импортируется
run: python -c "import app"
- name: контраст палитры
run: python test_theme.py
- name: переводы интерфейса
run: python tools/check_i18n.py
- name: чистка текста
run: python test_clean.py
- name: сочетания клавиш
run: python test_inputspec.py
- name: подстановки по истории
run: python test_suggest.py
- name: склейка и автоввод
run: python test_join.py
- name: вставка через буфер обмена
run: python test_clipboard.py
- name: преобразования текста
run: python test_transforms.py
- name: длинная запись
run: python test_long.py
- name: разбор речи на ходу
run: python test_stream.py
- name: модель знаков препинания
run: python test_punct_model.py
- name: заметки
run: python test_notes.py
- name: разбор своей речи
run: python test_insights.py
- name: вопрос по интонации
run: python test_intonation.py
- name: английская речь в кириллице
run: python test_language.py
- name: выгрузка и загрузка личного
run: python test_backup.py
- name: статистика
run: python test_stats.py
- name: обновлятор
run: python test_update.py
- name: полировка и предохранители
run: python test_llm.py
# --- Переезд визуала на React ---
- name: мост «страница - Python»
run: python test_bridge.py
- name: CSS не разъехался с theme.py
run: python tools/gen_theme.py --check
- name: api.ts не разъехался с Backend
run: python tools/gen_bridge.py --check
- name: иконки не разъехались с Icons.qml
run: python tools/check_icons.py
- name: словарь страницы не разъехался с i18n.py
run: python tools/gen_i18n.py --check
- name: строки страницы идут через t()
run: python tools/check_web_i18n.py
- name: node
uses: actions/setup-node@v4
with:
node-version: "22"
cache: npm
cache-dependency-path: web/package-lock.json
# npm ci, а не install: ставит ровно то, что в package-lock, и падает при
# расхождении. install молча подтянул бы новые версии, и «у меня
# собирается» перестало бы значить «соберётся у всех».
- name: зависимости страницы
run: npm ci
working-directory: web
- name: типы и сборка страницы
run: npm run build
working-directory: web
- name: доступность витрины
run: npm run test
working-directory: web
env:
# Иначе кириллица в выводе превращается в мусор и провал не прочитать.
PYTHONIOENCODING: utf-8