@@ -21,7 +21,12 @@ import {
2121import type { createSdk } from "./utils"
2222
2323export async function defocus ( page : Page ) {
24- await page . mouse . click ( 5 , 5 )
24+ await page
25+ . evaluate ( ( ) => {
26+ const el = document . activeElement
27+ if ( el instanceof HTMLElement ) el . blur ( )
28+ } )
29+ . catch ( ( ) => undefined )
2530}
2631
2732export async function openPalette ( page : Page ) {
@@ -68,14 +73,50 @@ export async function toggleSidebar(page: Page) {
6873
6974export async function openSidebar ( page : Page ) {
7075 if ( ! ( await isSidebarClosed ( page ) ) ) return
76+
77+ const button = page . getByRole ( "button" , { name : / t o g g l e s i d e b a r / i } ) . first ( )
78+ const visible = await button
79+ . isVisible ( )
80+ . then ( ( x ) => x )
81+ . catch ( ( ) => false )
82+
83+ if ( visible ) await button . click ( )
84+ if ( ! visible ) await toggleSidebar ( page )
85+
86+ const main = page . locator ( "main" )
87+ const opened = await expect ( main )
88+ . not . toHaveClass ( / x l : b o r d e r - l / , { timeout : 1500 } )
89+ . then ( ( ) => true )
90+ . catch ( ( ) => false )
91+
92+ if ( opened ) return
93+
7194 await toggleSidebar ( page )
72- await expect ( page . locator ( " main" ) ) . not . toHaveClass ( / x l : b o r d e r - l / )
95+ await expect ( main ) . not . toHaveClass ( / x l : b o r d e r - l / )
7396}
7497
7598export async function closeSidebar ( page : Page ) {
7699 if ( await isSidebarClosed ( page ) ) return
100+
101+ const button = page . getByRole ( "button" , { name : / t o g g l e s i d e b a r / i } ) . first ( )
102+ const visible = await button
103+ . isVisible ( )
104+ . then ( ( x ) => x )
105+ . catch ( ( ) => false )
106+
107+ if ( visible ) await button . click ( )
108+ if ( ! visible ) await toggleSidebar ( page )
109+
110+ const main = page . locator ( "main" )
111+ const closed = await expect ( main )
112+ . toHaveClass ( / x l : b o r d e r - l / , { timeout : 1500 } )
113+ . then ( ( ) => true )
114+ . catch ( ( ) => false )
115+
116+ if ( closed ) return
117+
77118 await toggleSidebar ( page )
78- await expect ( page . locator ( " main" ) ) . toHaveClass ( / x l : b o r d e r - l / )
119+ await expect ( main ) . toHaveClass ( / x l : b o r d e r - l / )
79120}
80121
81122export async function openSettings ( page : Page ) {
@@ -182,13 +223,30 @@ export async function hoverSessionItem(page: Page, sessionID: string) {
182223}
183224
184225export async function openSessionMoreMenu ( page : Page , sessionID : string ) {
185- const sessionEl = await hoverSessionItem ( page , sessionID )
226+ await expect ( page ) . toHaveURL ( new RegExp ( `/session/${ sessionID } (?:[/?#]|$)` ) )
227+
228+ const scroller = page . locator ( ".session-scroller" ) . first ( )
229+ await expect ( scroller ) . toBeVisible ( )
230+ await expect ( scroller . getByRole ( "heading" , { level : 1 } ) . first ( ) ) . toBeVisible ( { timeout : 30_000 } )
231+
232+ const menu = page
233+ . locator ( dropdownMenuContentSelector )
234+ . filter ( { has : page . getByRole ( "menuitem" , { name : / r e n a m e / i } ) } )
235+ . filter ( { has : page . getByRole ( "menuitem" , { name : / a r c h i v e / i } ) } )
236+ . filter ( { has : page . getByRole ( "menuitem" , { name : / d e l e t e / i } ) } )
237+ . first ( )
238+
239+ const opened = await menu
240+ . isVisible ( )
241+ . then ( ( x ) => x )
242+ . catch ( ( ) => false )
186243
187- const menuTrigger = sessionEl . locator ( dropdownMenuTriggerSelector ) . first ( )
244+ if ( opened ) return menu
245+
246+ const menuTrigger = scroller . getByRole ( "button" , { name : / m o r e o p t i o n s / i } ) . first ( )
188247 await expect ( menuTrigger ) . toBeVisible ( )
189248 await menuTrigger . click ( )
190249
191- const menu = page . locator ( dropdownMenuContentSelector ) . first ( )
192250 await expect ( menu ) . toBeVisible ( )
193251 return menu
194252}
0 commit comments