Skip to content

Atomic

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

44 modules

ModuleDescription
Filtra ArrayFiltra elementi array per condizione
Ordina ArrayOrdina elementi array in ordine crescente o decrescente
Array UnicoRimuovi valori duplicati dall'array
OAuth2 Token ExchangeExchange authorization code, refresh token, or client credentials for an access token
Ricerca DNSRicerca DNS per i record di dominio
Differenza TestoGenera differenze tra due stringhe di testo
Modifica FileSostituisci testo in un file utilizzando il confronto esatto delle stringhe
Verifica Esistenza FileVerifica se un file o directory esiste
Leggi FileLeggi contenuto da un file
Scrivi FileScrivi contenuto su un file
Clona GitClona un repository git
Commit GitCrea un commit git
Diff GitOttieni il diff git
HTTP PaginateAutomatically iterate through paginated API endpoints and collect all results
Richiesta HTTPInvia richiesta HTTP e ricevi risposta
Verifica Risposta HTTPVerifica e valida proprieta risposta 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 LLMInteragisci con API LLM per operazioni intelligenti
Correzione Codice AIGenera automaticamente correzioni di codice basate sui problemi
CalcolaEsegui operazioni matematiche di base
Controllo di integrità HTTPControllo di integrità HTTP / monitoraggio uptime
Verifica PortaVerifica se la/le porta/e di rete sono aperte o chiuse
Attendi PortaAttendi che una porta di rete diventi disponibile
Elenca ProcessiElenca tutti i processi in background in esecuzione
Avvia Processo in BackgroundAvvia un processo in background (server, servizio, ecc.)
Ferma ProcessoFerma un processo in background in esecuzione
Esegui Comando ShellEsegui un comando shell e cattura output
Esegui SSHEsegui comando su server remoto via SSH
Download SFTPScarica file da server remoto via SFTP
Caricamento SFTPCarica file su server remoto via SFTP
Esegui Passaggi E2EEsegui passaggi test end-to-end sequenzialmente
Porta di QualitàValuta metriche qualita rispetto a soglie definite
Esegui Test HTTPEsegui suite test API HTTP
Esegui LinterEsegui controlli linting sul codice sorgente
Genera ReportGenera report esecuzione test
Esegui ScenarioEsegui test basato su scenario (stile BDD)
Scansione SicurezzaScansiona vulnerabilita di sicurezza
Esegui Suite TestEsegui una collezione di test
Esegui Unit TestEsegui unit test
Confronto VisivoConfronta output visivi per differenze
Valuta Qualita UIValutazione completa qualita UI con punteggio multi-dimensionale
Analizza Immagine con AIAnalizza immagini usando OpenAI Vision API (GPT-4V)
Confronta ImmaginiConfronta due immagini e identifica differenze visive

Modules

Filtra Array

array.filter

Filtra elementi array per condizione

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
filteredarrayArray filtrato
countnumberArray filtrato

Example: Filter numbers greater than 5

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

Ordina Array

array.sort

Ordina elementi array in ordine crescente o decrescente

Parameters:

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

Output:

FieldTypeDescription
sortedarrayArray ordinato
countnumberArray ordinato

Example: Sort numbers ascending

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

Array Unico

array.unique

Rimuovi valori duplicati dall'array

Parameters:

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

Output:

FieldTypeDescription
uniquearrayArray con valori unici
countnumberArray con valori unici
duplicates_removednumberArray con valori unici

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...

Ricerca DNS

dns.lookup

Ricerca DNS per i record di dominio

Parameters:

NameTypeRequiredDefaultDescription
domainstringYes-Nome di dominio da cercare
record_typeselect (A, AAAA, CNAME, MX, NS, TXT, SOA, SRV)NoATipo di record DNS da interrogare
timeoutnumberNo10Timeout della query in secondi

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

Differenza Testo

file.diff

Genera differenze tra due stringhe di testo

Parameters:

NameTypeRequiredDefaultDescription
originalstringYes-Testo originale
modifiedstringYes-Testo modificato
context_linesnumberNo3Numero di righe di contesto attorno alle modifiche
filenamestringNofileNome del file da usare nell'intestazione del diff

Output:

FieldTypeDescription
diffstringOutput diff unificato
changedbooleanSe ci sono modifiche
additionsnumberNumero di righe aggiunte
deletionsnumberNumero di righe eliminate

