Skip to content

E2E Coverage Map

This document tracks the main user-facing flows and whether they are covered by Playwright end-to-end tests.

It is intentionally flow-oriented rather than model-oriented. The goal is to answer:

  • Which user promises are protected by E2E tests?
  • Which flows still rely only on unit or integration coverage?
  • Where should the next Playwright spec go?

Status Meanings

StatusMeaning
coveredA Playwright test exercises the main happy path of this flow.
partialSome part of the flow is covered, but an important success path or mutation path is still missing.
missingNo meaningful E2E coverage yet.

Current Coverage

AreaUser flowPriorityStatusSpecNotes
AuthRegistration page loadsHighcoveredfrontend/e2e/auth.spec.ts, frontend/e2e/registration-with-email-verification.spec.tsBasic UI coverage exists in two places.
AuthRegister account, receive verification email, verify account, enter appHighcoveredfrontend/e2e/registration-with-email-verification.spec.tsExercises the real MailHog-backed verification flow.
AuthLogin with existing userHighcoveredfrontend/e2e/auth.spec.tsUses seeded user.
AuthLogoutHighcoveredfrontend/e2e/auth.spec.tsCovered as part of login/logout flow.
AuthProtected route redirects unauthenticated user to loginHighcoveredfrontend/e2e/pet-creation.spec.ts, frontend/e2e/registration-with-email-verification.spec.ts, frontend/e2e/navigation.spec.tsCovered against /pets/create and /settings/account.
AuthLogin failure shows errorMediumcoveredfrontend/e2e/navigation.spec.tsWrong credentials stay on /login with visible error.
AuthAuthenticated user redirected away from /loginMediumcoveredfrontend/e2e/navigation.spec.tsVerified bounce-back to home.
AuthPassword reset: request linkHighcoveredfrontend/e2e/password-reset.spec.tsForm loads; sends email; shows confirmation with user's address.
AuthPassword reset: full flow via emailHighcoveredfrontend/e2e/password-reset.spec.tsRequest → MailHog capture → follow reset URL → set new password → success → login with new password.
AuthPassword reset: invalid tokenMediumcoveredfrontend/e2e/password-reset.spec.tsShows "Invalid Reset Link" with recovery CTA.
Navigation404 page for unknown routesMediumcoveredfrontend/e2e/navigation.spec.tsRenders 404 heading, description, and working "Go to Homepage" link.
HabitsCreate habit, attach pets, and open detail pageHighcoveredfrontend/e2e/habits.spec.tsCovers the main owner flow from list page creation through navigation to the created habit detail.
HabitsLog habit activity for a day and keep it after reloadHighcoveredfrontend/e2e/habits.spec.tsUses the day dialog on the detail page and verifies the saved state persists after page reload.
HabitsEdit habit settingsHighcoveredfrontend/e2e/habits.spec.tsVerifies updating the habit name from the detail-page edit dialog.
HabitsArchive and restore habitMediumcoveredfrontend/e2e/habits.spec.tsExercises both archive and restore from the owner detail flow.
HabitsDelete habitHighcoveredfrontend/e2e/habits.spec.tsConfirms deletion through the destructive dialog and return to the habits list.
PetsAdd pet with minimal required fieldsHighcoveredfrontend/e2e/pet-creation.spec.tsCore happy path exists.
PetsAdd pet validation feedbackMediumcoveredfrontend/e2e/pet-creation.spec.tsGood smoke-level validation coverage.
PetsAdd pet with different pet typeMediumcoveredfrontend/e2e/pet-creation.spec.tsCovers cat and dog creation paths.
PetsQueue offline pet creation and replay on reconnectHighcoveredfrontend/e2e/offline-mode.spec.tsVerifies offline create shows queued state, then syncs to a real pet profile link after reconnect.
PetsEdit pet general infoHighcoveredfrontend/e2e/pet-basic-lifecycle.spec.tsUses the inline profile editor on the General tab.
PetsQueue offline pet edit and replay on reconnectHighcoveredfrontend/e2e/offline-mode.spec.tsConfirms optimistic offline edit persists after reconnect and reload.
PetsDelete petHighcoveredfrontend/e2e/pet-basic-lifecycle.spec.tsUses the Status tab danger zone and confirm dialog.
PetsQueue offline pet deletion and replay on reconnectHighcoveredfrontend/e2e/offline-mode.spec.tsConfirms offline removal hides the pet immediately and stays deleted after reconnect.
PetsCold-start offline with cached auth into pet managementHighcoveredfrontend/e2e/offline-mode.spec.tsVerifies cached session survives reload while offline and pet create remains reachable.
Medical recordsQueue offline medical record create and replay on reconnectHighcoveredfrontend/e2e/offline-mode.spec.tsConfirms optimistic offline create persists after reconnect and reload.
HabitsQueue offline habit day check-in and replay on reconnectHighcoveredfrontend/e2e/offline-mode.spec.tsUses habit detail day dialog; verifies saved check-in survives reconnect and reload.
Pet photosUpload pet profile photoHighcoveredfrontend/e2e/pet-photos.spec.tsUses the inline General tab editor upload control.
Pet photosAdd extra gallery photoHighcoveredfrontend/e2e/pet-photos.spec.tsConfirms the pet reaches a multi-photo state in the real browser flow.
Pet photosSet gallery photo as primary/avatarMediumcoveredfrontend/e2e/pet-photos.spec.tsUses the avatar modal action on a non-primary photo.
Pet photosDelete pet photoHighcoveredfrontend/e2e/pet-photos.spec.tsDeletes through the avatar modal and verifies the gallery count updates.
Weight recordsAdd weight recordHighcoveredfrontend/e2e/pet-health.spec.tsUses the inline add form and edit-mode list.
Weight recordsEdit weight recordMediumcoveredfrontend/e2e/pet-health.spec.ts
Weight recordsRemove weight recordHighcoveredfrontend/e2e/pet-health.spec.ts
VaccinationsAdd vaccination recordHighcoveredfrontend/e2e/pet-health.spec.tsCovers the main upcoming vaccination flow.
VaccinationsEdit vaccination recordMediumcoveredfrontend/e2e/pet-health.spec.ts
VaccinationsRemove vaccination recordHighcoveredfrontend/e2e/pet-health.spec.ts
Medical recordsAdd medical recordHighcoveredfrontend/e2e/pet-health.spec.ts
Medical recordsEdit medical recordMediumcoveredfrontend/e2e/pet-health.spec.ts
Medical recordsRemove medical recordHighcoveredfrontend/e2e/pet-health.spec.ts
Medical recordsAdd or remove medical record attachment photoMediumcoveredfrontend/e2e/pet-health.spec.tsUses the medical form attachment control and deletes through the health-record photo modal.
MicrochipsAdd microchipHighcoveredfrontend/e2e/pet-health.spec.ts
MicrochipsEdit microchipMediumcoveredfrontend/e2e/pet-health.spec.ts
MicrochipsRemove microchipHighcoveredfrontend/e2e/pet-health.spec.ts
Pet peopleGenerate invitation linkHighcoveredfrontend/e2e/pet-people.spec.tsCovers creating a role-scoped share link from the People section.
Pet peopleRevoke or remove invitation linkHighcoveredfrontend/e2e/pet-people.spec.tsCovers revoking a pending invitation from the People section.
Pet peopleAccept invitation after authentication redirectHighcoveredfrontend/e2e/pet-people.spec.tsCovers invite page redirect to login, return to invite page, and successful acceptance.
ProfileAccount settings page loadsMediumcoveredfrontend/e2e/settings-account.spec.tsSmoke-level shell coverage exists.
ProfileUpload avatarMediumcoveredfrontend/e2e/settings-account.spec.ts
ProfileReplace avatarMediumcoveredfrontend/e2e/settings-account.spec.ts
ProfileRemove avatarMediumcoveredfrontend/e2e/settings-account.spec.ts
ProfileChange passwordMediumpartialfrontend/e2e/settings-account.spec.tsDialog and validation are covered; confirm the full success path before marking covered.
ProfileEdit profile detailsHighcoveredfrontend/e2e/profile.spec.tsCovers the real account name-edit flow and persistence after reload.
ProfileSet real email for Telegram placeholder account and verify itHighcoveredfrontend/e2e/profile.spec.tsCovers email entry, confirmation dialog, verification email, and successful verification.
Helper profilesCreate helper profileHighcoveredfrontend/e2e/helper-profile-creation.spec.tsCovers the authenticated create flow and redirect to the created profile.
Helper profilesPublic helpers listing shows only publicly visible profilesHighcoveredfrontend/e2e/helper-profile-creation.spec.tsConfirms seeded approved helpers appear on /helpers, newly created public helpers appear immediately, and private helpers stay hidden.
Helper profilesPublic helper detail page is accessible only for publicly visible itemsHighcoveredfrontend/e2e/helper-profile-creation.spec.tsConfirms seeded approved helpers open on /helpers/:id, newly created public helpers open immediately, and private helpers return public 404.

