Skip to content

Commit

Permalink
test: fix failing tests of focus/blur events of WebContents (#32711)
Browse files Browse the repository at this point in the history
  • Loading branch information
zcbenz committed Feb 2, 2022
1 parent ed185f3 commit c3d11e2
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 12 deletions.
9 changes: 9 additions & 0 deletions docs/api/web-contents.md
Expand Up @@ -516,6 +516,15 @@ Emitted when the `WebContents` loses focus.

Emitted when the `WebContents` gains focus.

Note that on macOS, having focus means the `WebContents` is the first responder
of window, so switching focus between windows would not trigger the `focus` and
`blur` events of `WebContents`, as the first responder of each window is not
changed.

The `focus` and `blur` events of `WebContents` should only be used to detect
focus change between different `WebContents` and `BrowserView` in the same
window.

#### Event: 'devtools-opened'

Emitted when DevTools is opened.
Expand Down
28 changes: 16 additions & 12 deletions spec-main/api-web-contents-spec.ts
Expand Up @@ -826,15 +826,20 @@ describe('webContents module', () => {
});
});

const moveFocusToDevTools = async (win: BrowserWindow) => {
const devToolsOpened = emittedOnce(win.webContents, 'devtools-opened');
win.webContents.openDevTools({ mode: 'right' });
await devToolsOpened;
win.webContents.devToolsWebContents!.focus();
};

describe('focus event', () => {
afterEach(closeAllWindows);

it('is triggered when web contents is focused', async () => {
const w = new BrowserWindow({ show: false });
await w.loadURL('about:blank');
const devToolsOpened = emittedOnce(w.webContents, 'devtools-opened');
w.webContents.openDevTools();
await devToolsOpened;
w.webContents.devToolsWebContents!.focus();
await moveFocusToDevTools(w);
const focusPromise = emittedOnce(w.webContents, 'focus');
w.webContents.focus();
await expect(focusPromise).to.eventually.be.fulfilled();
Expand All @@ -849,16 +854,17 @@ describe('webContents module', () => {
window2.loadURL('about:blank')
]);

const focusPromise1 = emittedOnce(window1.webContents, 'focus');
const focusPromise2 = emittedOnce(window2.webContents, 'focus');

window1.showInactive();
window2.showInactive();

let focusPromise = emittedOnce(window1.webContents, 'focus');
window1.focus();
await expect(focusPromise).to.eventually.be.fulfilled();
await expect(focusPromise1).to.eventually.be.fulfilled();

focusPromise = emittedOnce(window2.webContents, 'focus');
window2.focus();
await expect(focusPromise).to.eventually.be.fulfilled();
await expect(focusPromise2).to.eventually.be.fulfilled();
});
});

Expand All @@ -867,11 +873,9 @@ describe('webContents module', () => {
it('is triggered when web contents is blurred', async () => {
const w = new BrowserWindow({ show: true });
await w.loadURL('about:blank');
w.webContents.focus();
const blurPromise = emittedOnce(w.webContents, 'blur');
const devToolsOpened = emittedOnce(w.webContents, 'devtools-opened');
w.webContents.openDevTools({ mode: 'detach' });
await devToolsOpened;
w.webContents.devToolsWebContents!.focus();
await moveFocusToDevTools(w);
await expect(blurPromise).to.eventually.be.fulfilled();
});
});
Expand Down

0 comments on commit c3d11e2

Please sign in to comment.