Example: Diff two strings

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

Modifica File

file.edit

Sostituisci testo in un file utilizzando il confronto esatto delle stringhe

Parameters:

NameTypeRequiredDefaultDescription
pathstringYes-Percorso del file da modificare
old_stringstringYes-Testo da trovare e sostituire
new_stringstringYes-Testo di sostituzione
replace_allbooleanNoFalseSostituisci tutte le occorrenze invece della prima
encodingselect (utf-8, ascii, latin-1, utf-16, gbk, big5)Noutf-8Codifica del file

Output:

FieldTypeDescription
pathstringPercorso del file modificato
replacementsnumberNumero di sostituzioni effettuate
diffstringDiff che mostra cosa è cambiato

Example: Replace string in file

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

Verifica Esistenza File

file.exists

Verifica se un file o directory esiste

Parameters:

NameTypeRequiredDefaultDescription
pathstringYes-Path to the file

Output:

FieldTypeDescription
existsbooleanSe il percorso esiste
is_filebooleanSe il percorso esiste
is_directorybooleanSe il percorso esiste

Example: Check file exists

yaml
path: /tmp/data.txt

Leggi File

file.read

Leggi contenuto da un file

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
contentstringContenuto file
sizenumberContenuto file

Example: Read text file

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

Scrivi File

file.write

Scrivi contenuto su un file

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
pathstringPercorso file
bytes_writtennumberPercorso file

Example: Write text file

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

Clona Git

git.clone

Clona un repository git

Parameters:

NameTypeRequiredDefaultDescription
urlstringYes-URL del repository Git (HTTPS o SSH)
destinationstringYes-Percorso locale in cui clonare
branchstringNo-Branch da controllare dopo il clone
depthnumberNo-Profondità del clone superficiale (omettete per un clone completo)
tokenstringNo-Token di accesso personale per repository privati

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 Git

git.commit

Crea un commit git

Parameters:

NameTypeRequiredDefaultDescription
repo_pathstringYes-Percorso del repository git
messagestringYes-Messaggio del commit
add_allbooleanNoFalseStadia tutte le modifiche prima del commit (git add -A)
filesarrayNo-File specifici da stadiere prima del commit
author_namestringNo-Sovrascrivi il nome dell'autore del commit
author_emailstringNo-Sovrascrivi l'email dell'autore del 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 Git

git.diff

Ottieni il diff git

Parameters:

NameTypeRequiredDefaultDescription
repo_pathstringYes-Percorso del repository git
ref1stringNoHEADPrimo riferimento (commit, branch, tag)
ref2stringNo-Secondo riferimento da confrontare
stagedbooleanNoFalseMostra solo le modifiche stadiate (--cached)
stat_onlybooleanNoFalseMostra solo le statistiche dei file (--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}"}

Richiesta HTTP

http.request

Invia richiesta HTTP e ricevi risposta

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
okbooleanSe la richiesta e riuscita (stato 2xx)
statusnumberSe la richiesta e riuscita (stato 2xx)
status_textstringSe la richiesta e riuscita (stato 2xx)
headersobjectCodice stato HTTP
bodyanyTesto stato HTTP
urlstringHeader risposta
duration_msnumberCorpo risposta (JSON parsato o testo)
content_typestringURL finale (dopo redirect)
content_lengthnumberContent-Type risposta

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}

Verifica Risposta HTTP

http.response_assert

Verifica e valida proprieta risposta 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
okbooleanSe tutte le asserzioni sono passate
passednumberSe tutte le asserzioni sono passate
failednumberSe tutte le asserzioni sono passate
totalnumberNumero di asserzioni passate
assertionsarrayNumero di asserzioni fallite
errorsarrayRisultati dettagliati asserzioni

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

Interagisci con API LLM per operazioni intelligenti

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
okbooleanSe la richiesta e riuscita
responsestringSe la richiesta e riuscita
parsedanySe la richiesta e riuscita
modelstringIl testo di risposta LLM
tokens_usednumberRisposta parsata (se richiesto formato JSON)
finish_reasonstringModello usato

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

Correzione Codice AI

llm.code_fix

