Mon client opère une plateforme de Server-Side Ad Insertion : en clair, elle injecte des publicités directement dans un flux vidéo en direct, côté serveur, avant que le spectateur ne reçoive quoi que ce soit. Le défi, c’est que tout se joue en temps réel; un flux continu, des coupures pub qui doivent apparaître au bon moment, avec le bon contenu, sans coupure visible pour l’utilisateur.
Tester ça manuellement, c’est des heures de visionnage passées devant un player à attendre qu’une pub se déclenche, vérifier qu’elle s’affiche, qu’elle dure le bon temps, et que le programme reprend normalement.
Multipliez ça par une vingtaine de scénarios différents et plusieurs environnements, et vous comprenez vite que ce n’est pas viable.
J’ai conçu et mis en place une suite de tests end-to-end entièrement automatisée avec Playwright. Le principe : à chaque campagne de test, on crée dynamiquement un tenant et des channels dédiés via l’API, donc des données de test fraîches à chaque exécution, sans pollution entre les runs. Ensuite, on lance un vrai flux vidéo DASH dans un player headless, et on détecte les coupures publicitaires par
comparaison d’images : le test capture des screenshots du player en boucle et les compare pixel par pixel à une référence. Dès qu’une différence significative apparaît, ça veut dire qu’une publicité est
affichée. À partir de là, on enchaîne les vérifications : contenu VAST, beacons de tracking, logs serveur via Grafana et BigQuery, conformité des marqueurs SCTE-35.
Côté pipeline, tout tourne sur GitLab CI en parallèles. Un preflight check valide automatiquement la disponibilité de la source vidéo externe avant de lancer les tests, si elle est down, les tests vidéo sont skippés proprement et les tests API continuent.
En pratique, une campagne complète d’une vingtaine de scénarios tourne en moins de 15 minutes là où il fallait compter entre une et deux journées de test manuel. L’équipe QA a gagné un temps considérable et surtout une visibilité immédiate sur les régressions, à chaque merge request.