From 5128ebeddb76fbbf0a9e49af720fa2d37815e893 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Wed, 16 Jul 2025 18:27:11 +0200 Subject: [PATCH] test: deflake clipboard read/write specs (#47752) --- spec/chromium-spec.ts | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/spec/chromium-spec.ts b/spec/chromium-spec.ts index a61bf2aafae7..da2d62a38ea2 100644 --- a/spec/chromium-spec.ts +++ b/spec/chromium-spec.ts @@ -3288,7 +3288,12 @@ describe('navigator.clipboard.read', () => { await w.loadFile(path.join(fixturesPath, 'pages', 'blank.html')); }); - const readClipboard: any = () => { + const readClipboard = async () => { + if (!w.webContents.isFocused()) { + const focus = once(w.webContents, 'focus'); + w.webContents.focus(); + await focus; + } return w.webContents.executeJavaScript(` navigator.clipboard.read().then(clipboard => clipboard.toString()).catch(err => err.message); `, true); @@ -3306,11 +3311,7 @@ describe('navigator.clipboard.read', () => { it('returns an error when permission denied', async () => { session.defaultSession.setPermissionRequestHandler((wc, permission, callback) => { - if (permission === 'clipboard-read') { - callback(false); - } else { - callback(true); - } + callback(permission !== 'clipboard-read'); }); const clipboard = await readClipboard(); expect(clipboard).to.contain('Read permission denied.'); @@ -3318,11 +3319,7 @@ describe('navigator.clipboard.read', () => { it('returns clipboard contents when permission is granted', async () => { session.defaultSession.setPermissionRequestHandler((wc, permission, callback) => { - if (permission === 'clipboard-read') { - callback(true); - } else { - callback(false); - } + callback(permission === 'clipboard-read'); }); const clipboard = await readClipboard(); expect(clipboard).to.not.contain('Read permission denied.'); @@ -3336,7 +3333,12 @@ describe('navigator.clipboard.write', () => { await w.loadFile(path.join(fixturesPath, 'pages', 'blank.html')); }); - const writeClipboard: any = () => { + const writeClipboard = async () => { + if (!w.webContents.isFocused()) { + const focus = once(w.webContents, 'focus'); + w.webContents.focus(); + await focus; + } return w.webContents.executeJavaScript(` navigator.clipboard.writeText('Hello World!').catch(err => err.message); `, true); @@ -3378,7 +3380,13 @@ describe('navigator.clipboard.write', () => { }); describe('paste execCommand', () => { - const readClipboard: any = (w: BrowserWindow) => { + const readClipboard = async (w: BrowserWindow) => { + if (!w.webContents.isFocused()) { + const focus = once(w.webContents, 'focus'); + w.webContents.focus(); + await focus; + } + return w.webContents.executeJavaScript(` new Promise((resolve) => { const timeout = setTimeout(() => {