Install any skill in seconds. Free to start, no credit card required.
Get Started Free →tldraw/write-e2e-tests
Writing Playwright E2E tests for tldraw.
Passed 20 of 22 test cases with the skill, and 5 of 22 without it.
and 21 more in the full report
15 fixed5 passed either way2 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
This benchmark measured an earlier version of the skill.
A newer attempt on gemini-3.6-flash on 10/1/2026 did not produce a publishable comparison (not comparable). The snapshot above is the previously measured run.
One of 15 test cases the skill fixed. Same model, same prompt, with and without the skill.
Where should new E2E test files for tldraw SDK examples be placed, and what naming convention should be used for the file?
| Checked | Without skill | With skill |
|---|---|---|
| Places test files inside apps/examples/e2e/tests/ directory | Passed | Passed |
| Names test files using test-<feature>.spec.ts pattern | Missed | Passed |
The instructions your model reads when the skill loads.
E2E tests use Playwright. Located in apps/examples/e2e/ (SDK examples) and apps/dotcom/client/e2e/ (tldraw.com).
apps/examples/e2e/
├── fixtures/
│ ├── fixtures.ts # Test fixtures (toolbar, menus, etc.)
│ └── menus/ # Page object models
├── tests/
│ └── test-*.spec.ts # Test files
└── shared-e2e.ts # Shared utilities
Name test files test-<feature>.spec.ts.
When using page.evaluate() to access the editor or UI events:
import { Editor } from 'tldraw'
declare const editor: Editor
declare const __tldraw_ui_event: { name: string; data?: any }
import { expect } from '@playwright/test'
import test from '../fixtures/fixtures'
import { setupOrReset } from '../shared-e2e'
test.describe('Feature name', () => {
test.beforeEach(setupOrReset)
test('does something', async ({ page, toolbar }) => {
test cases passed, vs 5 / 22 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.