Skip to content

Atomic

Low-level primitives: file I/O, git, HTTP, shell, SSH, process management, and testing.

44 modules

ModuleDescription
Filtrer le tableauFiltrer les elements d'un tableau par condition
Trier le tableauTrier les elements d'un tableau par ordre croissant ou decroissant
Tableau uniqueSupprimer les valeurs en double d'un tableau
OAuth2 Token ExchangeExchange authorization code, refresh token, or client credentials for an access token
Recherche DNSRecherche DNS pour les enregistrements de domaine
Différence de TexteGénérer une différence entre deux chaînes de texte
Éditer le FichierRemplacer du texte dans un fichier en utilisant une correspondance exacte
Verifier l'existence du fichierVerifier si un fichier ou dossier existe
Lire le fichierLire le contenu d'un fichier
Ecrire le fichierEcrire du contenu dans un fichier
Cloner avec GitCloner un dépôt git
Commit avec GitCréer un commit git
Diff avec GitObtenir le diff git
HTTP PaginateAutomatically iterate through paginated API endpoints and collect all results
Requete HTTPEnvoyer une requete HTTP et recevoir une reponse
Affirmer la reponse HTTPAffirmer et valider les proprietes de reponse HTTP
HTTP SessionSend a sequence of HTTP requests with persistent cookies (login → action → logout)
Webhook WaitStart a temporary server and wait for an incoming webhook callback
Chat LLMInteragir avec les APIs LLM pour des operations intelligentes
Correction de code IAGenerer automatiquement des corrections de code basees sur les problemes
CalculerEffectuer des operations mathematiques de base
Vérification de santé HTTPVérification de santé HTTP / moniteur de disponibilité
Verifier le portVerifier si le(s) port(s) reseau sont ouverts ou fermes
Attendre le portAttendre qu'un port reseau devienne disponible
Lister les processusLister tous les processus en arriere-plan en cours d'execution
Demarrer un processus en arriere-planDemarrer un processus en arriere-plan (serveur, service, etc.)
Arreter le processusArreter un processus en arriere-plan en cours d'execution
Executer une commande shellExecuter une commande shell et capturer la sortie
Exécution SSHExécuter une commande sur un serveur distant via SSH
Téléchargement SFTPTélécharger un fichier depuis un serveur distant via SFTP
Téléversement SFTPTéléverser un fichier sur un serveur distant via SFTP
Executer les etapes E2EExecuter des etapes de test de bout en bout sequentiellement
Porte de qualiteEvaluer les metriques de qualite par rapport aux seuils definis
Executer les tests HTTPExecuter une suite de tests API HTTP
Executer le linterExecuter des verifications de lint sur le code source
Generer un rapportGenerer un rapport d'execution de tests
Executer le scenarioExecuter un test base sur un scenario (style BDD)
Scan de securiteScanner pour des vulnerabilites de securite
Executer la suite de testsExecuter une collection de tests
Executer les tests unitairesExecuter des tests unitaires
Comparaison visuelleComparer les sorties visuelles pour les differences
Evaluer la qualite UIEvaluation complete de la qualite UI avec notation multi-dimensionnelle
Analyser l'image avec l'IAAnalyser des images avec l'API OpenAI Vision (GPT-4V)
Comparer les imagesComparer deux images et identifier les differences visuelles

Modules

Filtrer le tableau

array.filter

Filtrer les elements d'un tableau par condition

Parameters:

NameTypeRequiredDefaultDescription
arrayarrayYes-Array of items to process. Can be numbers, strings, or objects.
conditionselect (eq, ne, gt, gte, lt, lte, contains, startswith, endswith, regex, in, notin, exists, empty, notempty)Yes-How to compare each item against the value
valuestringYes-Value to compare each item against (leave empty for exists/empty checks)

Output:

FieldTypeDescription
filteredarrayTableau filtre
countnumberTableau filtre

Example: Filter numbers greater than 5

yaml
array: [1, 5, 10, 15, 3]
condition: gt
value: 5

Trier le tableau

array.sort

Trier les elements d'un tableau par ordre croissant ou decroissant

Parameters:

NameTypeRequiredDefaultDescription
arrayarrayYes-Array of items to process. Can be numbers, strings, or objects.
orderselect (asc, desc)NoascDirection to sort items

Output:

FieldTypeDescription
sortedarrayTableau trie
countnumberTableau trie

Example: Sort numbers ascending

yaml
array: [5, 2, 8, 1, 9]
order: asc

Tableau unique

array.unique

Supprimer les valeurs en double d'un tableau

Parameters:

NameTypeRequiredDefaultDescription
arrayarrayYes-Array of items to process. Can be numbers, strings, or objects.
preserve_orderbooleanNoTrueKeep first occurrence order

Output:

FieldTypeDescription
uniquearrayTableau avec valeurs uniques
countnumberTableau avec valeurs uniques
duplicates_removednumberTableau avec valeurs uniques

Example: Remove duplicates

yaml
array: [1, 2, 2, 3, 4, 3, 5]
preserve_order: true

OAuth2 Token Exchange

auth.oauth2

Exchange authorization code, refresh token, or client credentials for an access token

Parameters:

NameTypeRequiredDefaultDescription
token_urlstringYes-OAuth2 token endpoint URL
grant_typestringNoauthorization_codeOAuth2 grant type
client_idstringYes-OAuth2 application client ID
client_secretstringNo-OAuth2 application client secret
codestringNo-Authorization code received from the OAuth2 authorization flow
redirect_uristringNo-Redirect URI used in the authorization request (must match exactly)
refresh_tokenstringNo-Refresh token for obtaining a new access token
scopestringNo-Space-separated list of OAuth2 scopes
code_verifierstringNo-PKCE code verifier for public clients
client_auth_methodstringNobodyHow to send client credentials to the token endpoint
extra_paramsobjectNo{}Additional parameters to include in the token request
timeoutnumberNo15Maximum time to wait in seconds

