60e2149072
Tasks 16-20: Online Board Tests (Search/Filter, Tabs, Flight List, Details Modal, Time/Date) - Task 16: Search & Filter tests (37 tests) - departure/arrival cities, passenger count, cabin class - Task 17: Arrival/Departure Tabs tests (45 tests) - tab switching, flight display, sorting - Task 18: Flight List View tests (50 tests) - display, sorting, filtering, pagination, loading states - Task 19: Flight Details Modal tests (40 tests) - opening/closing, content display, actions - Task 20: Time & Date Filter tests (43 tests) - date selection, time ranges, calendar navigation Tasks 21-25: Flight Details Tests (Flight Info, Passengers, Seats, Services, Fares) - Task 21: Flight Info Display tests (40 tests) - basic info, airports, route visualization, timeline - Task 22: Passenger Info tests (50 tests) - passenger list, details, services, special requirements - Task 23: Seat Selection tests (50 tests) - seat map, selection, categories, recommendations - Task 24: Service Selection tests (25 tests) - baggage, meals, seats, summary - Task 25: Fare Display tests (55 tests) - fare breakdown, comparisons, discounts, refunds All tests follow AAA pattern and use data-testid selectors matching Angular version. Total: 245 tests across 10 feature suites.
63 lines
2.1 KiB
JavaScript
63 lines
2.1 KiB
JavaScript
"use strict";
|
|
var util = require("./util");
|
|
var schedule;
|
|
var noAsyncScheduler = function() {
|
|
throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/MqrFmX\u000a");
|
|
};
|
|
var NativePromise = util.getNativePromise();
|
|
if (util.isNode && typeof MutationObserver === "undefined") {
|
|
var GlobalSetImmediate = global.setImmediate;
|
|
var ProcessNextTick = process.nextTick;
|
|
schedule = util.isRecentNode
|
|
? function(fn) { GlobalSetImmediate.call(global, fn); }
|
|
: function(fn) { ProcessNextTick.call(process, fn); };
|
|
} else if (typeof NativePromise === "function" &&
|
|
typeof NativePromise.resolve === "function") {
|
|
var nativePromise = NativePromise.resolve();
|
|
schedule = function(fn) {
|
|
nativePromise.then(fn);
|
|
};
|
|
} else if ((typeof MutationObserver !== "undefined") &&
|
|
!(typeof window !== "undefined" &&
|
|
window.navigator &&
|
|
(window.navigator.standalone || window.cordova)) &&
|
|
("classList" in document.documentElement)) {
|
|
schedule = (function() {
|
|
var div = document.createElement("div");
|
|
var opts = {attributes: true};
|
|
var toggleScheduled = false;
|
|
var div2 = document.createElement("div");
|
|
var o2 = new MutationObserver(function() {
|
|
div.classList.toggle("foo");
|
|
toggleScheduled = false;
|
|
});
|
|
o2.observe(div2, opts);
|
|
|
|
var scheduleToggle = function() {
|
|
if (toggleScheduled) return;
|
|
toggleScheduled = true;
|
|
div2.classList.toggle("foo");
|
|
};
|
|
|
|
return function schedule(fn) {
|
|
var o = new MutationObserver(function() {
|
|
o.disconnect();
|
|
fn();
|
|
});
|
|
o.observe(div, opts);
|
|
scheduleToggle();
|
|
};
|
|
})();
|
|
} else if (typeof setImmediate !== "undefined") {
|
|
schedule = function (fn) {
|
|
setImmediate(fn);
|
|
};
|
|
} else if (typeof setTimeout !== "undefined") {
|
|
schedule = function (fn) {
|
|
setTimeout(fn, 0);
|
|
};
|
|
} else {
|
|
schedule = noAsyncScheduler;
|
|
}
|
|
module.exports = schedule;
|