UI test recipe -- composes browser-record (capture) + browser-replay (verify) so every test produces a replayable RVF artifact, not an ephemeral run
Install
npx skills add https://github.com/ruvnet/ruflo --skill browser-testSKILL.md
Browser Test
Automated UI testing. Now backed by a recorded RVF session container instead of an ephemeral run, so every test produces a replayable artifact.
When to use
- Verifying UI functionality, user flows, or that frontend changes work in a real browser.
- Producing a baseline session that future regressions can diff against.
- Re-running a stored test session when CI fails (no need to re-author the test).
Steps
- Record the test run by composing
browser-record:- Allocates an RVF container with
--kind browser-session. - Begins a ruvector trajectory.
- Allocates an RVF container with
- Drive interactions —
browser_open,browser_click,browser_fill,browser_type,browser_select. Each action emits atrajectory-step. - Wait for elements / network idle via
browser_waitbefore assertions. - Validate with
browser_get-text/browser_get-value/browser_get-title/browser_get-url. Validation outcomes go intofindings.mdinside the RVF container. - Screenshot before / after key interactions for visual regression. Filenames follow
<step-id>.png. - Snapshot the accessibility tree at navigation boundaries.
- End the session:
trajectory-end --verdict pass|fail,rvf compact, AgentDB index inbrowser-sessions. - (Optional) Diff against
--against <prior-session-id>: invokebrowser-screenshot-diffto compare the new run with a baseline.
Navigation
browser_back/browser_forwardfor history navigationbrowser_reloadto refresh the pagebrowser_scrollto scroll to elements or coordinates
What changed from v0.1.0
- The skill no longer ends with
browser_closealone — it ends with the session-end protocol. - Selectors discovered during the test land in
browser-selectors(host:intent), so the next test can find them by embedding similarity. - Validation outputs pass
aidefence_is_safebefore any LLM-facing summary; injection-flagged content is quarantined tofindings.md. - The same skill, used in CI, now produces an artifact that
/ruflo-browser replaycan re-drive.
Tips
- Use
browser_waitbefore assertions to handle async rendering. - For visual regression, save the parent session id and pass
--against <id>on the next run. - Use
browser_evalfor custom JavaScript assertions — but redact any returned strings via theaidefence_is_safegate before logging.
Related skills
tddmattpocock979KTest-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.diagnosing-bugsmattpocock678KDiagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.migrate-to-shoehornmattpocock388KMigrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace `as` in tests, or needs partial test data.systematic-debuggingobra275KUse when encountering any bug, test failure, or unexpected behavior, before proposing fixes