Output:

FieldTypeDescription
okbooleanWhether token exchange was successful
access_tokenstringThe access token for API requests
token_typestringToken type (usually "Bearer")
expires_innumberToken lifetime in seconds
refresh_tokenstringRefresh token (if provided by the OAuth2 server)
scopestringGranted scopes
rawobjectFull raw response from the token endpoint
duration_msnumberRequest duration in milliseconds

Example: Exchange authorization code (Google)

yaml
token_url: https://oauth2.googleapis.com/token
grant_type: authorization_code
client_id: ${env.GOOGLE_CLIENT_ID}
client_secret: ${env.GOOGLE_CLIENT_SECRET}
code: 4/0AX4XfWh...
redirect_uri: https://yourapp.com/callback

Example: Refresh an expired token

yaml
token_url: https://oauth2.googleapis.com/token
grant_type: refresh_token
client_id: ${env.GOOGLE_CLIENT_ID}
client_secret: ${env.GOOGLE_CLIENT_SECRET}
refresh_token: ${env.REFRESH_TOKEN}

Example: Client credentials (machine-to-machine)

yaml
token_url: https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
grant_type: client_credentials
client_id: ${env.AZURE_CLIENT_ID}
client_secret: ${env.AZURE_CLIENT_SECRET}
scope: https://graph.microsoft.com/.default

Example: GitHub OAuth (code exchange)

yaml
token_url: https://github.com/login/oauth/access_token
grant_type: authorization_code
client_id: ${env.GITHUB_CLIENT_ID}
client_secret: ${env.GITHUB_CLIENT_SECRET}
code: abc123...

Recherche DNS

dns.lookup

Recherche DNS pour les enregistrements de domaine

Parameters:

NameTypeRequiredDefaultDescription
domainstringYes-Nom de domaine à rechercher
record_typeselect (A, AAAA, CNAME, MX, NS, TXT, SOA, SRV)NoAType d'enregistrement DNS à interroger
timeoutnumberNo10Délai d'attente de la requête en secondes

Output:

FieldTypeDescription
okbooleanWhether lookup succeeded
dataobject

Example: A record lookup

yaml
domain: example.com
record_type: A

Example: MX record lookup

yaml
domain: example.com
record_type: MX

Différence de Texte

file.diff

Générer une différence entre deux chaînes de texte

Parameters:

NameTypeRequiredDefaultDescription
originalstringYes-Texte original
modifiedstringYes-Texte modifié
context_linesnumberNo3Nombre de lignes de contexte autour des modifications
filenamestringNofileNom de fichier à utiliser dans l'en-tête de différence

Output:

FieldTypeDescription
diffstringSortie de différence unifiée
changedbooleanS'il y a des modifications
additionsnumberNombre de lignes ajoutées
deletionsnumberNombre de lignes supprimées

Example: Diff two strings

yaml
original: hello
world
modified: hello
world!
filename: test.txt

Éditer le Fichier

file.edit

Remplacer du texte dans un fichier en utilisant une correspondance exacte

Parameters:

NameTypeRequiredDefaultDescription
pathstringYes-Chemin vers le fichier à éditer
old_stringstringYes-Texte à trouver et remplacer
new_stringstringYes-Texte de remplacement
replace_allbooleanNoFalseRemplacer toutes les occurrences au lieu de seulement la première
encodingselect (utf-8, ascii, latin-1, utf-16, gbk, big5)Noutf-8Encodage du fichier

Output:

FieldTypeDescription
pathstringChemin du fichier édité
replacementsnumberNombre de remplacements effectués
diffstringDifférence montrant ce qui a changé

Example: Replace string in file

yaml
path: /tmp/example.py
old_string: def hello():
new_string: def hello_world():

Verifier l'existence du fichier

file.exists

Verifier si un fichier ou dossier existe

Parameters:

NameTypeRequiredDefaultDescription
pathstringYes-Path to the file

Output:

FieldTypeDescription
existsbooleanSi le chemin existe
is_filebooleanSi le chemin existe
is_directorybooleanSi le chemin existe

Example: Check file exists

yaml
path: /tmp/data.txt

Lire le fichier

file.read

Lire le contenu d'un fichier

Parameters:

NameTypeRequiredDefaultDescription
pathstringYes-Path to the file
encodingselect (utf-8, ascii, latin-1, utf-16, gbk, big5)Noutf-8Character encoding for the file

Output:

FieldTypeDescription
contentstringContenu du fichier
sizenumberContenu du fichier

Example: Read text file

yaml
path: /tmp/data.txt
encoding: utf-8

Ecrire le fichier

file.write

Ecrire du contenu dans un fichier

Parameters:

NameTypeRequiredDefaultDescription
pathstringYes-Path to the file
contentstringYes-Text content to write to the file
encodingselect (utf-8, ascii, latin-1, utf-16, gbk, big5)Noutf-8Character encoding for the file
modeselect (overwrite, append)NooverwriteHow to write content to the file

Output:

FieldTypeDescription
pathstringChemin du fichier
bytes_writtennumberChemin du fichier

Example: Write text file

yaml
path: /tmp/output.txt
content: Hello World
mode: overwrite

Cloner avec Git

git.clone

Cloner un dépôt git

Parameters:

NameTypeRequiredDefaultDescription
urlstringYes-URL du dépôt Git (HTTPS ou SSH)
destinationstringYes-Chemin local pour cloner
branchstringNo-Branche à vérifier après le clonage
depthnumberNo-Profondeur de clonage superficiel (omettre pour un clonage complet)
tokenstringNo-Jeton d'accès personnel pour les dépôts privés

