diff --git a/test/electron/devpanel.spec.js b/test/electron/devpanel.spec.js index 14a9b635..aec500d9 100644 --- a/test/electron/devpanel.spec.js +++ b/test/electron/devpanel.spec.js @@ -22,6 +22,7 @@ describe('DevTools panel for Electron', function() { }) .forBrowser('electron') .build(); + await this.driver.manage().timeouts().setScriptTimeout(10000); }); after(async () => { @@ -34,11 +35,23 @@ describe('DevTools panel for Electron', function() { await this.driver.manage().timeouts().pageLoadTimeout(5000); - const id = await this.driver.executeScript(function() { - const tabs = WebInspector.inspectorView._tabbedPane._tabs; - const lastPanelId = tabs[tabs.length - 1].id; - WebInspector.inspectorView.showPanel(lastPanelId); - return lastPanelId; + const id = await this.driver.executeAsyncScript(function(callback) { + let attempts = 5; + function showReduxPanel() { + if (attempts === 0) { + return callback('Redux panel not found'); + } + const tabs = WebInspector.inspectorView._tabbedPane._tabs; + const idList = tabs.map(tab => tab.id); + const reduxPanelId = 'chrome-extension://redux-devtoolsRedux'; + if (idList.indexOf(reduxPanelId) !== -1) { + WebInspector.inspectorView.showPanel(reduxPanelId); + return callback(reduxPanelId); + } + attempts--; + setTimeout(showReduxPanel, 500); + } + showReduxPanel(); }); expect(id).toBe('chrome-extension://redux-devtoolsRedux');