Files
Starseed/frontend/tests/e2e/helpers/pages/SidebarComponent.ts
T
tristan d6a40e4843 feat(core) : footer sidebar — compte connecté + déconnexion inline + version
Déconnexion déplacée du menu vers le footer (compte connecté au survol +
version). useLogout() appelle clearSession() (reset des stores singletons via
onAuthSessionCleared) puis redirige vers /login, sans page /logout intermédiaire.
2026-06-29 10:24:57 +02:00

48 lines
1.5 KiB
TypeScript

import type { Locator, Page } from '@playwright/test'
export type AdminLinkSlug = 'users' | 'roles' | 'sites' | 'categories' | 'audit-log'
/**
* Page Object de la sidebar (MalioSidebar), scope sur les items "admin".
*
* Strategie selecteur : `a[href=...]` plutot que le texte i18n. Le slug de
* route ne change pas quand on retraduit ou renomme une entree — c'est le
* selecteur le plus stable pour cette suite.
*
* Si un jour la sidebar change et les slugs bougent, on met a jour CE
* fichier uniquement ; les specs continuent de passer.
*/
export class SidebarComponent {
readonly page: Page
constructor(page: Page) {
this.page = page
}
adminLink(slug: AdminLinkSlug): Locator {
return this.page.locator(`a[href="/admin/${slug}"]`)
}
accountDashboardLink(): Locator {
return this.page.locator('a[href="/"]').first()
}
/**
* Bloc « compte connecte » du footer de la sidebar. Cible de survol qui
* revele le bouton de deconnexion (la deconnexion n'est plus un item de nav
* `/logout` mais un lien du footer, cf. default.vue + useLogout).
*/
accountBlock(): Locator {
return this.page.locator('[data-test="sidebar-account"]')
}
/**
* Bouton de deconnexion du footer (revele au survol du bloc compte en mode
* deplie, ou directement la pastille en mode replie). Selecteur par
* `data-test` : stable au renommage/retraduction du label.
*/
logoutButton(): Locator {
return this.page.locator('[data-test="sidebar-logout"]')
}
}