Keep specs organized by user journey instead of by backend resource or component.

Recommended target structure:

SpecPrimary responsibility
frontend/e2e/auth.spec.tsLogin, logout, protected-route redirect checks.
frontend/e2e/registration-with-email-verification.spec.tsSuccessful registration and verification journey, plus a small number of failure states.
frontend/e2e/pet-creation.spec.tsCreating pets and create-form validation.
frontend/e2e/pet-basic-lifecycle.spec.tsEdit pet general info and delete pet.
frontend/e2e/offline-mode.spec.tsOffline pet create/edit/delete, medical record create, and habit day check-in queue/replay across reconnect.
frontend/e2e/pet-photos.spec.tsUpload gallery photo, set primary photo, delete photo.
frontend/e2e/pet-health.spec.tsWeight, vaccination, medical record, and microchip CRUD happy paths.
frontend/e2e/pet-people.spec.tsInvitation link creation and removal in the People section.
frontend/e2e/profile.spec.tsProfile details editing; keep avatar and password here over time if you want a single profile-focused file.
frontend/e2e/helper-profile-creation.spec.tsHelper profile creation plus public-directory visibility and public-detail access rules.
frontend/e2e/navigation.spec.ts404 page, auth guard redirects, login-when-authenticated bounce, login failure.
frontend/e2e/password-reset.spec.tsForgot-password form, full reset flow via MailHog email, invalid token error.
frontend/e2e/habits.spec.tsHabit creation, day logging, editing, archiving/restoring, and deletion.

