Vos tests restent en Playwright, Selenium et pytest. Nous ne les remplaçons pas. Nous les adaptons aux exigences de l'entreprise, et vous conservez l'entière propriété : code, preuves et historique.
Chaque écran du Studio, et ce qu'il fait.
Les tests sont créés, exécutés, planifiés et évalués depuis ces écrans. La ligne de commande reste disponible pour les pipelines.
Les tests sont-ils du code standard Playwright, Selenium et pytest ?
À quoi ressemblent les fichiers
Oui. Chaque test écrit ou importé par le Studio est du code de framework que votre équipe connaît déjà. Le moteur y ajoute des preuves, de la télémétrie, des verdicts et de l'auto-guérison ; il ne le remplace pas.
Playwright, JavaScript et TypeScript : un fichier Playwright Test. L'import de fixture en haut est celui de Studio ; le corps est page, des localisateurs et expect.
Playwright, Python : pytest-playwright simple, une fonction test_ qui prend page. Elle s'exécute avec pytest seul.
Selenium, Python : pytest avec un fixture driver. Le conftest.py de l'espace de travail revient à un WebDriver simple lorsque le moteur n'est pas celui qui l'exécute.
Selenium, JavaScript : code selenium-webdriver dans run({ driver, By, until }). Le lanceur de Studio construit et quitte le driver.
Selenium, Java : JUnit 5, @ExtendWith(NexusExtension.class), un paramètre WebDriver que l'extension vous fournit. Compilation avec Maven.
Selenium et Playwright, C# : NUnit, une classe étendant NexusSeleniumTest ou NexusPageTest. Compilation avec .NET.
Les tests API utilisent le format JavaScript propre à Studio.
Comment partir
Vos tests, preuves et historiques sont des fichiers dans votre espace de travail. Pour exécuter la suite sans Nexus : les tests Python s'exécutent tels quels, les imports JavaScript de Playwright pointent vers @playwright/test (un point de contrôle visuel, si vous en avez ajouté un, doit être remplacé), et les fonctions run() JavaScript de Selenium reçoivent quelques lignes qui démarrent un driver. Les tests API devraient être réécrits pour un autre lanceur.
Créer
Patrol
Là où les tests sont écrits, exécutés et planifiés. L'arborescence affiche chaque test avec un logo par navigateur, coloré selon son état, et la bande d'exécution au-dessus de l'éditeur indique en toutes lettres ce que fait chaque navigateur.
Cinq onglets : Test cases, Run patrol, Nexus Recorder, AI writer et Test Adapter.
Cibles : Desktop matrix (Chromium, Firefox et WebKit), Mobile emulated, Real device (un vrai téléphone Android), ou Desktop + real device pour le PC et un téléphone Android simultanément, avec les preuves classées par identité.
Un navigateur après l'autre par défaut, ou jusqu'à trois à la fois et plusieurs tests simultanément selon votre configuration. Selenium s'exécute sur Chromium et Firefox.
Les nouveaux tests s'entraînent dans le bac à sable, qui n'écrit aucun historique, avant que leurs exécutions commencent à être comptabilisées.
Feature flags : chaque indicateur s'exécute activé, désactivé ou dans les deux états, transmis par cookie, en-tête, stockage local ou chaîne de requête, et la carte indique la combinaison sous laquelle un test échoue.
AI writer
Rédige un test à partir de votre description, avec l'IA de votre choix : votre propre outil IA en ligne de commande (Claude Code, Codex ou opencode) ou une API, un modèle Ollama local, Anthropic ou OpenAI. Il rédige du Playwright en JavaScript, TypeScript, Python ou C#, et du Selenium en JavaScript, Python, Java ou C#.
Trois modes de travail : Chat with my AI, Step by step (planifier les cas, rédiger ceux que vous sélectionnez), ou Bring my agent, un résumé pour l'agent dans votre propre terminal.
Il peut lire jusqu'à quatre pages de votre application, en lecture seule et sans connexion, afin que le test désigne de véritables éléments.
L'interface CLI fonctionne sans outils dans un dossier vide, ou dans son propre bac à sable en lecture seule, et vous donnez votre accord pour chaque destination au préalable.
Chaque test est soumis au Vet, sept vérifications sans IA : il possède un identifiant de test, est analysable syntaxiquement, utilise le fixture du Studio, n'accède à rien en dehors de la page, contient des assertions pouvant échouer, ne comporte ni temporisations, ni clics forcés, ni mocks, et n'utilise pas de localisateurs fragiles.
Try it exécute le test deux fois dans Chromium en tant que brouillon, sans rien écrire dans les preuves ou l'historique. Accept reste désactivé tant que vous n'avez pas ouvert le code.
Votre IA, via sa propre ligne de commande
Claude Code
Codex
opencode
Le rédacteur démarre l'interface CLI à laquelle vous êtes déjà connecté sur cette machine, de sorte qu'aucune clé API n'est à saisir dans le Studio. Votre forfait avec cet outil reste applicable. Une clé API de fournisseur ou un modèle Ollama local constitue l'autre méthode d'accès.
Comment le Studio lance Claude Code, argument par argument :
claude -p --output-format json --tools "" --disable-slash-commands
Le prompt est transmis via stdin. Aucun outil, aucun serveur MCP, aucun de vos propres paramètres ou hooks, rien de sauvegardé en session, et un plafond de dépenses pour chaque appel : un dollar américain par défaut.
Test casesRun patrolNexus RecorderAI writerTest Adapter
AI writer
Chat with my AIStep by stepBring my agent
Claude Code
OffReady, not testedOnNot answeringNot fit
ViewTry itFix with AIAccept
Nexus Recorder
Enregistre ce que vous faites dans le navigateur sous forme de code de test. Aucune IA n'intervient dans le processus : ce sur quoi vous cliquez est ce qui est écrit.
Enregistrez pour Desktop, Mobile émulé ou un Appareil réel : un téléphone Android connecté en USB, pilotant le Chrome natif du téléphone. JavaScript et Python uniquement pour l'instant ; Java et C# enregistrent sur desktop.
Génère du Playwright en JavaScript, TypeScript, Python ou C#, ou du Selenium en JavaScript, Python, Java ou C#.
Ou enregistre les appels API effectués par la page sous forme de tests REST ou GraphQL, sans en-têtes d'authentification ou de cookies, et avec les champs à apparence sensible transformés en variables d'environnement.
Les Selector Maps analysent une page sans IA, attribuent à chaque sélecteur la note HIGH, MEDIUM ou LOW, et conservent la carte sur votre disque.
Test Adapter
Intègre les tests que votre équipe possède déjà dans le Studio, sans les réécrire manuellement.
Collez un test, déposez un fichier ou indiquez un dossier : Playwright ou Selenium en JavaScript, TypeScript ou Python, sous Playwright Test, mocha, jest, pytest ou unittest.
Réécrit par règle, et non par IA : le lancement du navigateur et la configuration sont intégrés dans la fixture du Studio, tandis que les assertions, conditions, boucles et attentes restent inchangées.
Affiche le diff côte à côte ainsi que le nombre d'assertions avant et après. Une assertion perdue bloque l'importation, sauf si vous l'acceptez ligne par ligne.
Une IA optionnelle ne traite que ce qu'aucune règle ne couvre, et son code est soumis au Vet strict. Les tests conservés s'exécutent dans le bac à sable jusqu'à obtenir trois passages consécutifs réussis.
Cypress, WebdriverIO, Robot Framework, Java et C# ne sont pas pris en charge.
Réparation de ligne et auto-réparation
Ce qui se passe lorsqu'un localisateur se casse. Rien n'est réparé à votre insu.
Auto-réparation, définie sur Suggérer par défaut : après un échec, un navigateur en arrière-plan rejoue le test jusqu'à la ligne défaillante et lit la page, afin que les candidats soient prêts. Aucune IA, et le test reste en échec.
Réparation de ligne, depuis la marge de cette ligne : réenregistrez uniquement cette étape, ou remplacez le sélecteur, du plus robuste en premier et XPath en dernier. La modification apparaît dans l'éditeur sans être sauvegardée, et la sauvegarder constitue votre approbation.
Demander à mon IA laquelle peut réordonner les candidats, sans jamais en ajouter. La version précédente du fichier reste dans sa chronologie.
État des localisateurs répertorie les localisateurs faibles du test ouvert et les répare de la même façon.
Exécuter
Devices & Mobile
De vrais téléphones Android, connectés par USB à la machine qui exécute le moteur. Aucune ferme d'appareils, aucune minute à acheter.
Plusieurs téléphones à la fois, via adb et le Chrome DevTools Protocol, avec un guide pour connecter le premier.
Regarder l'écran permet de reproduire un téléphone sur votre PC : contrôlable depuis cet écran, et en lecture seule lorsqu'il est ouvert depuis Patrol.
Émulation mobile, à partir des profils d'appareils de Playwright : Chrome sur Android, un iPhone ou iPad sur WebKit, le moteur de Safari, et un profil bas de gamme. Les appareils réels sont des téléphones Android uniquement : un iPhone ou iPad est émulé, jamais un appareil Apple physique, de sorte que le clavier iOS et les gestes système ne sont pas testés.
Les tests sur un téléphone s'exécutent un à la fois, et une exécution sur téléphone reste toujours sur la machine à laquelle le téléphone est branché.
Watch
Dans Patrol, sous Exécuter Patrol : réexécute une sélection selon un minuteur, sans surveillance.
Répéter toutes les 5 minutes à 24 heures, ou Une fois, à une date. Cela se termine lorsque vous l'arrêtez, après un certain nombre d'exécutions, ou à une date.
Il s'exécute comme son propre processus, donc fermer le Studio ne l'arrête pas. Il nécessite que cette machine soit allumée : pendant son veille, les exécutions planifiées attendent ou sont ignorées.
Alertes sur Telegram ou Slack uniquement lorsqu'un état change, sous la forme ALERT ou RECOVERED.
CI/CD
Configure le pipeline à l'écran plutôt que dans un éditeur YAML.
Génère le fichier GitHub Actions ou GitLab CI : navigateurs, tests visuels, accessibilité, chaos, paramètres de boucle et de nouvelle tentative, et sur GitHub une régression nocturne à une heure UTC avec les tests que vous sélectionnez.
S'exécute sur un runner hébergé dans le cloud, sur votre propre machine, ou sur votre machine avec Docker, avec un script de runner pour bash ou PowerShell.
Valide le pipeline localement en premier, puis effectue le commit et le push depuis le même écran. Les exécutions distantes peuvent être lancées ici et leurs preuves téléchargées.
Également scriptable pour l'intégration continue : nexus ci renvoie 0 en cas de succès, 1 en cas d'échec et 2 lorsque rien n'a été exécuté, et génère du XML JUnit. Exécutez vos tests depuis le CI/CD
Pipeline
GitHub ActionsGitLab CI
browserschromiumfirefoxwebkit
nightly regression0 6 * * *
runs onCloud-hostedMy machineMy machine + Docker
generate
Docker et SSH
Le Studio est une application de bureau Windows 11, sur votre PC ou, en option, sur un mini PC Windows 11. Depuis celle-ci, le moteur exécute les suites d'un espace de travail sur cette machine, dans Docker sur celle-ci, ou via SSH sur une autre machine. Le Studio lui-même ne s'exécute jamais dans Docker ni via SSH.
Avec Docker, la suite s'exécute dans le conteneur runner sur le même disque, de sorte que les preuves se retrouvent dans votre espace de travail comme d'habitude.
Via SSH, sur un VPS équipé d'Ubuntu 24.04 LTS, de Docker Engine et de Compose v2, accessible par clé d'authentification : le moteur y exécute la suite dans la même image de conteneur que Docker ici, et les éléments de preuve y restent jusqu'à ce que vous les récupériez.
Les téléphones Android réels, les suites Selenium et Python, le chaos d'infrastructure et l'import de résultats s'exécutent toujours sur la propre machine du Studio.
La barre supérieure indique où l'espace de travail s'exécute ainsi que sa RAM et son CPU. La cadence adaptative, lorsque vous l'activez, ajuste immédiatement la taille des navigateurs en fonction de la RAM disponible.
Quelle preuve le Studio conserve-t-il d'une exécution ?
Evidence Locker
Chaque résultat, classé là où vous pouvez le consulter et le trier.
Sections pour les résultats de tests, le résumé d'exécution, les rapports de bugs, les tests réussis, l'intelligence historique, le classement par risque, les Core Web Vitals, les audits de sécurité, la résilience au chaos et les tests API.
Chaque enregistrement s'ouvre sur Report, Metadata, Telemetry, Raw Log et AI Analysis, ce dernier étant activé par défaut et renseigné par votre IA connectée. Un échec enregistre son rapport d'analyse technique, ses métadonnées et une capture d'écran de l'image finale, ainsi que la vidéo pour un véritable échec (vous choisissez les verdicts dans Settings, sous Keep failure video for) ; le journal brut contient les erreurs de console, les requêtes échouées, les problèmes de sécurité et les erreurs de page. Une trace est également conservée tant que le traçage est activé, ce qui est le cas par défaut.
Triage : Vrai bug ou Fausse alerte, avec une raison obligatoire, si cela compte toujours, et ce qui arrive aux fichiers : les conserver, archiver ce qui importe, ou les supprimer.
Partagez sur Telegram, Slack, Jira ou Azure Boards, copiez une image ou exportez un rapport HTML complet. Rien ne quitte la machine tant que vous n'avez pas choisi un canal et cliqué sur envoyer.
UNVERIFIEDno ledger: the first Real bug or False alarm verdict starts it
SEALED 5tip 329edceb…d1e365df
VERIFIED 5all artifacts intact
TAMPER DETECTEDnames the record that changed
Tests d'API
Tests REST et GraphQL avec sept verdicts qui leur sont propres. Ils s'exécutent depuis Patrol comme n'importe quel test, et chaque point de terminaison crée son propre dossier dans la section de test d'API de l'Evidence Locker.
API_SECURE : chaque assertion a été vérifiée et la structure de la réponse correspond à la dernière enregistrée. API_FLAKY : le test a réussi lors d'une nouvelle tentative. API_DRIFTED : le test a réussi, mais la structure a changé, et le diff nomme chaque champ ajouté, supprimé ou retypé. Une dérive est considérée comme un succès jusqu'à ce que vous la rendiez stricte.
API_BREACHED : une assertion a échoué. API_DEGRADED : plus lent que le budget de latence, 2000 ms par défaut, et constitue un verdict uniquement lorsque la performance est stricte. API_VULNERABLE : une requête sans identifiants a reçu une réponse là où un code 401 ou 403 était attendu ; un en-tête de sécurité manquant à lui seul ne suffit jamais à attribuer ce statut. API_BLOCKED : un code 429, ou un code 403 avec une signature Cloudflare ou Akamai, indiquant que la requête n'a jamais atteint votre produit.
À l'écran : des tuiles pour les points de terminaison, les réussites, les exécutions dépassant le budget, les structures modifiées, les vulnérabilités historiques et les latences les plus lentes observées ; les filtres « tous », « échoués », « dérivés » et « vulnérables » ; ainsi qu'un tableau détaillant point de terminaison, verdict, min, médiane, p95, max, n et taux de réussite. Un point de terminaison comptant moins de 20 observations affiche un tiret, pas un centile.
Cliquez sur une exécution pour l'ouvrir sur six onglets : Rapport, Requête, Réponse, Performance, Schéma et Analyse IA, ce dernier étant renseigné avec votre IA connectée. Une étape échouée d'un flux propose Réexécuter à partir de l'étape N et Réexécuter l'étape échouée.
Classés par exécution dans api-evidence : request.json, response.json, performance.json, schema.json, report.md et metadata.json, avec les secrets masqués dans les en-têtes et le corps. report.md se termine par une commande curl qui rejoue l'appel. Les exécutions réussies conservent les 20 plus récentes par test ; les échecs sont toujours conservés.
En créer un : Nouveau test, API, demande un Type : REST, GraphQL ou SOAP sur HTTP. Chaque Type commence par un cas qui s'exécute tel quel sur un point de terminaison public, et la première ligne du fichier enregistre le Type, de sorte que l'arborescence des fichiers l'affiche et que déplacer le fichier ne le modifie pas. SOAP est du XML envoyé sous forme de texte et vérifié avec des règles textuelles, sans analyseur XML. Les environnements nommés par exemple staging et prod conservent leur propre URL de base, et un jeton n'est conservé que sous le nom de sa variable. Les dossiers peuvent être imbriqués.
Enregistreur de flux d'API : dans le Nexus Recorder, enregistrez les appels effectués par la page, puis Examinez l'enregistrement avant que la suite ne soit écrite. Appels liste chacun d'eux avec sa méthode, son chemin, son statut, sa catégorie et la raison. Seuls les appels d'API métier, d'authentification, de lecture et modifiant l'état sont initialement inclus dans la suite ; les balises de télémétrie, les hôtes tiers, les ressources statiques et les requêtes préalables (preflights) sont exclus au départ, et vous pouvez les réintégrer d'un clic. Flux transmet une valeur d'une réponse à une requête ultérieure, telle qu'un jeton de connexion, et Masquages liste les champs à l'allure de secrets marqués comme ne devant jamais être écrits.
Depuis la révision : Générer le test écrit la suite, Générer OpenAPI rédige un brouillon 3.1 avec types et codes de statut sans aucune valeur enregistrée, et Test de charge ouvre les appels sous forme de plan de charge.
Une dérive, telle que l'onglet Schéma l'interprète
APIT311 est un test de démonstration conçu délibérément pour dériver : une API en direct ne changeant pas sur demande, il alterne entre deux points de terminaison de catalogue lors d'exécutions successives, et sa deuxième exécution indique API_DRIFTED. Une dérive est la modification qu'un consommateur rencontre en production alors qu'une assertion sur le statut 200 continue de réussir.
Chaque test sur chaque identité, exécution après exécution.
Onglets pour le résumé, la fiabilité, la performance, l'API, les échecs, la couverture, la qualité, ainsi que les résultats unitaires et d'intégration.
Tendances par session, jour ou semaine : Régressé, Rétabli, Toujours défaillant, Plus lent. La matrice d'identité confronte chaque test à chaque navigateur et appareil.
Unitaires et intégration : importez du XML JUnit depuis Jest, Vitest, pytest, Maven ou gotestsum, conservés séparément des chiffres de bout en bout.
Risque, dans le Casier à preuves et dans la Patrouille : un classement selon la fréquence à laquelle un test bascule, échoue ou coûte du temps, où rien n'est qualifié d'instable en dessous de cinq exécutions, et un risque prédit par une régression logistique sur votre historique, avec un repli EWMA lorsque les données sont insuffisantes.
Comparaison de pixels par rapport aux images que vous avez approuvées. La première exécution avec --visual établit la référence et chaque exécution ultérieure est comparée à celle-ci. L'écran s'ouvre sur ce qui nécessite une décision : Pixels déplacés.
Chaque régression est une carte : le test, le point de contrôle, la proportion de pixels qui ont bougé par rapport à sa tolérance, « N sur M px », les dimensions, le nombre de zones modifiées, et une note lorsque la capture ne s'est jamais stabilisée. Les pixels de bordure remélangés par l'anticrénelage ne sont pas comptabilisés.
Vues Côte à côte, Balayage, Diff et Clignotement, ainsi que les exécutions précédentes du même point de contrôle : une régression est un fait, quatre d'affilée chacune un peu pire est une dérive de l'interface utilisateur, et quatre identiques indiquent un test enregistré face à un élément instable.
Les références sont conservées par navigateur et par plateforme. Approuver ce changement remplace uniquement l'image de ce point de contrôle ; Tout approuver s'applique à un changement qui en affecte plusieurs, tel qu'un en-tête global.
Paramètres sur le même écran, avec leurs valeurs par défaut : Comparer les pixels à chaque exécution désactivé, Tolérance pleine page 1.0%, Tolérance du point de contrôle d'élément 0.1%, Une régression fait échouer le test désactivé (la régression est enregistrée et le test reste SECURE ; activé, il indique BREACHED), et Masqué sur chaque photo (sélecteurs CSS) pour une horloge ou une publicité.
Classé par régression dans visual-regression : baseline.png, current.png, diff.png (rouge modifié, ambre anticrénelage ignoré, gris inchangé), visual-report.md et result.json, les 10 plus récents par test et point de contrôle à environ 1 Mo par ensemble.
Un point de contrôle sur un élément
nexus patrol TC01 --visual
# à l'intérieur du test : un élément au lieu de la page entière
Un point de contrôle d'élément est soumis au dixième de la tolérance requise pour une fenêtre d'affichage complète : restreindre la portée rend la vérification stricte sans transformer une horloge ou une publicité en échec. Utilisez-le lorsqu'un changement d'espacement, de couleur ou de mise en page pourrait dégrader une page pour laquelle chaque assertion réussit toujours. Masquez ce qui change délibérément au lieu d'augmenter la tolérance.
Executive Report
La qualité d'une version en un seul PDF, pour toute personne chargée de la valider.
Choisissez une période : depuis toujours, les 7, 30 ou 90 derniers jours, ou une plage personnalisée.
Une décision de mise en production : go, caution ou no-go, avec le niveau de confiance, la couverture et le taux de réussite.
Les échecs avec leur cause racine et leur impact métier, la stabilité par test, les résultats de sécurité, les tests d'API et la pyramide de qualité des résultats de bout en bout, d'intégration et unitaires.
Les recommandations proviennent de règles, et non d'une intelligence artificielle.
Stress et sécurité
Chaos Lab
Les tests de résilience, du navigateur au conteneur.
Pannes navigateur : latence Réseau (≈3G), une coupure hors ligne en cours de test, un bridage CPU 4x sur Chromium, ou tous à la fois, avec en plus une perte de paquets et une pression mémoire.
Infrastructure : enregistrez un conteneur Docker, ou l'application testée, puis mettez-le en pause, arrêtez-le, tuez-le ou redémarrez-le, avec ou sans test en cours d'exécution.
La récupération est mesurée par une sonde de santé toutes les 500 ms : temps de détection, temps de récupération, disponibilité. Le résultat indique RESILIENT, DEGRADED, NOT_RECOVERED ou NOT_INJECTED.
Uniquement les cibles enregistrées, jamais les propres conteneurs de Studio. La panne est consignée avant son déclenchement et toujours restaurée, et une réussite sans panne déclenchée n'est jamais qualifiée de résiliente.
Load
Concurrence, percentiles et verdict, issus du moteur lui-même.
Des threads de travail dans le moteur, sans outil de charge externe, et un rapport dans des fichiers statistics.json par étiquette.
Requêtes par seconde, p50, p90, p95 et p99, taux d'erreur et APDEX. Le verdict est PASS, OVER_BUDGET ou UNMEASURED.
Mesurer les Web Vitals sous charge : une vraie page Chromium échantillonnée avant, toutes les 15 secondes pendant, et après la charge, pour LCP, CLS, FCP, TTFB et TBT.
Elle ne s'arme qu'après que vous avez tapé AUTHORIZED, et une cible qui n'est pas cette machine demande à nouveau confirmation.
Sécurité
Exécute les contrôles de sécurité que vous configurez et consigne ce qu'il a trouvé, avec les preuves. Smart Monkey, le scanner DAST, se trouve sur l'écran Sécurité sous Lancer une analyse.
Smart Monkey analyse une cible que vous êtes autorisé à tester : XSS, injection SQL, contrôle d'accès défaillant, IDOR, SSRF, injection de commandes, traversée de chemin, injection de templates, XXE, redirections ouvertes, CORS, en-têtes de sécurité et attributs de cookies, entre autres.
Choisissez une phase ou exécutez-les toutes : pré-authentification, transit d'authentification, post-authentification, sondes HTTP (cookies, CORS, en-têtes, redirections, fichiers), ssrf, cmdi, xss-oob, sqli (aveugle, booléenne et basée sur le temps), idor, ou agent (découverte orchestrée et budgétée). Une ligne en langage clair explique celle que vous avez choisie.
La confirmation hors bande utilise un écouteur HTTP sur votre propre machine : chaque charge utile transporte un jeton aléatoire de 32 caractères, et les vulnérabilités SSRF, injection de commandes et XSS aveugle ne sont comptabilisées que lorsque la cible répond avec ce jeton. Il n'y a aucun rappel DNS ni service public tel qu'Interactsh ou Burp Collaborator, ainsi rien concernant votre cible n'est transmis à un tiers.
Autorisation de test : un hôte sans justification enregistrée est refusé avant l'envoi du moindre paquet, et les adresses privées et locales passent sans autorisation. Chaque analyse enregistre son autorisation, son opérateur, sa cible, son opération et une fenêtre de 60 minutes, scellés localement et jamais envoyés nulle part.
Chaque session classe un dossier par résultat avec audit_report.json, screenshot.png, replay.webm lorsque l'enregistrement a survécu, et un exécutable replay.mjs que nexus replay exécute sur le dossier du résultat. La racine de la session ajoute session_summary.json et results.sarif. Les 10 sessions les plus récentes sont conservées.
SARIF 2.1.0, un résultat par constatation : la règle correspond au CWE de la constatation, CRITICAL et HIGH indiquent une erreur, MEDIUM un avertissement, le reste une note, et l'emplacement correspond à l'URL sondée. GitHub code scanning et GitLab l'intègrent directement, et nexus monkey l'écrit sur un exécuteur CI sans le Studio.
Le dossier est horodaté en UTC et se termine par FAST_AUDIT ou DEEP_AUDIT. Une constatation est complète dans son propre dossier, elle peut donc être transmise à la personne qui la corrige avec sa capture d'écran, son enregistrement et le script qui la reproduit ; dans le coffre-fort de preuves, Archiver… conserve également ces éléments. Utilisez-le avant une version, sur une cible qui vous appartient ou que vous êtes autorisé à tester.
Settings
Contrôles qualité au sein d'une exécution
Activé par exécution dans Run patrol ou dans Settings. Chacun est consultatif jusqu'à ce que vous le rendiez strict, auquel cas il devient un verdict.
Accessibilité avec axe-core selon WCAG 2.1 AA, ainsi que la taille des zones tactiles sur les téléphones.
Web Vitals par rapport aux budgets (LCP 2,5 s, CLS 0,1, INP 200 ms, TTFB 800 ms), et un audit de chargement différé qui note de A à F la manière dont la page charge ses images.
Détection de blocage : un 403, un 429 ou une page de défi est lu comme BLOCKED. Les signaux d'automatisation sont masqués du site par défaut, et un seul commutateur permet de les désactiver.
Le mode strict transforme une interruption en A11Y_VIOLATION, PERFORMANCE_DEGRADED ou SECURITY_VIOLATION.
Timeouts
La durée pendant laquelle une étape Playwright peut attendre avant que l'exécution soit lue comme TIMEOUT. Quatre réglages dans Settings, sous Execution & Timeouts. Les valeurs ci-dessous sont les valeurs par défaut.
Settings · Execution & Timeouts
Action timeout (click, fill…)30000 msNEXUS_ACTION_TIMEOUT · every click, fill or wait on a locator
Assertion timeout10000 msNEXUS_EXPECT_TIMEOUT · how long an expect() keeps retrying
Page navigation timeout60000 msNEXUS_NAV_TIMEOUT · page.goto() and its redirects
Per-test hard timeout360 sNEXUS_TC_TIMEOUT · the whole test, six minutes
Une étape peut définir sa propre limite dans le code du test, comme en Playwright standard :
TC91 est un test de démonstration écrit intentionnellement contre l'ancien texte de lien de example.com, More information... ; la page indique désormais Learn more. Son clic a attendu les 30000 ms par défaut pour un lien qui n'existait plus, puis a été lu comme TIMEOUT. Une limite plus longue ne masque pas un élément défaillant : il échoue quand même, plus tard.
AI Providers
L'IA derrière l'analyse forensique des échecs et le triage des résultats de Smart Monkey.
Local uniquement est le réglage par défaut : un modèle sur cette machine via Ollama, sans basculement vers le cloud.
Auto, Anthropic ou OpenAI selon votre choix, et l'écran indique clairement quand les invites quittent votre réseau. Les clés sont en écriture seule.
Settings
Les commutateurs des autres écrans, en un seul endroit.
Intégrations : Jira, Xray, Azure DevOps, Slack et Telegram, chacune désactivée jusqu'à ce que vous l'activiez. Jira et Azure Boards conservent un ticket par test en échec : un échec (BREACHED, BREACHED_FLAKY ou CHAOS_BREACHED) ou un TIMEOUT l'ouvre, une répétition y ajoute un commentaire, un passage sans erreur le ferme. Jamais un blocage, un crash, un site inaccessible ou une erreur de configuration. Intégrations
Preuves et conservation : le nombre de rapports de bogues, de captures d'écran réussies et de sessions d'analyse que chaque test conserve.
Les sélecteurs et l'auto-réparation, la cadence adaptative selon la pression RAM, et les signaux d'automatisation affichés par le navigateur.
L'inventaire complet
19 fonctionnalités supplémentaires, en un coup d'œil
Nexus Recorder
Enregistrez un flux dans Playwright (JavaScript, TypeScript, Python, C#) ou Selenium (JavaScript, Python, Java, C#) : JavaScript et Python sur le bureau, mobile émulé ou un vrai téléphone Android, les autres sur le bureau ; ou enregistrez les appels API effectués par l'application. Aucune IA dans la boucle.
Test Adapter
Collez un test ou indiquez un dossier : Playwright ou Selenium en JavaScript, TypeScript ou Python. Il affiche le diff, conserve chaque assertion et répète le test avant qu'il soit comptabilisé.
Repair line
Depuis la ligne où un test a échoué : réenregistrez uniquement cette étape, ou remplacez le sélecteur, en commençant par le plus robuste et en finissant par XPath. L'ancienne version reste dans la chronologie du fichier.
Auto-réparation avec confirmation préalable
Après un échec, le Studio rejoue le test jusqu'à cette ligne en arrière-plan et prépare des sélecteurs candidats. L'exécution reste en rouge jusqu'à ce que vous en choisissiez un.
Santé des localisateurs et cartes de sélecteurs
Liste les localisateurs faibles du test ouvert et les répare en place. Une carte de sélecteurs analyse une page sans IA et évalue chaque sélecteur qu'elle trouve.
Watch
Relance une sélection toutes les 5 minutes à 24 heures, ou une fois à une date donnée, et n'envoie une alerte qu'en cas de changement d'état. L'exécution continue après la fermeture du Studio.
CI/CD, configuré à l'écran
Rédige le pipeline GitHub Actions ou GitLab CI, avec une régression nocturne, et le valide localement en premier. Pour le pipeline lui-même : un code de sortie strict et JUnit XML.
Feature flags
Exécute un test pour chaque variante activée et désactivée de vos indicateurs, et nomme la combinaison sous laquelle il échoue.
Pyramide de qualité
Importez du JUnit XML depuis Jest, Vitest, pytest, Maven ou gotestsum et visualisez les résultats unitaires et d'intégration aux côtés de vos exécutions de bout en bout.
Classement des risques et prédiction
Classe chaque test sur chaque identité selon la fréquence à laquelle il bascule, échoue ou consomme du temps. Une régression logistique sur votre propre historique ajoute un score de risque, avec un repli EWMA lorsque les données sont insuffisantes.
Régression visuelle
Comparez côte à côte, par balayage, différence ou clignotement par rapport aux références conservées par navigateur et plateforme, et approuvez une modification en un seul clic.
Accessibilité
Vérifications WCAG 2.1 AA avec axe-core, ainsi que la taille des zones tactiles sur les téléphones. Consultatif par défaut ; en mode strict, une rupture devient un A11Y_VIOLATION.
Web Vitals et chargement différé
LCP, CLS, INP, FCP, TTFB et TBT, activés par défaut et évalués par rapport aux budgets, ainsi qu'un audit de chargement différé qui note la façon dont la page charge ses images.
Détection de blocage
Un code 403, un 429 ou une page de défi bot est interprété comme BLOCKED, et non comme un échec de votre application, et ne crée jamais de ticket Jira.
Suites API
REST et GraphQL : statut, champs, types et budgets de latence, avec des verdicts qui leur sont propres ainsi que la requête, la réponse et le schéma déposés en tant que preuves.
Rapport exécutif
Un PDF avec une décision de mise en production (go, caution ou no-go), la couverture, la stabilité, les échecs par cause racine, les résultats de sécurité et des recommandations basées sur des règles.
Jira, Xray, Azure DevOps, Slack et Telegram
Jira et Azure Boards conservent un ticket par test en échec, avec sa capture d'écran jointe, et le ferment lorsque le test réussit. Xray et Azure Test Plans reçoivent les résultats de chaque exécution CI. Slack reçoit des alertes Block Kit, et Telegram reçoit les alertes d'un bot qui vous appartient, associé par QR code.
Docker et SSH
Le moteur exécute la même suite dans le conteneur runner sur la machine du Studio, ou via SSH sur un VPS dans la même image de conteneur, avec les mêmes verdicts. Chaque espace de travail choisit son environnement d'exécution. Via SSH, les éléments de preuve restent sur cet hôte jusqu'à ce que vous les récupériez.
Application de bureau
Nexus Studio pour Windows 11 x64, sur votre PC ou un mini PC doté de 16 Go de RAM ou plus : exécutions, preuves, appareils et historique dans une seule fenêtre.
Testez chaque écran sur votre propre application.
Gratuit pendant 30 jours, avec toutes les fonctionnalités, sur vos machines. Aucune carte requise.