diff --git a/src/components/layout/__tests__/auth-shell-translation-banner.browser.test.tsx b/src/components/layout/__tests__/auth-shell-translation-banner.browser.test.tsx
new file mode 100644
index 000000000..7e5a4bea4
--- /dev/null
+++ b/src/components/layout/__tests__/auth-shell-translation-banner.browser.test.tsx
@@ -0,0 +1,70 @@
+/**
+ * The "machine translated" strip is not part of signing in.
+ *
+ * It belongs to the app, where the language can be changed and a correction
+ * reported; on the sign-in, registration and take-over pages it was the first
+ * thing a visitor in eight of ten languages read, above the form.
+ */
+import { describe, expect, it, vi } from "vitest";
+
+import { renderWithApp } from "../../../../tests/browser/render";
+import { stubFetch } from "../../../../tests/browser/fetch-stub";
+
+// Chrome that is not the subject.
+vi.mock("../sidebar-nav", () => ({ SidebarNav: () => null }));
+vi.mock("../bottom-nav", () => ({ BottomNav: () => null }));
+vi.mock("../top-bar", () => ({ TopBar: () => null }));
+vi.mock("../offline-banner", () => ({ OfflineBanner: () => null }));
+vi.mock("../shared-record-banner", () => ({ SharedRecordBanner: () => null }));
+vi.mock("@/components/gamification/achievement-unlock-notifier", () => ({
+ AchievementUnlockNotifier: () => null,
+}));
+vi.mock("@/components/insights/layout-coach-fab", () => ({
+ LayoutCoachFab: () => null,
+}));
+vi.mock("@/components/insights/layout-coach-mount", () => ({
+ LayoutCoachMount: () => null,
+}));
+vi.mock("@/components/onboarding/tour-launcher", () => ({
+ TourLauncher: () => null,
+}));
+vi.mock("@/components/day/day-layer", () => ({ DayLayerMount: () => null }));
+vi.mock("@/components/command-palette/command-palette.lazy", () => ({
+ CommandPaletteMount: () => null,
+}));
+vi.mock("../global-shortcuts", () => ({ GlobalShortcuts: () => null }));
+
+import { AuthShell } from "../auth-shell";
+
+const BANNER = '[data-slot="maintainership-banner"]';
+
+async function mountAt(path: string, user: { id: string } | null) {
+ window.history.replaceState(null, "", path);
+ await renderWithApp(
+