summaryrefslogtreecommitdiffstats
path: root/remote/test/puppeteer/test/src/input.spec.ts
diff options
context:
space:
mode:
Diffstat (limited to 'remote/test/puppeteer/test/src/input.spec.ts')
-rw-r--r--remote/test/puppeteer/test/src/input.spec.ts58
1 files changed, 43 insertions, 15 deletions
diff --git a/remote/test/puppeteer/test/src/input.spec.ts b/remote/test/puppeteer/test/src/input.spec.ts
index 7e4cae6709..47064528d3 100644
--- a/remote/test/puppeteer/test/src/input.spec.ts
+++ b/remote/test/puppeteer/test/src/input.spec.ts
@@ -17,14 +17,13 @@ const FILE_TO_UPLOAD = path.join(__dirname, '/../assets/file-to-upload.txt');
describe('input tests', function () {
setupTestBrowserHooks();
- describe('input', function () {
+ describe('ElementHandle.uploadFile', function () {
it('should upload the file', async () => {
const {page, server} = await getTestState();
await page.goto(server.PREFIX + '/input/fileupload.html');
- const filePath = path.relative(process.cwd(), FILE_TO_UPLOAD);
using input = (await page.$('input'))!;
- await page.evaluate((e: HTMLElement) => {
+ await input.evaluate(e => {
(globalThis as any)._inputEvents = [];
e.addEventListener('change', ev => {
return (globalThis as any)._inputEvents.push(ev.type);
@@ -32,34 +31,63 @@ describe('input tests', function () {
e.addEventListener('input', ev => {
return (globalThis as any)._inputEvents.push(ev.type);
});
- }, input);
- await input.uploadFile(filePath);
+ });
+
+ const file = path.relative(process.cwd(), FILE_TO_UPLOAD);
+ await input.uploadFile(file);
+
expect(
- await page.evaluate((e: HTMLInputElement) => {
- return e.files![0]!.name;
- }, input)
+ await input.evaluate(e => {
+ return e.files?.[0]?.name;
+ })
).toBe('file-to-upload.txt');
expect(
- await page.evaluate((e: HTMLInputElement) => {
- return e.files![0]!.type;
- }, input)
+ await input.evaluate(e => {
+ return e.files?.[0]?.type;
+ })
).toBe('text/plain');
expect(
await page.evaluate(() => {
return (globalThis as any)._inputEvents;
})
).toEqual(['input', 'change']);
+ });
+
+ it('should read the file', async () => {
+ const {page, server} = await getTestState();
+
+ await page.goto(server.PREFIX + '/input/fileupload.html');
+ using input = (await page.$('input'))!;
+ await input.evaluate(e => {
+ (globalThis as any)._inputEvents = [];
+ e.addEventListener('change', ev => {
+ return (globalThis as any)._inputEvents.push(ev.type);
+ });
+ e.addEventListener('input', ev => {
+ return (globalThis as any)._inputEvents.push(ev.type);
+ });
+ });
+
+ const file = path.relative(process.cwd(), FILE_TO_UPLOAD);
+ await input.uploadFile(file);
+
expect(
- await page.evaluate((e: HTMLInputElement) => {
+ await input.evaluate(e => {
+ const file = e.files?.[0];
+ if (!file) {
+ throw new Error('No file found');
+ }
+
const reader = new FileReader();
const promise = new Promise(fulfill => {
- return (reader.onload = fulfill);
+ reader.addEventListener('load', fulfill);
});
- reader.readAsText(e.files![0]!);
+ reader.readAsText(file);
+
return promise.then(() => {
return reader.result;
});
- }, input)
+ })
).toBe('contents of the file');
});
});