@@ -18,7 +18,6 @@ test('Stop server works', async ({ page, sharedCodeServer }) => {
1818
1919 // Navigate to code-server instance
2020 await openServerPage ( page , tempDir , sharedCodeServer )
21- await page . waitForSelector ( '[role="application"]' , { timeout : 10000 } )
2221
2322 // Wait for the models folder to be visible in the file explorer
2423 await page . waitForSelector ( 'text=models' )
@@ -52,3 +51,84 @@ test('Stop server works', async ({ page, sharedCodeServer }) => {
5251 'text="Failed to render model: LSP client not ready."' ,
5352 )
5453} )
54+
55+ test ( 'Stopped server only restarts when explicitly requested' , async ( {
56+ page,
57+ sharedCodeServer,
58+ } ) => {
59+ const tempDir = await fs . mkdtemp ( path . join ( os . tmpdir ( ) , 'vscode-test-sushi-' ) )
60+ await fs . copy ( SUSHI_SOURCE_PATH , tempDir )
61+
62+ await createPythonInterpreterSettingsSpecifier ( tempDir )
63+
64+ // Navigate to code-server instance
65+ await openServerPage ( page , tempDir , sharedCodeServer )
66+
67+ // Wait for the models folder to be visible in the file explorer
68+ await page . waitForSelector ( 'text=models' )
69+
70+ // Click on the models folder, excluding external_models
71+ await page
72+ . getByRole ( 'treeitem' , { name : 'models' , exact : true } )
73+ . locator ( 'a' )
74+ . click ( )
75+
76+ // Open the customers.sql model
77+ await page
78+ . getByRole ( 'treeitem' , { name : 'marketing.sql' , exact : true } )
79+ . locator ( 'a' )
80+ . click ( )
81+ await page . waitForSelector ( 'text=grain' )
82+ await waitForLoadedSQLMesh ( page )
83+
84+ // Click on sushi.raw_marketing
85+ await page . getByText ( 'sushi.raw_marketing;' ) . click ( )
86+
87+ // Open the preview hover
88+ await runCommand ( page , 'Show Definition Preview Hover' )
89+
90+ // Assert that the hover is visible with text "Table of marketing status."
91+ await page . waitForSelector ( 'text=Table of marketing status.' , {
92+ timeout : 5_000 ,
93+ state : 'visible' ,
94+ } )
95+
96+ // Hit Esc to close the hover
97+ await page . keyboard . press ( 'Escape' )
98+
99+ // Assert that the hover is no longer visible
100+ await page . waitForSelector ( 'text=Table of marketing status.' , {
101+ timeout : 5_000 ,
102+ state : 'hidden' ,
103+ } )
104+
105+ // Stop the server
106+ await runCommand ( page , 'SQLMesh: Stop Server' )
107+
108+ // Await LSP server stopped message
109+ await page . waitForSelector ( 'text=LSP server stopped' )
110+
111+ // Open the preview hover again
112+ await runCommand ( page , 'Show Definition Preview Hover' )
113+
114+ // Assert that the hover is not visible
115+ await page . waitForSelector ( 'text=Table of marketing status.' , {
116+ timeout : 5_000 ,
117+ state : 'hidden' ,
118+ } )
119+
120+ // Restart the server explicitly
121+ await runCommand ( page , 'SQLMesh: Restart Server' )
122+
123+ // Await LSP server started message
124+ await waitForLoadedSQLMesh ( page )
125+
126+ // Open the preview hover again
127+ await runCommand ( page , 'Show Definition Preview Hover' )
128+
129+ // Assert that the hover is visible with text "Table of marketing status."
130+ await page . waitForSelector ( 'text=Table of marketing status.' , {
131+ timeout : 5_000 ,
132+ state : 'visible' ,
133+ } )
134+ } )
0 commit comments