Genera automaticamente correzioni di codice basate sui problemi

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
okbooleanSe l'operazione e riuscita
fixesarraySe l'operazione e riuscita
appliedarraySe l'operazione e riuscita
failedarrayLista delle correzioni generate
summarystringLista delle correzioni applicate (se fix_mode e 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

Calcola

math.calculate

Esegui operazioni matematiche di 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
resultnumberRisultato del calcolo
operationstringRisultato del calcolo
expressionstringRisultato del calcolo

Example: Add two numbers

yaml
operation: add
a: 10
b: 5

Example: Calculate power

yaml
operation: power
a: 2
b: 8

Controllo di integrità HTTP

monitor.http_check

Controllo di integrità HTTP / monitoraggio uptime

Parameters:

NameTypeRequiredDefaultDescription
urlstringYes-URL da controllare
methodselect (GET, HEAD, POST)NoGETMetodo HTTP
expected_statusnumberNo200Codice di stato HTTP atteso
timeout_msnumberNo10000Timeout della richiesta in millisecondi
headersobjectNo-Intestazioni personalizzate della richiesta
bodystringNo-Corpo della richiesta (per POST)
check_sslbooleanNoTrueVerifica validità e scadenza del certificato SSL
containsstringNo-Il corpo della risposta deve contenere questa stringa
follow_redirectsbooleanNoTrueSegui i reindirizzamenti 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

Verifica Porta

port.check

Verifica se la/le porta/e di rete sono aperte o chiuse

Parameters:

NameTypeRequiredDefaultDescription
portanyYes-Numero porta o array di porte da verificare
hoststringNolocalhostNumero porta o array di porte da verificare
connect_timeoutnumberNo2Host a cui connettersi
expect_openbooleanNo-Timeout per ogni tentativo di connessione

Output:

FieldTypeDescription
okbooleanImposta true per verificare porte aperte, false per chiuse
resultsarraySe tutte le verifiche sono passate (se expect_open e impostato)
open_portsarraySe tutte le verifiche sono passate (se expect_open e impostato)
closed_portsarrayArray dei risultati verifica porta
summaryobjectLista delle porte aperte

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

Attendi Porta

port.wait

Attendi che una porta di rete diventi disponibile

Parameters:

NameTypeRequiredDefaultDescription
portnumberYes-Numero porta da attendere
hoststringNolocalhostHost a cui connettersi
timeoutnumberNo60Host a cui connettersi
intervalnumberNo500Tempo massimo di attesa
expect_closedbooleanNoFalseTempo tra tentativi di connessione in millisecondi

Output:

FieldTypeDescription
okbooleanAttendi che la porta diventi non disponibile invece
availablebooleanSe la porta e nello stato previsto
hoststringSe la porta e nello stato previsto
portnumberSe la porta e attualmente disponibile
wait_time_msnumberHost verificato
attemptsnumberPorta verificata

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

Elenca Processi

process.list

Elenca tutti i processi in background in esecuzione

Parameters:

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

Output:

FieldTypeDescription
okbooleanOperazione riuscita
processesarrayOperazione riuscita
countnumberOperazione riuscita
runningnumberLista delle informazioni processo
stoppednumberNumero totale di processi

Example: List all processes

yaml

Example: Filter by name

yaml
filter_name: dev

Avvia Processo in Background

process.start

Avvia un processo in background (server, servizio, ecc.)

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
okbooleanSe il processo e stato avviato con successo
pidnumberSe il processo e stato avviato con successo
process_idstringSe il processo e stato avviato con successo
namestringID Processo
commandstringIdentificatore processo interno per process.stop
cwdstringNome processo
started_atstringIl comando eseguito
initial_outputstringTimestamp ISO quando il processo e avviato

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

Ferma Processo

process.stop

Ferma un processo in background in esecuzione

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
okbooleanSe tutti i processi sono stati fermati con successo
stoppedarraySe tutti i processi sono stati fermati con successo
failedarrayLista delle info processi fermati
countnumberLista delle info processi fermati

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

Esegui Comando Shell

shell.exec

Esegui un comando shell e cattura output

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
okbooleanSe il comando e stato eseguito con successo (codice uscita 0)
exit_codenumberSe il comando e stato eseguito con successo (codice uscita 0)
stdoutstringSe il comando e stato eseguito con successo (codice uscita 0)
stderrstringCodice uscita comando
commandstringOutput standard
cwdstringOutput errore standard
duration_msnumberIl comando eseguito

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"}

Esegui SSH

ssh.exec

Esegui comando su server remoto via SSH

Parameters:

NameTypeRequiredDefaultDescription
hoststringYes-Nome host o IP del server SSH
portnumberNo22Porta SSH
usernamestringYes-Nome utente SSH
passwordstringNo-Password SSH
private_keystringNo-Chiave privata in formato PEM
commandstringYes-Comando da eseguire su server remoto
timeoutnumberNo30Timeout del comando in secondi

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

Download SFTP

ssh.sftp_download

Scarica file da server remoto via SFTP

Parameters:

NameTypeRequiredDefaultDescription
hoststringYes-Nome host o IP del server SSH
portnumberNo22Porta SSH
usernamestringYes-Nome utente SSH
passwordstringNo-Password SSH
private_keystringNo-Chiave privata in formato PEM
remote_pathstringYes-Percorso del file sul server remoto
local_pathstringYes-Percorso di destinazione sul computer 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

Caricamento SFTP

ssh.sftp_upload

Carica file su server remoto via SFTP

Parameters:

NameTypeRequiredDefaultDescription
hoststringYes-Nome host o IP del server SSH
portnumberNo22Porta SSH
usernamestringYes-Nome utente SSH
passwordstringNo-Password SSH
private_keystringNo-Chiave privata in formato PEM
local_pathstringYes-Percorso del file locale da caricare
remote_pathstringYes-Percorso di destinazione sul server remoto
overwritebooleanNoTrueSovrascrivi file remoto esistente

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

Esegui Passaggi E2E

testing.e2e.run_steps

Esegui passaggi test end-to-end sequenzialmente

Parameters:

NameTypeRequiredDefaultDescription
stepsarrayYes-Array di definizioni passaggi test
stop_on_failurebooleanNoTrueWhether to stop on failure
timeout_per_stepnumberNo30000Timeout Per Step value

Output:

FieldTypeDescription
okbooleanSe l'operazione e riuscita
passednumberSe l'operazione e riuscita
failednumberSe l'operazione e riuscita
resultsarrayNumero di test passati

Porta di Qualità

testing.gate.evaluate

Valuta metriche qualita rispetto a soglie definite

Parameters:

NameTypeRequiredDefaultDescription
metricsobjectYes-Metriche da valutare
thresholdsobjectYes-Metriche da valutare
fail_on_breachbooleanNoTrueWhether to fail on breach

Output:

FieldTypeDescription
okbooleanValori soglia per ogni metrica
passedbooleanSe l'operazione e riuscita
resultsarraySe l'operazione e riuscita
summarystringNumero di test passati

Esegui Test HTTP

testing.http.run_suite

Esegui suite test API HTTP

Parameters:

NameTypeRequiredDefaultDescription
testsarrayYes-Array di definizioni test HTTP
base_urlstringNo-Base URL for API requests
headersobjectNo{}HTTP request headers

Output:

FieldTypeDescription
okbooleanSe l'operazione e riuscita
passednumberSe l'operazione e riuscita
failednumberSe l'operazione e riuscita
resultsarrayNumero di test passati

Esegui Linter

testing.lint.run

Esegui controlli linting sul codice sorgente

Parameters:

NameTypeRequiredDefaultDescription
pathsarrayYes-File o directory da analizzare
linterstringNoautoLinter
fixbooleanNoFalseWhether to fix

Output:

FieldTypeDescription
okbooleanSe l'operazione e riuscita
errorsnumberSe l'operazione e riuscita
warningsnumberSe l'operazione e riuscita
issuesarrayNumero di errori riscontrati

Genera Report

testing.report.generate

Genera report esecuzione test

Parameters:

NameTypeRequiredDefaultDescription
resultsobjectYes-Results data
formatstringNojsonFormat
titlestringNoTest ReportTitle

Output:

FieldTypeDescription
okbooleanSe l'operazione e riuscita
reportstringSe l'operazione e riuscita
formatstringSe l'operazione e riuscita
summaryobjectIl report

Esegui Scenario

testing.scenario.run

Esegui test basato su scenario (stile BDD)

Parameters:

NameTypeRequiredDefaultDescription
scenarioobjectYes-Definizione scenario con given/when/then
contextobjectNo{}Additional context data

Output:

FieldTypeDescription
okbooleanDefinizione scenario con given/when/then
passedbooleanSe l'operazione e riuscita
stepsarraySe l'operazione e riuscita

Scansione Sicurezza

testing.security.scan

Scansiona vulnerabilita di sicurezza

Parameters:

NameTypeRequiredDefaultDescription
targetsarrayYes-File, URL o percorsi da scansionare
scan_typestringNoallScan Type
severity_thresholdstringNomediumSeverity Threshold

Output:

FieldTypeDescription
okbooleanSe l'operazione e riuscita
vulnerabilitiesarraySe l'operazione e riuscita
summaryobjectSe l'operazione e riuscita

Esegui Suite Test

testing.suite.run

Esegui una collezione di test

Parameters:

NameTypeRequiredDefaultDescription
testsarrayYes-Array di definizioni test
parallelbooleanNoFalseWhether to parallel
max_failuresnumberNo0Array di definizioni test

Output:

FieldTypeDescription
okboolean0 = nessun limite
passednumber0 = nessun limite
failednumberSe l'operazione e riuscita
skippednumberNumero di test passati
resultsarrayNumero di test falliti

Esegui Unit Test

testing.unit.run

Esegui unit test

Parameters:

NameTypeRequiredDefaultDescription
pathsarrayYes-Percorsi a file o directory test
patternstringNotest_*.pyPattern
verbosebooleanNoFalseWhether to verbose

Output:

FieldTypeDescription
okbooleanSe l'operazione e riuscita
passednumberSe l'operazione e riuscita
failednumberSe l'operazione e riuscita
errorsnumberNumero di test passati
resultsarrayNumero di test falliti

Confronto Visivo

testing.visual.compare

Confronta output visivi per differenze

Parameters:

NameTypeRequiredDefaultDescription
actualstringYes-Percorso o base64 dell'immagine effettiva
expectedstringYes-Percorso o base64 dell'immagine effettiva
thresholdnumberNo0.1Percorso o base64 dell'immagine attesa
output_diffbooleanNoTrueWhether to output diff

Output:

FieldTypeDescription
okbooleanDifferenza massima consentita (0-1)
matchbooleanSe l'operazione e riuscita
differencenumberSe l'operazione e riuscita
diff_imagestringLa corrispondenza

Valuta Qualita UI

ui.evaluate

Valutazione completa qualita UI con punteggio multi-dimensionale

Parameters:

NameTypeRequiredDefaultDescription
screenshotstringYes-Percorso screenshot o URL da valutare
app_typestringNoweb_appPercorso screenshot o URL da valutare
page_typestringNo-Tipo di pagina in valutazione
evaluation_criteriaarrayNo['visual_design', 'usability', 'accessibility', 'consistency', 'responsiveness']Criteri specifici da valutare (default tutti)
target_audiencestringNo-Descrizione utenti target
brand_guidelinesstringNo-Brevi linee guida brand da verificare
min_scorenumberNo70Punteggio minimo complessivo per passare (0-100)
api_keystringNo-Chiave API OpenAI (default variabile env OPENAI_API_KEY)

Output:

FieldTypeDescription
okbooleanChiave API OpenAI (default variabile env OPENAI_API_KEY)
passedbooleanSe la valutazione e riuscita
overall_scorenumberSe la valutazione e riuscita
scoresobjectPunteggio qualita UI complessivo (0-100)
strengthsarrayPunteggio qualita UI complessivo (0-100)
issuesarrayPunteggi per criteri di valutazione
recommendationsarrayLista dei punti di forza UI
summarystringRaccomandazioni specifiche di miglioramento

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"]

Analizza Immagine con AI

vision.analyze

Analizza immagini usando OpenAI Vision API (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
okbooleanSe l'analisi e riuscita
analysisstringSe l'analisi e riuscita
structuredobjectIl risultato dell'analisi AI
modelstringDati analisi strutturati (se output_format e structured/json)
tokens_usednumberModello usato per l'analisi

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

Confronta Immagini

vision.compare

Confronta due immagini e identifica differenze visive

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
okbooleanSe il confronto e riuscito
has_differencesbooleanSe il confronto e riuscito
similarity_scorenumberSe sono state trovate differenze significative
differencesarrayPercentuale similarita (0-100)
summarystringLista delle differenze identificate
recommendationstringRiepilogo risultati confronto

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.