diff --git a/domain-skills/frontier/checkout.md b/domain-skills/frontier/checkout.md new file mode 100644 index 00000000..82556724 --- /dev/null +++ b/domain-skills/frontier/checkout.md @@ -0,0 +1,104 @@ +# Frontier Airlines — flyfrontier.com checkout + +Working path **home → Select → Passengers → Bundles → SeatMap → Bags → Extras → Payment/New**. The only real search entry is the homepage widget; direct `booking.flyfrontier.com/Flight/InternetBookingEngine?...` deep links return 404. + +## URLs (in order) + +1. `https://www.flyfrontier.com/` — search widget (not a `
`; submit happens via `#btnSearch`). +2. `https://booking.flyfrontier.com/Flight/Select` — fare grid + sticky "CONTINUE" summary footer. +3. `https://booking.flyfrontier.com/Passengers/Edit` — passenger details + contact. +4. `https://booking.flyfrontier.com/Bundles/Index` — upsell grid + "BUNDLE AND SAVE" confirmation modal. +5. `https://booking.flyfrontier.com/SeatMap/Index` — seat map + "SELECT YOUR SEAT NOW" upsell. +6. `https://booking.flyfrontier.com/Bags/Index` — carry-on / checked bag radios + carry-on upsell modal. +7. `https://booking.flyfrontier.com/Extras/Add` — disruption assistance (Hopper iframe) + agent-assist radios. +8. `https://booking.flyfrontier.com/Payment/New` — credit card + billing form. + +## Stable selectors + +### Homepage search widget + +| Field | Selector | +|---|---| +| Trip type (one-way) | `#rboneway` | +| Origin text input | `#origin` (jQuery UI autocomplete, `.ui-autocomplete` list, select by `aria-label` on `.ui-menu-item` e.g. `"Philadelphia (PHL)"`) | +| Destination | `#destination` (same pattern) | +| Departure date | `#departureDate` — DO NOT use `.value = ...`; the widget is jQuery UI datepicker. Use `$('#departureDate').datepicker('setDate', new Date(Y, M, D))` (note 0-indexed month) | +| Return date | `#returnDate` | +| Submit | `#btnSearch` (an `` inside `.booking-widget`, not a real form-submit). Widget has no enclosing `` — parent chain is `.ToFrom → .destinations → fieldset → #findFlights`. | + +### Select page (fare grid) + +- Fare radios: `input[type=radio][name^="frontierAvailability.MarketFareKeys"]`; match by `aria-label` (e.g. `"Standard fare $44 departs at 5:05 AM..."`). Click the enclosing `