@@ -2033,19 +2033,24 @@ test.describe('remote functions', () => {
20332033 mimeType : 'text/plain' ,
20342034 buffer : Buffer . from ( 'a' )
20352035 } ) ;
2036- await page . locator ( 'input[name="file2 "]' ) . setInputFiles ( {
2036+ await page . locator ( 'input[name="deep.files[0] "]' ) . setInputFiles ( {
20372037 name : 'b.txt' ,
20382038 mimeType : 'text/plain' ,
20392039 buffer : Buffer . from ( 'b' )
20402040 } ) ;
2041+ await page . locator ( 'input[name="deep.files[1]"]' ) . setInputFiles ( {
2042+ name : 'c.txt' ,
2043+ mimeType : 'text/plain' ,
2044+ buffer : Buffer . from ( 'c' )
2045+ } ) ;
20412046 await page . locator ( 'input[type="checkbox"]' ) . check ( ) ;
20422047 await page . locator ( 'button' ) . click ( ) ;
20432048
20442049 await expect ( page . locator ( 'pre' ) ) . toHaveText (
20452050 JSON . stringify ( {
20462051 text : 'Hello world' ,
20472052 file1 : 'a' ,
2048- file2 : 'b'
2053+ files : [ 'b' , 'c' ]
20492054 } )
20502055 ) ;
20512056 } ) ;
@@ -2057,21 +2062,65 @@ test.describe('remote functions', () => {
20572062 mimeType : 'text/plain' ,
20582063 buffer : Buffer . alloc ( 1024 * 1024 * 10 )
20592064 } ) ;
2060- await page . locator ( 'input[name="file2 "]' ) . setInputFiles ( {
2065+ await page . locator ( 'input[name="deep.files[0] "]' ) . setInputFiles ( {
20612066 name : 'b.txt' ,
20622067 mimeType : 'text/plain' ,
20632068 buffer : Buffer . from ( 'b' )
20642069 } ) ;
2070+ await page . locator ( 'input[name="deep.files[1]"]' ) . setInputFiles ( {
2071+ name : 'c.txt' ,
2072+ mimeType : 'text/plain' ,
2073+ buffer : Buffer . from ( 'c' )
2074+ } ) ;
20652075 await page . locator ( 'button' ) . click ( ) ;
20662076
20672077 await expect ( page . locator ( 'pre' ) ) . toHaveText (
20682078 JSON . stringify ( {
20692079 text : 'Hello world' ,
20702080 file1 : 1024 * 1024 * 10 ,
2071- file2 : 1
2081+ files : [ 1 , 1 ]
20722082 } )
20732083 ) ;
20742084 } ) ;
2085+ test ( 'file upload progress works' , async ( { page, context, javaScriptEnabled } ) => {
2086+ if ( ! javaScriptEnabled ) return ;
2087+ await page . goto ( '/remote/form/file-upload' ) ;
2088+ const cdp = await context . newCDPSession ( page ) ;
2089+ await cdp . send ( 'Network.emulateNetworkConditions' , {
2090+ offline : false ,
2091+ latency : 0 ,
2092+ downloadThroughput : - 1 ,
2093+ uploadThroughput : 1024 * 1024 * 5 // throttle so it'll take 2 seconds to upload
2094+ } ) ;
2095+ try {
2096+ const progress = page . locator ( '#progress1' ) ;
2097+ expect ( progress ) . toHaveText ( '0' ) ;
2098+ await page . locator ( 'input[name="file1"]' ) . setInputFiles ( {
2099+ name : 'a.txt' ,
2100+ mimeType : 'text/plain' ,
2101+ buffer : Buffer . alloc ( 1024 * 1024 * 10 )
2102+ } ) ;
2103+ await page . locator ( 'input[name="deep.files[0]"]' ) . setInputFiles ( {
2104+ name : 'b.txt' ,
2105+ mimeType : 'text/plain' ,
2106+ buffer : Buffer . from ( 'b' )
2107+ } ) ;
2108+ await page . locator ( 'input[name="deep.files[1]"]' ) . setInputFiles ( {
2109+ name : 'c.txt' ,
2110+ mimeType : 'text/plain' ,
2111+ buffer : Buffer . from ( 'c' )
2112+ } ) ;
2113+ await page . locator ( 'button' ) . click ( ) ;
2114+ await expect ( progress ) . not . toHaveText ( '0' ) ;
2115+ } finally {
2116+ await cdp . send ( 'Network.emulateNetworkConditions' , {
2117+ offline : false ,
2118+ latency : 0 ,
2119+ downloadThroughput : - 1 ,
2120+ uploadThroughput : - 1
2121+ } ) ;
2122+ }
2123+ } ) ;
20752124} ) ;
20762125
20772126test . describe ( 'params prop' , ( ) => {
0 commit comments