Skip to content

Make Playwright route coverage explicit and enforceable #285

Description

@gbaudrit

Technical category

Testing

Area

Cross-cutting

Problem

FR #283 introduces reusable Playwright journeys, but the repository has no executable inventory connecting every Console, Razor Page, and Workplace route to its owning page object, journey, fixture, and test. Coverage can regress silently as routes are added or renamed.

Impact

Without a measurable catalog, the objective of testing the complete application remains subjective. Contributors cannot distinguish covered behavior, intentionally deferred variants, and missing tests, and future UI changes can bypass browser validation.

Expected outcome

The Playwright workspace contains a typed coverage catalog discovered and checked against product route declarations. Every route is assigned to a functional surface and an owning browser specification, and CI fails when an unclassified route appears.

Scope

  • Discover Razor component and Razor Page route declarations from the repository.
  • Define typed Console, account, and Workplace surface descriptors.
  • Record route aliases and parameterized-route fixture requirements.
  • Add tests that reject missing, duplicate, or stale catalog entries.
  • Document what “100% application coverage” means: every routable surface renders and every critical user mutation has a behavioral journey.

Out of scope

Implementing all domain journeys tracked by the sibling issues.

Dependencies

Implementation guidance

Keep the catalog product-neutral TypeScript data. Do not derive functional assertions from product RESX files, and do not turn route discovery into a brittle full Razor parser.

Alternatives considered

A prose-only spreadsheet or checklist was rejected because it would drift and could not block newly uncovered routes.

Acceptance criteria

  • Every current @page route in Console, Razor Pages, and Workplace is represented exactly once in the typed catalog.
  • Route aliases can share one surface without inflating the functional coverage count.
  • Dynamic routes declare the fixture keys required to materialize them.
  • A non-browser test fails for a new, removed, duplicate, or stale route.
  • The catalog identifies the owning page object, journey or route-smoke test, and functional test specification.
  • Contributor documentation defines the coverage target and update workflow.

Tests and validation

Run TypeScript compilation, the catalog contract tests, the complete Playwright non-browser suite, documentation build, and the repository validation applicable to the changed files.

Additional context

This issue establishes the measurable foundation for the child PR sequence merged with squash into the dedicated Playwright coverage integration branch.

Attachments

None.

Preliminary checks

  • I searched for an existing issue covering this work.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority:P2Important impact with a viable workaround and no immediate critical risk.technical-taskArchitecture, refactoring, performance, testing, security, or technical-debt work.triage:agentIssue triage was performed by an automated or coding agent.triage:pending-reviewAgent triage is awaiting maintainer review.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions