1 / 2 · Book 3 · From Scripts to Agents -- A Fundamental Shift · drill: interview Q&A⊞ allnext →Get the book →
1.2What Makes an Agent Different
An agent does not follow a fixed script. Instead, it operates in a loop:
- Observe the current state of the system
- Reason about what to do next, considering the objective and what it has already tried
- Act on its decision
- Evaluate whether the objective has been met
This loop -- called the ReAct pattern (Reason + Act) -- is the foundation of all agentic testing. Originally described for general-purpose LLM agents, it maps directly to testing workflows. And it is no longer a research curiosity: as of July 2026, agentic testing is a mainstream discipline, with the ReAct loop packaged inside first-party tools (Playwright Test Agents) and widely adopted SDKs (Stagehand, browser-use).
Here is the same login test, expressed as an agent objective:
# Agentic test -- adaptive, goal-oriented
agent = TestAgent(
objective="Log in with test@test.com / password123 and verify dashboard loads"
)
result = agent.run(max_steps=20)
assert result.status == "pass"
When the agent encounters the scenarios that break scripts, it adapts:
| Scenario | Script Response | Agent Response |
|---|---|---|
| Button ID changed | Fails: element not found | Searches for alternative selectors, finds the button by text |
| Cookie popup appears | Fails: popup blocks interaction | Observes popup, dismisses it, continues |
| Page loads slowly | Fails: timeout | Observes loading state, waits, retries |
| 2FA field added | Fails: unexpected page | Observes new field, reports environment configuration issue |
| Account locked | Fails: wrong URL | Reads error message, reports "Account locked -- environment issue" |
The agent provides diagnostic information, not just pass/fail.