Output:

FieldTypeDescription
okbooleanWhether clone succeeded
dataobject

Example: Clone public repository

yaml
url: https://github.com/user/repo.git
destination: /tmp/repo

Example: Shallow clone specific branch

yaml
url: https://github.com/user/repo.git
destination: /tmp/repo
branch: develop
depth: 1

Commit avec Git

git.commit

Créer un commit git

Parameters:

NameTypeRequiredDefaultDescription
repo_pathstringYes-Chemin vers le dépôt git
messagestringYes-Message de commit
add_allbooleanNoFalseMettre en scène tous les changements avant de commettre (git add -A)
filesarrayNo-Fichiers spécifiques à mettre en scène avant de commettre
author_namestringNo-Remplacer le nom de l'auteur du commit
author_emailstringNo-Remplacer l'email de l'auteur du commit

Output:

FieldTypeDescription
okbooleanWhether commit succeeded
dataobject

Example: Commit all changes

yaml
repo_path: /home/user/project
message: feat: add user authentication
add_all: true

Example: Commit specific files

yaml
repo_path: /home/user/project
message: fix: correct typo in readme
files: ["README.md"]

Diff avec Git

git.diff

Obtenir le diff git

Parameters:

NameTypeRequiredDefaultDescription
repo_pathstringYes-Chemin vers le dépôt git
ref1stringNoHEADPremière référence (commit, branche, tag)
ref2stringNo-Deuxième référence à comparer
stagedbooleanNoFalseAfficher uniquement les changements mis en scène (--cached)
stat_onlybooleanNoFalseAfficher uniquement les statistiques de fichiers (--stat)

Output:

FieldTypeDescription
okbooleanWhether diff succeeded
dataobject

Example: Show unstaged changes

yaml
repo_path: /home/user/project

Example: Compare branches

yaml
repo_path: /home/user/project
ref1: main
ref2: feature/login

Example: Show staged changes stats

yaml
repo_path: /home/user/project
staged: true
stat_only: true

HTTP Paginate

http.paginate

Automatically iterate through paginated API endpoints and collect all results

Parameters:

NameTypeRequiredDefaultDescription
urlstringYes-URL to navigate to
methodselect (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS)NoGETHTTP request method
headersobjectNo{}HTTP request headers as key-value pairs
authobjectNo-Authentication credentials for the HTTP request
strategystringNooffsetHow the API implements pagination
data_pathstringNo-Dot-notation path to the array of items in the response (e.g. "data", "results", "items")
offset_paramstringNooffsetQuery parameter name for offset
limit_paramstringNolimitQuery parameter name for page size
page_sizenumberNo100Number of items per page
page_paramstringNopageQuery parameter name for page number
start_pagenumberNo1First page number (usually 0 or 1)
cursor_paramstringNocursorQuery parameter name for cursor token
cursor_pathstringNo-Dot-notation path to the next cursor in the response (e.g. "meta.next_cursor", "pagination.next")
max_pagesnumberNo50Maximum number of pages to fetch (safety limit)
delay_msnumberNo0Milliseconds to wait between page requests (rate limiting)
timeoutnumberNo30Maximum time to wait in seconds
verify_sslbooleanNoTrueVerify SSL certificates

Output:

FieldTypeDescription
okbooleanWhether all pages were fetched successfully
itemsarrayAll collected items across all pages
total_itemsnumberTotal number of items collected
pages_fetchednumberNumber of pages fetched
duration_msnumberTotal duration in milliseconds

Example: Offset pagination (REST API)

yaml
url: https://api.example.com/users
strategy: offset
data_path: data
page_size: 100

Example: Page number pagination

yaml
url: https://api.example.com/products
strategy: page
data_path: results
page_param: page
page_size: 50
start_page: 1

Example: Cursor pagination (Slack, Notion)

yaml
url: https://api.notion.com/v1/databases/{db_id}/query
method: POST
strategy: cursor
data_path: results
cursor_path: next_cursor
cursor_param: start_cursor
auth: {"type": "bearer", "token": "${env.NOTION_TOKEN}"}

Example: Link header pagination (GitHub)

yaml
url: https://api.github.com/repos/octocat/hello-world/issues
strategy: link_header
page_size: 100
auth: {"type": "bearer", "token": "${env.GITHUB_TOKEN}"}

Requete HTTP

http.request

Envoyer une requete HTTP et recevoir une reponse

Parameters:

NameTypeRequiredDefaultDescription
urlstringYes-URL to navigate to
methodselect (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS)NoGETHTTP request method
headersobjectNo{}HTTP request headers as key-value pairs
bodyanyNo-HTTP request body content (JSON, text, or form data)
queryobjectNo{}URL query string parameters as key-value pairs
content_typeselect (application/json, application/x-www-form-urlencoded, multipart/form-data, text/plain, text/html, application/xml)Noapplication/jsonContent type of the request body
authobjectNo-Authentication credentials for the HTTP request
timeoutnumberNo30Maximum time to wait in seconds
follow_redirectsbooleanNoTrueAutomatically follow HTTP redirects
verify_sslbooleanNoTrueVerify SSL certificates
response_typeselect (auto, json, text, binary)NoautoHow to parse the response body
retry_countnumberNo0Number of retries on failure or 429/503 status
retry_backoffstringNoexponentialBackoff strategy between retries
retry_delaynumberNo1Initial delay between retries in seconds

Output:

