Tutoriel · Extension

⚙️ Automatisation : les AUTOMATES de l'extension

Écrivez ou enregistrez un parcours dans une note Kalinotes, rejouez-le en un clic, et récupérez captures et résultats directement dans la note. Sans outil de test à installer.

⏱ ~10 min📶 Intermédiaire🧩 Extension

Pourquoi automatiser avec Kalinotes ?

Un AUTOMATE est un petit script placé dans le champ JavaScript d'une note. L'extension l'exécute sur la page : elle clique, remplit les formulaires, attend les réponses, lit les résultats et les range dans la note. Vos tests vivent ainsi au même endroit que vos retours.

⏺

Enregistrez sans coder

Cliquez sur ⏺, faites le parcours vous-même : l'extension écrit le script pour vous.

🔁

Rejouez à l'infini

Connexion, formulaire de contact, tunnel de commande : retestez le même parcours après chaque mise en ligne, en un clic.

📸

Des preuves dans la note

Captures d'écran et commentaires de résultat sont ajoutés automatiquement à la note qui porte le test.

🐞

Des bugs reproductibles

Le script décrit chaque étape exacte : votre développeur rejoue le bug au lieu de le deviner.

🧪

Une recette complète

« Run All » enchaîne tous les scripts d'une liste et rédige un compte-rendu avec statut et durée de chaque test.

🔌

Vos API dans la boucle

Appelez une API (GET ou POST), testez la réponse et adaptez la suite du script avec des conditions.

Démarrer en 3 étapes

1

Ouvrez ou créez une note

Depuis l'extension Kalinotes, sur la page que vous voulez tester. Enregistrez la note : c'est nécessaire pour que les captures et commentaires puissent s'y attacher.

2

Activez le mode AUTOMATE

Dans le champ JavaScript de la note, écrivez exactement cette première ligne :

#!AUTOMATE

Les boutons ⏺ (enregistrer) et ▶ (exécuter) apparaissent dans l'en-tête de la section. Le contenu n'est plus exécuté comme du JavaScript : il est lu commande par commande par le moteur AUTOMATE.

3

Exécutez

Cliquez sur ▶. Une console s'affiche en bas du formulaire et trace chaque étape en temps réel. Cliquez sur ⏹ pour arrêter le script en cours.

Enregistrer un parcours (Recorder)

Le bouton ⏺ observe vos actions sur la page et génère le script correspondant.

  1. Cliquez sur ⏺ : l'enregistrement démarre (le bouton devient ⏹ et clignote).
  2. Utilisez la page normalement : clics, saisies, listes déroulantes…
  3. Cliquez sur ⏹ : le script généré apparaît dans le champ.
Votre actionCommande générée
Clic sur un bouton ou un lienClickElement "sélecteur"
Saisie dans un champFillElement "sélecteur" "valeur"
Choix dans une liste déroulanteSelectOption "sélecteur" "valeur"
Envoi d'un formulaireSubmit "sélecteur"
Navigation vers une autre pageLoadUrl "url" + WaitUntilExist "body"
  • Recliquer sur ⏺ ajoute les nouvelles actions à la suite du script, sans rien effacer.
  • Les mots de passe sont masqués ("***") avec un commentaire vous invitant à les remplacer.
  • Une courte pause (Sleep) est insérée après chaque clic : 300 ms, ou 1 000 ms après un lien ou un bouton d'envoi.
  • Si la page change pendant l'enregistrement, recliquez sur ⏺ pour continuer sur la nouvelle page.
  • Le script obtenu est un point de départ : ajustez si besoin les sélecteurs, les temps d'attente et ajoutez vos conditions.

Syntaxe et variables

#!AUTOMATE # Ceci est un commentaire (ignoré) COMMANDE argument1 "argument avec espaces" $VARIABLE
  • Une commande par ligne. Les lignes vides et celles qui commencent par # sont ignorées.
  • Les arguments qui contiennent des espaces se mettent entre guillemets "..." ou '...'.
  • Pour un sélecteur CSS qui contient des guillemets doubles, utilisez des guillemets simples : '[name="email"]'.
  • Les noms de commandes ne tiennent pas compte des majuscules : LoadUrl = LOADURL.
  • Les variables commencent par $, sont communes à tout le script et sont remplacées dans tous les arguments avant chaque commande.
  • La variable réservée $__SCREENSHOT__ contient la dernière capture prise par CopyPage quand la note n'est pas enregistrée.
SetVal $NOM "Dupont" FillElement "#champ-nom" $NOM

Les commandes

