d6a40e4843
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.
48 lines
1.5 KiB
TypeScript
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"]')
|
|
}
|
|
}
|