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.tsCovered against /pets/create.
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.
PetsEdit pet general infoHighcoveredfrontend/e2e/pet-basic-lifecycle.spec.tsUses the inline profile editor on the General tab.
PetsDelete petHighcoveredfrontend/e2e/pet-basic-lifecycle.spec.tsUses the Status tab danger zone and confirm dialog.
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.

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/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.

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.

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.