Verify start-page info-section content per TZ Table 8 + Table 9

Add assertion tests confirming both OnlineBoardStartPage and ScheduleStartPage
render the required info-section headings and content blocks per TZ specifications.

OnlineBoardStartPage (TZ Table 8):
- Heading: 'Что такое Онлайн-табло и что я могу в нем увидеть?'
- 4 info blocks: Актуальная информация, Информация об услугах, Купить билет, Расписание

ScheduleStartPage (TZ Table 9):
- First heading: 'Как пользоваться расписанием?' + 4 info blocks
- Second heading: 'Возможности расписания' + 2 capabilities blocks
- Blocks 5-6 (Купить билет, Расписание) now rendered under capabilities heading

Tests added:
- OnlineBoardStartPage: 6 new assertions (4.1.6-R-info-heading through 4.1.6-R-popular)
- ScheduleStartPage: 8 new assertions (4.1.7-R-info-heading-1 through 4.1.7-R-popular)
This commit is contained in:
2026-04-21 19:25:45 +03:00
parent fbb84fc0da
commit b27ee2ae8b
3 changed files with 110 additions and 0 deletions
@@ -189,6 +189,46 @@ describe("OnlineBoardStartPage", () => {
expect(screen.getByText("BOARD.BOARD-START-TITLE4")).toBeTruthy();
});
// ---------------------------------------------------------------------------
// TZ §4.1.6: start-page info section per TZ Table 8
// ---------------------------------------------------------------------------
describe("4.1.6: start-page info section per TZ Table 8", () => {
it("4.1.6-R-info-heading: renders 'Что такое Онлайн-табло...' heading", () => {
render(<OnlineBoardStartPage />);
expect(screen.getByText("BOARD.BOARD-START")).toBeTruthy();
});
it("4.1.6-R-info-block-1: renders 'Актуальная информация' block with description", () => {
render(<OnlineBoardStartPage />);
expect(screen.getByText("BOARD.BOARD-START-TITLE1")).toBeTruthy();
expect(screen.getByText("BOARD.BOARD-START-TITLE1-DESCRIPTION")).toBeTruthy();
});
it("4.1.6-R-info-block-2: renders 'Информация об услугах' block with description", () => {
render(<OnlineBoardStartPage />);
expect(screen.getByText("BOARD.BOARD-START-TITLE2")).toBeTruthy();
expect(screen.getByText("BOARD.BOARD-START-TITLE2-DESCRIPTION")).toBeTruthy();
});
it("4.1.6-R-info-block-3: renders 'Купить билет' block with description", () => {
render(<OnlineBoardStartPage />);
expect(screen.getByText("BOARD.BOARD-START-TITLE3")).toBeTruthy();
expect(screen.getByText("BOARD.BOARD-START-TITLE3-DESCRIPTION")).toBeTruthy();
});
it("4.1.6-R-info-block-4: renders 'Расписание' info block with description", () => {
render(<OnlineBoardStartPage />);
expect(screen.getByText("BOARD.BOARD-START-TITLE4")).toBeTruthy();
expect(screen.getByText("BOARD.BOARD-START-TITLE4-DESCRIPTION")).toBeTruthy();
});
it("4.1.6-R-popular-heading: renders 'Популярные разделы' via PopularRequestsPanel", () => {
render(<OnlineBoardStartPage />);
expect(screen.getByTestId("popular-requests")).toBeTruthy();
});
});
it("renders the filter component", () => {
render(<OnlineBoardStartPage />);
expect(screen.getByTestId("flight-filter")).toBeTruthy();
@@ -135,6 +135,58 @@ describe("ScheduleStartPage", () => {
expect(screen.getByTestId("schedule-start")).toBeTruthy();
});
// ---------------------------------------------------------------------------
// TZ §4.1.7: start-page info sections per TZ Table 9
// ---------------------------------------------------------------------------
describe("4.1.7: start-page info sections per TZ Table 9", () => {
it("4.1.7-R-info-heading-1: renders 'Как пользоваться расписанием?' heading", () => {
render(<ScheduleStartPage />);
expect(screen.getByText("SCHEDULE.SCHEDULE-START")).toBeTruthy();
});
it("4.1.7-R-info-block-1a: renders 'Маршрут' block with description", () => {
render(<ScheduleStartPage />);
expect(screen.getByText("SCHEDULE.SCHEDULE-START-TITLE1")).toBeTruthy();
expect(screen.getByText("SCHEDULE.SCHEDULE-START-TITLE1-DESCRIPTION")).toBeTruthy();
});
it("4.1.7-R-info-block-1b: renders 'Дата вылета' block with description", () => {
render(<ScheduleStartPage />);
expect(screen.getByText("SCHEDULE.SCHEDULE-START-TITLE2")).toBeTruthy();
expect(screen.getByText("SCHEDULE.SCHEDULE-START-TITLE2-DESCRIPTION")).toBeTruthy();
});
it("4.1.7-R-info-block-1c: renders 'Время вылета' block with description", () => {
render(<ScheduleStartPage />);
expect(screen.getByText("SCHEDULE.SCHEDULE-START-TITLE3")).toBeTruthy();
expect(screen.getByText("SCHEDULE.SCHEDULE-START-TITLE3-DESCRIPTION")).toBeTruthy();
});
it("4.1.7-R-info-block-1d: renders 'Обратные рейсы' block with description", () => {
render(<ScheduleStartPage />);
expect(screen.getByText("SCHEDULE.SCHEDULE-START-TITLE4")).toBeTruthy();
expect(screen.getByText("SCHEDULE.SCHEDULE-START-TITLE4-DESCRIPTION")).toBeTruthy();
});
it("4.1.7-R-info-block-2a: renders 'Купить билет' capabilities block (TITLE5)", () => {
render(<ScheduleStartPage />);
expect(screen.getByText("SCHEDULE.SCHEDULE-START-TITLE5")).toBeTruthy();
expect(screen.getByText("SCHEDULE.SCHEDULE-START-TITLE5-DESCRIPTION")).toBeTruthy();
});
it("4.1.7-R-info-block-2b: renders 'Расписание' capabilities block (TITLE6)", () => {
render(<ScheduleStartPage />);
expect(screen.getByText("SCHEDULE.SCHEDULE-START-TITLE6")).toBeTruthy();
expect(screen.getByText("SCHEDULE.SCHEDULE-START-TITLE6-DESCRIPTION")).toBeTruthy();
});
it("4.1.7-R-popular: renders PopularRequestsPanel for request handling", () => {
render(<ScheduleStartPage />);
expect(screen.getByTestId("popular-requests")).toBeTruthy();
});
});
it("4.1.5-S1: one-way Route click prefills current ISO week dates + no return", () => {
// 2026-05-15 (Fri) → week Mon 2026-05-11 … Sun 2026-05-17
render(<ScheduleStartPage />);
@@ -571,6 +571,24 @@ export const ScheduleStartPage: FC = () => {
</div>
</div>
<h3>{t("SCHEDULE.POPULAR-CHAPTERS")}</h3>
<div className="titles-container">
<div className="title title5">
<a>{t("SCHEDULE.SCHEDULE-START-TITLE5")}</a>
<div>
{t("SCHEDULE.SCHEDULE-START-TITLE5-DESCRIPTION")}
</div>
</div>
<div className="title title6">
<a>{t("SCHEDULE.SCHEDULE-START-TITLE6")}</a>
<div>
{t("SCHEDULE.SCHEDULE-START-TITLE6-DESCRIPTION")}
</div>
</div>
</div>
<PopularRequestsPanel onRequestClick={handlePopularRequestClick} />
</section>