Skip to main content
Référence des utilitaires, modèles et règles de lint pour les tests des plugins OpenClaw.
Vous cherchez des exemples de tests ? Les guides pratiques comprennent des exemples de tests détaillés : Tests des plugins de canal et Tests des plugins de fournisseur.

Utilitaires de test

Ces sous-chemins sont des points d’entrée de code source locaux au dépôt pour les tests des plugins intégrés d’OpenClaw. Ce ne sont pas des exports package.json publiés pour les plugins tiers, et ils peuvent importer Vitest ou d’autres dépendances de test propres au dépôt.
Utilisez ces sous-chemins ciblés pour les tests des plugins intégrés. L’ancien baril openclaw/plugin-sdk/testing, local au dépôt, était exclu des paquets distribués et a été supprimé. L’alias historique openclaw/plugin-sdk/test-utils reste local au dépôt ; pnpm run lint:plugins:no-extension-test-core-imports (scripts/check-no-extension-test-core-imports.ts) rejette les nouveaux imports de cet alias dans les tests d’extensions.

Exports disponibles

Les suites de contrats des plugins intégrés utilisent également ces sous-chemins de test du SDK pour les utilitaires de fixtures de registre, de manifeste, d’artefacts publics et d’environnement d’exécution réservés aux tests. Les suites propres au cœur qui dépendent de l’inventaire OpenClaw intégré restent sous src/plugins/contracts à la place.

Types

Les sous-chemins de test ciblés réexportent également des types utiles dans les fichiers de test :

Test de la résolution des cibles

Utilisez installCommonResolveTargetErrorCases pour ajouter les cas d’erreur standard de résolution des cibles de canal :

Modèles de test

Test des contrats d’enregistrement

Les tests unitaires qui transmettent une simulation api écrite manuellement à register(api) ne font pas intervenir les contrôles d’acceptation du chargeur d’OpenClaw. Ajoutez au moins un test de bon fonctionnement adossé au chargeur pour chaque surface d’enregistrement dont dépend votre plugin, en particulier les hooks et les capacités exclusives telles que la mémoire. Le véritable chargeur fait échouer l’enregistrement du plugin lorsque des métadonnées requises sont absentes ou qu’un plugin appelle une API de capacité dont il n’est pas propriétaire. Par exemple, api.registerHook(...) exige un nom de hook, et api.registerMemoryCapability(...) exige que le manifeste du plugin ou l’entrée exportée déclare kind: "memory".

Test de l’accès à la configuration d’exécution

Privilégiez la simulation partagée de l’environnement d’exécution du plugin provenant de openclaw/plugin-sdk/plugin-test-runtime. Ses simulations runtime.config.loadConfig() et runtime.config.writeConfigFile(...) lèvent une exception par défaut afin que les tests détectent toute nouvelle utilisation des API de compatibilité obsolètes. Ne remplacez ces simulations que lorsque le test porte explicitement sur un comportement de compatibilité hérité.

Test unitaire d’un plugin de canal

Test unitaire d’un plugin de fournisseur

Simulation de l’environnement d’exécution du plugin

Pour le code qui utilise createPluginRuntimeStore, simulez l’environnement d’exécution dans les tests :

Tests avec des substituts propres à chaque instance

Privilégiez les substituts propres à chaque instance plutôt que la modification du prototype :

Tests de contrat (plugins du dépôt)

Les plugins intégrés disposent de tests de contrat qui vérifient la propriété des enregistrements :
Ces tests vérifient :
  • Quels plugins enregistrent quels fournisseurs
  • Quels plugins enregistrent quels fournisseurs de synthèse vocale
  • La conformité de la structure d’enregistrement
  • Le respect du contrat d’exécution

Exécution de tests ciblés

Pour un plugin spécifique :
Pour les tests de contrat uniquement :

Application des règles de lint (plugins du dépôt)

scripts/run-additional-boundary-checks.mjs exécute un ensemble de contrôles lint:plugins:* des frontières d’importation dans l’intégration continue ; chacun peut également être exécuté séparément en local : Les plugins externes ne sont pas soumis à ces règles de lint, mais il est recommandé de suivre les mêmes modèles.

Configuration des tests

OpenClaw utilise Vitest 4 avec des rapports informatifs de couverture V8. Pour les tests de plugins :
Si les exécutions locales provoquent une pression sur la mémoire :

Voir aussi