1Business context
StayEase is a hotel booking site. The business needs accurate availability, correct room capacity rules and transparent pricing (add-ons + 12% tax), plus self-service cancellation to reduce support calls.
Search a destination, filter by stars, price and amenities, pick a room with add-ons, enter guest details, pay and manage the reservation.
2Users & roles
- 👤 Traveller — searches, filters, books and cancels (no login)
3Modules & screens
| Screen | Route | What it does |
|---|---|---|
| Search | /apps/hotel | Destination, check-in day, nights and guests |
| Results | /apps/hotel/results | Star, price and amenity filters, sorting and result count |
| Hotel detail | /apps/hotel/hotel/[id] | Room types with capacity limits |
| Checkout | /apps/hotel/checkout | Guest details, add-ons, pay now (card) or pay at hotel |
| Confirmation | /apps/hotel/confirmation | Reservation id (SE-…) after a short processing step |
| My reservations | /apps/hotel/reservations | View and cancel with a mandatory reason |
4Main end-to-end journey
Search, filter and book a hotel
- Open /apps/hotel, choose Goa, pick a check-in day and add a night
- Search
- Filter 5 stars and sort price low to high
- Open Palm Grove Resort and select the Deluxe Room
- Add breakfast
- Enter guest details, choose Pay now with card 4242… and accept the policy
- Confirm booking
Expected: Processing overlay, then a confirmation with an SE- reservation id and Deluxe Room
5Business rules & validations
- Search validationBeginner
Search with no destination or date shows error-city and error-checkin.
- Steppers & date chipsBeginner
nights-inc / guests-inc change the summary; pick checkin-day by index.
- Filters & sortingIntermediate
Combine star-*, max-price (range), amenity-* and sort; assert result-count and price order.
- Room capacityIntermediate
With 3+ guests the Standard room is disabled and shows room-standard-capacity.
- Live price summaryIntermediate
addon-* checkboxes update price-addons, price-taxes and price-total.
- Checkout validationIntermediate
Submit empty to get form-errors and error-* per field; Pay at hotel hides card fields.
- Async confirmationAdvanced
confirm-booking shows a processing overlay (~1.5s) before booking-confirmed.
- Cancel with reasonAdvanced
cancel-<id> opens cancel-modal; a reason is required before confirm-cancel.
6Test data & credentials
- URL
- /apps/hotel
- Login
- not required
- Taxes
- 12%
- Card
- any 16 digits
7Glossary
- Add-ons
- Breakfast, airport pickup, late checkout — change the price summary live
- Room capacity
- Standard rooms are disabled for 3+ guests
- Pay at hotel
- Hides card fields; booking confirms without card data
8Watch-outs for automation
- ⚠️Confirm booking shows a processing overlay (~1.5 s) before confirmation
- ⚠️Price summary recalculates on every add-on — assert totals after each change
- ⚠️Steppers have min/max bounds (nights 1–14)
9Suggested test strategy
1 · Smoke
3
P1 positive and end-to-end cases — run on every build.
2 · Regression
15
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
- STAYEASE-01 — Book a hotel end to end
- STAYEASE-E2E-01 — Search, filter and book a hotel
- STAYEASE-E2E-02 — Book then cancel from My reservations