From sundial-org-awesome-openclaw-skills-4
Executes E2E UI tests from plain English descriptions via browser automation, screenshots steps, generates video walkthroughs, and exports Playwright .spec.ts scripts for CI/CD.
npx claudepluginhub joshuarweaver/cascade-ai-ml-agents-misc-2 --plugin sundial-org-awesome-openclaw-skills-4This skill uses the workspace's default tool permissions.
Describe your UI tests in plain English. The agent figures out how to find buttons, navigate the app flow, and execute each step โ no selectors or code needed. It screenshots every major step, stitches them into a walkthrough video, and DMs you the result with a pass/fail report.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
Describe your UI tests in plain English. The agent figures out how to find buttons, navigate the app flow, and execute each step โ no selectors or code needed. It screenshots every major step, stitches them into a walkthrough video, and DMs you the result with a pass/fail report.
Made in ๐ค Texas โค๏ธ PlebLab

.spec.ts from the verified stepsnpx playwright testWhen running a test:
node scripts/ui-test.js get "<name>"browser action=start profile=clawdbrowser action=snapshot to see the page
c. Use browser action=act with the appropriate request (click/type/press/etc.)
d. Take a screenshot after each step
e. Record what selector/ref was used and whether it passednode scripts/ui-test.js save-run "<name>" passed=true/falseWhen exporting to Playwright:
.spec.ts file with proper imports, test structure, and assertionsThe agent should interpret plain English steps like:
| User says | Browser action | Playwright equivalent |
|---|---|---|
| "click the Sign In button" | act: click ref="Sign In button" | page.getByRole('button', {name: 'Sign In'}).click() |
| "type hello@test.com in the email field" | act: type ref="email" text="hello@test.com" | page.getByLabel('Email').fill('hello@test.com') |
| "verify the dashboard shows Welcome" | snapshot + check text | expect(page.getByText('Welcome')).toBeVisible() |
| "wait for the page to load" | act: wait | page.waitForLoadState('networkidle') |
| "click the hamburger menu" | act: click (find menu icon) | page.getByRole('button', {name: 'menu'}).click() |
| "scroll down" | act: evaluate fn="window.scrollBy(0,500)" | page.evaluate(() => window.scrollBy(0, 500)) |
| "check the Remember Me checkbox" | act: click ref="Remember Me" | page.getByLabel('Remember Me').check() |
| "select 'USD' from the currency dropdown" | act: select values=["USD"] | page.getByLabel('Currency').selectOption('USD') |
| "take a screenshot" | browser action=screenshot | page.screenshot({path: 'step-N.png'}) |
| "verify URL contains /dashboard" | check current URL | expect(page).toHaveURL(/dashboard/) |
Run via: node ~/workspace/skills/ui-test/scripts/ui-test.js <command>
| Command | Description |
|---|---|
create <name> [url] | Create a new test |
add-step <name> <step> | Add a plain English step |
set-steps <name> <json> | Replace all steps |
set-url <name> <url> | Set the test URL |
get <name> | Show test definition |
list | List all tests |
remove <name> | Delete a test |
save-run <name> ... | Save execution results |
runs [name] | Show run history |
export <name> [outfile] | Export as Playwright script |
Generated Playwright files include:
test.describe block with test nametest.beforeEach with navigation to base URLDuring test execution, the agent should:
step-NN-before.jpgstep-NN-after.jpgstep-NN-FAIL.jpgScreenshots are saved to: ~/.ui-tests/runs/<slug>-<timestamp>/
After the run completes, generate a walkthrough video:
ffmpeg -framerate 1 -pattern_type glob -i '~/.ui-tests/runs/<folder>/step-*.jpg' \
-vf "scale=1280:-2" -c:v libx264 -pix_fmt yuv420p -y output.mp4
Then send the video to the chat.
~/.ui-tests/<slug>.json~/.ui-tests/runs/<slug>-<timestamp>/run.json~/.ui-tests/runs/<slug>-<timestamp>/step-*.jpg~/.ui-tests/runs/<slug>-<timestamp>/walkthrough.mp4./tests/<slug>.spec.ts