@@ -19,28 +19,41 @@ import { expect, test } from "@playwright/test";
1919import { signInAs } from "./fixtures/auth" ;
2020
2121test . describe ( "settings" , ( ) => {
22+ test . setTimeout ( 90_000 ) ;
23+
2224 test ( "account menu opens the settings page and theme persists across reload" , async ( {
2325 page,
2426 } ) => {
2527 await signInAs ( page , "admin" ) ;
26- await page . goto ( "/" ) ;
28+ await page . goto ( "/" , { waitUntil : "domcontentloaded" } ) ;
29+ await expect ( page . getByRole ( "button" , { name : / a c c o u n t m e n u / i } ) ) . toBeVisible ( {
30+ timeout : 30_000 ,
31+ } ) ;
2732
2833 // Open the account menu and navigate to Settings.
2934 await page . getByRole ( "button" , { name : / a c c o u n t m e n u / i } ) . click ( ) ;
30- await page . getByRole ( "menuitem" , { name : / s e t t i n g s / i } ) . click ( ) ;
31- await expect ( page ) . toHaveURL ( / \/ s e t t i n g s $ / ) ;
32- await expect ( page . getByRole ( "heading" , { name : / ^ S e t t i n g s $ / } ) ) . toBeVisible ( ) ;
35+ await Promise . all ( [
36+ page . waitForURL ( / \/ s e t t i n g s $ / , { waitUntil : "domcontentloaded" } ) ,
37+ page . getByRole ( "menuitem" , { name : / s e t t i n g s / i } ) . click ( ) ,
38+ ] ) ;
39+ await expect ( page . getByRole ( "heading" , { name : / ^ S e t t i n g s $ / } ) ) . toBeVisible ( {
40+ timeout : 30_000 ,
41+ } ) ;
3342
3443 // The identity cards render against the seeded MSW fixtures.
35- await expect ( page . getByRole ( "heading" , { name : "Roles" } ) ) . toBeVisible ( ) ;
36- await expect ( page . getByRole ( "heading" , { name : "Effective privileges" } ) ) . toBeVisible ( ) ;
44+ await expect ( page . getByRole ( "heading" , { name : "Roles" } ) ) . toBeVisible ( {
45+ timeout : 30_000 ,
46+ } ) ;
47+ await expect ( page . getByRole ( "heading" , { name : "Effective privileges" } ) ) . toBeVisible ( {
48+ timeout : 30_000 ,
49+ } ) ;
3750
3851 // Switch to the dark theme and confirm it applies.
3952 await page . getByRole ( "button" , { name : / ^ d a r k $ / i } ) . click ( ) ;
4053 await expect ( page . locator ( "html" ) ) . toHaveClass ( / d a r k / ) ;
4154
4255 // Reload and confirm the choice persisted (next-themes localStorage).
43- await page . reload ( ) ;
56+ await page . reload ( { waitUntil : "domcontentloaded" } ) ;
4457 await expect ( page . getByRole ( "button" , { name : / ^ d a r k $ / i } ) ) . toHaveAttribute (
4558 "aria-pressed" ,
4659 "true" ,
0 commit comments