diff --git a/driver-pwa/frontend/src/pages/OnboardingPage.test.tsx b/driver-pwa/frontend/src/pages/OnboardingPage.test.tsx
new file mode 100644
index 0000000..126639a
--- /dev/null
+++ b/driver-pwa/frontend/src/pages/OnboardingPage.test.tsx
@@ -0,0 +1,17 @@
+import { describe, it, expect, beforeEach } from "vitest";
+import { render, screen } from "@testing-library/react";
+import { MemoryRouter } from "react-router-dom";
+import { OnboardingPage } from "./OnboardingPage";
+
+describe("OnboardingPage", () => {
+ beforeEach(() =>
+ sessionStorage.setItem("pp-onboarding", JSON.stringify({ tg: "https://t.me/b?start=x", max: "https://max.ru/b?start=x", phone: "9143054400" }))
+ );
+ it("shows both bot links + back-to-code action", () => {
+ render();
+ expect(screen.getByText(/Подключите бот/i)).toBeInTheDocument();
+ expect(screen.getByRole("link", { name: /Telegram/i })).toHaveAttribute("href", "https://t.me/b?start=x");
+ expect(screen.getByRole("link", { name: /MAX/i })).toHaveAttribute("href", "https://max.ru/b?start=x");
+ expect(screen.getByRole("button", { name: /запросить код/i })).toBeInTheDocument();
+ });
+});
diff --git a/driver-pwa/frontend/src/pages/OnboardingPage.tsx b/driver-pwa/frontend/src/pages/OnboardingPage.tsx
index ea25e3f..a7e1ce9 100644
--- a/driver-pwa/frontend/src/pages/OnboardingPage.tsx
+++ b/driver-pwa/frontend/src/pages/OnboardingPage.tsx
@@ -1 +1,26 @@
-export function OnboardingPage() { return null; }
+import { useNavigate } from "react-router-dom";
+
+export function OnboardingPage() {
+ const nav = useNavigate();
+ const raw = sessionStorage.getItem("pp-onboarding");
+ const data = raw ? (JSON.parse(raw) as { tg: string; max: string; phone: string }) : null;
+ if (!data) return null;
+
+ return (
+
+
Подключите бот
+
+ Чтобы получать код входа, откройте бот и нажмите «Старт». Затем вернитесь и запросите код снова.
+
+
+ Подключить Telegram
+
+
+ Подключить MAX
+
+
+
+ );
+}