Les sélecteurs sont des sélecteurs CSS (#id, .classe, [name="..."]…) : la commande agit sur le premier élément trouvé.

CommandeRôle
SetVal $VAR "valeur"Affecte une valeur littérale à une variable
Input $VAR "Message"Affiche une boîte de saisie et stocke la réponse dans la variable
Wget $VAR "url"Charge le contenu texte d'une URL (HTTP GET, sans authentification) dans une variable
WPost $VAR "url" "cle=valeur" ...Envoie une requête HTTP POST et stocke le corps de la réponse dans la variable
LoadUrl "url"Ouvre l'URL dans l'onglet actif et attend la fin du chargement (15 s maximum)
Sleep msMet le script en pause pendant le nombre de millisecondes indiqué
ScrollTo "sélecteur"Fait défiler la page pour centrer l'élément à l'écran
ClickElement "sélecteur"Simule un clic sur le premier élément qui correspond au sélecteur CSS
FillElement "sélecteur" "valeur"Remplit un champ (input, textarea) et déclenche les événements input et change, pour fonctionner aussi avec React, Vue…
SelectOption "sélecteur" "valeur"Choisit une option d'une liste déroulante <select> par sa valeur (attribut value) et déclenche l'événement change
Submit "sélecteur"Soumet le formulaire ciblé, ou le formulaire parent de l'élément ciblé, en respectant la validation HTML5
KeyPress "sélecteur" "touche"Simule l'appui d'une touche sur l'élément (keydown, keypress, keyup)
CopyElement "sélecteur" $VARLit la valeur (champ) ou le texte du premier élément trouvé et le stocke dans la variable
WaitUntilExist "sélecteur"Attend que l'élément apparaisse dans la page (vérification toutes les 200 ms, 10 s maximum)
WaitUntilNoExist "sélecteur"Attend que l'élément disparaisse de la page (toutes les 200 ms, 10 s maximum)
CopyPagePrend une capture de la partie visible de l'onglet
CreateComment "texte" [$VAR ...]Ajoute un commentaire à la note qui contient le script
Alert "message" [$VAR ...]Affiche une notification flottante dans la page, qui disparaît après 10 secondes ou au clic, avec une barre de progression
If $VAR OPÉRATEUR "valeur" GOTO :labelSaute vers un label si la condition est vraie
:labelDéfinit un point de saut pour les commandes If … GOTO
StopArrête le script immédiatement, sans erreur
# commentaireLigne ignorée par le moteur, pour documenter votre script

Variables & saisie

SetVal $VAR "valeur"

Affecte une valeur littérale à une variable.

SetVal $URL "https://example.com" SetVal $COMPTEUR "0"

Input $VAR "Message"

Affiche une boîte de saisie et stocke la réponse dans la variable. Pratique pour demander un identifiant au lancement plutôt que de l'écrire dans le script.

Input $PRENOM "Entrez votre prénom :"

Requêtes HTTP

Wget $VAR "url"

Charge le contenu texte d'une URL (HTTP GET, sans authentification) dans une variable.

Wget $HTML "https://api.example.com/data.json"

WPost $VAR "url" "cle=valeur" ...

Envoie une requête HTTP POST et stocke le corps de la réponse dans la variable. Avec des paires clé=valeur, l'envoi se fait en formulaire (application/x-www-form-urlencoded) ; avec un argument unique qui commence par {, en JSON (application/json). Les variables $NOM sont remplacées partout, y compris dans le JSON. Une erreur HTTP (code ≥ 400) arrête le script.

WPost $REPONSE "https://api.example.com/submit" "nom=$NOM" "email=$EMAIL" WPost $REPONSE "https://api.example.com/submit" '{"nom":"$NOM","email":"$EMAIL"}'

Navigation & temps

LoadUrl "url"

Ouvre l'URL dans l'onglet actif et attend la fin du chargement (15 s maximum).

LoadUrl "https://example.com/login" LoadUrl $URL

Sleep ms

Met le script en pause pendant le nombre de millisecondes indiqué.

Sleep 500 Sleep 2000

ScrollTo "sélecteur"

Fait défiler la page pour centrer l'élément à l'écran. Utile pour révéler un contenu chargé au défilement (lazy load).

ScrollTo "#section-resultats" ScrollTo "footer"

Interactions avec la page

ClickElement "sélecteur"

Simule un clic sur le premier élément qui correspond au sélecteur CSS.

ClickElement "#btn-connexion" ClickElement "form button[type=submit]"

FillElement "sélecteur" "valeur"

Remplit un champ (input, textarea) et déclenche les événements input et change, pour fonctionner aussi avec React, Vue, etc.

FillElement "#email" "contact@example.com" FillElement "#password" $MOT_DE_PASSE FillElement '[name="search"]' $TERME

SelectOption "sélecteur" "valeur"

Choisit une option d'une liste déroulante <select> par sa valeur (attribut value) et déclenche l'événement change.

SelectOption "#pays" "FR" SelectOption '[name="civilite"]' "M"

Submit "sélecteur"

Soumet le formulaire ciblé, ou le formulaire parent de l'élément ciblé, en respectant la validation HTML5.

Submit "#form-login" Submit "form"

KeyPress "sélecteur" "touche"

Simule l'appui d'une touche sur l'élément (keydown, keypress, keyup). Touches courantes : Enter, Escape, Tab, ArrowDown, ArrowUp, Space, Backspace.

KeyPress "#search-input" "Enter" KeyPress "#modal" "Escape"

Lecture & attente

CopyElement "sélecteur" $VAR

Lit la valeur (champ) ou le texte du premier élément trouvé et le stocke dans la variable.

CopyElement "#resultat" $TEXTE CopyElement "input#token" $TOKEN

WaitUntilExist "sélecteur"

Attend que l'élément apparaisse dans la page (vérification toutes les 200 ms, 10 s maximum). Le script s'arrête en erreur si le délai est dépassé.

WaitUntilExist "#dashboard" WaitUntilExist ".alert-success"

WaitUntilNoExist "sélecteur"

Attend que l'élément disparaisse de la page (toutes les 200 ms, 10 s maximum). Idéal pour attendre la fin d'un chargement.

WaitUntilNoExist ".spinner" WaitUntilNoExist "#modal-chargement"

Résultats dans Kalinotes

CopyPage

Prend une capture de la partie visible de l'onglet. Si la note est enregistrée, la capture lui est attachée ; sinon elle est gardée dans la variable réservée $__SCREENSHOT__.

CopyPage

CreateComment "texte" [$VAR ...]

Ajoute un commentaire à la note qui contient le script. Les arguments sont mis bout à bout avec un espace. La note doit être enregistrée.

CreateComment "Résultat du test :" $VALEUR

Alert "message" [$VAR ...]

Affiche une notification flottante dans la page, qui disparaît après 10 secondes ou au clic, avec une barre de progression.

Alert "Connexion réussie !" Alert "Nombre de courriers : " $COUNTER

Logique du script

If $VAR OPÉRATEUR "valeur" GOTO :label

Saute vers un label si la condition est vraie. Opérateurs : == et != (comparaison de texte), >, <, >=, <= (comparaison de nombres).

If $STATUT == "ok" GOTO :succes If $SCORE > "90" GOTO :excellent

:label

Définit un point de saut pour les commandes If … GOTO.

:succes CreateComment "Test réussi"

Stop

Arrête le script immédiatement, sans erreur. Utile pour sortir d'une branche conditionnelle.

If $CODE != "200" GOTO :erreur Stop :erreur Alert "Erreur HTTP : " $CODE

# commentaire

Ligne ignorée par le moteur, pour documenter votre script.

# Étape 1 : connexion

Enchaîner les tests : Run All

Dès qu'au moins un script AUTOMATE est visible dans la liste des notes, un bouton Run All (N) apparaît en haut de la liste. Il exécute tous les scripts dans l'ordre d'affichage.

  • Les variables sont partagées : ce qu'un script stocke dans $MA_VAR est disponible pour les suivants.
  • Si un script échoue, la séquence continue avec le suivant.
  • Un clic sur ✕ dans la console flottante annule la séquence.
  • À la fin, la note 📊 Résultat AUTOMATE est créée si besoin (avec l'URL de la page active) et reçoit un commentaire de compte-rendu : date et heure, statut ✅ / ❌ et durée de chaque script, bilan global, et les variables publiques (les variables internes, préfixées __, sont exclues).

Exemples

Tester une connexion

#!AUTOMATE # Script de test de connexion automatique Input $LOGIN "Identifiant :" Input $PASSWORD "Mot de passe :" LoadUrl "https://example.com/login" WaitUntilExist "#form-login" FillElement "#username" $LOGIN FillElement "#password" $PASSWORD ClickElement "#btn-submit" WaitUntilNoExist ".spinner" WaitUntilExist "#dashboard" CopyElement "#user-name" $NOM CopyPage CreateComment "Connexion réussie pour" $NOM

Envoyer des données à une API

#!AUTOMATE # Envoi d'un formulaire via API REST avec saisie utilisateur SetVal $API "https://api.example.com" Input $NOM "Votre nom :" Input $EMAIL "Votre e-mail :" Input $MESSAGE "Votre message :" # Mode formulaire : les variables sont remplacées automatiquement WPost $REP "$API/contact" "nom=$NOM" "email=$EMAIL" "message=$MESSAGE" Alert "Réponse API :" $REP # Mode JSON : les variables sont remplacées dans la chaîne SetVal $ACTION "inscription" WPost $REP2 "$API/users" '{"action":"$ACTION","nom":"$NOM","email":"$EMAIL"}' Alert "Réponse JSON :" $REP2

Limites à connaître

  • Input utilise la boîte de saisie du navigateur : à éviter dans un onglet Firefox en mode kiosque.
  • Wget et WPost respectent les règles CORS du navigateur : certaines API externes peuvent refuser la requête.
  • LoadUrl attend le chargement de la page, pas forcément la fin des scripts asynchrones : ajoutez un Sleep ou un WaitUntilExist si besoin.
  • Un script est limité à 2 000 instructions par exécution, pour éviter les boucles infinies.
  • Le Recorder produit des scripts linéaires : les conditions (If, labels) s'ajoutent à la main.
  • CopyPage (pièce jointe) et CreateComment demandent une note enregistrée.

→ Aller plus loin : les macros d'audit automatiques

Convaincu ? Lancez-vous.

Installez l'extension, créez une note et écrivez #!AUTOMATE : votre premier test tourne en quelques minutes.

1Installez l'extensionChrome, Firefox ou Edge
2Enregistrez votre parcoursAvec le bouton ⏺ d'une note