3.7 KiB
Validation du lot #2
Le protocole reproductible est bash tests/run.sh. Il installe l'archive livrée
et redémarre un Jellyfin jetable, sans modifier les fichiers de Jellyfin Web.
Environnement
- Serveur relevé par
System/Info/Public: 12.0.0. - Image :
jellyfin/jellyfin:12.0, digestsha256:baba630419915985442f315f08b0cf46d9f4c8a0cc4bd38e94a6d35751dd5ef5. - Plugin : 0.1.0, .NET 10, référence
Jellyfin.Controller12.0.0. - Lecteur principal : Jellyfin Web livré dans cette image, Chromium 149.0.7827.55 (Playwright 1.61.1), vitesse 1×, vidéo H.264/AAC avec timecode incrusté.
- Compagnon : contextes Chromium séparés, fenêtre de 375 × 812 pixels.
- Comptes ordinaires :
compagnon-aliceetcompagnon-bob; le script vérifieIsAdministrator == false.compagnon-adminne sert qu'à la préparation. - Hébergement testé : HTTP sur boucle locale, sans préfixe puis
/jellyfin. HTTPS/reverse proxy distant et les autres lecteurs n'ont pas été testés.
Contrats observés
Les API existantes suffisent à ce lot sur ce serveur. Aucun accès interne aux sessions ni route de données supplémentaire n'a été ajouté.
GET /Sessions sans authentification est refusé (401). Le jeton de Bob ne permet
pas de demander Sessions?controllableByUserId=<Alice> ni Users/<Alice>/Items
(403). Pendant les lectures d'Alice, le compagnon de Bob reste sans lecture.
Ces refus sont vérifiés par HTTP, indépendamment du rendu de l'interface.
La sélection automatique d'une lecture, le choix initial parmi deux lectures,
la conservation de la sélection à l'arrivée d'une seconde session, la pause et
la fin réelle du média sont vérifiés dans des navigateurs distincts. Les tests
attendent que video.currentTime avance réellement avant de vérifier le compagnon.
La fin est provoquée par déplacement du lecteur principal près de la fin du média.
Le journal des requêtes du navigateur compagnon pendant le suivi ne contient
que des GET /Sessions : aucun téléchargement vidéo ni commande de lecture.
Le média et la source retournée par PlayState.MediaSourceId sont affichés sans
récupérer une autre source. La position reste explicitement une estimation serveur.
Vérifications
Exécution complète du 14 septembre 2026 : bash tests/run.sh, code de sortie 0.
| Vérification | Résultat |
|---|---|
| Compilation C# Release | 0 erreur, 0 avertissement |
| Typechecking JavaScript | Réussi |
| Paquet installé, accès sans préfixe | 1 test réussi |
Suite complète sous /jellyfin |
4 tests réussis, 0 échec (16,4 s) |
| Comptes distincts et refus HTTP 401/403 | Réussi |
| Lecture réelle, zéro/une/deux sessions, choix stable, pause et fin | Réussi |
| Panne réseau, détails effacés, sélection bloquée et reprise | Réussi |
| HTTP non sécurisé, clavier, largeur 375 px, absence de stockage du jeton | Réussi |
| Archive et SHA-256 comparés au DLL compilé | Réussi |
Les conteneurs d'essai ont été supprimés. Les objectifs de précision du lot #6 ne sont pas mesurés ni revendiqués par ce lot.
Revue Standards
Aucune violation documentée ni complexité injustifiée relevée. Le défaut initial
sur HTTP non sécurisé (crypto.randomUUID) a été corrigé par getRandomValues
et couvert par un navigateur utilisant un nom d'hôte local non sécurisé.
Constats restants : 0.
Revue Spec
Deux constats corrigés : désactivation du sélecteur lors d'une panne pour éviter le réaffichage de données périmées, et inspection directe de la réponse HTTP de Bob pendant la lecture d'Alice pour ne pas dépendre du filtrage d'affichage. Les corrections ont fait l'objet d'une seconde vérification ciblée. Constats restants : 0.