diff --git a/src/i18n/locales/ru/common.json b/src/i18n/locales/ru/common.json
index e137c513..fba7ce80 100644
--- a/src/i18n/locales/ru/common.json
+++ b/src/i18n/locales/ru/common.json
@@ -396,7 +396,7 @@
"SHORT-HOUR": "ч.",
"SHORT-MIN": "мин.",
"STOCK": "Акция",
- "TAB-BOARD-TOOLTIP": "Информация о фактическом выполнении рейсов на ближайшие дни",
+ "TAB-BOARD-TOOLTIP": "Информация о фактическом выполнении рейсов в ближайшие дни",
"TAB-SCHEDULE-TOOLTIP": "Информация о планируемом выполнении рейсов на ближайший год",
"TAB-FLIGHTS-MAP-TOOLTIP": "Картографический сервис представления информации об маршрутной сети «Аэрофлот»",
"TERMINAL": "Терминал",
diff --git a/src/ui/layout/PageTabs.test.tsx b/src/ui/layout/PageTabs.test.tsx
new file mode 100644
index 00000000..4dd1ebf2
--- /dev/null
+++ b/src/ui/layout/PageTabs.test.tsx
@@ -0,0 +1,92 @@
+// @vitest-environment jsdom
+import { describe, it, expect, vi } from "vitest";
+import { render, screen } from "@testing-library/react";
+import { PageTabs } from "./PageTabs.js";
+import ruCommon from "@/i18n/locales/ru/common.json" with { type: "json" };
+
+// Mock Link component from Modern.js router
+vi.mock("@modern-js/runtime/router", () => ({
+ Link: ({
+ children,
+ to,
+ "data-testid": testid,
+ title,
+ "aria-current": ariaCurrent,
+ ...props
+ }: {
+ children: React.ReactNode;
+ to: string;
+ className?: string;
+ "data-testid"?: string;
+ title?: string;
+ "aria-current"?: "page";
+ [k: string]: unknown;
+ }) => (
+
+ {children}
+
+ ),
+}));
+
+// Mock i18n provider
+vi.mock("@/i18n/provider.js", () => ({
+ useTranslation: () => ({
+ t: (key: string) => {
+ const parts = key.split(".");
+ let value: unknown = ruCommon as Record;
+ for (const part of parts) {
+ if (typeof value === "object" && value !== null && part in value) {
+ value = (value as Record)[part];
+ } else {
+ return key; // fallback to key if path not found
+ }
+ }
+ return value as string;
+ },
+ }),
+}));
+
+// Mock useLocale hook
+vi.mock("@/i18n/useLocale.js", () => ({
+ useLocale: () => ({ locale: "ru-ru" }),
+}));
+
+// Mock feature flag
+vi.mock("@/features/flights-map/hooks/useFeatureFlag.js", () => ({
+ useFeatureFlag: () => true,
+}));
+
+// Suppress SCSS import errors in jsdom
+vi.mock("./PageTabs.scss", () => ({}));
+
+describe("4.1 section-tab tooltips match TZ verbatim (Russian)", () => {
+ it("Board tooltip: 'Информация о фактическом выполнении рейсов в ближайшие дни'", () => {
+ render();
+ const tab = screen.getByTestId("onlineboard-tab");
+ expect(tab.getAttribute("title")).toBe(
+ "Информация о фактическом выполнении рейсов в ближайшие дни",
+ );
+ });
+
+ it("Schedule tooltip: 'Информация о планируемом выполнении рейсов на ближайший год'", () => {
+ render();
+ const tab = screen.getByTestId("schedule-tab");
+ expect(tab.getAttribute("title")).toBe(
+ "Информация о планируемом выполнении рейсов на ближайший год",
+ );
+ });
+
+ it("Flight-Map tooltip: 'Картографический сервис представления информации об маршрутной сети «Аэрофлот»'", () => {
+ render();
+ const tab = screen.getByTestId("flights-map-tab");
+ expect(tab.getAttribute("title")).toBe(
+ "Картографический сервис представления информации об маршрутной сети «Аэрофлот»",
+ );
+ });
+});