diff --git a/apps/web/src/lib/components/layout/DesktopSidebar.svelte b/apps/web/src/lib/components/layout/DesktopSidebar.svelte index 0e912ea..31cd008 100644 --- a/apps/web/src/lib/components/layout/DesktopSidebar.svelte +++ b/apps/web/src/lib/components/layout/DesktopSidebar.svelte @@ -9,7 +9,7 @@ import CreateCollectiveModal from '$lib/components/CreateCollectiveModal.svelte'; import OfflineChip from '$lib/components/OfflineChip.svelte'; import * as m from '$lib/paraglide/messages'; - import { ShoppingCart, CheckSquare, FileText, Search, Settings, Plus, Shield } from 'lucide-svelte'; + import { ShoppingCart, CheckSquare, FileText, Search, Settings, Plus, Shield, Users } from 'lucide-svelte'; // Fase 12.3.1: nav items declared with their section key so we can filter // by $enabledSections (precedence resolved client-side; see features.ts). @@ -99,6 +99,19 @@ {label()} {/each} + + + + + + {m.manage_title()} +
diff --git a/apps/web/tests/e2e/sidebar-manage-link.test.ts b/apps/web/tests/e2e/sidebar-manage-link.test.ts new file mode 100644 index 0000000..829c6e5 --- /dev/null +++ b/apps/web/tests/e2e/sidebar-manage-link.test.ts @@ -0,0 +1,40 @@ +/** + * SBM-series — desktop sidebar manage-collective entry + * + * The DesktopSidebar gained a last-position link to /collective/manage + * after the nav loop, preceded by a visual spacer (divider). The mobile + * drawer already had this link; desktop did not, leaving the page + * unreachable from the chrome. + */ +import { test, expect } from '@playwright/test'; +import { USERS } from '../fixtures/users.js'; +import { loginAs } from '../fixtures/login.js'; + +const DESKTOP = { width: 1280, height: 800 }; + +test.describe('Desktop sidebar — manage collective link', () => { + test('SBM-01: the manage link is the last nav entry and navigates to /collective/manage', async ({ page }) => { + await page.setViewportSize(DESKTOP); + await loginAs(page, USERS.ana); + await page.goto('/lists'); + + const link = page.getByTestId('sidebar-manage-link'); + await expect(link).toBeVisible({ timeout: 10_000 }); + + await link.click(); + await expect(page).toHaveURL(/\/collective\/manage/); + }); + + test('SBM-02: a horizontal divider separates the manage link from the section nav', async ({ page }) => { + await page.setViewportSize(DESKTOP); + await loginAs(page, USERS.ana); + await page.goto('/lists'); + + // The divider sits inside the same