From bb6be58b3df8133cd45c6434b909617711a4e6f8 Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Fri, 7 Jun 2024 09:48:56 +0200 Subject: [PATCH] nits --- packages/playwright-core/src/client/elementHandle.ts | 4 ++-- packages/playwright-core/src/server/dom.ts | 6 ++++-- packages/playwright-core/src/server/webkit/wkPage.ts | 12 ++++++------ 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/packages/playwright-core/src/client/elementHandle.ts b/packages/playwright-core/src/client/elementHandle.ts index eabe3b4379..3d0ddfd7fe 100644 --- a/packages/playwright-core/src/client/elementHandle.ts +++ b/packages/playwright-core/src/client/elementHandle.ts @@ -262,8 +262,8 @@ export async function convertInputFiles(files: string | FilePayload | string[] | if (items.some(item => typeof item === 'string')) { if (!items.every(item => typeof item === 'string')) throw new Error('File paths cannot be mixed with buffers'); - const itemFileType = (await Promise.all(items.map(async item => (await fs.promises.stat(item as string)).isDirectory() ? 'directory' : 'file'))); - if (new Set(itemFileType).size > 1 || itemFileType.filter(type => type === 'directory').length > 1) + const itemFileTypes = (await Promise.all(items.map(async item => (await fs.promises.stat(item as string)).isDirectory() ? 'directory' : 'file'))); + if (new Set(itemFileTypes).size > 1 || itemFileTypes.filter(type => type === 'directory').length > 1) throw new Error('File paths must be all files or a single directory'); if (context._connection.isRemote()) { diff --git a/packages/playwright-core/src/server/dom.ts b/packages/playwright-core/src/server/dom.ts index 852beba319..469a0b48a0 100644 --- a/packages/playwright-core/src/server/dom.ts +++ b/packages/playwright-core/src/server/dom.ts @@ -647,8 +647,10 @@ export class ElementHandle extends js.JSHandle { await Promise.all(localPaths.map(localPath => ( fs.promises.access(localPath, fs.constants.F_OK) ))); - const isDirectoryUpload = localPaths.length === 1 ? (await fs.promises.stat(localPaths[0])).isDirectory() : false; - const waitForChangeEvent = isDirectoryUpload ? this.evaluateInUtility(([_, node]) => new Promise(fulfill => { + const itemFileTypes = (await Promise.all(localPaths.map(async item => (await fs.promises.stat(item as string)).isDirectory() ? 'directory' : 'file'))); + if (new Set(itemFileTypes).size > 1 || itemFileTypes.filter(type => type === 'directory').length > 1) + throw new Error('File paths must be all files or a single directory'); + const waitForChangeEvent = itemFileTypes.includes('directory') ? this.evaluateInUtility(([_, node]) => new Promise(fulfill => { node.addEventListener('change', fulfill, { once: true }); }), undefined) : Promise.resolve(); await this._page._delegate.setInputFilePaths(retargeted, localPaths); diff --git a/packages/playwright-core/src/server/webkit/wkPage.ts b/packages/playwright-core/src/server/webkit/wkPage.ts index e0326072f7..4023cce138 100644 --- a/packages/playwright-core/src/server/webkit/wkPage.ts +++ b/packages/playwright-core/src/server/webkit/wkPage.ts @@ -225,12 +225,12 @@ export class WKPage implements PageDelegate { } if (this._page.fileChooserIntercepted()) promises.push(session.send('Page.setInterceptFileChooserDialog', { enabled: true })); - promises.push(session.send('Page.overrideSetting', { setting: 'DeviceOrientationEventEnabled' as any, value: contextOptions.isMobile })); - promises.push(session.send('Page.overrideSetting', { setting: 'FullScreenEnabled' as any, value: !contextOptions.isMobile })); - promises.push(session.send('Page.overrideSetting', { setting: 'NotificationsEnabled' as any, value: !contextOptions.isMobile })); - promises.push(session.send('Page.overrideSetting', { setting: 'PointerLockEnabled' as any, value: !contextOptions.isMobile })); - promises.push(session.send('Page.overrideSetting', { setting: 'InputTypeMonthEnabled' as any, value: contextOptions.isMobile })); - promises.push(session.send('Page.overrideSetting', { setting: 'InputTypeWeekEnabled' as any, value: contextOptions.isMobile })); + promises.push(session.send('Page.overrideSetting', { setting: 'DeviceOrientationEventEnabled', value: contextOptions.isMobile })); + promises.push(session.send('Page.overrideSetting', { setting: 'FullScreenEnabled', value: !contextOptions.isMobile })); + promises.push(session.send('Page.overrideSetting', { setting: 'NotificationsEnabled', value: !contextOptions.isMobile })); + promises.push(session.send('Page.overrideSetting', { setting: 'PointerLockEnabled', value: !contextOptions.isMobile })); + promises.push(session.send('Page.overrideSetting', { setting: 'InputTypeMonthEnabled', value: contextOptions.isMobile })); + promises.push(session.send('Page.overrideSetting', { setting: 'InputTypeWeekEnabled', value: contextOptions.isMobile })); await Promise.all(promises); }