FieldTypeDescription
okbooleanSi la requete a reussi (statut 2xx)
statusnumberSi la requete a reussi (statut 2xx)
status_textstringSi la requete a reussi (statut 2xx)
headersobjectCode de statut HTTP
bodyanyTexte de statut HTTP
urlstringEn-tetes de reponse
duration_msnumberCorps de la reponse (JSON parse ou texte)
content_typestringURL finale (apres redirections)
content_lengthnumberContent-Type de la reponse

Example: Simple GET request

yaml
url: https://api.example.com/users
method: GET

Example: POST with JSON body

yaml
url: https://api.example.com/users
method: POST
body: {"name": "John", "email": "john@example.com"}

Example: Request with Bearer auth

yaml
url: https://api.example.com/protected
method: GET
auth: {"type": "bearer", "token": "${env.API_TOKEN}"}

Example: Request with query params

yaml
url: https://api.example.com/search
method: GET
query: {"q": "flyto", "limit": 10}

Affirmer la reponse HTTP

http.response_assert

Affirmer et valider les proprietes de reponse HTTP

Parameters:

NameTypeRequiredDefaultDescription
responseobjectYes-HTTP response object from http.request
statusanyNo-Expected status code (number, array of numbers, or range string "200-299")
body_containsanyNo-String or array of strings that body should contain
body_not_containsanyNo-String or array of strings that body should NOT contain
body_matchesstringYes-Regular expression pattern
json_pathobjectNo-Object mapping JSON paths to expected values (e.g., {"data.id": 123})
json_path_existsarrayNo-Array of JSON paths that should exist
header_containsobjectNo-Object mapping header names to expected values
content_typeselect (application/json, application/x-www-form-urlencoded, multipart/form-data, text/plain, text/html, application/xml)No-Content type of the request body
max_duration_msnumberNo-Maximum allowed response time in milliseconds
schemaobjectNo-JSON Schema to validate response body against
fail_fastbooleanNoFalseStop on first assertion failure

Output:

FieldTypeDescription
okbooleanSi toutes les affirmations ont passe
passednumberSi toutes les affirmations ont passe
failednumberSi toutes les affirmations ont passe
totalnumberNombre d'affirmations reussies
assertionsarrayNombre d'affirmations echouees
errorsarrayResultats detailles des affirmations

Example: Assert status 200

yaml
response: ${http_request.result}
status: 200

Example: Assert JSON structure

yaml
response: ${http_request.result}
status: 200
json_path: {"data.id": "${expected_id}", "data.name": "John"}
json_path_exists: ["data.created_at", "data.email"]

Example: Assert API response

yaml
response: ${api_result}
status: [200, 201]
content_type: application/json
max_duration_ms: 1000
json_path: {"success": true}

HTTP Session

http.session

Send a sequence of HTTP requests with persistent cookies (login → action → logout)

Parameters:

NameTypeRequiredDefaultDescription
requestsarrayYes-Ordered list of HTTP requests to execute with shared cookies
authobjectNo-Authentication applied to all requests in the session
stop_on_errorbooleanNoTrueStop executing remaining requests if one fails (non-2xx)
timeoutnumberNo30Maximum time per individual request
verify_sslbooleanNoTrueVerify SSL certificates

Output:

FieldTypeDescription
okbooleanWhether all requests succeeded
resultsarrayResults from each request in order
cookiesobjectFinal session cookies as key-value pairs
duration_msnumberTotal duration in milliseconds

Example: Login and fetch data

yaml
requests: [{"label": "Login", "url": "https://example.com/api/login", "method": "POST", "body": {"username": "${env.USER}", "password": "${env.PASS}"}}, {"label": "Get Profile", "url": "https://example.com/api/profile", "method": "GET"}]
stop_on_error: true

Example: CSRF token flow

yaml
requests: [{"label": "Get CSRF Token", "url": "https://example.com/csrf-token", "method": "GET"}, {"label": "Submit Form", "url": "https://example.com/api/submit", "method": "POST", "body": {"data": "value"}}]

Webhook Wait

http.webhook_wait

Start a temporary server and wait for an incoming webhook callback

Parameters:

NameTypeRequiredDefaultDescription
pathstringNo/webhookURL path to listen on (e.g. /webhook, /callback)
portnumberNo0Port to listen on (0 = auto-assign)
timeoutnumberNo300Maximum time to wait for the webhook callback
use_ngrokbooleanNoFalseCreate an ngrok tunnel for public access (requires pyngrok)
ngrok_tokenstringNo-ngrok authentication token (free at ngrok.com)
expected_methodstringNoPOSTOnly accept this HTTP method (empty = accept any)
response_statusnumberNo200HTTP status code to respond with when webhook is received
response_bodystringNo{"ok": true}Response body to send back to the webhook caller

Output:

FieldTypeDescription
okbooleanWhether webhook was received before timeout
webhook_urlstringThe URL to send webhooks to (public if ngrok enabled)
methodstringHTTP method of the received webhook
headersobjectHeaders from the received webhook
bodyanyBody from the received webhook (parsed JSON or raw text)
queryobjectQuery parameters from the received webhook
duration_msnumberTime waited for the webhook in milliseconds

Example: Wait for Stripe webhook (local)

yaml
path: /webhook/stripe
port: 8765
timeout: 120
use_ngrok: false

Example: Wait for webhook with ngrok tunnel

yaml
path: /webhook
timeout: 300
use_ngrok: true
ngrok_token: ${env.NGROK_AUTH_TOKEN}

Chat LLM

llm.chat

Interagir avec les APIs LLM pour des operations intelligentes

Parameters:

