In this video· click a step to jump to it
Test recording
Drawing Test
9,326 ms · 0 pixels changed · matches baseline
We built this regression test for excalidraw.com — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against excalidraw.com. Claim it into your own workspace and re-run it on every deploy — free.
import { Page } from 'playwright';
export async function test(page: Page, baseUrl: string, screenshotPath: string, stepLogger: any) {
// Helper to build URLs safely (handles trailing/leading slashes)
function buildUrl(base, path) {
const cleanBase = base.endsWith('/') ? base.slice(0, -1) : base;
const cleanPath = path.startsWith('/') ? path : '/' + path;
return cleanBase + cleanPath;
}
// Helper to generate unique screenshot paths
let screenshotStep = 0;Checks run
Notes from the demo run
AI-generatedExcalidraw is an open-source virtual whiteboard for hand-drawn-style diagrams that runs entirely client-side on an HTML canvas. The Drawing Test replays a recorded cursor path that picks shape tools from the top palette and sketches a rounded rectangle, a diamond, an ellipse, and a framed rectangle, then captures full-page checkpoints. The editor stays clean and distraction-free: the contextual Opacity / Layers / Actions panel only appears for the selected element, and the whole tool palette is number-mapped (rectangle=2, diamond=3, ellipse=4...).
- Canvas-native coverageThe flow drives the infinite canvas directly through cursor playback and pixel-diffs the rough.js hand-drawn strokes - exactly the surface DOM-based testing tools are blind to.
- Distraction-free editorElement properties (Opacity, Layers, Actions) surface contextually only for the selected shape, keeping the canvas itself uncluttered.
- Keyboard-first paletteEvery tool is bound to a number shortcut (1-0), which keeps recorded interaction flows compact and fast to replay.
- No accessible canvas nodesShapes on the canvas have no DOM elements, so the recorder falls back to coordinate-only clicks - flows become position-fragile if the toolbar layout shifts.
- Non-deterministic strokesRough.js renders each shape with a randomized seed; without pinning the seed, re-runs can show sub-pixel stroke jitter that reads as a visual change.
Share this run
Proof your app is not AI slop
This test was built for excalidraw.com — claim it free
One click copies the test and baseline screenshots into your own Lastest workspace. Re-run on every deploy and catch regressions before your users do — free, no card required.