Skip to content

Commit 7745038

Browse files
committed
add test
1 parent 921dbc0 commit 7745038

File tree

3 files changed

+55
-6
lines changed

3 files changed

+55
-6
lines changed

packages/kit/test/apps/basics/src/routes/remote/form/file-upload/+page.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<form {...upload} enctype="multipart/form-data">
66
<input {...upload.fields.text.as('hidden', 'Hello world')} />
7-
<p>File 1: (progress: {upload.fields.file1.progress()})</p>
7+
<p>File 1: (progress: <span id="progress1">{upload.fields.file1.progress()}</span>)</p>
88
<input {...upload.fields.file1.as('file')} />
99
<p>File 2: (progress: {upload.fields.deep.files[0].progress()})</p>
1010
<input {...upload.fields.deep.files[0].as('file')} />

packages/kit/test/apps/basics/src/routes/remote/form/file-upload/form.remote.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export const upload = form(
1515
return {
1616
text: data.text,
1717
file1: data.file1.size,
18-
file2: data.deep.files.map((f) => f.size)
18+
files: data.deep.files.map((f) => f.size)
1919
};
2020
}
2121
return {

packages/kit/test/apps/basics/test/test.js

Lines changed: 53 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

20772126
test.describe('params prop', () => {

0 commit comments

Comments
 (0)