Skip to content
Vidabug
Sign inStart a project

Broken Navigation Testing Across a 200-Page SaaS Product

A practical method for broken navigation testing across a 200-page SaaS product: crawl it, walk real journeys, prove each defect and propose a repair.

9 min read · Updated 2026-11-01 · navigation testing · SaaS UX · defect evidence · journey testing Share on LinkedIn

broken navigation testing

Broken navigation testing is the discipline of proving that every journey a user can start inside your product actually reaches its intended destination — and at 200 pages, it is the difference between a polished demo and a support queue. Most SaaS teams test the features they just built, not the paths between them, so navigation decay accumulates release by release until someone notices that the invite flow has been quietly dead for a month. This guide covers how to scope, crawl, walk and repair navigation across a product of that size without drowning in tickets.

Why broken navigation testing matters more at 200 pages

At 20 pages, a broken link is a nuisance you notice in the same afternoon. At 200, the surface is large enough that a renamed settings route or a removed feature flag leaves behind a menu item pointing at nothing, and nobody trips over it for weeks. Every release adds routes, redirects and role-conditioned menus, and each one is a small opportunity for a path to fall out of sync with its label.

The debt is invisible in code review because it lives in the relationship between pages, not in any single one. That is why navigation defects cluster after redesigns, permission changes and route refactors rather than appearing evenly over time.

What your users lose when a journey dead-ends

A dead end is not a small inconvenience: it is a stopped task. A trial user who cannot reach billing from the upgrade prompt is a lost conversion, and an admin who cannot find the permissions screen is a support ticket plus a trust loss. The cost scales with how close the dead end sits to revenue or onboarding.

Because these failures are silent, teams consistently under-estimate them. Quality reporting repeatedly shows that functional problems — not visual polish — remain where the real user pain concentrates; see The State of Digital Quality in Functional Testing 2026 Report - Applause[1].

Where a 200-page SaaS typically breaks

Three symptom families cover most of what you will find, and each needs a different detection method — which is why a single tool rarely produces a complete picture.

  • Broken links and redirect chains — a menu entry returns a 4xx, or bounces through three redirects before landing.
  • Orphan pages — a page exists and works but nothing links to it, so it is unreachable except by direct URL.
  • Loop-backs — a journey that should advance instead returns the user to where they started, often behind a permission wall.

A crawler sees HTML it can fetch anonymously. It does not click a menu item that only renders for an admin, and it does not know that a client-side route resolved to an empty shell. The defects that hurt most sit precisely there — behind authentication, behind a role, behind a click.

Scope your broken navigation testing before you touch a tool

Inventory your surfaces: marketing, app, settings, docs, billing

List the distinct surfaces first, because each has different link behaviour and different ownership. Marketing pages are usually crawlable and public; the app, settings and billing sit behind auth; docs may live on a separate host or subdomain with its own routing. A simple inventory table prevents the common failure of auditing only the public site and calling it done:

broken navigation testing
SurfaceCrawlable anonymouslyRole-dependentHighest risk
Marketing siteYesNoBroken CTAs, redirect chains
App coreNoYesClient-side routes, dead ends
Settings & permissionsNoYesHidden menus, loop-backs
Docs & helpYesSometimesOrphans, stale deep links
Billing & upgradeNoYesRevenue-path dead ends

Pick the ten journeys that carry revenue and onboarding

For each journey, write down where the user enters, where they must exit, and which page is the expected destination at each step. This turns a vague "check the app works" instruction into a pass/fail test anyone can run. Then run the same journey under each role you support: a link that works for an owner and 404s for a viewer is a permission-wall defect, and it is one of the most common causes of support tickets in multi-tenant SaaS.

Give every journey an identifier, such as J-07-billing-upgrade-admin, so a clip, a ticket and a repair branch all reference the same thing. Traceability is what stops navigation defects from being re-reported and re-closed as "cannot reproduce".

Automated crawling for broken navigation testing coverage

Crawling is excellent at mechanical breadth. It will sweep hundreds of URLs in minutes and surface 4xx and 5xx responses, long redirect chains and duplicate canonical tags. HTTP status codes are the shared vocabulary here — see MDN's HTTP response status codes reference[2] for what each class means before you triage.

What a crawler cannot see: role-gated menus, client-side routes, gated flows

Anything rendered after a login, conditioned on a role, or resolved by a JavaScript router is outside a standard crawl. A site crawler for broken links will report a clean bill of health on an app whose entire settings section is unreachable. Seed the crawl with a demo account and a list of known post-login URLs rather than the homepage, and sample rather than exhaust: pick representative routes per surface, then walk the rest by hand where role logic applies.

Reading crawl output without drowning in false positives

Expect noise: logged-out redirects, intentionally gated resources and third-party links will all appear as errors. Group findings by cause before counting them, and discard anything that resolves correctly under the right role. Save each crawl's output and diff it against the last — a new 404 appearing between releases is a regression you can name, while a long-standing one is background debt you can schedule.

Watch for soft 404s that return a 200 status

The most deceptive defect is a page that returns 200 but shows "not found" content, or an empty app shell. These pass every status-code check and still strand the user, so they must be caught by eye, not by crawler.

Walk real journeys: the human half of broken navigation testing

Test as a new user with a demo account, not as the builder

Builders navigate by memory; new users navigate by label. Use a fresh demo account with realistic data and follow only what the interface offers you. This is where navigation journey testing earns its keep, because it reproduces the user's actual information diet.

