From eded968c700c77a90ea32c6642a023328b1eb022 Mon Sep 17 00:00:00 2001 From: Dom Date: Wed, 15 Apr 2026 21:12:58 +0200 Subject: [PATCH] ci(fix): RPA_API_TOKEN + Flask-SocketIO dans CI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Deux fixes pour que la CI collecte tous les tests unitaires : 1. RPA_API_TOKEN défini dans les env du workflow - Sans : agent_v0/server_v1/api_stream.py fait sys.exit(1) au module load (fail-closed P0-C), ce qui casse la collection de tests/unit/test_env_setup.py (qui importe api_stream) - Avec : token bidon qui permet aux imports de passer, les tests mockent les vraies requêtes 2. Flask-SocketIO + deps socketio ajoutés à requirements-ci.txt - web_dashboard/app.py importe `from flask_socketio import SocketIO` - test_dashboard_routes.py importait app -> ModuleNotFoundError en CI - Ces packages étaient explicitement exclus avant, mais sont nécessaires pour les 37 tests du dashboard Résultat local : 1723 passed, 39 failed (dette pré-existante documentée dans l'audit — contamination entre tests, à traiter séparément). Co-Authored-By: Claude Opus 4.6 (1M context) --- .gitea/workflows/tests.yml | 4 ++++ requirements-ci.txt | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/tests.yml b/.gitea/workflows/tests.yml index 5c11dc58a..0bad59017 100644 --- a/.gitea/workflows/tests.yml +++ b/.gitea/workflows/tests.yml @@ -33,6 +33,10 @@ env: # Les modules d'exécution lisent parfois ces vars ; valeurs neutres en CI. RPA_VISION_CI: "1" RPA_AUTH_VAULT_PATH: "/tmp/ci_vault.enc" + # api_stream.py a un fail-closed P0-C : si RPA_API_TOKEN absent, sys.exit(1) + # au module load. On fournit un token bidon pour que les imports passent en CI. + # (Le token n'est jamais utilisé réellement — les tests mockent les requêtes.) + RPA_API_TOKEN: "ci_test_token_not_used_for_real_auth_just_to_pass_import_check_0123456789" jobs: # ---------------------------------------------------------------- diff --git a/requirements-ci.txt b/requirements-ci.txt index 23ae2ad04..ce54ecb45 100644 --- a/requirements-ci.txt +++ b/requirements-ci.txt @@ -29,10 +29,17 @@ Flask==3.0.0 Flask-Caching==2.1.0 Flask-Cors==4.0.0 Flask-SQLAlchemy==3.1.1 +Flask-SocketIO==5.3.5 +Flask-Migrate==4.1.0 +python-socketio==5.10.0 +python-engineio==4.8.0 +simple-websocket==1.1.0 +wsproto==1.3.2 Werkzeug==3.1.5 Jinja2==3.1.6 itsdangerous==2.2.0 blinker==1.9.0 +bidict==0.23.1 # --- DB (tests auth/audit/extraction) --- SQLAlchemy==2.0.23 @@ -105,5 +112,6 @@ sortedcontainers==2.4.0 # - ollama → nécessite serveur Ollama # - python-doctr / pypdfium2 → OCR, tests `slow` # - pynput / pyautogui / mss / PyQt5 → GUI / simulation I/O -# - python-socketio / Flask-SocketIO → WS, tests intégration +# (anciennement exclus python-socketio/Flask-SocketIO : réintégrés +# le 15 avril 2026 — test_dashboard_routes en dépend via app.py) # - eds-nlp / spacy → modèles NLP hors CI