NameTypeRequiredDefaultDescription
promptstringYes-The prompt or question to send to the AI model
system_promptstringNo-System instructions to set AI behavior and context
contextobjectNo-Additional context data to include
messagesarrayNo-Previous messages for multi-turn conversation
providerselect (openai, anthropic, ollama)NoopenaiAI model provider
modelstringNogpt-4oSpecific model to use
temperaturenumberNo0.7Creativity level (0=deterministic, 1=creative)
max_tokensnumberNo2000Maximum tokens in response
response_formatselect (text, json, code, markdown)NotextExpected format of the AI response
api_keystringNo-API key (defaults to provider env var)
base_urlstringNo-Custom API base URL (for Ollama or proxies)

Output:

FieldTypeDescription
okbooleanSi la requete a reussi
responsestringSi la requete a reussi
parsedanySi la requete a reussi
modelstringLe texte de reponse du LLM
tokens_usednumberReponse analysee (si format JSON demande)
finish_reasonstringModele utilise

Example: Code Review

yaml
prompt: Review this code for bugs and improvements:

${code}
system_prompt: You are an expert code reviewer. Be specific and actionable.
model: gpt-4o

Example: Generate Fix

yaml
prompt: The UI evaluation found these issues: ${issues}

Generate code fixes.
system_prompt: You are a frontend developer. Return only valid code.
response_format: code

Example: Decision Making

yaml
prompt: Based on these test results, should we deploy? ${test_results}
system_prompt: You are a DevOps engineer. Return JSON: {"decision": "yes/no", "reason": "..."}
response_format: json

Correction de code IA

llm.code_fix

Generer automatiquement des corrections de code basees sur les problemes

Parameters:

NameTypeRequiredDefaultDescription
issuesarrayYes-List of issues to fix (from ui.evaluate, test results, etc.)
source_filesarrayYes-Files to analyze and potentially fix
fix_modeselect (suggest, apply, dry_run)NosuggestHow to handle the suggested fixes
backupbooleanNoTrueCreate .bak backup before modifying files
contextstringNo-Text content to process
modelstringNogpt-4oSpecific model to use
api_keystringNo-API key (defaults to provider env var)

Output:

FieldTypeDescription
okbooleanSi l'operation a reussi
fixesarraySi l'operation a reussi
appliedarraySi l'operation a reussi
failedarrayListe des corrections generees
summarystringListe des corrections appliquees (si fix_mode est apply)

Example: Fix UI Issues

yaml
issues: ${ui_evaluation.issues}
source_files: ["./src/components/Footer.tsx", "./src/styles/footer.css"]
fix_mode: suggest
context: React + Tailwind CSS project

Example: Auto-fix and Apply

yaml
issues: ${test_results.failures}
source_files: ["./src/App.tsx"]
fix_mode: apply
backup: true

Calculer

math.calculate

Effectuer des operations mathematiques de base

Parameters:

NameTypeRequiredDefaultDescription
operationselect (add, subtract, multiply, divide, power, modulo, sqrt, abs)Yes-Operation to perform
anumberYes-First operand
bnumberNo-Second operand (not required for sqrt and abs)
precisionnumberNo2Number of decimal places

Output:

FieldTypeDescription
resultnumberResultat du calcul
operationstringResultat du calcul
expressionstringResultat du calcul

Example: Add two numbers

yaml
operation: add
a: 10
b: 5

Example: Calculate power

yaml
operation: power
a: 2
b: 8

Vérification de santé HTTP

monitor.http_check

Vérification de santé HTTP / moniteur de disponibilité

Parameters:

NameTypeRequiredDefaultDescription
urlstringYes-URL à vérifier
methodselect (GET, HEAD, POST)NoGETMéthode HTTP
expected_statusnumberNo200Code de statut HTTP attendu
timeout_msnumberNo10000Délai d'attente de la requête en millisecondes
headersobjectNo-En-têtes de requête personnalisés
bodystringNo-Corps de la requête (pour POST)
check_sslbooleanNoTrueVérifier la validité et l'expiration du certificat SSL
containsstringNo-Le corps de la réponse doit contenir cette chaîne
follow_redirectsbooleanNoTrueSuivre les redirections HTTP

Output:

FieldTypeDescription
okbooleanWhether check completed
dataobject

Example: Basic health check

yaml
url: https://api.example.com/health
expected_status: 200

Example: Check with content validation

yaml
url: https://api.example.com/health
contains: "status":"ok"
timeout_ms: 5000

Verifier le port

port.check

Verifier si le(s) port(s) reseau sont ouverts ou fermes

Parameters:

NameTypeRequiredDefaultDescription
portanyYes-Numero de port ou tableau de ports a verifier
hoststringNolocalhostNumero de port ou tableau de ports a verifier
connect_timeoutnumberNo2Hote a connecter
expect_openbooleanNo-Timeout pour chaque tentative de connexion

Output:

FieldTypeDescription
okbooleanDefinir a true pour affirmer que les ports sont ouverts, false pour fermes
resultsarraySi toutes les verifications ont passe (si expect_open est defini)
open_portsarraySi toutes les verifications ont passe (si expect_open est defini)
closed_portsarrayTableau des resultats de verification de port
summaryobjectListe des ports ouverts

Example: Check single port

yaml
port: 3000

Example: Check multiple ports

yaml
port: [3000, 8080, 5432]
host: localhost

Example: Assert ports are open

yaml
port: [80, 443]
host: example.com
expect_open: true

Attendre le port

port.wait

Attendre qu'un port reseau devienne disponible

Parameters:

NameTypeRequiredDefaultDescription
portnumberYes-Numero de port a attendre
hoststringNolocalhostHote a connecter
timeoutnumberNo60Hote a connecter
intervalnumberNo500Temps maximum d'attente
expect_closedbooleanNoFalseTemps entre les tentatives de connexion en millisecondes

Output:

FieldTypeDescription
okbooleanAttendre que le port devienne indisponible a la place
availablebooleanSi le port est dans l'etat attendu
hoststringSi le port est dans l'etat attendu
portnumberSi le port est actuellement disponible
wait_time_msnumberHote qui a ete verifie
attemptsnumberPort qui a ete verifie

