@@ -33,19 +33,19 @@ test('navigate config bucket', async ({ page, utils }) => {
3333 await page . getByText ( 'config' ) . click ( )
3434 await expect ( page ) . toHaveURL ( / .* \/ t o o l s \/ b u c k e t e x p l o r e r \/ c o n f i g % 2 F / )
3535 await page . getByRole ( 'cell' , { name : 'DEFAULT' } ) . click ( )
36- await expect ( page . locator ( '[data-test="file-path"]' ) ) . toHaveText (
36+ await expect ( page . locator ( '[data-test="file-path"]' ) ) . toContainText (
3737 '/ DEFAULT /' ,
3838 )
3939 await expect ( page ) . toHaveURL ( / .* \/ t o o l s \/ b u c k e t e x p l o r e r \/ c o n f i g % 2 F D E F A U L T % 2 F / )
4040 await page . getByRole ( 'cell' , { name : 'targets' , exact : true } ) . click ( )
41- await expect ( page . locator ( '[data-test="file-path"]' ) ) . toHaveText (
41+ await expect ( page . locator ( '[data-test="file-path"]' ) ) . toContainText (
4242 '/ DEFAULT / targets /' ,
4343 )
4444 await expect ( page ) . toHaveURL (
4545 / .* \/ t o o l s \/ b u c k e t e x p l o r e r \/ c o n f i g % 2 F D E F A U L T % 2 F t a r g e t s % 2 F / ,
4646 )
4747 await page . getByRole ( 'cell' , { name : 'INST' , exact : true } ) . click ( )
48- await expect ( page . locator ( '[data-test="file-path"]' ) ) . toHaveText (
48+ await expect ( page . locator ( '[data-test="file-path"]' ) ) . toContainText (
4949 '/ DEFAULT / targets / INST /' ,
5050 )
5151 await expect ( page ) . toHaveURL (
@@ -71,14 +71,14 @@ test('navigate config bucket', async ({ page, utils }) => {
7171 )
7272
7373 await page . locator ( '[data-test="be-nav-back"]' ) . click ( )
74- await expect ( page . locator ( '[data-test="file-path"]' ) ) . toHaveText (
74+ await expect ( page . locator ( '[data-test="file-path"]' ) ) . toContainText (
7575 '/ DEFAULT / targets /' ,
7676 )
7777 await expect ( page ) . toHaveURL (
7878 / .* \/ t o o l s \/ b u c k e t e x p l o r e r \/ c o n f i g % 2 F D E F A U L T % 2 F t a r g e t s % 2 F / ,
7979 )
8080 await page . locator ( '[data-test="be-nav-back"]' ) . click ( )
81- await expect ( page . locator ( '[data-test="file-path"]' ) ) . toHaveText (
81+ await expect ( page . locator ( '[data-test="file-path"]' ) ) . toContainText (
8282 '/ DEFAULT /' ,
8383 )
8484 await expect ( page ) . toHaveURL ( / .* \/ t o o l s \/ b u c k e t e x p l o r e r \/ c o n f i g % 2 F D E F A U L T % 2 F / )
@@ -96,28 +96,28 @@ test('navigate gems volume', async ({ page, utils }) => {
9696 // Note the URL is prefixed with %2F, i.e. '/'
9797 await expect ( page ) . toHaveURL ( / .* \/ t o o l s \/ b u c k e t e x p l o r e r \/ % 2 F g e m s % 2 F / )
9898 await page . getByRole ( 'cell' , { name : 'cosmoscache' } ) . click ( )
99- await expect ( page . locator ( '[data-test="file-path"]' ) ) . toHaveText (
99+ await expect ( page . locator ( '[data-test="file-path"]' ) ) . toContainText (
100100 '/ cosmoscache /' ,
101101 )
102102 await expect ( page ) . toHaveURL (
103103 / .* \/ t o o l s \/ b u c k e t e x p l o r e r \/ % 2 F g e m s % 2 F c o s m o s c a c h e % 2 F / ,
104104 )
105105
106106 await page . locator ( '[data-test="search-input"] input' ) . fill ( 'bucket' )
107- await expect ( page . locator ( 'tbody > tr' ) ) . toHaveCount ( 1 )
107+ await expect ( page . locator ( 'tbody > tr' ) ) . toHaveCount ( 2 )
108108 // Download the file
109- await utils . download ( page , 'tbody > tr [data-test="download-file"]' )
109+ await utils . download ( page , 'tbody > tr [data-test="download-file"] >> nth=0 ' )
110110
111111 // Reload and ensure we get to the same place
112112 await page . reload ( )
113- await expect ( page . locator ( '[data-test="file-path"]' ) ) . toHaveText (
113+ await expect ( page . locator ( '[data-test="file-path"]' ) ) . toContainText (
114114 '/ cosmoscache /' ,
115115 )
116116 await expect ( page ) . toHaveURL (
117117 / .* \/ t o o l s \/ b u c k e t e x p l o r e r \/ % 2 F g e m s % 2 F c o s m o s c a c h e % 2 F / ,
118118 )
119119 await page . locator ( '[data-test="search-input"] input' ) . fill ( 'bucket' )
120- await expect ( page . locator ( 'tbody > tr' ) ) . toHaveCount ( 1 )
120+ await expect ( page . locator ( 'tbody > tr' ) ) . toHaveCount ( 2 )
121121} )
122122
123123test ( 'direct URLs' , async ( { page, utils } ) => {
@@ -170,7 +170,13 @@ test('upload and delete', async ({ page, utils }) => {
170170 await expect ( page . locator ( 'textarea' ) ) . toHaveText ( '' )
171171 await page . locator ( 'textarea' ) . fill ( `print('hello world')` )
172172 await page . locator ( '[data-test=script-runner-file]' ) . click ( )
173- await page . locator ( 'text=Save File' ) . click ( )
173+ await page . locator ( '[data-test=start-button]' ) . click ( )
174+ await expect ( page . locator ( '[data-test=state] input' ) ) . toHaveValue (
175+ 'completed' ,
176+ {
177+ timeout : 30000 ,
178+ } ,
179+ )
174180
175181 await page . goto ( '/tools/bucketexplorer' )
176182 await page . getByText ( 'config' ) . click ( )
@@ -247,9 +253,9 @@ test('navigate logs and tools bucket', async ({ page, utils }) => {
247253 await page . getByText ( 'tools' ) . click ( )
248254 await expect ( page ) . toHaveURL ( / .* \/ t o o l s \/ b u c k e t e x p l o r e r \/ t o o l s % 2 F / )
249255 if ( process . env . ENTERPRISE === '1' ) {
250- await expect ( page . locator ( 'tbody > tr' ) ) . toHaveCount ( 20 )
256+ await expect ( page . locator ( 'tbody > tr' ) ) . toHaveCount ( 23 )
251257 } else {
252- await expect ( page . locator ( 'tbody > tr' ) ) . toHaveCount ( 17 )
258+ await expect ( page . locator ( 'tbody > tr' ) ) . toHaveCount ( 20 )
253259 }
254260} )
255261
@@ -259,54 +265,57 @@ test('auto refreshes to update files', async ({
259265 toolPath,
260266 context,
261267} ) => {
262- const randomDir = 'tmp_' + `${ Math . random ( ) } ` . substring ( 2 )
263- // Upload something from the first tab to make sure the tmp dir exists
264- await page . getByText ( 'config' ) . click ( )
265- await expect ( page . getByLabel ( 'prepended action' ) ) . toBeVisible ( )
266- const [ fileChooser1 ] = await Promise . all ( [
267- page . waitForEvent ( 'filechooser' ) ,
268- await page . getByLabel ( 'prepended action' ) . click ( ) ,
269- ] )
270- await fileChooser1 . setFiles ( 'package.json' )
271- await page
272- . locator ( '[data-test="upload-file-path"] input' )
273- . fill ( `DEFAULT/${ randomDir } /package1.json` )
274- await page . locator ( '[data-test="upload-file-submit-btn"]' ) . click ( )
268+ // Create a file so we have something in __TEMP__
269+ await page . goto ( '/tools/scriptrunner' )
270+ await expect ( page . locator ( '.v-app-bar' ) ) . toContainText ( 'Script Runner' )
271+ await page . locator ( '[data-test=script-runner-file]' ) . click ( )
272+ await page . locator ( 'text=New File' ) . click ( )
273+ await expect ( page . locator ( 'textarea' ) ) . toHaveText ( '' )
274+ await page . locator ( 'textarea' ) . fill ( `print('hello world')` )
275+ await page . locator ( '[data-test=start-button]' ) . click ( )
276+ await expect ( page . locator ( '[data-test=state] input' ) ) . toHaveValue (
277+ 'completed' ,
278+ {
279+ timeout : 30000 ,
280+ } ,
281+ )
275282
276- // Open another tab and navigate to the tmp dir
283+ // Open another tab and navigate to the __TEMP__ dir
277284 const pageTwo = await context . newPage ( )
278285 pageTwo . goto ( toolPath )
279286 await pageTwo . getByText ( 'config' ) . click ( )
280287 await pageTwo . getByRole ( 'cell' , { name : 'DEFAULT' } ) . click ( )
281- await pageTwo . getByRole ( 'cell' , { name : randomDir } ) . click ( )
288+ await pageTwo . getByRole ( 'cell' , { name : 'targets_modified' } ) . click ( )
289+ await pageTwo . getByRole ( 'cell' , { name : '__TEMP__' } ) . click ( )
282290
283291 // Set the refresh interval on the second tab to be really slow
284292 await pageTwo . locator ( '[data-test=bucket-explorer-file]' ) . click ( )
285293 await pageTwo . locator ( '[data-test=bucket-explorer-file-options]' ) . click ( )
286294 await pageTwo
287295 . locator ( '.v-dialog [data-test=refresh-interval] input' )
288296 . fill ( '1000' )
289- await pageTwo
290- . locator ( '.v-dialog [data-test=refresh-interval] input' )
291- . press ( 'Enter' )
292- await pageTwo . locator ( '.v-dialog' ) . press ( 'Escape' )
297+ await pageTwo . getByRole ( 'button' , { name : 'Save' } ) . click ( )
293298
294299 // Upload a file from the first tab
300+ await page . goto (
301+ '/tools/bucketexplorer/config%2FDEFAULT%2Ftargets_modified%2F__TEMP__%2F' ,
302+ )
303+ await expect ( page . locator ( '.v-app-bar' ) ) . toContainText ( 'Bucket Explorer' )
295304 await expect ( page . getByLabel ( 'prepended action' ) ) . toBeVisible ( )
296- const [ fileChooser2 ] = await Promise . all ( [
305+ const [ fileChooser ] = await Promise . all ( [
297306 page . waitForEvent ( 'filechooser' ) ,
298307 await page . getByLabel ( 'prepended action' ) . click ( ) ,
299308 ] )
300- await fileChooser2 . setFiles ( 'package.json' )
309+ await fileChooser . setFiles ( 'package.json' )
301310 await page
302311 . locator ( '[data-test="upload-file-path"] input' )
303- . fill ( `DEFAULT/${ randomDir } /package2 .json` )
312+ . fill ( `DEFAULT/targets_modified/__TEMP__/refresh_package .json` )
304313 await page . locator ( '[data-test="upload-file-submit-btn"]' ) . click ( )
305314
306315 // The second tab shouldn't have refreshed yet, so the file shouldn't be there
307316 await page . locator ( 'tbody> tr' ) . first ( ) . waitFor ( )
308317 await expect (
309- pageTwo . getByRole ( 'cell' , { name : 'package2 .json' } ) ,
318+ pageTwo . getByRole ( 'cell' , { name : 'refresh_package .json' } ) ,
310319 ) . not . toBeVisible ( { timeout : 10000 } )
311320
312321 // Set the refresh interval on the second tab to 1s
@@ -315,24 +324,17 @@ test('auto refreshes to update files', async ({
315324 await pageTwo
316325 . locator ( '.v-dialog [data-test=refresh-interval] input' )
317326 . fill ( '1' )
318- await pageTwo
319- . locator ( '.v-dialog [data-test=refresh-interval] input' )
320- . press ( 'Enter' )
321- await pageTwo . locator ( '.v-dialog' ) . press ( 'Escape' )
327+ await pageTwo . getByRole ( 'button' , { name : 'Save' } ) . click ( )
322328
323329 // Second tab should auto refresh in 1s and then the file should be there
324330 await page . locator ( 'tbody> tr' ) . first ( ) . waitFor ( )
325331 await expect (
326- pageTwo . getByRole ( 'cell' , { name : 'package2 .json' } ) ,
332+ pageTwo . getByRole ( 'cell' , { name : 'refresh_package .json' } ) ,
327333 ) . toBeVisible ( )
328334
329335 // Cleanup
330336 await page
331- . locator ( 'tr:has-text("package1.json") [data-test="delete-file"]' )
332- . click ( )
333- await page . locator ( '[data-test="confirm-dialog-delete"]' ) . click ( )
334- await page
335- . locator ( 'tr:has-text("package2.json") [data-test="delete-file"]' )
337+ . locator ( 'tr:has-text("refresh_package.json") [data-test="delete-file"]' )
336338 . click ( )
337339 await page . locator ( '[data-test="confirm-dialog-delete"]' ) . click ( )
338340} )
0 commit comments