Recording of the visual regression run on app.editcanvas.ai · EditCanvas — app walkthrough.

In this video· click a step to jump to it

A
Passed

Test recording

EditCanvas — app walkthrough

68,028 ms · 39,313 pixels changed

We built this regression test for app.editcanvas.ai — it's yours to keep, free.

Take this test with you

This is a real Playwright test, recorded against app.editcanvas.ai. Claim it into your own workspace and re-run it on every deploy — free.

export async function test(page, baseUrl, screenshotPath, stepLogger) {
  const shot=(n,s)=>screenshotPath.replace('.png','-'+n+'-'+(String(s).replace(/[^a-z0-9]+/gi,'-').replace(/^-|-$/g,'').toLowerCase().slice(0,22)||'view')+'.png');
  let idx=1, post=0;
  const cap=async(s,full)=>{ stepLogger.log('Scenario '+idx+': '+s); await page.screenshot({path:shot(idx,s),fullPage:full!==false}); idx++; };
  const APP='https://app.editcanvas.ai';
  const click=async(re)=>{ try{ const b=page.getByRole('button',{name:re}).first(); if(await b.isVisible().catch(function(){return false;})){ await b.click({timeout:3000}); return true; } }catch(e){} return false; };
  const clickText=async(t)=>{ try{ const e=page.getByText(t,{exact:false}).first(); if(await e.isVisible().catch(function(){return false;})){ await e.click({timeout:3000}); return true; } }catch(e){} return false; };
  const fit=async()=>{ await page.keyboard.press('Escape').catch(function(){}); await click(/fit|zoom to fit|reset zoom|fullscreen/i); await page.evaluate(function(){ var b=Array.prototype.slice.call(document.querySelectorAll('button')).filter(function(x){return (x.innerText||'').trim()==='−'||/zoom out/i.test(x.getAttribute('aria-label')||'');}); for(var k=0;k<5;k++){ if(b[0]) b[0].click(); } }).catch(function(){}); await page.waitForTimeout(500); };
  await page.goto('https://editcanvas.ai/',{waitUntil:'domcontentloaded'}).catch(function(){}); await page.waitForLoadState('networkidle',{timeout:6000}).catch(function(){}); await page.waitForTimeout(1500); await cap('home');
  await page.goto(APP+'/editor',{waitUntil:'domcontentloaded'}).catch(function(){}); await page.waitForLoadState('networkidle',{timeout:8000}).catch(function(){}); await page.waitForTimeout(3500); await page.keyboard.press('Escape').catch(function(){}); await cap('editor-blank'); post++;
  await click(/menu pool/i); await page.waitForTimeout(1800); await cap('menu-pool-templates'); post++;
  await page.evaluate(function(){ var imgs=Array.prototype.slice.call(document.querySelectorAll('img')).filter(function(i){return i.offsetParent&&i.width>40&&i.height>40;}); if(imgs[0]) imgs[0].click(); }).catch(function(){}); await page.waitForTimeout(2500); await page.keyboard.press('Escape').catch(function(){}); await fit(); await cap('template-applied'); post++;
+8 more lines claim the test to get the full code.

Checks run

Run
Visual
4.32%
Text
DOM
Network
+380 −330
Console
10 new
A11y
Review
Perf
120 drift
URL
200 diverged
Variables
Full report
Log in →
39,313
Diff px
1m 08s
Duration
Review
Accessible
WCAG 2.2
A
Fast
Web Vitals · 100

Notes from the demo run

AI-generated

EditCanvas turns any menu image or PDF into a fully editable design you can publish to QR, print or screen. The editor loads instantly (even before sign-in) as a full design canvas with size presets, background controls, a Menu Pool of templates, Smart Create, and one-click text/object insertion — auto-save is on by default once you're signed in. It's a focused, Canva-for-menus surface that gets you designing in seconds.

Highlights
  • Product-first onboarding
    The editor canvas is usable before you create an account — you design first and sign in to save/export, which is exactly the right order for a creative tool.
  • Menu-specific presets
    Signage-horizontal/portrait/landscape size presets and a Menu Pool of starting templates mean a restaurant owner isn't starting from a blank artboard.
  • Auto-save
    AUTO-SAVE ON in the toolbar removes the classic 'did I lose my work' anxiety for non-technical users.
Friction points
  • Dense toolbar for first-timers
    Instant Menu, Smart Create, Insert, Menu Pool, Add text, Magic, Clone all sit in one bar with terse labels — tooltips or a 30-second intro would help a first-time restaurant owner.

5 visual changes

Step 1683 px changed
Before
Before
After
After
Diff
Diff
Step 31,635 px changed
Before
Before
After
After
Diff
Diff
Step 41,635 px changed
Before
Before
After
After
Diff
Diff
Step 530 px changed
Before
Before
After
After
Diff
Diff
Step 635,330 px changed
Before
Before
After
After
Diff
Diff

Share this run

Earned · Lastest awards

Proof your app is not AI slop

LASTEST
starter
tests
all passing
regressions
0
Badges stay live, ratchet upward, only downgrade on confirmed regression.
56,425 test runs recorded · 963 products tested with Lastest

This test was built for app.editcanvas.ai — 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.