Example: Wait for dev server

yaml
port: 3000
timeout: 30

Example: Wait for database

yaml
port: 5432
host: localhost
timeout: 60

Example: Wait for port to close

yaml
port: 8080
expect_closed: true
timeout: 10

Lister les processus

process.list

Lister tous les processus en arriere-plan en cours d'execution

Parameters:

NameTypeRequiredDefaultDescription
filter_namestringNo-Filter processes by name (substring match)
include_statusbooleanNoTrueInclude running/stopped status check for each process

Output:

FieldTypeDescription
okbooleanSucces de l'operation
processesarraySucces de l'operation
countnumberSucces de l'operation
runningnumberListe des informations de processus
stoppednumberNombre total de processus

Example: List all processes

yaml

Example: Filter by name

yaml
filter_name: dev

Demarrer un processus en arriere-plan

process.start

Demarrer un processus en arriere-plan (serveur, service, etc.)

Parameters:

NameTypeRequiredDefaultDescription
commandstringYes-Shell command to execute
cwdstringNo-Directory to execute command in
envobjectNo-Additional environment variables to set
namestringNo-Friendly name to identify the process
wait_for_outputstringNo-String to wait for in stdout before returning
wait_timeoutnumberNo60Maximum time to wait in seconds
capture_outputbooleanNoTrueCapture stdout/stderr output from the process
log_filestringNo-File path to write process output to
auto_restartbooleanNoFalseAutomatically restart the process if it exits

Output:

FieldTypeDescription
okbooleanSi le processus a demarre avec succes
pidnumberSi le processus a demarre avec succes
process_idstringSi le processus a demarre avec succes
namestringID du processus
commandstringIdentifiant interne du processus pour process.stop
cwdstringNom du processus
started_atstringLa commande executee
initial_outputstringHorodatage ISO du demarrage du processus

Example: Start dev server

yaml
command: npm run dev
cwd: ./frontend
name: frontend-dev
wait_for_output: ready on
wait_timeout: 30

Example: Start Python HTTP server

yaml
command: python -m http.server 8000
name: static-server

Example: Start with environment

yaml
command: node server.js
env: {"PORT": "3000", "NODE_ENV": "test"}
name: api-server
wait_for_output: listening

Arreter le processus

process.stop

Arreter un processus en arriere-plan en cours d'execution

Parameters:

NameTypeRequiredDefaultDescription
process_idstringNo-Internal process identifier (from process.start)
namestringNo-Friendly name to identify the process
pidnumberNo-System process ID (PID) of the process
signalselect (SIGTERM, SIGKILL, SIGINT)NoSIGTERMSignal to send to the process
timeoutnumberNo10Maximum time to wait in seconds
forcebooleanNoFalseForce kill the process immediately with SIGKILL
stop_allbooleanNoFalseStop all tracked processes

Output:

FieldTypeDescription
okbooleanSi tous les processus ont ete arretes avec succes
stoppedarraySi tous les processus ont ete arretes avec succes
failedarrayListe des informations des processus arretes
countnumberListe des informations des processus arretes

Example: Stop by process ID

yaml
process_id: ${start_result.process_id}

Example: Stop by name

yaml
name: dev-server

Example: Force kill by PID

yaml
pid: 12345
force: true

Example: Stop all processes

yaml
stop_all: true

Executer une commande shell

shell.exec

Executer une commande shell et capturer la sortie

Parameters:

NameTypeRequiredDefaultDescription
commandstringYes-Shell command to execute
cwdstringNo-Directory to execute command in
envobjectNo-Additional environment variables to set
timeoutnumberNo300Maximum time to wait in seconds
shellbooleanNoFalseExecute command through shell (enables pipes, redirects)
capture_stderrbooleanNoTrueCapture stderr separately from stdout
encodingselect (utf-8, ascii, latin-1, utf-16, gbk, big5)Noutf-8Character encoding for the file
raise_on_errorbooleanNoFalseRaise exception if command returns non-zero exit code

Output:

FieldTypeDescription
okbooleanSi la commande a ete executee avec succes (code de sortie 0)
exit_codenumberSi la commande a ete executee avec succes (code de sortie 0)
stdoutstringSi la commande a ete executee avec succes (code de sortie 0)
stderrstringCode de sortie de la commande
commandstringSortie standard
cwdstringSortie d'erreur standard
duration_msnumberLa commande executee

Example: Run npm install

yaml
command: npm install
cwd: ./my-project

Example: Run tests with pytest

yaml
command: python -m pytest tests/ -v
timeout: 120

Example: Git status

yaml
command: git status --porcelain

Example: Build project

yaml
command: npm run build
cwd: ./frontend
env: {"NODE_ENV": "production"}

Exécution SSH

ssh.exec

Exécuter une commande sur un serveur distant via SSH

Parameters:

NameTypeRequiredDefaultDescription
hoststringYes-Nom d'hôte ou IP du serveur SSH
portnumberNo22Port SSH
usernamestringYes-Nom d'utilisateur SSH
passwordstringNo-Mot de passe SSH
private_keystringNo-Clé privée au format PEM
commandstringYes-Commande à exécuter sur le serveur distant
timeoutnumberNo30Délai d'attente de la commande en secondes

Output:

FieldTypeDescription
okbooleanWhether command succeeded
dataobject

Example: List files on remote server

yaml
host: 192.168.1.100
username: deploy
command: ls -la /var/www

Example: Restart service

yaml
host: 10.0.0.5
username: root
command: systemctl restart nginx

Téléchargement SFTP

ssh.sftp_download

