Install any skill in seconds. Free to start, no credit card required.
Get Started Free →onyx-dot-app/playwright-e2e-tests
Write and maintain Playwright end-to-end tests for the Onyx application.
Passed 21 of 23 test cases with the skill, and 9 of 23 without it.
and 17 more in the full report
13 fixed9 passed either way2 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 12 test cases the skill fixed. Same model, same prompt, with and without the skill.
In an Onyx Playwright test, I want to send a user message in the chat input and automatically wait for the AI response without writing custom locator wait loops. Which helper function from `chatActions` handles this?
| Checked | Without skill | With skill |
|---|---|---|
| Uses sendMessage function from @tests/e2e/utils/chatActions. | Missed | Passed |
The instructions your model reads when the skill loads.
Spec-authoring rules live in web/tests/e2e/README.md — the Page Object Model, locator
priority, and auto-retrying matchers. Read it before adding or changing a spec. This skill covers
the surrounding workflow: layout, environment, running tests, auth, and Onyx-specific utilities.
web/tests/e2e/ — organized by feature (auth/, admin/, chat/, assistants/, connectors/, mcp/)web/playwright.config.tsweb/tests/e2e/utils/web/tests/e2e/constants.tsweb/tests/e2e/global-setup.tsweb/output/playwright/Always use absolute imports with the @tests/e2e/ prefix — never relative paths (../, ../../). The alias is defined in web/tsconfig.json and resolves to web/tests/.
import { loginAs } from "@tests/e2e/utils/auth";
import { OnyxApiClient } from "@tests/e2e/utils/onyxApiClient";
import { TEST_ADMIN_CREDENTIALS } from "@tests/e2e/constants";
All new files should be .ts, not .js.
Run Playwright against your local dev servers so the tests exercise your working-tree changes:
start ods web dev (frontend, :3000) and ods backend api (backend, :8080), then use the
config default BASE_URL=http://localhost:3000 — no override needed. In dev, next dev proxies
/api/* to the backend itself (the route handler web/src/app/api/[...path]/route.ts), so the UI
and /api both live on :3000; global setup needs the backend up too, since it registers/logs in
users over /api/auth/*.
Readiness check: curl -s -o /dev/null -w '%{http_code}' http://localhost:3000/api/auth/type → 200.
Other bootstrap notes:
bunx playwright install chromium.test cases passed, vs 9 / 23 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.