@@ -165,6 +165,36 @@ test("switching tabs changes active tab indicator", async ({ page }) => {
165165 await expect ( actionsTab ) . toHaveAttribute ( "aria-selected" , "true" ) ;
166166} ) ;
167167
168+ test ( "fixed elements compensate for scrollbar width when scroll is locked" , async ( { page } ) => {
169+ await setupAuth ( page ) ;
170+ await page . goto ( "/dashboard" ) ;
171+
172+ const navbar = page . locator ( ".navbar" ) ;
173+ const footer = page . locator ( ".app-footer" ) ;
174+ await expect ( navbar ) . toBeVisible ( ) ;
175+ await expect ( footer ) . toBeVisible ( ) ;
176+
177+ // Baseline: navbar 0.5rem (8px) from daisyUI, footer 0px (no base padding)
178+ expect ( parseFloat ( await navbar . evaluate ( ( el ) => getComputedStyle ( el ) . paddingRight ) ) ) . toBeCloseTo ( 8 , 0 ) ;
179+ expect ( parseFloat ( await footer . evaluate ( ( el ) => getComputedStyle ( el ) . paddingRight ) ) ) . toBeCloseTo ( 0 , 0 ) ;
180+
181+ // Simulate solid-prevent-scroll setting --scrollbar-width on body
182+ await page . evaluate ( ( ) => {
183+ document . body . style . setProperty ( "--scrollbar-width" , "15px" ) ;
184+ } ) ;
185+
186+ // Navbar: 8px + 15px = 23px, footer: 0px + 15px = 15px
187+ expect ( parseFloat ( await navbar . evaluate ( ( el ) => getComputedStyle ( el ) . paddingRight ) ) ) . toBeCloseTo ( 23 , 0 ) ;
188+ expect ( parseFloat ( await footer . evaluate ( ( el ) => getComputedStyle ( el ) . paddingRight ) ) ) . toBeCloseTo ( 15 , 0 ) ;
189+
190+ // Clear — both return to baseline
191+ await page . evaluate ( ( ) => {
192+ document . body . style . removeProperty ( "--scrollbar-width" ) ;
193+ } ) ;
194+ expect ( parseFloat ( await navbar . evaluate ( ( el ) => getComputedStyle ( el ) . paddingRight ) ) ) . toBeCloseTo ( 8 , 0 ) ;
195+ expect ( parseFloat ( await footer . evaluate ( ( el ) => getComputedStyle ( el ) . paddingRight ) ) ) . toBeCloseTo ( 0 , 0 ) ;
196+ } ) ;
197+
168198test ( "dashboard shows empty state with no data" , async ( { page } ) => {
169199 await setupAuth ( page ) ;
170200 await page . goto ( "/dashboard" ) ;
0 commit comments