Files
flights_web/tests/e2e-angular/fixtures/api-responses.json
T
gnezim 20c19d15f4
CI / ci (push) Failing after 23s
Deploy / build-and-deploy (push) Failing after 5s
Add standalone API proxy via curl (bypasses WAF TLS fingerprinting)
Modern.js SSR intercepts all routes before any Express middleware,
so the API proxy runs as a separate Express server on port 8080.
Modern.js runs on 8081. The proxy uses curl subprocesses which go
through the system HTTPS proxy (GOST) with a proper TLS fingerprint
that the Aeroflot WAF accepts.

Usage: node scripts/dev-server.mjs (replaces pnpm dev for full-stack)

Also: remove stray e2e-angular test directory, fix env default to
same-origin /api.
2026-04-15 23:04:24 +03:00

410 lines
12 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"apiResponses": {
"flightBoardDeparture": {
"status": 200,
"headers": {
"Content-Type": "application/json",
"X-Request-Id": "req-12345"
},
"body": {
"direction": "departure",
"cityCode": "MOW",
"cityName": "Moscow",
"date": "2026-04-06",
"flights": [
{
"id": "fl-1124",
"flightNumber": "SU 1124",
"airlineCode": "SU",
"airlineName": "Aeroflot",
"aircraftType": "Airbus A320",
"direction": "departure",
"status": "scheduled",
"date": "2026-04-06",
"departure": {
"airportCode": "SVO",
"airportName": "Sheremetyevo",
"cityCode": "MOW",
"cityName": "Moscow",
"terminal": "B",
"time": {
"scheduled": "2026-04-06T12:13:00+03:00"
}
},
"arrival": {
"airportCode": "AER",
"airportName": "Adler",
"cityCode": "AER",
"cityName": "Sochi",
"time": {
"scheduled": "2026-04-06T16:05:00+03:00"
}
},
"boarding": {
"gate": "11",
"status": "Идёт посадка",
"startTime": "2026-04-06T11:30:00+03:00",
"endTime": "2026-04-06T12:05:00+03:00"
},
"checkin": {
"status": "Закончена",
"startTime": "2026-04-06T09:30:00+03:00",
"endTime": "2026-04-06T11:45:00+03:00"
},
"aircraft": {
"type": "Airbus A320",
"name": "В. Высоцкий",
"totalSeats": 158,
"economySeats": 150,
"businessSeats": 8,
"previousFlight": "SU 1123"
},
"catering": {
"economy": true,
"business": true
},
"schedule": {
"scheduledDeparture": "2026-04-06T12:13:00+03:00",
"scheduledArrival": "2026-04-06T16:05:00+03:00",
"duration": "3ч. 52мин.",
"utcOffset": "UTC+03:00",
"operatingDays": [1, 2, 3, 4, 5],
"weekRange": "* Расписание на неделю 2026-04-06"
},
"lastUpdated": "12:15 2026.04.06"
},
{
"id": "fl-1076",
"flightNumber": "SU 1076",
"airlineCode": "SU",
"airlineName": "Aeroflot",
"aircraftType": "Boeing 737-800",
"direction": "departure",
"status": "scheduled",
"date": "2026-04-06",
"departure": {
"airportCode": "SVO",
"airportName": "Sheremetyevo",
"cityCode": "MOW",
"cityName": "Moscow",
"terminal": "B",
"time": {
"scheduled": "2026-04-06T12:14:00+03:00"
}
},
"arrival": {
"airportCode": "OVB",
"airportName": "Tolmachevo",
"cityCode": "OVB",
"cityName": "Novosibirsk",
"time": {
"scheduled": "2026-04-06T20:25:00+03:00"
}
},
"aircraft": {
"type": "Boeing 737-800",
"totalSeats": 189,
"economySeats": 175,
"businessSeats": 14
},
"schedule": {
"scheduledDeparture": "2026-04-06T12:14:00+03:00",
"scheduledArrival": "2026-04-06T20:25:00+03:00",
"duration": "8ч. 11мин.",
"utcOffset": "UTC+03:00",
"operatingDays": [1, 2, 3, 4, 5, 6, 7],
"weekRange": "* Расписание на неделю 2026-04-06"
}
}
],
"total": 2,
"page": 1,
"pageSize": 20
}
},
"flightBoardArrival": {
"status": 200,
"headers": {
"Content-Type": "application/json",
"X-Request-Id": "req-12346"
},
"body": {
"direction": "arrival",
"cityCode": "MOW",
"cityName": "Moscow",
"date": "2026-04-06",
"flights": [
{
"id": "fl-1455",
"flightNumber": "SU 1455",
"airlineCode": "SU",
"airlineName": "Aeroflot",
"aircraftType": "Airbus A320",
"direction": "arrival",
"status": "arrived",
"date": "2026-04-06",
"departure": {
"airportCode": "UUD",
"airportName": "Ulan-Ude",
"cityCode": "UUD",
"cityName": "Ulan-Ude",
"time": {
"scheduled": "2026-04-06T10:38:00+03:00",
"actual": "2026-04-06T10:38:00+03:00"
}
},
"arrival": {
"airportCode": "SVO",
"airportName": "Sheremetyevo",
"cityCode": "MOW",
"cityName": "Moscow",
"time": {
"scheduled": "2026-04-06T12:12:00+03:00",
"actual": "2026-04-06T12:12:00+03:00"
}
},
"arrivalInfo": {
"baggageBelt": "5",
"transfer": "Тран"
},
"aircraft": {
"type": "Airbus A320",
"name": "С. Прокофьев",
"totalSeats": 158,
"economySeats": 150,
"businessSeats": 8,
"previousFlight": "SU 1454"
},
"catering": {
"economy": true,
"business": true
},
"schedule": {
"scheduledDeparture": "2026-04-06T10:38:00+03:00",
"scheduledArrival": "2026-04-06T12:12:00+03:00",
"duration": "1ч. 34мин.",
"utcOffset": "UTC+03:00",
"operatingDays": [1, 2, 3, 4, 5],
"weekRange": "* Расписание на неделю 2026-04-06"
},
"lastUpdated": "10:32 2026.04.06"
}
],
"total": 1,
"page": 1,
"pageSize": 20
}
},
"flightDetails": {
"status": 200,
"headers": {
"Content-Type": "application/json",
"X-Request-Id": "req-12347"
},
"body": {
"id": "fl-1124",
"flightNumber": "SU 1124",
"airlineCode": "SU",
"airlineName": "Aeroflot",
"aircraftType": "Airbus A320",
"direction": "departure",
"status": "scheduled",
"date": "2026-04-06",
"departure": {
"airportCode": "SVO",
"airportName": "Sheremetyevo",
"cityCode": "MOW",
"cityName": "Moscow",
"terminal": "B",
"time": {
"scheduled": "2026-04-06T12:13:00+03:00"
}
},
"arrival": {
"airportCode": "AER",
"airportName": "Adler",
"cityCode": "AER",
"cityName": "Sochi",
"time": {
"scheduled": "2026-04-06T16:05:00+03:00"
}
},
"boarding": {
"gate": "11",
"status": "Идёт посадка",
"startTime": "2026-04-06T11:30:00+03:00",
"endTime": "2026-04-06T12:05:00+03:00"
},
"checkin": {
"status": "Закончена",
"startTime": "2026-04-06T09:30:00+03:00",
"endTime": "2026-04-06T11:45:00+03:00"
},
"aircraft": {
"type": "Airbus A320",
"name": "В. Высоцкий",
"totalSeats": 158,
"economySeats": 150,
"businessSeats": 8,
"previousFlight": "SU 1123"
},
"catering": {
"economy": true,
"business": true
},
"schedule": {
"scheduledDeparture": "2026-04-06T12:13:00+03:00",
"scheduledArrival": "2026-04-06T16:05:00+03:00",
"duration": "3ч. 52мин.",
"utcOffset": "UTC+03:00",
"operatingDays": [1, 2, 3, 4, 5],
"weekRange": "* Расписание на неделю 2026-04-06"
},
"lastUpdated": "12:15 2026.04.06"
}
},
"scheduleSearch": {
"status": 200,
"headers": {
"Content-Type": "application/json",
"X-Request-Id": "req-12348"
},
"body": {
"from": "MOW",
"to": "AER",
"dateFrom": "2026-04-06",
"dateTo": "2026-04-12",
"entries": [
{
"id": "sch-001",
"flightNumber": "SU 1124",
"airlineCode": "SU",
"airlineName": "Aeroflot",
"aircraftType": "Airbus A320",
"departureCity": "Moscow",
"departureCityCode": "MOW",
"departureAirport": "Sheremetyevo",
"departureTime": "12:13",
"arrivalCity": "Sochi",
"arrivalCityCode": "AER",
"arrivalAirport": "Adler",
"arrivalTime": "16:05",
"daysOfWeek": [1, 2, 3, 4, 5, 6, 7],
"effectiveFrom": "2026-01-01",
"effectiveTo": "2026-12-31",
"direct": true
},
{
"id": "sch-002",
"flightNumber": "SU 1234",
"airlineCode": "SU",
"airlineName": "Aeroflot",
"aircraftType": "Airbus A321",
"departureCity": "Moscow",
"departureCityCode": "MOW",
"departureAirport": "SVO",
"departureTime": "08:00",
"arrivalCity": "Sochi",
"arrivalCityCode": "AER",
"arrivalAirport": "Adler",
"arrivalTime": "10:15",
"daysOfWeek": [1, 2, 3, 4, 5, 6, 7],
"effectiveFrom": "2026-01-01",
"effectiveTo": "2026-12-31",
"direct": true
}
],
"total": 2,
"page": 1,
"pageSize": 20
}
},
"flightsMap": {
"status": 200,
"headers": {
"Content-Type": "application/json",
"X-Request-Id": "req-12349"
},
"body": {
"flights": [
{
"id": "fl-1124",
"flightNumber": "SU 1124",
"airlineCode": "SU",
"airlineName": "Aeroflot",
"aircraftType": "Airbus A320",
"direction": "departure",
"status": "scheduled",
"date": "2026-04-06",
"departure": {
"airportCode": "SVO",
"airportName": "Sheremetyevo",
"cityCode": "MOW",
"cityName": "Moscow",
"latitude": 55.9721,
"longitude": 37.4146,
"time": {
"scheduled": "2026-04-06T12:13:00+03:00"
}
},
"arrival": {
"airportCode": "AER",
"airportName": "Adler",
"cityCode": "AER",
"cityName": "Sochi",
"latitude": 43.58,
"longitude": 39.72,
"time": {
"scheduled": "2026-04-06T16:05:00+03:00"
}
}
}
],
"total": 1
}
},
"popularRequests": {
"status": 200,
"headers": {
"Content-Type": "application/json",
"X-Request-Id": "req-12350"
},
"body": {
"requests": [
{
"id": "pop-001",
"departureCity": "Moscow",
"departureCityCode": "MOW",
"arrivalCity": "Sochi",
"arrivalCityCode": "AER",
"flightCount": 45,
"dates": ["2026-04-06", "2026-04-07", "2026-04-08"],
"timestamp": "2026-04-06T10:30:00Z"
},
{
"id": "pop-002",
"departureCity": "Moscow",
"departureCityCode": "MOW",
"arrivalCity": "Saint Petersburg",
"arrivalCityCode": "LED",
"flightCount": 38,
"dates": ["2026-04-06", "2026-04-07", "2026-04-08"],
"timestamp": "2026-04-06T10:25:00Z"
},
{
"id": "pop-003",
"departureCity": "Moscow",
"departureCityCode": "MOW",
"arrivalCity": "Novosibirsk",
"arrivalCityCode": "OVB",
"flightCount": 28,
"dates": ["2026-04-06", "2026-04-07", "2026-04-08"],
"timestamp": "2026-04-06T10:20:00Z"
}
],
"total": 3
}
}
}
}