Vérifier que toutes les fonctionnalités TypeScript workflows fonctionnent correctement après l'implémentation des phases 5 et 6.
- 1. Base de connaissances Skills - Index & Recherche
- 2. Conversion à la volée (Workflows JSON → TS)
- 2.5. Documentation TypeScript pour l'IA (Skills)
- 3. CLI convert - Reverse (TS → JSON)
- 4. CLI convert - Batch
- 5. Skills validate - TypeScript workflow
- 6. Sync package - .workflow.ts files
- 7. Documentation - Docusaurus build
- 8. End-to-end workflow
Objectif: Vérifier que la base de connaissances (index) est accessible et que la CLI peut trouver des workflows.
-
Vérifier l'existence et la taille de l'index:
cd /home/etienne/repos/n8n-as-code ls -lh packages/skills/src/assets/workflows-index.json✅ Attendu: Fichier existe (> 5MB). Note: L'index contient les métadonnées JSON brut (source n8n.io). La conversion TypeScript se fait à la volée lors de l'installation/utilisation.
-
Inspecter le contenu (Métadonnées):
cd packages/skills node -p "require('./src/assets/workflows-index.json').totalWorkflows"
✅ Attendu: > 7000 workflows.
-
Tester la recherche via CLI (n8n-as-code/skills):
# Utiliser le shim ou le build direct cd packages/skills npm run build node dist/cli.js search "google sheets"
✅ Attendu: Liste de workflows avec IDs et noms.
- ✅ L'index est généré et contient > 7000 entrées.
- ✅ La CLI peut lire l'index et effectuer une recherche.
Objectif: Vérifier que la conversion JSON → TypeScript fonctionne "à la volée" (On-Demand).
-
Convertir un fichier local (JSON → TS):
cd packages/cli npm run build # Convertir l'exemple social-post-assistant node dist/index.js convert ../../generated-workflows-examples/social-post-assistant.json --output ./social-post.ts
✅ Attendu:
- Message de succès.
- Fichier
./social-post.tscréé.
-
Vérifier le fichier converti:
head -n 20 ./social-post.ts grep "import { workflow" ./social-post.ts✅ Attendu:
- Contenu TypeScript valide.
- Imports corrects.
-
(Optionnel) Convertir un workflow distant (via ID) - Testé avec ID 5424:
cd packages/skills node dist/cli.js workflows install 5424 --typescript --output /tmp/workflow-remote.ts✅ Attendu: Téléchargement et conversion réussie.
- ✅ Conversion locale fonctionnelle (JSON -> TS).
- ✅ Conversion distante fonctionnelle (ID -> TS).
Objectif: Vérifier que toutes les commandes de documentation retournent du TypeScript pour l'agent IA.
-
Tester la commande
schema(Snippet rapide):cd packages/skills node dist/cli.js schema googleSheets✅ Attendu:
- Code TypeScript avec décorateur
@node() - Paramètres avec valeurs par défaut et types
- Import de
@n8n-as-code/transformer
- Code TypeScript avec décorateur
-
Tester la commande
get(Documentation complète):node dist/cli.js get googleSheets
✅ Attendu:
- Interface TypeScript des paramètres
- Exemple de code complet avec décorateur
- Commentaires JSDoc avec mots-clés et opérations
-
Tester la commande
search(Résultats formatés):node dist/cli.js search "http request"✅ Attendu:
- Snippets TypeScript pour les nœuds trouvés
- Section séparée pour la documentation
- Format prêt à copier-coller
-
Vérifier le format JSON (fallback):
node dist/cli.js schema googleSheets --json node dist/cli.js get googleSheets --json node dist/cli.js search "http request" --json✅ Attendu: Sortie JSON (pour compatibilité legacy ou parsing)
- ✅ Commande
schemaretourne du TypeScript par défaut - ✅ Commande
getgénère interface + exemple de code - ✅ Commande
searchformate les résultats en TypeScript - ✅ Option
--jsondisponible pour compatibilité legacy
Objectif: Convertir un workflow TypeScript → JSON
-
Convertir TypeScript → JSON:
cd packages/cli node dist/index.js convert /tmp/test-workflow.ts -o /tmp/test-workflow-back.json✅ Attendu: Message de succès
-
Vérifier le contenu JSON:
head -30 /tmp/test-workflow-back.json jq '.id, .name, .nodes | length' /tmp/test-workflow-back.json✅ Attendu:
- JSON valide
- ID et name présents
- Nombre de nodes correct
-
Comparer avec l'original (structure):
jq 'keys | sort' generated-workflows-examples/social-post-assistant.json > /tmp/original-keys.txt jq 'keys | sort' /tmp/test-workflow-back.json > /tmp/converted-keys.txt diff /tmp/original-keys.txt /tmp/converted-keys.txt
✅ Attendu: Mêmes clés principales (nodes, connections, settings, etc.)
- ✅ JSON valide généré
- ✅ Structure préservée
- ✅ Données cohérentes
Objectif: Convertir un répertoire entier
-
Préparer un répertoire de test:
mkdir -p /tmp/batch-test cp generated-workflows-examples/social-post-assistant.json /tmp/batch-test/ ls /tmp/batch-test/
-
Conversion batch JSON → TypeScript:
cd packages/cli node dist/index.js convert-batch /tmp/batch-test --format typescript✅ Attendu:
- Message "Found X file(s) to convert"
- Message de succès pour chaque fichier
- Summary: "Converted: X"
-
Vérifier les fichiers générés:
ls -lh /tmp/batch-test/
✅ Attendu:
- Fichier
.workflow.tscréé - Fichier
.jsontoujours présent
- Fichier
-
Conversion batch TypeScript → JSON:
rm /tmp/batch-test/*.json node dist/index.js convert-batch /tmp/batch-test --format json ls -lh /tmp/batch-test/✅ Attendu: Fichiers JSON recréés
- ✅ Batch conversion fonctionne
- ✅ Plusieurs fichiers traités correctement
- ✅ Bidirectionnel (TS→JSON et JSON→TS)
Objectif: Valider un workflow TypeScript avec n8nac-skills
-
Valider le workflow TypeScript généré:
cd packages/skills npm run build node dist/cli.js validate /tmp/test-workflow.ts✅ Attendu:
- Message de succès ou liste des erreurs
- Pas d'erreur de parsing TypeScript
-
Valider un workflow JSON (pour comparaison):
node dist/cli.js validate ../../generated-workflows-examples/social-post-assistant.json
✅ Attendu: Même type de validation
- ✅ Validation TypeScript fonctionne
- ✅ Détecte les erreurs correctement
Objectif: Télécharger un workflow au format TypeScript
-
Chercher un workflow intéressant:
cd packages/skills node dist/cli.js workflows search "chatbot" --limit 3
-
Installer en TypeScript:
node dist/cli.js workflows install <ID> --typescript -o /tmp/downloaded-workflow.ts
✅ Attendu:
- Workflow téléchargé
- Format TypeScript
- Fichier
.workflow.tscréé
-
Vérifier le contenu:
head -50 /tmp/downloaded-workflow.ts
✅ Attendu: Code TypeScript valide avec décorateurs
- ✅ Download + conversion automatique fonctionne
- ✅ Flag --typescript respecté
Objectif: Vérifier que le sync fonctionne avec les fichiers TypeScript
-
Vérifier les tests unitaires passent:
cd packages/sync npm run test:unit✅ Attendu: 28/28 tests passing
-
Créer un workflow TypeScript dans un dossier de test:
mkdir -p /tmp/sync-test cp /tmp/test-workflow.ts /tmp/sync-test/my-workflow.workflow.ts
-
Tester la lecture du workflow:
cd packages/sync node -e " const { WorkflowTransformerAdapter } = require('./dist/services/workflow-transformer-adapter.js'); const fs = require('fs'); const tsCode = fs.readFileSync('/tmp/sync-test/my-workflow.workflow.ts', 'utf8'); WorkflowTransformerAdapter.compileToJson(tsCode).then(json => { console.log('ID:', json.id); console.log('Name:', json.name); console.log('Nodes:', json.nodes.length); }); "
✅ Attendu: Affichage des métadonnées du workflow
- ✅ Tests unitaires passent
- ✅ Lecture TypeScript fonctionne
- ✅ Hash computation fonctionne
Objectif: Vérifier que la documentation se construit et affiche correctement
-
Build de la documentation:
cd docs npm run build✅ Attendu: Build réussit sans erreurs
-
Vérifier que la page TypeScript est générée:
ls -lh build/docs/usage/typescript-workflows/index.html
✅ Attendu: Fichier HTML existe
-
Vérifier le sidebar:
grep -A5 "TypeScript" build/docs/usage/index.html✅ Attendu: Lien vers la page TypeScript workflows
-
Servir localement (optionnel):
npm run serve # Ouvrir http://localhost:3000/n8n-as-code/docs/usage/typescript-workflows✅ Attendu: Page accessible et bien formatée
- ✅ Documentation build sans erreur
- ✅ Page TypeScript accessible
- ✅ Navigation sidebar correcte
Objectif: Test complet du cycle de vie d'un workflow
# 1. Partir d'un workflow JSON
cd /home/etienne/repos/n8n-as-code
cp generated-workflows-examples/social-post-assistant.json /tmp/e2e-test.json
# 2. Convertir en TypeScript
cd packages/cli
node dist/index.js convert /tmp/e2e-test.json -o /tmp/e2e-test.ts
# 3. Valider le TypeScript
cd ../skills
node dist/cli.js validate /tmp/e2e-test.ts
# 4. Modifier le workflow TypeScript (changement manuel)
# Éditer /tmp/e2e-test.ts et changer le nom du workflow
# 5. Re-convertir en JSON
cd ../cli
node dist/index.js convert /tmp/e2e-test.ts -o /tmp/e2e-test-modified.json
# 6. Vérifier que la modification est présente
jq '.name' /tmp/e2e-test-modified.json
# 7. Calculer le hash (pour sync)
cd ../sync
node -e "
const { WorkflowTransformerAdapter } = require('./dist/services/workflow-transformer-adapter.js');
const fs = require('fs');
const tsCode = fs.readFileSync('/tmp/e2e-test.ts', 'utf8');
WorkflowTransformerAdapter.hashWorkflow(tsCode).then(hash => {
console.log('Hash:', hash);
});
"- ✅ Cycle complet JSON→TS→modification→JSON fonctionne
- ✅ Modifications préservées
- ✅ Hash calculable
| # | Test | Statut | Notes |
|---|---|---|---|
| 1 | Base connaissances Skills | ⏳ | À tester |
| 2 | CLI convert single | ⏳ | À tester |
| 3 | CLI convert reverse | ⏳ | À tester |
| 4 | CLI convert batch | ⏳ | À tester |
| 5 | Skills validate TS | ⏳ | À tester |
| 6 | Skills install --typescript | ⏳ | À tester |
| 7 | Sync .workflow.ts | ⏳ | À tester |
| 8 | Docs Docusaurus | ⏳ | À tester |
| 9 | End-to-end workflow | ⏳ | À tester |
(Section à remplir pendant les tests)
- Description:
- Reproduction:
- Fix:
Une fois tous les tests passés, vérifier:
- Tous les tests automatiques passent (79/79)
- Tous les tests manuels passés
- Documentation à jour
- README mis à jour
- Pas de régression sur fonctionnalités existantes