Catch a failing request behind a green screen
-
Write the UI flow as usual, for example
go to the product page, click 'Add to Cart', open the cart. -
Add a network assertion after the step that sends the request, for example
assert no API calls returned 5xx status codes. -
Add a check on the specific call you care about, for example
assert the POST /api/cart returned HTTP status 201. -
Run the full command:
- Read the summary. When an assertion fails, the failing step names the request and its status, and the step’s network log is in the run’s Evidence Pack.
Fail the run on console errors
A JavaScript error in the console often means a broken feature that has not been noticed yet. In this recording, Claude Code runs Kane CLI against a cart page, the Add to Cart button works on screen, and the run still fails because the console logged a 404 for a missing resource.- Ask your coding agent, or run it yourself:
kane-cli run "Go to https://your-app.com/cart, click 'Add to Cart', assert the console has no errors" --agent. - Kane CLI performs the click, checks that the cart badge and button label updated, and then queries the console messages captured during the run.
- The run fails with one console error found, while every UI step passed.
- The agent reruns with an extraction, for example
store the console errors as 'errors', to read the exact message, which in the recording is a resource that returned 404. - Fix the missing resource and rerun the same command until it passes.
Check that a value was saved to localStorage
Many apps keep the session token, feature flags, and user preferences in localStorage, and a regression there shows up only after a reload. This use case changes a setting in the UI and then checks the stored value directly.- Run
kane-cli run "Go to https://your-app.com/settings, switch the theme to Dark, assert the theme preference in localStorage is 'dark'" --agent. - Add a reload to prove persistence, for example
reload the page, assert the page is still in dark mode. - To check what login writes, add
assert auth_token exists in localStorageafter the sign-in step. - Review the summary. Kane CLI reports the stored value it found next to the value you expected.
Verify what a Copy button copied
A Copy button that copies the wrong link or an empty string passes every visual check. Kane CLI runs each test with an isolated test clipboard, so the run can read exactly what the button copied.- Run
kane-cli run "Go to https://your-app.com/invoices/42, click the 'Copy link' button, then verify the clipboard contains '/invoice/42'" --agent. - To reuse the copied value later in the flow, store it, for example
store the clipboard text as 'invoice_link', and thenopen {{invoice_link}}. - Review the summary, which quotes the clipboard text Kane CLI found.
Gate on page load time
A page that works but loads slowly still loses users. In this recording, Claude Code asks Kane CLI to open a page and assert that it loads in under 3000 ms, and reads the result from the NDJSON stream.- Run
kane-cli run "Go to https://your-app.com, assert the page load time is under 3000ms" --agent. - Kane CLI loads the page, reads the timing it captured, and compares it with your budget.
- The
run_endevent carries the pass or fail and the measured value, so an agent or a CI step can act on it. - Tighten the number over time as the page gets faster, so a slow regression fails the run.
Hold a page to Core Web Vitals
Heavy animation, parallax, and large images are where Core Web Vitals go wrong. In this recording, a coding agent builds a scroll-driven landing page and Kane CLI measures LCP, FCP, TTFB, CLS, and INP after a real click, and then gates on LCP and CLS.- Navigate to the page and wait for it to load fully.
- Perform one real interaction first, for example
click the 'Technology' link in the top navigation once, then wait two seconds, so INP has an interaction to measure. - Ask for each metric once, for example
read the Core Web Vitals and report LCP, FCP, TTFB, CLS, and INP. Tell Kane CLI to record a missing metric asnot availableinstead of retrying. - End with the gate, for example
confirm that LCP is under 4000 ms and CLS is below 0.1. - Add
--max-stepsto the command, because an objective with many separate extractions benefits from an explicit ceiling.
Time the API call behind a UI action
- Describe the purchase flow in the objective, for example
buy the Wireless Gaming Headset 7.1 with the test card 4242 4242 4242 4242. - Assert on the call the UI makes, for example
confirm POST /api/shop/pay returned 201. - Add the time limit to the same objective, for example
confirm the POST /api/shop/pay response time is under 2000 ms. - Run it. Kane CLI reports the measured time next to the limit, and a slower call fails the run even when the payment succeeds.
Next steps
- DevTools Checkpoints: every domain, with assertions, extractions, and conditions
- Security & Access Testing: cookie flags, token storage, and role checks
- Evidence: the per-step console and network logs behind each verdict
- CI/CD & DevOps Testing: run these checks on every deploy