@@ -15,12 +15,9 @@ test('renders default playground preview', async ({ page }) => {
1515 await expectPreviewHasRenderedContent ( page )
1616} )
1717
18- test ( 'supports layout and theme toggles' , async ( { page } ) => {
18+ test ( 'supports theme toggles' , async ( { page } ) => {
1919 await waitForInitialRender ( page )
2020
21- await page . getByLabel ( 'Use side preview layout' ) . click ( )
22- await expect ( page . getByRole ( 'main' ) ) . toHaveClass ( / a p p - g r i d - - p r e v i e w - r i g h t / )
23-
2421 await page . getByLabel ( 'Use light theme' ) . click ( )
2522 await expect ( page . locator ( 'html' ) ) . toHaveAttribute ( 'data-theme' , 'light' )
2623
@@ -33,14 +30,11 @@ test('supports layout and theme toggles', async ({ page }) => {
3330 expect ( previewBackgroundColor ) . toBe ( 'rgb(36, 86, 168)' )
3431} )
3532
36- test ( 'side layout keeps preview panel height within editor stack height' , async ( {
33+ test ( 'fixed layout keeps preview panel height within editor stack height' , async ( {
3734 page,
3835} ) => {
3936 await waitForInitialRender ( page )
4037
41- await page . getByLabel ( 'Use side preview layout' ) . click ( )
42- await expect ( page . getByRole ( 'main' ) ) . toHaveClass ( / a p p - g r i d - - p r e v i e w - r i g h t / )
43-
4438 const metrics = await page . evaluate ( ( ) => {
4539 const stack = document . querySelector ( '.panels-stack--editors' )
4640 const previewPanel = document . getElementById ( 'preview-panel' )
@@ -56,13 +50,9 @@ test('side layout keeps preview panel height within editor stack height', async
5650 expect ( metrics . previewOverflowY ) . toBe ( 'hidden' )
5751} )
5852
59- test ( 'side layout config keeps preview scrolling inside preview host' , async ( {
60- page,
61- } ) => {
53+ test ( 'fixed layout keeps preview scrolling inside preview host' , async ( { page } ) => {
6254 await waitForInitialRender ( page )
6355
64- await page . getByLabel ( 'Use side preview layout' ) . click ( )
65-
6656 const scrollConfig = await page . evaluate ( ( ) => {
6757 const previewPanel = document . getElementById ( 'preview-panel' )
6858 const previewHost = document . getElementById ( 'preview-host' )
@@ -87,85 +77,61 @@ test('side layout config keeps preview scrolling inside preview host', async ({
8777 expect ( scrollConfig ?. minHeight ) . toBe ( '0px' )
8878} )
8979
90- test ( 'expanded component and styles can shrink consistently in side layouts ' , async ( {
80+ test ( 'expanded component and styles can shrink consistently in fixed layout ' , async ( {
9181 page,
9282} ) => {
9383 await waitForInitialRender ( page )
9484
95- for ( const layoutLabel of [ 'Use side preview layout' , 'Use left preview layout' ] ) {
96- await page . getByLabel ( layoutLabel ) . click ( )
97-
98- const minHeights = await page . evaluate ( ( ) => {
99- const component = document . getElementById ( 'component-panel' )
100- const styles = document . getElementById ( 'styles-panel' )
101- return {
102- component : component
103- ? Number . parseFloat ( getComputedStyle ( component ) . minHeight )
104- : 0 ,
105- styles : styles ? Number . parseFloat ( getComputedStyle ( styles ) . minHeight ) : 0 ,
106- }
107- } )
108-
109- expect ( minHeights . component ) . toBeGreaterThanOrEqual ( 0 )
110- expect ( minHeights . styles ) . toBeGreaterThanOrEqual ( 0 )
111- expect ( Math . abs ( minHeights . component - minHeights . styles ) ) . toBeLessThanOrEqual ( 1 )
112- }
85+ const minHeights = await page . evaluate ( ( ) => {
86+ const component = document . getElementById ( 'editor-panel-component' )
87+ const styles = document . getElementById ( 'editor-panel-styles' )
88+ return {
89+ component : component ? Number . parseFloat ( getComputedStyle ( component ) . minHeight ) : 0 ,
90+ styles : styles ? Number . parseFloat ( getComputedStyle ( styles ) . minHeight ) : 0 ,
91+ }
92+ } )
93+
94+ expect ( minHeights . component ) . toBeGreaterThanOrEqual ( 0 )
95+ expect ( minHeights . styles ) . toBeGreaterThanOrEqual ( 0 )
96+ expect ( Math . abs ( minHeights . component - minHeights . styles ) ) . toBeLessThanOrEqual ( 1 )
11397} )
11498
115- test ( 'panel collapse axis and direction adapt to active layout' , async ( { page } ) => {
99+ test ( 'panel collapse axis and direction match fixed layout' , async ( { page } ) => {
116100 await waitForInitialRender ( page )
117- await expect ( page . getByRole ( 'main' ) ) . toHaveClass ( / a p p - g r i d / )
101+ await expect ( page . getByRole ( 'main' ) ) . toHaveClass ( / a p p - g r i d - - p r e v i e w - r i g h t / )
118102
119103 await expectCollapseButtonState ( page , 'component' , {
120- axis : 'horizontal' ,
121- direction : 'left' ,
122- collapsed : false ,
123- } )
124- await expectCollapseButtonState ( page , 'styles' , {
125- axis : 'horizontal' ,
126- direction : 'right' ,
127- collapsed : false ,
128- } )
129- await expectCollapseButtonState ( page , 'preview' , {
130104 axis : 'vertical' ,
131105 direction : 'none' ,
132106 collapsed : false ,
133107 } )
134-
135- await page . getByLabel ( 'Use side preview layout' ) . click ( )
136- await expectCollapseButtonState ( page , 'preview' , {
137- axis : 'horizontal' ,
138- direction : 'right' ,
139- collapsed : false ,
140- } )
141- await expectCollapseButtonState ( page , 'component' , {
108+ await expectCollapseButtonState ( page , 'styles' , {
142109 axis : 'vertical' ,
143110 direction : 'none' ,
144111 collapsed : false ,
145112 } )
146-
147- await page . getByLabel ( 'Use left preview layout' ) . click ( )
148113 await expectCollapseButtonState ( page , 'preview' , {
149114 axis : 'horizontal' ,
150- direction : 'left ' ,
115+ direction : 'right ' ,
151116 collapsed : false ,
152117 } )
153118} )
154119
155120test ( 'prevents collapsing all three panels at once' , async ( { page } ) => {
156121 await waitForInitialRender ( page )
157- const componentPanel = page . getByRole ( 'region' , { name : 'Component' } )
158- const stylesPanel = page . getByRole ( 'region' , { name : 'Styles' } )
122+ const componentPanel = page . locator ( '#editor-panel-component' )
123+ const stylesPanel = page . locator ( '#editor-panel-styles' )
159124
160125 await getCollapseButton ( page , 'component' ) . click ( )
126+ await page . getByRole ( 'tab' , { name : 'Open tab app.css' } ) . click ( )
161127 await getCollapseButton ( page , 'styles' ) . click ( )
162128
163- await expect ( componentPanel ) . toHaveClass ( / p a n e l - - c o l l a p s e d - h o r i z o n t a l / )
164- await expect ( stylesPanel ) . toHaveClass ( / p a n e l - - c o l l a p s e d - h o r i z o n t a l / )
129+ await expect ( componentPanel ) . toHaveClass ( / p a n e l - - c o l l a p s e d - v e r t i c a l / )
130+ await expect ( stylesPanel ) . toHaveClass ( / p a n e l - - c o l l a p s e d - v e r t i c a l / )
165131
166132 await expectCollapseButtonState ( page , 'preview' , {
167- axis : 'vertical ' ,
168- direction : 'none ' ,
133+ axis : 'horizontal ' ,
134+ direction : 'right ' ,
169135 collapsed : false ,
170136 disabled : true ,
171137 } )
@@ -174,24 +140,25 @@ test('prevents collapsing all three panels at once', async ({ page }) => {
174140 'At least one panel must remain expanded.' ,
175141 )
176142
143+ await page . getByRole ( 'tab' , { name : 'Open tab App.tsx' } ) . click ( )
177144 await getCollapseButton ( page , 'component' ) . click ( )
178145 await expectCollapseButtonState ( page , 'preview' , {
179- axis : 'vertical ' ,
180- direction : 'none ' ,
146+ axis : 'horizontal ' ,
147+ direction : 'right ' ,
181148 collapsed : false ,
182149 disabled : false ,
183150 } )
184151} )
185152
186153test ( 'does not persist panel collapse state across reload' , async ( { page } ) => {
187154 await waitForInitialRender ( page )
188- const componentPanel = page . getByRole ( 'region' , { name : 'Component' } )
155+ const componentPanel = page . locator ( '#editor-panel-component' )
189156
190157 await getCollapseButton ( page , 'component' ) . click ( )
191- await expect ( componentPanel ) . toHaveClass ( / p a n e l - - c o l l a p s e d - h o r i z o n t a l / )
158+ await expect ( componentPanel ) . toHaveClass ( / p a n e l - - c o l l a p s e d - v e r t i c a l / )
192159 await expectCollapseButtonState ( page , 'component' , {
193- axis : 'horizontal ' ,
194- direction : 'left ' ,
160+ axis : 'vertical ' ,
161+ direction : 'none ' ,
195162 collapsed : true ,
196163 } )
197164
@@ -202,8 +169,8 @@ test('does not persist panel collapse state across reload', async ({ page }) =>
202169 / p a n e l - - c o l l a p s e d - h o r i z o n t a l | p a n e l - - c o l l a p s e d - v e r t i c a l / ,
203170 )
204171 await expectCollapseButtonState ( page , 'component' , {
205- axis : 'horizontal ' ,
206- direction : 'left ' ,
172+ axis : 'vertical ' ,
173+ direction : 'none ' ,
207174 collapsed : false ,
208175 } )
209176} )
@@ -213,8 +180,8 @@ test('gear tools toggles default inactive and switch active/inactive per panel',
213180} ) => {
214181 await waitForInitialRender ( page )
215182
216- const componentPanel = page . getByRole ( 'region' , { name : 'Component' } )
217- const stylesPanel = page . getByRole ( 'region' , { name : 'Styles' } )
183+ const componentPanel = page . locator ( '#editor-panel-component' )
184+ const stylesPanel = page . locator ( '#editor-panel-styles' )
218185 const componentTools = getToolsButton ( page , 'component' )
219186 const stylesTools = getToolsButton ( page , 'styles' )
220187
@@ -233,8 +200,24 @@ test('gear tools toggles default inactive and switch active/inactive per panel',
233200 await expect ( componentTools ) . toHaveAttribute ( 'aria-pressed' , 'false' )
234201 await expect ( componentTools ) . toHaveAttribute ( 'title' , 'Show component tools' )
235202
203+ await page . getByRole ( 'tab' , { name : 'Open tab app.css' } ) . click ( )
236204 await stylesTools . click ( )
237205 await expect ( stylesPanel ) . not . toHaveClass ( / p a n e l - - t o o l s - h i d d e n / )
238206 await expect ( stylesTools ) . toHaveAttribute ( 'aria-pressed' , 'true' )
239207 await expect ( stylesTools ) . toHaveAttribute ( 'title' , 'Hide styles tools' )
240208} )
209+
210+ test ( 'fixed layout keeps inactive editor panel hidden' , async ( { page } ) => {
211+ await waitForInitialRender ( page )
212+
213+ const componentPanel = page . locator ( '#editor-panel-component' )
214+ const stylesPanel = page . locator ( '#editor-panel-styles' )
215+
216+ const assertEntryPanelVisible = async ( ) => {
217+ await page . getByRole ( 'tab' , { name : 'Open tab App.tsx' } ) . click ( )
218+ await expect ( componentPanel ) . toBeVisible ( )
219+ await expect ( stylesPanel ) . toBeHidden ( )
220+ }
221+
222+ await assertEntryPanelVisible ( )
223+ } )
0 commit comments