Tests
τ-mux est livré avec trois suites de tests et un pipeline de rapport de design.
Unitaire / intégration
Section intitulée « Unitaire / intégration »bun test # ~9 s, 800+ tests across 50+ filesbun run typecheckCouverture :
- Parseurs
ps/lsof/ sideband (tests de fonctions pures, pas de sous-processus). - Gestionnaire PTY.
- Gestionnaires RPC (chaque domaine).
- Disposition des panneaux (mathématiques de split en arbre binaire).
- Reducer + modules de vue du client web (DOM via
happy-dom). - Cycle de vie des notifications de la barre latérale native.
- Sous-modules du panneau d’agent.
- Suite de tests fumée de SurfaceManager.
- Helper de son partagé.
- db / service / paramètres / forwarder Telegram.
bunfig.toml cantonne bun test brut à tests/ uniquement — les specs Playwright tests-e2e/ ne sont pas ramassés.
bun run test:e2e # ~1 min, 43 Playwright specsChaque spec lance un WebServer isolé dans un sous-processus Bun via tests-e2e/server-boot.ts pour que les workers ne partagent pas d’état. Couverture :
- Authentification — accès ouvert, jeton en query string,
Authorization: Bearer, jeton incorrect 401. - Validation d’origine — upgrade same-host 101, upgrade cross-origin 403 même avec un jeton valide.
- Round-trip terminal — le navigateur charge la page, xterm rend, les touches arrivent au shell, stdout apparaît dans le DOM.
- Résilience — la limite de taille de stdin ne tue pas la connexion, le clamping de redimensionnement non plus,
?resume=<id>&seq=<n>rejoue la sortie tamponnée après une déconnexion, les ids de resume inconnus retombent sur un nouveauhello.
Playwright cible Chromium uniquement — ajoutez Firefox/WebKit sous projects: dans playwright.config.ts pour une couverture plus large.
E2E natif
Section intitulée « E2E natif »bun run test:native # full native suitebun run test:native:bloom-on # with WebGL bloom enabledbun run test:native:packaged # against the packaged .appbun run test:native:design-reviewPilote la webview Electrobun directement via le chemin connection-over-CDP de Playwright. Utile pour les régressions visuelles et les tests de gestion de raccourcis que le miroir web ne peut pas attraper.
Rapport de design
Section intitulée « Rapport de design »Un pipeline personnalisé qui capture des captures d’écran depuis un ensemble curaté de routes et les compare aux références.
bun run report:design:web # web mirror only (fast)bun run test:full-suite # web + native + design gatebun run baseline:design # promote current screenshots to baselineLa sortie vit dans test-results/design-report/index.html. La forme --gate fait échouer la CI si une capture d’écran dépasse le seuil configuré de différence en pixels.
GitHub Actions (.github/workflows/ci.yml) exécute typecheck + bun test et Playwright e2e à chaque push et PR. Les deux jobs tournent sur macos-latest — les tests d’intégration PTY / ps / lsof reposent sur le comportement macOS, et le boot e2e lance un vrai WebServer piloté par un vrai SessionManager.
Quand exécuter quoi
Section intitulée « Quand exécuter quoi »| Changement | Suite |
|---|---|
| Changement de fonction pure / parseur | bun test (le fichier pertinent). |
| Gestionnaire RPC / nouvelle méthode | bun test + bun run typecheck. |
| Changement du serveur miroir web | bun test + bun run test:e2e. |
| UI webview / interaction xterm | bun run test:native. |
| Changement visuel | bun run report:design:web, puis promouvoir la baseline une fois satisfait. |
| Avant d’ouvrir une PR | bun run test:full-suite. |