Files
TS_Proto/qa/app-model.md
T
2026-10-10 21:57:24 +05:30

3.8 KiB

App model — grounding index for test generation

Generated by npm run qa:index from the codebase. Do not edit by hand.

Base URL: http://localhost:4200 · Auth: basic (header X-Tenant)

Accounts

const email tenant role
SKYLINE_AGENT agent@skyline.test skyline agent
SKYLINE_ADMIN admin@skyline.test skyline admin
GLOBETROTTER_AGENT agent@globetrotter.test globetrotter agent
GLOBETROTTER_ADMIN admin@globetrotter.test globetrotter admin

Password: see DEMO_PASSWORD in accounts.ts. Credentials verified within the named tenant; take accounts from e2e/fixtures/accounts.ts, never hardcode.

Routes

  • /login
  • /dashboard
  • /search
  • /book/:flightId
  • /bookings
  • /bookings/:bookingId

Areas (spec file → report area)

  • auth.spec.ts — Signing in and sessions
  • search.spec.ts — Searching for flights
  • booking.spec.ts — Booking and cancelling
  • tenant-isolation.spec.ts — Keeping agencies separate
  • dashboard.spec.ts — Agency dashboard
  • simulation.spec.ts — Behaviour when things go wrong
  • responsive.spec.ts — Phones and small screens

API endpoints

method path auth
GET /api/session required
GET /api/flights required
GET /api/flights/{id} required
GET /api/airports required
GET /api/airlines required
GET /api/bookings required
POST /api/bookings required
GET /api/bookings/{id} required
POST /api/bookings/{id}/cancel required
GET /api/dashboard required
GET /api/health public
GET /api/tenants public

Page objects (use these — no raw selectors in specs)

e2e/pages/bookings.page.ts — BookingsPage, BookingDetailPage

  • locators: rows, emptyState, filterAll, filterConfirmed, filterCancelled, confirmationBanner, reference, statusBadge, travellerRows, totalPaid, cancelButton, confirmCancelButton, keepButton, cancelledNotice
  • methods: goto(), settled(), rowFor(reference: string), open(reference: string), filterBy(status: 'all' | 'confirmed' | 'cancelled'), bookingReference(), cancel(expectedReference: string)

e2e/pages/checkout.page.ts — CheckoutPage

  • locators: travellerFieldsets, addTraveller, contactEmail, contactPhone, confirm, total, error, seatsLeft
  • methods: waitUntilReady(), totalAmount(), fillTraveller(index: number, traveller: Traveller), fillTravellers(travellers: Traveller[]), removeTraveller(index: number), confirmBooking()

e2e/pages/dashboard.page.ts — DashboardPage

  • locators: greeting, tiles, recentRows, topRoutes
  • methods: goto(), settled(), tileValue(label: string)

e2e/pages/login.page.ts — LoginPage

  • locators: tenantSelect, email, password, submit, error, demoChips
  • methods: goto(), useDemoChip(account: Account), fill(account: Account, password = account.password), signIn(account: Account), signInExpectingFailure(account: Account, password: string)

e2e/pages/search.page.ts — FlightCard, SearchPage

  • locators: root, origin, destination, date, cabin, travellers, searchButton, resetButton, sort, resultSummary, results, emptyState, nextPage, prevPage
  • methods: fare(), seatsLeft(), flightNumber(), durationMinutes(), goto(), card(index = 0), settled(), searchRoute(from: string, to: string), setTravellers(n: number), sortBy(value: 'price' | 'duration' | 'departure'), totalResults(), cardForFlight(flightNumber: string)

e2e/pages/shell.page.ts — ShellPage

  • locators: agencyName, agencySlug, accountName, accountMeta, signOut
  • methods: goToDashboard(), goToSearch(), goToBookings(), signOutAndWait()