PracticeQAAutomation logoPracticeQAAutomation

📘 Project KT · Entertainment

🎬 ShowTime

Movie ticket booking

Complexity
Advanced
Screens
5
Scenarios
10
Test cases
16

1Business context

ShowTime sells cinema tickets. Revenue depends on filling seats quickly and fairly: seats are held for a limited time, pricing varies by seat tier, and promos must only apply when eligible. Payment includes OTP (card) and async approval (UPI).

Pick city, date and showtime, select seats on a live seat map, add snacks, apply promos and pay with an OTP under a hold timer.

2Users & roles

  • 👤 Moviegoer — picks a show, seats, snacks and pays (no login needed)
  • 👤 Returning customer — views and cancels bookings

3Modules & screens

ScreenRouteWhat it does
Movies/ticketsDate strip, city, genre/language filters and showtimes per cinema
Seat map/tickets/show/[showId]Seat tiers, availability, 8-seat limit and hold timer
Checkout/tickets/checkoutContact details, snacks, promo codes, card (OTP) or UPI payment
Confirmation/tickets/confirmationBooking reference (ST + 6 characters) and summary
My bookings/tickets/bookingsUpcoming and cancelled bookings, cancel with confirmation

4Main end-to-end journey

Book seats with card and OTP

  1. Open /tickets and pick tomorrow in London
  2. Choose Nebula Drift and an available showtime
  3. Select 2 available seats and proceed
  4. Add contact details and a Large Popcorn
  5. Apply MOVIE50
  6. Pay by card and enter OTP 123456
  7. Open My bookings

Expected: Confirmation shows an ST reference with the discounted total, and the booking is listed under upcoming bookings

5Business rules & validations

  • Date stripBeginner

    Seven date-option chips from today; dates are computed from the browser clock.

  • FiltersBeginner

    Combine genre-* toggles, language-filter and movie-search; assert movie-card count.

  • Showtime statesIntermediate

    data-status is available / filling / soldout / started — disabled ones can't be clicked.

  • Seat mapIntermediate

    Pick seats by data-status, verify selected-seat chips and seat-total per tier.

  • Seat limitIntermediate

    The 9th seat shows seat-limit-error.

  • Snacks & promo codesIntermediate

    MOVIE50 halves tickets (max $10); FIRSTSHOW only works on a first booking.

  • OTP paymentAdvanced

    Card payments open otp-modal; 123456 passes, anything else shows otp-error.

  • Async UPI approvalAdvanced

    UPI shows payment-processing for ~3s before the confirmation page.

  • Hold timerAdvanced

    Seats are held for 5:00. Mock the clock to hit timer-expired without waiting.

  • Cancel a bookingAdvanced

    Cancel from My bookings, confirm the dialog, and find it under the Cancelled tab.

6Test data & credentials

URL
/tickets
Login
not required
Promos
MOVIE50 · FIRSTSHOW
Card OTP
123456
Seat hold
5 minutes

7Glossary

Hold timer
Selected seats are reserved for 5:00; expiry releases them
MOVIE50 / FIRSTSHOW
50% off tickets (max $10) / first-booking-only promo
Showtime status
available, filling, soldout or started — the last two can't be clicked

8Watch-outs for automation

  • ⚠️Dates are computed from the browser clock — don't hard-code dates
  • ⚠️Mock the clock to test hold-timer expiry instead of waiting 5 minutes
  • ⚠️UPI approval is async (~3 s) — wait for the confirmation page

9Suggested test strategy

1 · Smoke

4

P1 positive and end-to-end cases — run on every build.

2 · Regression

16

All cases, incl. 4 negative and 3 edge — run before release.

3 · End-to-end

3

Full user journeys — run nightly.

Start with these smoke cases

  • SHOWTIME-01 — Book two seats with card and OTP
  • SHOWTIME-02 — Pay by UPI
  • SHOWTIME-E2E-01 — Book seats with card and OTP
  • SHOWTIME-E2E-02 — Book by UPI then cancel