Télécharger un fichier depuis un serveur distant via SFTP

Parameters:

NameTypeRequiredDefaultDescription
hoststringYes-Nom d'hôte ou IP du serveur SSH
portnumberNo22Port SSH
usernamestringYes-Nom d'utilisateur SSH
passwordstringNo-Mot de passe SSH
private_keystringNo-Clé privée au format PEM
remote_pathstringYes-Chemin vers le fichier sur le serveur distant
local_pathstringYes-Chemin de destination sur la machine locale

Output:

FieldTypeDescription
okbooleanWhether download succeeded
dataobject

Example: Download server log

yaml
host: 10.0.0.5
username: deploy
remote_path: /var/log/nginx/access.log
local_path: /tmp/access.log

Téléversement SFTP

ssh.sftp_upload

Téléverser un fichier sur un serveur distant via SFTP

Parameters:

NameTypeRequiredDefaultDescription
hoststringYes-Nom d'hôte ou IP du serveur SSH
portnumberNo22Port SSH
usernamestringYes-Nom d'utilisateur SSH
passwordstringNo-Mot de passe SSH
private_keystringNo-Clé privée au format PEM
local_pathstringYes-Chemin du fichier local à téléverser
remote_pathstringYes-Chemin de destination sur le serveur distant
overwritebooleanNoTrueÉcraser le fichier distant existant

Output:

FieldTypeDescription
okbooleanWhether upload succeeded
dataobject

Example: Upload deployment archive

yaml
host: 10.0.0.5
username: deploy
local_path: /tmp/app.tar.gz
remote_path: /opt/releases/app.tar.gz

Executer les etapes E2E

testing.e2e.run_steps

Executer des etapes de test de bout en bout sequentiellement

Parameters:

NameTypeRequiredDefaultDescription
stepsarrayYes-Tableau de definitions d'etapes de test
stop_on_failurebooleanNoTrueWhether to stop on failure
timeout_per_stepnumberNo30000Timeout Per Step value

Output:

FieldTypeDescription
okbooleanSi l'operation a reussi
passednumberSi l'operation a reussi
failednumberSi l'operation a reussi
resultsarrayNombre de tests reussis

Porte de qualite

testing.gate.evaluate

Evaluer les metriques de qualite par rapport aux seuils definis

Parameters:

NameTypeRequiredDefaultDescription
metricsobjectYes-Metriques a evaluer
thresholdsobjectYes-Metriques a evaluer
fail_on_breachbooleanNoTrueWhether to fail on breach

Output:

FieldTypeDescription
okbooleanValeurs seuil pour chaque metrique
passedbooleanSi l'operation a reussi
resultsarraySi l'operation a reussi
summarystringNombre de tests reussis

Executer les tests HTTP

testing.http.run_suite

Executer une suite de tests API HTTP

Parameters:

NameTypeRequiredDefaultDescription
testsarrayYes-Tableau de definitions de tests HTTP
base_urlstringNo-Base URL for API requests
headersobjectNo{}HTTP request headers

Output:

FieldTypeDescription
okbooleanSi l'operation a reussi
passednumberSi l'operation a reussi
failednumberSi l'operation a reussi
resultsarrayNombre de tests reussis

Executer le linter

testing.lint.run

Executer des verifications de lint sur le code source

Parameters:

NameTypeRequiredDefaultDescription
pathsarrayYes-Fichiers ou repertoires a lint
linterstringNoautoLinter
fixbooleanNoFalseWhether to fix

Output:

FieldTypeDescription
okbooleanSi l'operation a reussi
errorsnumberSi l'operation a reussi
warningsnumberSi l'operation a reussi
issuesarrayNombre d'erreurs rencontrees

Generer un rapport

testing.report.generate

Generer un rapport d'execution de tests

Parameters:

NameTypeRequiredDefaultDescription
resultsobjectYes-Results data
formatstringNojsonFormat
titlestringNoTest ReportTitle

Output:

FieldTypeDescription
okbooleanSi l'operation a reussi
reportstringSi l'operation a reussi
formatstringSi l'operation a reussi
summaryobjectLe rapport

Executer le scenario

testing.scenario.run

Executer un test base sur un scenario (style BDD)

Parameters:

NameTypeRequiredDefaultDescription
scenarioobjectYes-Definition du scenario avec given/when/then
contextobjectNo{}Additional context data

Output:

FieldTypeDescription
okbooleanDefinition du scenario avec given/when/then
passedbooleanSi l'operation a reussi
stepsarraySi l'operation a reussi

Scan de securite

testing.security.scan

Scanner pour des vulnerabilites de securite

Parameters:

NameTypeRequiredDefaultDescription
targetsarrayYes-Fichiers, URLs ou chemins a scanner
scan_typestringNoallScan Type
severity_thresholdstringNomediumSeverity Threshold

Output:

FieldTypeDescription
okbooleanSi l'operation a reussi
vulnerabilitiesarraySi l'operation a reussi
summaryobjectSi l'operation a reussi

Executer la suite de tests

testing.suite.run

Executer une collection de tests

Parameters:

NameTypeRequiredDefaultDescription
testsarrayYes-Tableau de definitions de tests
parallelbooleanNoFalseWhether to parallel
max_failuresnumberNo0Tableau de definitions de tests

Output:

FieldTypeDescription
okboolean0 = pas de limite
passednumber0 = pas de limite
failednumberSi l'operation a reussi
skippednumberNombre de tests reussis
resultsarrayNombre de tests echoues

Executer les tests unitaires

testing.unit.run

Executer des tests unitaires

Parameters:

NameTypeRequiredDefaultDescription
pathsarrayYes-Chemins vers les fichiers de test ou repertoires
patternstringNotest_*.pyPattern
verbosebooleanNoFalseWhether to verbose