Good Testing Practice For This Stack

Prefer one true auth journey, then authenticated setup

For this stack, it is better to:

  • keep a small number of explicit auth tests that really verify login, logout, registration, and redirect behavior
  • avoid repeating full UI login in every unrelated test
  • use authenticated Playwright setup for the rest of the suite

Why this fits here:

  • login is already subject to rate limiting
  • repeated UI auth makes the suite slower and more fragile
  • your existing helper pattern already hints at this problem

The main exception is when login is part of the product promise being tested, such as:

  • redirecting an unauthenticated user back into a protected flow
  • invitation acceptance that depends on authentication
  • post-registration onboarding

Prefer happy-path CRUD in E2E, edge cases elsewhere

For pet records and profile editing:

  • use E2E for the main browser journey and one destructive path
  • keep deep validation matrices in component, integration, or backend tests

That gives you confidence without turning Playwright into the slowest possible test layer.

Suggested Next Implementation Order

  1. Consider moving legacy avatar/password checks from settings-account.spec.ts into profile.spec.ts when you want one profile-focused file.
  2. Decide whether verified-user email-change rejection needs its own E2E, or should remain backend/integration coverage only.
  3. Revisit whether invitation decline deserves E2E coverage or can stay below the browser layer.
  4. Add rehoming/adoption flow coverage once the feature stabilises.
  5. Add admin route access guard tests (non-admin blocked from admin routes).

Maintenance Rule

When a new user-facing feature ships:

  1. Add or update the flow in this file.
  2. Mark whether E2E coverage is required.
  3. Link the spec once coverage exists.

This keeps the document lightweight and makes coverage gaps obvious during feature work.