Loading...
Loading...
HelpMeTest API library — write Robot Framework tests that make HTTP requests through the browser session (auth cookies included automatically). Use when user wants to test REST APIs, write API tests, chain requests, assert JSON fields, test CRUD flows, debug a failing API call, or use keywords like GET/POST/PUT/PATCH/DELETE/CURL. Triggers on: 'test the API', 'call this endpoint', 'check the response', 'POST /api/...', 'GET /api/...', 'write api tests', 'assert json', 'api returns 4xx', 'why is /api/x returning 401', 'debug this api call'. Also self-invokes when another test reveals an API call returning an unexpected status and you want to investigate or reproduce it in isolation.
npx skill4agent add help-me-test/skills api-testinghttps://httpbin.playground.helpmetest.comAs <StateName>As Admin
Go To https://app.example.com
GET /api/users
Response Status Should Be 200Go To https://httpbin.playground.helpmetest.com
GET /get
Response Status Should Be 200
Field Should Exist url
GET /get headers={"X-Custom-Header": "hello"}
Field Should Exist headers.X-Custom-HeaderGo To https://httpbin.playground.helpmetest.com
POST /post body={"name": "Alice", "role": "editor"}
Response Status Should Be 200
Field Equals json.name Alice
Field Equals json.role editorPUT /put body={"name": "Alice Updated"}
Response Status Should Be 200
Field Equals json.name Alice Updated
PATCH /patch body={"email": "new@example.com"}
Response Status Should Be 200
Field Equals json.email new@example.comDELETE /delete
Response Status Should Be 200POST Form /post fields={"username": "alice", "password": "secret"}
Response Status Should Be 200
Field Equals form.username alice# File on disk
POST Multipart /post files={"avatar": "/tmp/photo.png"}
Response Status Should Be 200
# Inline base64 — no file on disk needed
POST Multipart /post
... fields={"title": "Report"}
... files={"file": {"base64": "SGVsbG8gV29ybGQ=", "filename": "hello.txt", "content_type": "text/plain"}}
Response Status Should Be 200
Field Should Exist files.fileCURL curl 'https://httpbin.playground.helpmetest.com/get' -H 'X-My-Header: test'
Response Status Should Be 200
Field Should Exist headers.X-My-Header/api/usersGo ToAshttps://httpbin.playground.helpmetest.com/getcredentials: includeGo To https://httpbin.playground.helpmetest.com
GET /status/200
Response Status Should Be 200
GET /status/404
Response Status Should Be 404
GET /status/500
Response Status Should Be 500GET /get
Response Body Should Contain "url"
Response Body Should Not Contain errorGET /get
Response Body Should Match {"url": "#string", "headers": "#object"}
POST /post body={"name": "Alice"}
Response Body Should Match {"json": {"name": "Alice"}, "url": "#string"}#string#number#boolean#array#object#null#notnull#present#ignore..NGET /get headers={"X-App": "myapp"}
Field Equals headers.X-App myapp
Field Should Exist headers.Host
Field Should Not Exist headers.X-Nonexistent
POST /post body={"score": 42, "tags": ["a", "b", "c"]}
Field Equals json.score 42
Field Equals json.tags.0 a
Field Equals json.tags.2 c
Field Greater Than json.score 0
Field Less Than json.score 100
Field Greater Or Equal json.score 42
Field Less Or Equal json.score 42
POST /post body={"message": "hello world"}
Field Contains json.message hello
Field Not Contains json.message error
Field Starts With json.message hello
Field Ends With json.message world
POST /post body={"uuid": "abc-123-def"}
Field Matches Regexp json.uuid ^[a-z]+-\\d+-[a-z]+$
POST /post body={"status": "active"}
Field Should Be One Of json.status active,pending,inactivePOST /post body={"name": "Alice", "score": 99, "active": true, "tags": [], "meta": {}}
Field Type Should Be json.name string
Field Type Should Be json.score number
Field Type Should Be json.active boolean
Field Type Should Be json.tags array
Field Type Should Be json.meta objectPOST /post body={"tags": ["a", "b", "c"]}
Field Length Should Be json.tags 3
POST /post body={"items": []}
Field Should Be Empty json.items
POST /post body={"items": [1, 2]}
Field Should Not Be Empty json.items${EMPTY}# hypothetical endpoint returning a JSON array
GET /json-array-endpoint
Field Length Should Be ${EMPTY} 5
Field Each Should Match ${EMPTY} {"id": "#number"}POST /post body={"users": [{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}]}
Field Each Should Match json.users {"id": "#number", "name": "#string"}POST /post body={"errors": [], "data": [1, 2, 3]}
Field Should Be Empty json.errors
Field Should Not Be Empty json.dataGET /response-headers?Content-Type=application/json
Response Header Should Be content-type application/json
Response Header Should Contain content-type jsonGET /get
Response Time Should Be Less Than 2000
# httpbin /delay/N endpoint adds N seconds — use to test timeout thresholds
GET /delay/1
Response Time Should Be Less Than 3000Get Response FieldPOST /post body={"name": "Alice"}
Response Status Should Be 200
${name}= Get Response Field json.name
# ${name} == "Alice"
GET /get headers={"X-Echo": "${name}"}
Field Equals headers.X-Echo Alice${status}= Get Response Status
${body}= Get Response Body
Log ${body}*** Test Cases ***
Create Read Update Delete User
As Admin
Go To https://app.example.com
# Create
POST /api/users body={"name": "Alice", "role": "editor"}
Response Status Should Be 201
${id}= Get Response Field id
# Read
GET /api/users/${id}
Field Equals name Alice
Field Equals role editor
# Update
PATCH /api/users/${id} body={"name": "Alice Updated"}
Response Status Should Be 200
Field Equals name Alice Updated
# Delete
DELETE /api/users/${id}
Response Status Should Be 204
# Verify gone
GET /api/users/${id}
Response Status Should Be 404Go To https://httpbin.playground.helpmetest.com
# 404
GET /status/404
Response Status Should Be 404
# 500
GET /status/500
Response Status Should Be 500
# App-level: missing required field
As Admin
Go To https://app.example.com
POST /api/users body={"role": "editor"}
Response Status Should Be 400
Field Should Exist error
# Unauthorized (no session)
GET /api/admin/secrets
Response Status Should Be 401
# Forbidden (wrong role)
As RegularUser
POST /api/admin/users body={"name": "Bob"}
Response Status Should Be 403Javascript fetch(...)As <StateName>Go Tobody={"key": "value"}httpbin.playground.helpmetest.com.json.form.files.argsPOST /post body={"name":"Alice"}json.namename