Skip to content

Commit bf978f7

Browse files
committed
test: Add test cases for enctype / formenctype attributes for /actions/enhance/ test page
1 parent 966cabd commit bf978f7

File tree

3 files changed

+84
-0
lines changed

3 files changed

+84
-0
lines changed

packages/kit/test/apps/basics/src/routes/actions/enhance/+page.server.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ export const actions = {
1818
result: fields.get('username')
1919
};
2020
},
21+
login_2: async ({ request }) => {
22+
const fields = await request.formData();
23+
return {
24+
result: fields.get('username_2')
25+
};
26+
},
2127
register: async ({ request }) => {
2228
const fields = await request.formData();
2329
return {
@@ -53,5 +59,16 @@ export const actions = {
5359
});
5460

5561
return {};
62+
},
63+
send_file: async ({ request }) => {
64+
const data = await request.formData();
65+
const file = data.get('file');
66+
67+
console.log('file', file);
68+
69+
return {
70+
// @ts-expect-error
71+
result: 'file name:' + file.name
72+
};
5673
}
5774
};

packages/kit/test/apps/basics/src/routes/actions/enhance/+page.svelte

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,15 @@
5757
<button formmethod="dialog">Cancel</button>
5858
</form>
5959
</dialog>
60+
61+
<form action="?/login_2" enctype="application/x-www-form-urlencoded" method="post" use:enhance>
62+
<input name="username_2" type="text" />
63+
64+
<button class="form-enctype-submit">Submit</button>
65+
</form>
66+
67+
<form action="?/send_file" method="post" use:enhance>
68+
<input type="file" name="file" class="form-file-input" />
69+
70+
<button class="form-file-submit" formenctype="multipart/form-data" type="submit">Submit</button>
71+
</form>

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

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1153,6 +1153,61 @@ test.describe('Actions', () => {
11531153
await expect(page.locator('pre.formdata2')).toHaveText(JSON.stringify({ message: 'hello' }));
11541154
});
11551155

1156+
test('use:enhance with `enctype="application/x-www-form-urlencoded"` attribute in `<form>`', async ({
1157+
page
1158+
}) => {
1159+
await page.goto('/actions/enhance');
1160+
1161+
expect(await page.textContent('pre.formdata1')).toBe(JSON.stringify(null));
1162+
expect(await page.textContent('pre.formdata2')).toBe(JSON.stringify(null));
1163+
1164+
await page.locator('input[name="username_2"]').fill('foo');
1165+
await page.locator('button.form-enctype-submit').click();
1166+
1167+
await expect(page.locator('pre.formdata1')).toHaveText(JSON.stringify({ result: 'foo' }));
1168+
await expect(page.locator('pre.formdata2')).toHaveText(JSON.stringify({ result: 'foo' }));
1169+
await expect(page.locator('input[name="username_2"]')).toHaveValue('');
1170+
});
1171+
1172+
test('use:enhance with `enctype="multipart/form"` attribute in `<form>`', async ({ page }) => {
1173+
await page.goto('/actions/enhance');
1174+
1175+
expect(await page.textContent('pre.formdata1')).toBe(JSON.stringify(null));
1176+
expect(await page.textContent('pre.formdata2')).toBe(JSON.stringify(null));
1177+
1178+
const fileInput = page.locator('input[type="file"].form-file-input');
1179+
1180+
await fileInput.setInputFiles({
1181+
name: 'test-file.txt',
1182+
mimeType: 'text/plain',
1183+
buffer: Buffer.from('this is test')
1184+
});
1185+
1186+
await page.locator('button.form-file-submit').click();
1187+
1188+
await expect(page.locator('pre.formdata1')).toHaveText(
1189+
JSON.stringify({ result: 'file name:test-file.txt' })
1190+
);
1191+
await expect(page.locator('pre.formdata2')).toHaveText(
1192+
JSON.stringify({ result: 'file name:test-file.txt' })
1193+
);
1194+
await expect(page.locator('input[name=username]')).toHaveValue('');
1195+
});
1196+
1197+
test('use:enhance with defined `enctype` attribute for `<form>` element', async ({ page }) => {
1198+
await page.goto('/actions/enhance');
1199+
1200+
expect(await page.textContent('pre.formdata1')).toBe(JSON.stringify(null));
1201+
expect(await page.textContent('pre.formdata2')).toBe(JSON.stringify(null));
1202+
1203+
await page.locator('input[name="username_2"]').fill('foo');
1204+
await page.locator('button.form-enctype-submit').click();
1205+
1206+
await expect(page.locator('pre.formdata1')).toHaveText(JSON.stringify({ result: 'foo' }));
1207+
await expect(page.locator('pre.formdata2')).toHaveText(JSON.stringify({ result: 'foo' }));
1208+
await expect(page.locator('input[name="username_2"]')).toHaveValue('');
1209+
});
1210+
11561211
test('redirect', async ({ page, javaScriptEnabled }) => {
11571212
await page.goto('/actions/redirect');
11581213

0 commit comments

Comments
 (0)