Output:

FieldTypeDescription
okbooleanSi l'operation a reussi
passednumberSi l'operation a reussi
failednumberSi l'operation a reussi
errorsnumberNombre de tests reussis
resultsarrayNombre de tests echoues

Comparaison visuelle

testing.visual.compare

Comparer les sorties visuelles pour les differences

Parameters:

NameTypeRequiredDefaultDescription
actualstringYes-Chemin ou base64 de l'image reelle
expectedstringYes-Chemin ou base64 de l'image reelle
thresholdnumberNo0.1Chemin ou base64 de l'image attendue
output_diffbooleanNoTrueWhether to output diff

Output:

FieldTypeDescription
okbooleanDifference max autorisee (0-1)
matchbooleanSi l'operation a reussi
differencenumberSi l'operation a reussi
diff_imagestringLa correspondance

Evaluer la qualite UI

ui.evaluate

Evaluation complete de la qualite UI avec notation multi-dimensionnelle

Parameters:

NameTypeRequiredDefaultDescription
screenshotstringYes-Chemin ou URL de la capture d'ecran a evaluer
app_typestringNoweb_appChemin ou URL de la capture d'ecran a evaluer
page_typestringNo-Type de page en cours d'evaluation
evaluation_criteriaarrayNo['visual_design', 'usability', 'accessibility', 'consistency', 'responsiveness']Criteres specifiques a evaluer (par defaut: tous)
target_audiencestringNo-Description des utilisateurs cibles
brand_guidelinesstringNo-Breves directives de marque a verifier
min_scorenumberNo70Score minimum global pour reussir (0-100)
api_keystringNo-Cle API OpenAI (defaut: env var OPENAI_API_KEY)

Output:

FieldTypeDescription
okbooleanCle API OpenAI (defaut: env var OPENAI_API_KEY)
passedbooleanSi l'evaluation a reussi
overall_scorenumberSi l'evaluation a reussi
scoresobjectScore global de qualite UI (0-100)
strengthsarrayScore global de qualite UI (0-100)
issuesarrayScores par criteres d'evaluation
recommendationsarrayListe des points forts de l'UI
summarystringRecommandations d'amelioration specifiques

Example: Evaluate Dashboard

yaml
screenshot: ./screenshots/dashboard.png
app_type: dashboard
page_type: analytics dashboard
target_audience: business analysts
min_score: 75

Example: E-commerce Page Review

yaml
screenshot: ./screenshots/product.png
app_type: e_commerce
page_type: product detail
evaluation_criteria: ["usability", "cta_effectiveness", "visual_design"]

Analyser l'image avec l'IA

vision.analyze

Analyser des images avec l'API OpenAI Vision (GPT-4V)

Parameters:

NameTypeRequiredDefaultDescription
imagestringYes-Image file path, URL, or base64 data
promptstringYes-What to analyze in the image
analysis_typeselect (general, ui_review, accessibility, bug_detection, comparison, data_extraction)NogeneralType of analysis to perform
contextstringNo-Additional context about the image
output_formatselect (text, structured, json, checklist)NostructuredFormat of the analysis output
modelstringNogpt-4oSpecific model to use
max_tokensnumberNo1000Maximum tokens in response
api_keystringYes-API key for authentication
header_namestringNoX-API-KeyHTTP header name
detailselect (low, high, auto)NohighLevel of detail for image analysis

Output:

FieldTypeDescription
okbooleanSi l'analyse a reussi
analysisstringSi l'analyse a reussi
structuredobjectLe resultat de l'analyse IA
modelstringDonnees d'analyse structurees (si output_format est structured/json)
tokens_usednumberModele utilise pour l'analyse

Example: UI Review

yaml
image: ./screenshots/dashboard.png
prompt: Review this dashboard UI. Evaluate: 1) Visual hierarchy 2) Color contrast 3) Button visibility 4) Overall usability. Suggest specific improvements.
analysis_type: ui_review
output_format: structured

Example: Bug Detection

yaml
image: ./screenshots/form.png
prompt: Find any visual bugs, layout issues, or broken elements in this form
analysis_type: bug_detection

Example: Accessibility Check

yaml
image: ./screenshots/page.png
prompt: Evaluate accessibility: color contrast, text readability, button sizes, clear labels
analysis_type: accessibility

Comparer les images

vision.compare

Comparer deux images et identifier les differences visuelles

Parameters:

NameTypeRequiredDefaultDescription
image_beforestringYes-Path to baseline/before image
image_afterstringYes-Path to current/after image
comparison_typeselect (visual_regression, layout_diff, content_diff, full_analysis)Novisual_regressionType of comparison to perform
thresholdnumberNo5Acceptable difference percentage
focus_areasarrayNo-Specific areas to focus on
ignore_areasarrayNo-Areas to ignore (dynamic content, ads, etc.)
modelstringNogpt-4oSpecific model to use
api_keystringYes-API key for authentication
header_namestringNoX-API-KeyHTTP header name

Output:

FieldTypeDescription
okbooleanSi la comparaison a reussi
has_differencesbooleanSi la comparaison a reussi
similarity_scorenumberSi des differences significatives ont ete trouvees
differencesarrayPourcentage de similarite (0-100)
summarystringListe des differences identifiees
recommendationstringResume des resultats de comparaison

Example: Visual Regression Test

yaml
image_before: ./screenshots/baseline/home.png
image_after: ./screenshots/current/home.png
comparison_type: visual_regression
threshold: 5

Example: Layout Comparison

yaml
image_before: ./design/mockup.png
image_after: ./screenshots/implementation.png
comparison_type: layout_diff
focus_areas: ["header", "main content"]

Released under the Apache 2.0 License.