diff --git a/desktop/src/renderer/src/pages/SettingsPage.svelte b/desktop/src/renderer/src/pages/SettingsPage.svelte
index ca7b9b8a5..e8d016acb 100644
--- a/desktop/src/renderer/src/pages/SettingsPage.svelte
+++ b/desktop/src/renderer/src/pages/SettingsPage.svelte
@@ -142,15 +142,7 @@ function toggleLocal(key: keyof LocalOptions) {
diff --git a/desktop/src/renderer/src/pages/SettingsPage.test.ts b/desktop/src/renderer/src/pages/SettingsPage.test.ts
new file mode 100644
index 000000000..aae0ce7c5
--- /dev/null
+++ b/desktop/src/renderer/src/pages/SettingsPage.test.ts
@@ -0,0 +1,25 @@
+import { render, screen } from "@testing-library/svelte"
+import { afterEach, describe, expect, it, vi } from "vitest"
+
+vi.mock("$lib/components/update/UpdatesPanel.svelte", () => ({
+ default: vi.fn(),
+}))
+
+import SettingsPage from "./SettingsPage.svelte"
+
+describe("SettingsPage layout", () => {
+ afterEach(() => {
+ document.body.innerHTML = ""
+ })
+
+ it("renders all settings sections as one page without section navigation links", () => {
+ render(SettingsPage)
+
+ expect(screen.queryByRole("navigation", { name: "Settings sections" })).toBeNull()
+ expect(document.querySelectorAll('a[href^="#"]')).toHaveLength(0)
+
+ for (const name of ["General", "Appearance", "Updates", "Advanced"]) {
+ expect(screen.getByRole("heading", { name, level: 2 })).toBeTruthy()
+ }
+ })
+})