You test what the screen shows. When it's wrong, you file it against 'the app'.
Behind every screen is an API sending the data. Test the API directly and you find bugs earlier, faster, and without a browser at all.
Modern apps are split: a frontend (the UI) and a backend exposing an API — URLs that accept requests and return data, usually as JSON. API tests skip the browser entirely: no locators, no waits, no flakiness, and they run in milliseconds. Many career-changers find this easier than UI automation — it's a genuine early win.
GET read · POST create · PUT replace · PATCH partial update · DELETE remove.https://jsonplaceholder.typicode.com/users/1 — "user with id 1".200 OK · 201 Created · 400 your request was bad · 401/403 auth problems · 404 not found · 500 the server broke. Rule of thumb: 4xx = suspect the client, 5xx = suspect the server.Windows ships curl. In PowerShell:
curl.exe https://jsonplaceholder.typicode.com/users/1
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz",
"address": {
"street": "Kulas Light",
"city": "Gwenborough",
"zipcode": "92998-3874"
},
"company": { "name": "Romaguera-Crona" }
}Read the JSON like a form: "key": value pairs, nested objects in {…}, and (elsewhere) arrays in […]. The path to the city is address.city — that dot notation is exactly how your assertions will target values in the next lesson.
JSONPlaceholder is a free fake API made for practice — our target for this suite. For exploring real APIs at work you'll likely also use Postman (a GUI for requests); the concepts transfer 1:1.
Fix: In PowerShell, curl is an alias for Invoke-WebRequest with different flags. Always type curl.exe — the real thing.
Fix: A typo in the URL, or you're offline / behind a proxy. Paste the URL into a browser first — if the browser can't reach it, no tool can.
Using curl.exe (or Postman if you prefer):
/posts/1 — what fields does a post have?/posts/1/comments — an array. How many comments? (Count the { openers or scroll.)/posts/99999 — what comes back? (Empty {} — and status 404. Add -i to curl to see status: curl.exe -i …)