Snippets
Ce que sont les Snippets
Section intitulée « Ce que sont les Snippets »Les Snippets sont des morceaux de JavaScript réutilisables que vous définissez une fois et importez dans vos scripts de contrôle avec require(). Au lieu de coller la même fonction utilitaire, la même logique de signature de jeton ou le même code d'initialisation dans chaque contrôle, vous l'enregistrez en tant que snippet et l'importez par son nom : modifiez-le à un seul endroit et chaque contrôle qui l'utilise reprend la modification.
Un snippet est simplement un petit module JavaScript. Tout ce qu'il exporte avec module.exports devient disponible partout où vous l'importez :
require('./snippets/name');Les snippets sont rattachés à votre équipe, afin que tout le monde dans l'équipe puisse importer les mêmes utilitaires depuis ses contrôles.
Les snippets fonctionnent dans les scripts de setup, de teardown, navigateur et multistep. Quand LoadFocus exécute un contrôle, il trouve chaque require('./snippets/<name>') dans vos scripts et envoie ces snippets avec l'exécution. Un snippet peut utiliser les mêmes modules npm qu'un script (par exemple axios, got et crypto).
Gérer les Snippets
Section intitulée « Gérer les Snippets »Ouvrez la page Snippets pour créer, modifier et supprimer des snippets.
Créer un Snippet
Section intitulée « Créer un Snippet »- Cliquez sur New Snippet.
- Saisissez un nom de snippet. C'est le nom que vous importerez dans vos scripts (par exemple
authouformat-date). Les noms ne peuvent contenir que des lettres, des chiffres, des traits d'union et des traits de soulignement. - Écrivez votre JavaScript dans l'éditeur. Exportez ce que vous souhaitez réutiliser avec
module.exports. - Cliquez sur Save Snippet.
Chaque nom de snippet doit être unique au sein de votre équipe et peut compter jusqu'à 64 caractères. Le forfait Free inclut jusqu'à 5 snippets ; les forfaits payants, jusqu'à 100. Un snippet peut compter jusqu'à 100 000 caractères.
Modifier ou supprimer un Snippet
Section intitulée « Modifier ou supprimer un Snippet »Utilisez les actions de ligne sur la page Snippets pour mettre à jour le code d'un snippet ou le supprimer. Si un snippet est actuellement utilisé par un ou plusieurs contrôles, LoadFocus vous avertit avant l'enregistrement ou la suppression, car la modification affecte chaque contrôle qui l'importe. Une mise à jour prend effet à la prochaine exécution de tout contrôle qui l'utilise.
Utiliser un Snippet dans un script de contrôle
Section intitulée « Utiliser un Snippet dans un script de contrôle »Importez un snippet par son nom depuis le chemin ./snippets/ à l'intérieur d'un script de contrôle :
const auth = require('./snippets/auth');La valeur obtenue correspond exactement à ce que le snippet exporte.
Un script de setup ou de teardown est déjà le corps d'une fonction : écrivez-y des instructions simples et n'ajoutez pas module.exports au script lui-même.
Créez un snippet nommé auth qui construit un en-tête Authorization :
// snippet: authmodule.exports = function bearer(token) { return { Authorization: 'Bearer ' + token };};Utilisez-le ensuite depuis un script de contrôle :
const bearer = require('./snippets/auth');
const headers = bearer(token);// `token` est une valeur que votre script possède déjà, par exemple un secret// transmettez `headers` à votre requêteVous pouvez placer n'importe quelle logique réutilisable dans un snippet : signature de requêtes, constructeurs de payload, utilitaires de dates et de chaînes, ou assertions partagées, et l'importer depuis autant de contrôles que nécessaire.
Exemple : connexion depuis un script de setup
Section intitulée « Exemple : connexion depuis un script de setup »Un snippet peut aussi travailler avec ctx. Ce snippet, nommé login, récupère un jeton et le stocke dans ctx.vars.token pour que le contrôle puisse le lire :
// Snippet: loginconst axios = require('axios');
module.exports = async function login(ctx, username, password) { const res = await axios.post('https://api.example.com/auth', { username, password }); ctx.vars.token = res.data.token;};Passez les identifiants en arguments : une référence ctx.secrets écrite uniquement dans un snippet n'est pas résolue pour l'exécution. Dans un script de setup d'un contrôle navigateur :
const login = require('./snippets/login');
await login(ctx, 'ci-user', ctx.secrets.PASSWORD);// ctx.vars.token est maintenant disponible pour le contrôleLes scripts des contrôles d'API reçoivent request (setup) ou request et response (teardown) à la place de ctx : passez-les à la fonction de votre snippet.
Notes et limitations
Section intitulée « Notes et limitations »- Chemin littéral uniquement. Seule la forme
require('./snippets/<name>')est résolue. Les chemins dynamiques tels querequire('./snippets/' + name)ne sont pas pris en charge. - Pas de snippet dans un snippet. Un snippet qui en inclut un autre n'est pas résolu. Regroupez la logique partagée dans un seul snippet.
- Un snippet manquant échoue immédiatement. Si un snippet requis n'existe pas, l'exécution du contrôle échoue avant d'être envoyée, avec une erreur qui nomme le snippet manquant.
- Bac à sable partagé. Les snippets s'exécutent dans le même bac à sable que le script appelant. Un snippet ne voit
ctx,requestouresponseque si votre script le lui passe.
Snippets, Variables et Secrets
Section intitulée « Snippets, Variables et Secrets »Utilisez les Snippets pour du code réutilisable : fonctions utilitaires et logique partagées entre les scripts de contrôle.
Utilisez les Variables pour des valeurs réutilisables comme les URL de base et les identifiants de compte, référencées avec ${{VARIABLE_NAME}}.
Utilisez les Secrets pour des valeurs sensibles comme les jetons d'API et les mots de passe. Les secrets sont en écriture seule dans l'interface et se référencent avec ${{SECRET_NAME}}.
Astuce : conservez les valeurs sensibles dans les Secrets, sans les coder en dur dans un snippet. Transmettez-les plutôt aux fonctions de votre snippet à l'exécution.