@@ -74,6 +74,28 @@ const ensurePanelToolsVisible = async (page: Page, panelName: 'component' | 'sty
7474 }
7575}
7676
77+ const ensureDiagnosticsDrawerOpen = async ( page : Page ) => {
78+ const toggle = page . locator ( '#diagnostics-toggle' )
79+ const isExpanded = await toggle . getAttribute ( 'aria-expanded' )
80+
81+ if ( isExpanded !== 'true' ) {
82+ await toggle . click ( )
83+ }
84+
85+ await expect ( page . locator ( '#diagnostics-drawer' ) ) . toBeVisible ( )
86+ }
87+
88+ const ensureDiagnosticsDrawerClosed = async ( page : Page ) => {
89+ const toggle = page . locator ( '#diagnostics-toggle' )
90+ const isExpanded = await toggle . getAttribute ( 'aria-expanded' )
91+
92+ if ( isExpanded === 'true' ) {
93+ await page . locator ( '#diagnostics-close' ) . click ( )
94+ }
95+
96+ await expect ( page . locator ( '#diagnostics-drawer' ) ) . toBeHidden ( )
97+ }
98+
7799const expectCollapseButtonState = async (
78100 page : Page ,
79101 panelName : 'component' | 'styles' | 'preview' ,
@@ -383,7 +405,7 @@ test('react mode typecheck loads types without malformed URL fetches', async ({
383405 await page . locator ( '#render-mode' ) . selectOption ( 'react' )
384406 await page . getByRole ( 'button' , { name : 'Typecheck' } ) . click ( )
385407
386- await page . locator ( '#diagnostics-toggle' ) . click ( )
408+ await ensureDiagnosticsDrawerOpen ( page )
387409 await expect ( page . locator ( '#diagnostics-component' ) ) . toContainText (
388410 'No TypeScript errors found.' ,
389411 )
@@ -558,7 +580,7 @@ test('style compilation errors populate styles diagnostics scope', async ({ page
558580 / d i a g n o s t i c s - t o g g l e - - e r r o r / ,
559581 )
560582
561- await page . locator ( '#diagnostics-toggle' ) . click ( )
583+ await ensureDiagnosticsDrawerOpen ( page )
562584 await expect ( page . locator ( '#diagnostics-styles' ) ) . toContainText (
563585 'Style compilation failed.' ,
564586 )
@@ -627,6 +649,7 @@ test('clearing styles keeps diagnostics error state but resets status styling',
627649 )
628650
629651 const dialog = page . locator ( '#clear-confirm-dialog' )
652+ await ensureDiagnosticsDrawerClosed ( page )
630653 await page . getByLabel ( 'Clear styles source' ) . click ( )
631654 await expect ( dialog ) . toHaveAttribute ( 'open' , '' )
632655 await dialog . getByRole ( 'button' , { name : 'Clear' } ) . click ( )
@@ -659,7 +682,7 @@ test('clear component diagnostics removes type errors and restores rendered stat
659682 )
660683 await expect ( page . locator ( '#status' ) ) . toHaveText ( / R e n d e r e d \( T y p e e r r o r s : [ 1 - 9 ] \d * \) / )
661684
662- await page . locator ( '#diagnostics-toggle' ) . click ( )
685+ await ensureDiagnosticsDrawerOpen ( page )
663686 await page . locator ( '#diagnostics-clear-component' ) . click ( )
664687
665688 await expect ( page . locator ( '#diagnostics-component' ) ) . toContainText (
@@ -685,7 +708,7 @@ test('clear all diagnostics removes style compile diagnostics', async ({ page })
685708 / d i a g n o s t i c s - t o g g l e - - e r r o r / ,
686709 )
687710
688- await page . locator ( '#diagnostics-toggle' ) . click ( )
711+ await ensureDiagnosticsDrawerOpen ( page )
689712 await expect ( page . locator ( '#diagnostics-styles' ) ) . toContainText (
690713 'Style compilation failed.' ,
691714 )
@@ -713,7 +736,7 @@ test('clear styles diagnostics removes style compile diagnostics', async ({ page
713736 / d i a g n o s t i c s - t o g g l e - - e r r o r / ,
714737 )
715738
716- await page . locator ( '#diagnostics-toggle' ) . click ( )
739+ await ensureDiagnosticsDrawerOpen ( page )
717740 await expect ( page . locator ( '#diagnostics-styles' ) ) . toContainText (
718741 'Style compilation failed.' ,
719742 )
@@ -740,7 +763,7 @@ test('typecheck success reports ok diagnostics state in button and drawer', asyn
740763 await expect ( page . locator ( '#diagnostics-toggle' ) ) . toHaveClass ( / d i a g n o s t i c s - t o g g l e - - o k / )
741764 await expect ( page . locator ( '#diagnostics-toggle' ) ) . toHaveText ( 'Diagnostics' )
742765
743- await page . locator ( '#diagnostics-toggle' ) . click ( )
766+ await ensureDiagnosticsDrawerOpen ( page )
744767 await expect ( page . locator ( '#diagnostics-component' ) ) . toContainText (
745768 'No TypeScript errors found.' ,
746769 )
@@ -766,7 +789,7 @@ test('typecheck error reports diagnostics count in button and details in drawer'
766789 )
767790 await expect ( page . locator ( '#diagnostics-toggle' ) ) . toHaveText ( / D i a g n o s t i c s \( [ 1 - 9 ] \d * \) / )
768791
769- await page . locator ( '#diagnostics-toggle' ) . click ( )
792+ await expect ( page . locator ( '#diagnostics-drawer' ) ) . toBeVisible ( )
770793 await expect ( page . locator ( '#diagnostics-component' ) ) . toContainText ( 'TypeScript found' )
771794 await expect ( page . locator ( '#diagnostics-component' ) ) . toContainText ( 'TS' )
772795} )
@@ -787,7 +810,7 @@ test('component diagnostics rows navigate editor to reported line', async ({ pag
787810 await expect ( page . locator ( '#diagnostics-toggle' ) ) . toHaveClass (
788811 / d i a g n o s t i c s - t o g g l e - - e r r o r / ,
789812 )
790- await page . locator ( '#diagnostics-toggle' ) . click ( )
813+ await ensureDiagnosticsDrawerOpen ( page )
791814
792815 const targetDiagnostic = page
793816 . locator ( '#diagnostics-component .diagnostic-line-button[data-diagnostic-line="2"]' )
@@ -817,7 +840,7 @@ test('component diagnostics support arrow navigation and enter jump', async ({
817840 / d i a g n o s t i c s - t o g g l e - - e r r o r / ,
818841 )
819842
820- await page . locator ( '#diagnostics-toggle' ) . click ( )
843+ await ensureDiagnosticsDrawerOpen ( page )
821844
822845 const firstDiagnostic = page
823846 . locator ( '#diagnostics-component .diagnostic-line-button' )
@@ -854,7 +877,7 @@ test('component lint error reports diagnostics count and details', async ({ page
854877 )
855878 await expect ( page . locator ( '#diagnostics-toggle' ) ) . toHaveText ( / D i a g n o s t i c s \( [ 1 - 9 ] \d * \) / )
856879
857- await page . locator ( '#diagnostics-toggle' ) . click ( )
880+ await expect ( page . locator ( '#diagnostics-drawer' ) ) . toBeVisible ( )
858881 await expect ( page . locator ( '#diagnostics-component' ) ) . toContainText (
859882 'Biome reported issues.' ,
860883 )
@@ -874,7 +897,7 @@ test('styles diagnostics rows navigate editor to reported line', async ({ page }
874897 await expect ( page . locator ( '#diagnostics-toggle' ) ) . toHaveClass (
875898 / d i a g n o s t i c s - t o g g l e - - e r r o r / ,
876899 )
877- await page . locator ( '#diagnostics-toggle' ) . click ( )
900+ await ensureDiagnosticsDrawerOpen ( page )
878901
879902 const targetDiagnostic = page
880903 . locator ( '#diagnostics-styles .diagnostic-line-button[data-diagnostic-line="3"]' )
@@ -904,7 +927,7 @@ test('clear component diagnostics resets rendered lint-issue status pill', async
904927 await expect ( page . locator ( '#status' ) ) . toHaveText ( / R e n d e r e d \( L i n t i s s u e s : [ 1 - 9 ] \d * \) / )
905928 await expect ( page . locator ( '#status' ) ) . toHaveClass ( / s t a t u s - - e r r o r / )
906929
907- await page . locator ( '#diagnostics-toggle' ) . click ( )
930+ await ensureDiagnosticsDrawerOpen ( page )
908931 await page . locator ( '#diagnostics-clear-component' ) . click ( )
909932
910933 await expect ( page . locator ( '#diagnostics-component' ) ) . toContainText (
@@ -932,7 +955,7 @@ test('component lint ignores unused App View and render bindings', async ({ page
932955
933956 await runComponentLint ( page )
934957
935- await page . locator ( '#diagnostics-toggle' ) . click ( )
958+ await ensureDiagnosticsDrawerOpen ( page )
936959 await expect ( page . locator ( '#diagnostics-component' ) ) . toContainText (
937960 'No Biome issues found.' ,
938961 )
@@ -1018,7 +1041,7 @@ test('changing css dialect resets diagnostics after lint and typecheck runs', as
10181041 )
10191042 await expect ( page . locator ( '#diagnostics-toggle' ) ) . toHaveText ( 'Diagnostics' )
10201043
1021- await page . locator ( '#diagnostics-toggle' ) . click ( )
1044+ await ensureDiagnosticsDrawerOpen ( page )
10221045 await expect ( page . locator ( '#diagnostics-component' ) ) . toContainText (
10231046 'No diagnostics yet.' ,
10241047 )
0 commit comments