Files
gnezim 60e2149072 Add comprehensive e2e test suites for Tasks 16-25
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.
2026-04-05 19:25:03 +03:00

131 lines
5.3 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
<link href="https://fonts.googleapis.com/css?family=Encode+Sans:300,200" rel="stylesheet">
<link rel="stylesheet" href="./assets/styles.css">
</head>
<body>
<div class="page-root container-fluid">
<div class="row justify-content-center moneyshot">
<div class="col-10">
<p class="mascotBlock">
<a href="https://github.com/garris/BackstopJS" class="lemur-link">
<img id="theLemur" src="assets/lemurFace.png" class='lemurInYourFace' alt="">
</a>
<img id="lemurButt" src="assets/lemurButt.png" class='lemurButtInYourFace' alt="">
</p>
<p class="logoBlock">
<a href="https://github.com/garris/BackstopJS" class="logo-link">
<img src="assets/BackstopJS.svg" class='BackstopJS3' alt="BackstopJS">
</a>
</p>
</div>
<h1>Visual regression testing for web apps.</h1>
</div>
<div class="row justify-content-center">
<p class="supportsBlock col-10">
Supports screen rendering with <a href="https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md" class="chrome">Chrome-headless.</a>
Add your own interactions with <a href="https://playwright.dev/" class="chrome">Playwright</a> and <a href="https://github.com/GoogleChrome/puppeteer" class="chrome">Puppeteer</a> scripting.
</p>
</div>
<div class="row justify-content-center">
<p class="getItBlock col-10">
BackstopJS was created by <a href="https://www.linkedin.com/in/garrisshipon/">Garris Shipon</a> with contributions from <a href="https://github.com/garris/BackstopJS/graphs/contributors">these amazing engineers 💜</a>.
</p>
<p class="getItBlock col-10">
Opensourced under the <a href="https://raw.githubusercontent.com/garris/BackstopJS/master/LICENSE">The MIT License</a>.
</p>
<p class="getItBlock col-10">
<span class="cta"><a href="https://github.com/garris/BackstopJS" class="github-link"><img src="assets/github-icon.png" class="github-icon" alt="Get it on GitHub"></a></span>
<span class="cta"><a href="https://github.com/garris/BackstopJS">Get it on github!</a></span>
</p>
<p class="getItBlock cantSeeDis col-10" style="display: none;">
<img src="assets/github-icon.png" class="github-icon" alt="Get it on GitHub">
</p>
</div>
</div>
<p id="noShow" style="display: none;">This is text that should not show.</p>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
</body>
</html>
<script type="text/javascript">
const READY_LAG_MS = 3000;
const READY_TAG = '_the_lemur_is_ready_to_see_you';
const OCTOCAT_CLASS_ACTION = 'hideOctocat';
const LEMUR_CLASS_ACTION = 'hideLemur';
const COOKIE_TEST = /cookie/i;
const CLICK_TEST = /click/i;
const DELAY_TEST = /delay/i;
if (COOKIE_TEST.test(window.location.search)) {
showCookies();
}
if (CLICK_TEST.test(window.location.search)) {
modifyLemurBehavior();
}
if (DELAY_TEST.test(window.location.search)) {
delayLemurification();
}
function modifyLemurBehavior () {
document.body.addEventListener('click', evt => {
if (evt.target.id === 'theLemur') {
containTheLemur();
evt.preventDefault();
setTimeout(setReadyFlags, READY_LAG_MS + 1000);
} else {
releaseTheLemur();
}
});
console.log('lemur behavior is modified');
}
function showCookies () {
document.getElementsByClassName('logoBlock')[0].innerText = 'cookies > ' + document.cookie;
}
function setReadyFlags () {
console.log(READY_TAG);
document.body.classList.add(READY_TAG);
}
function releaseTheLemur () {
document.body.classList.remove(LEMUR_CLASS_ACTION);
}
function containTheLemur () {
document.body.classList.add(LEMUR_CLASS_ACTION);
}
function hideOctocat () {
console.log('hideOctocat')
document.body.classList.add(OCTOCAT_CLASS_ACTION);
}
function showOctocat () {
document.body.classList.remove(OCTOCAT_CLASS_ACTION);
}
function delayLemurification () {
containTheLemur();
hideOctocat();
setTimeout(releaseTheLemur, READY_LAG_MS);
setTimeout(showOctocat, READY_LAG_MS);
setTimeout(setReadyFlags, READY_LAG_MS + 1000);
}
</script>