broken navigation testing

Browsers and apps disagree constantly about history. Confirm that the back button returns to the previous step rather than resetting a wizard, that breadcrumbs reflect real hierarchy, and that a shared deep link lands on the right page after login rather than the dashboard. Then test empty states, error states and permission walls: is there a clear next action in an empty panel, does a retry path lead somewhere useful, and does a permission wall explain what the user needs rather than leaving them stuck?

Accessibility guidance is a useful checklist here, since focus order, link purpose and error identification overlap heavily with navigation quality — see the WCAG 2.2 Quickref[3].

Log a clip of every failure, not just a description

A written description of a dead end is arguable; a 20-second clip is not. Record the steps, the click and the failure so the engineer sees exactly what you saw, including timing and any loading state.

Note the expected behaviour alongside the observed one, because some loop-backs are correct: an expired session should return you to login, and a completed wizard may legitimately reset, so a deliberate loop should not be "fixed" by mistake. Watch too for consistency drift — "Upgrade", "Change plan" and "Manage subscription" pointing at the same screen is a navigation defect in disguise, since users search by label. Finally, time each journey: when a user says a journey is broken, they sometimes mean it took four clicks and two page reloads, and a slow but working path is still a UX navigation defect worth fixing.

A dead end is a bug you can film: if you cannot show the click, the wait and the wrong destination in one clip, you have not finished testing the journey.

Turn broken navigation testing findings into repair proposals

Write the defect so an engineer can act in one read

Lead with journey ID, role and destination. Then the expected versus actual behaviour in one sentence, then the evidence. Anything longer gets skimmed during a busy sprint.

Attach evidence and propose the fix on a separate branch

Every finding should carry reproducible steps, a clip and the environment details, so it survives a sprint handover with no ambiguity about how to reproduce it. A proposed repair is far more useful than a bug report, provided it never merges silently: put the change on its own branch, describe what it touches, and let the owner decide. Proposals should be reviewable in the same way as any contributor's pull request — scoped, explained and reversible.

Rank fixes by journey value, not by page count

Fixing forty low-traffic docs links is worth less than repairing the single billing dead end. Rank by how close the journey sits to revenue, onboarding or a permission change, and fix the top of that list first.

Put broken navigation testing on a release rhythm

Add a lightweight gate to releases: crawl the public surface, walk the ten critical journeys, and diff against the baseline. It is a short check that catches the most expensive class of regression. Re-run the full pass after redesigns, permission changes and route refactors, since these three events cause most navigation breakage; teams that audit only annually spend the rest of the year guessing.

Report navigation health to founders and UX leads

Two numbers communicate more than a defect count: how many of your ten journeys complete cleanly, and how many dead ends were reached. Trend them release over release, and frame the work in the language leadership already uses — lost activation, support load, trust. The Applause report is useful context for that conversation[1], and our piece on why AI-generated dashboards hide broken workflows covers the same failure pattern in products built quickly. A recurring half-day audit keeps the map current and the findings small enough to fix.

Get evidence-backed findings from broken navigation testing

Vidabug films narrated walkthroughs of a live site using a demo user, or works from a repository or source ZIP. For this problem it walks your key journeys, tests the app the way a new user meets it, and records what it finds — including dead ends and orphan pages. Where a defect is provable, Vidabug proposes a repair on a separate branch for your review and records the evidence alongside it; you keep control of the merge.

It does not certify your product as bug-free, and it is not a penetration test or a load test. It is a structured, evidence-led navigation audit you can hand to an engineering team.

Broken navigation testing is not a one-off clean-up; it is a habit that keeps a 200-page product honest as it grows. Scope the surfaces, crawl for breadth, walk the journeys that matter, and turn every finding into evidence an engineer can act on. Do that monthly and dead ends stop being surprises.

Questions people ask

How do I find broken navigation in a large SaaS product?

Combine an authenticated crawl for links and redirects with manual walks of your most valuable journeys using a demo account. Record each failure with steps and a clip, then propose a repair the owner can review.

How many broken links and dead ends should a 200-page SaaS app have?

None is the only defensible target for core journeys such as sign-up, onboarding, billing and settings. Every dead end a paying user can reach is a defect worth a ticket, whatever the page count.

What is the fastest way to audit navigation across a big SaaS app?

Set a baseline crawl behind authentication, then test ten revenue and onboarding journeys by hand. The crawl covers breadth; the journey walks catch role-gated menus, client-side routes and loops a crawler never reaches.

How do I prove navigation defects to my engineering team?

Give each finding a journey ID, exact steps, expected versus actual destination, and a screen recording. Engineers can reproduce it in minutes, and proposed repairs on a separate branch make the fix a review rather than an argument.

Should I use a crawler or manual journey testing for navigation?

Both, because they find different things. Crawlers are good at status codes, redirect chains and orphan pages; people are better at spotting confusing loops, mislabelled menus and dead ends behind permissions.

What causes broken navigation after a redesign or release?

Often renamed routes, moved settings pages, changed permissions and stale links in help content or emails. Because navigation is shared across many pages, one route change can break dozens of journeys at once.

Sources

  1. The State of Digital Quality in Functional Testing 2026 Report - Applause — applause.com
  2. HTTP response status codes - HTTP | MDN — developer.mozilla.org
  3. How to Meet WCAG (Quickref Reference) — w3.org