Recording of the visual regression run on excalidraw.com · Drawing Test.

In this video· click a step to jump to it

E
Passed ✓

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;
+141 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
✓
Text
—
DOM
✓
Network
+1 −1
Console
✓
A11y
—
Perf
—
URL
✓
Variables
—
Full report
Log in →
0
Diff px
9s
Duration
—
Accessible
A
Fast
Web Vitals · 100

Notes from the demo run

AI-generated

Excalidraw 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...).

Highlights
  • Canvas-native coverage
    The 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 editor
    Element properties (Opacity, Layers, Actions) surface contextually only for the selected shape, keeping the canvas itself uncluttered.
  • Keyboard-first palette
    Every tool is bound to a number shortcut (1-0), which keeps recorded interaction flows compact and fast to replay.
Friction points
  • No accessible canvas nodes
    Shapes 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 strokes
    Rough.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

Earned · Lastest awards

Proof your app is not AI slop

LASTEST
starter
regressions
0
Badges stay live, ratchet upward, only downgrade on confirmed regression.
57,568 test runs recorded · 1,174 products tested with Lastest

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.