Recording of the visual regression run on www.featurely.no · Featurely — register + app walkthrough.

In this video· click a step to jump to it

W
Passed ✓

Test recording

Featurely — register + app walkthrough

48,722 ms · 674,286 pixels changed

We built this regression test for www.featurely.no — it's yours to keep, free.

Take this test with you

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

export async function test(page, baseUrl, screenshotPath, stepLogger) {
  // Featurely uses Firebase Auth — same email can only sign up once. Every
  // re-run must use a fresh email or Firebase silently rejects with "email
  // already in use" and the form stays parked on /sign-up. We compute the
  // suffix at RUN time (Date.now()), not at test-creation time, so re-runs
  // never collide. Plus-addressing routes all mail to [email protected].
  const STAMP = Date.now().toString(36);
  const DEMO_EMAIL = `viktor+featurely.run${STAMP}@lastest.cloud`;
  const DEMO_PASSWORD = `•••`;
  const DEMO_NAME = 'Lastest Demo';

  const shot = (n, slug) => screenshotPath.replace('.png', `-${n}-${slug}.png`);
+158 more lines — claim the test to get the full code.

Checks run

Run
✓
Visual
76.10%
Text
—
DOM
✓
Network
+2008 −3832
Console
✓
A11y
—
Perf
—
URL
✓
Variables
—
Full report
Log in →
674,286
Diff px
49s
Duration
—
Accessible

Notes from the demo run

AI-generated

Featurely is an indie-dev admin suite that delivers what its marketing promises — one dashboard replacing feedback, errors, uptime, flags, analytics, i18n, and a CMS-ish 'Versions / Translations / Maintenance' grab-bag. The visual language is restrained and disciplined for an indie: dark theme with one accent yellow used identically on the F logomark, the primary CTA, the trial banner, and the active sidebar nav item; the same yellow underline-stripe shows up on blog covers, the pricing CTA, and the /demo Enter button. Public-side, the pricing page's compare-plans table is unusually candid (Hobby gets 1 project / 15-min uptime checks, Indie gets 5-min checks at €12/mo — granular asymmetry signalling a founder who's thought about each stage) and the blog reads like a manifesto stack ('Stop Juggling SaaS Tools', 'AI Generated Slop', 'Public Roadmaps'). Authenticated-side, the /dashboard sidebar is the strongest UX detail: 20+ routes grouped into Overview / Developer / Insights / Settings, with a yellow active-state stripe and a Featurely v1.0.3 version pin in the top-left. The 8-step Welcome tour appears on first dashboard load and is dismissable via Esc or the × icon — well-handled progressive disclosure rather than a forced wall.

Highlights
  • Pricing transparency
    The FAQ line 'No surprise charges — billing only activates when you turn it on' is the kind of detail that lands with indie buyers. Combined with the explicit '€15/seat/mo' in the compare-plans table, it sets up trust before the user even tries the product.
  • Brand consistency across surfaces
    The F mark, accent yellow, and yellow underline-stripe show up identically on the home hero, blog covers, pricing CTA, /demo Enter button, the authed dashboard's active sidebar item, AND the trial banner. Most indies break visual consistency between marketing and product — Featurely holds it through to the authed surface.
  • Blog-as-positioning
    Post titles ('Stop Juggling SaaS Tools', 'AI Generated Slop', 'Proactive Error Tracking', 'Public Roadmaps') are a manifesto stack. They wedge the product into a worldview rather than walking through features.
  • Compare-plans honesty
    Hobby gets 1 project / 1 team member / 15-min uptime check interval; Indie gets 1 project but 5-min checks at €12/mo. That granular asymmetry signals a founder who actually thinks about what an indie at each stage will use.
  • Dashboard information architecture
    20+ authenticated routes are grouped into 4 clear sections (Overview / Developer / Insights / Settings) with a yellow active-state stripe. Even on an empty project, every section renders an empty-state with a one-line description of its purpose ('Feature requests and bug reports submitted by users via the public API'). Lower friction than the standard 'pick a project first' wall.
  • Onboarding flow is two clicks
    Post-signup goes /onboarding → 'Create your first project' (single text field, default 'My App' placeholder) → /dashboard with the 8-step Welcome tour. No multi-step setup wizard, no plan picker, no card capture. Possibly the shortest onboarding I've seen on an indie SaaS this surface-heavy.
Friction points
  • /demo 'Enter the live demo' never lands
    Clicking the primary CTA on /demo flips the button to a disabled 'Signing you in…' state with a spinner. We waited 6+ seconds and the button remained stuck — no redirect, no error, no console message. See Scenario 3 screenshot. The loudest UX failure on the marketing surface: a paid visitor would assume the product is broken and bounce. The free-account fallback at /sign-up works but is a route-away from the headline value prop.
  • Cookie banner covers the page on first paint
    The 'Cookie preferences' modal is a centered overlay (not a footer banner) and blocks the hero on first load. A banner-blind visitor will scroll past without realising the hero CTA is behind it. The test dismisses via 'Accept all cookies' before each public screenshot.
  • Trial banner shows nonsensical countdown
    On every authed page the top banner reads 'Your 14-day Indie trial is active — 878 days remaining.' The 878-day figure is likely a clock-skew bug or hard-coded test value rather than a real entitlement. Either way it reads like dev leftover on production — a founder would want to fix this before sending visitors here.
  • /dashboard/settings is unreachable without a project
    Routing into /dashboard/settings before a project exists shows only a 'Select a project — Choose a project from the switcher above to customise statuses and update project details.' empty state. The Roadmap, Changelog, and other developer sections also show 'Create a project' empty states. None of them link directly to the project creation flow, even though the user is one step away on /onboarding. Adding a 'Create your first project' inline CTA here would close the gap.
Couldn't reach
  • /dashboard/bugs, /dashboard/errors, /dashboard/logs, /dashboard/tasks, /dashboard/feature-flags, /dashboard/environments, /dashboard/versions, /dashboard/translations, /dashboard/maintenance, /dashboard/monitoring, /dashboard/packages, /dashboard/security, /dashboard/users·Featurely has 20+ authed routes; capturing all of them would bloat the share. Walked the 5 highest-signal pages (Incoming, Features, Roadmap, Changelog, Analytics) and trusted the sidebar nav screenshot to convey the surface area.
  • /dashboard/settings·Renders only 'Select a project' until a project exists. We don't create a project in the demo (long-running app op the skill bans). Skipped to keep the share signal-dense.
  • Continue with Google (OAuth signup)·OAuth redirects to accounts.google.com which Playwright cannot complete from a clean runner identity. The Firebase Auth email+password path produces the same authenticated session — no demo signal lost.
  • docs.featurely.no·On a separate subdomain — not in the demo baseline scope.

5 visual changes

Step 17,551 px changed
Before
Before
After
After
Diff
Diff
Step 5280,181 px changed
Before
Before
After
After
Diff
Diff
Step 6295,400 px changed
Before
Before
After
After
Diff
Diff
Step 745,039 px changed
Before
Before
After
After
Diff
Diff
Step 846,115 px changed
Before
Before
After
After
Diff
Diff

Share this run

57,604 test runs recorded · 1,174 products tested with Lastest

This test was built for www.featurely.no — 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.