4046910a9d
- Page Nuxt /admin/categories : MalioDataTable + bouton Ajouter - CategoryDrawer : modes creation / consultation / edition (transition auto view -> edit a la 1re modif), validation client RG-1.02/04/05, mapping erreurs server 409 (doublon) et 422 (violations) - CategoryDeleteModal : confirmation suppression (soft delete cote API) - Types Category, CategoryType, User - i18n admin.categories.* (titre, table, form, validation, toasts) - Fix latent : ajout 'categories' a AdminLinkSlug e2e (oubli ERP-47) Logique fetch inline volontaire au M0 — extraction en composables a ERP-50 (ticket 0.8). Aucune persistance d'etat de tableau dans l'URL.
34 lines
979 B
TypeScript
34 lines
979 B
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()
|
|
}
|
|
|
|
logoutLink(): Locator {
|
|
return this.page.locator('a[href="/logout"]')
|
|
}
|
|
}
|