From 52ff2cf9a7585ed7780fdfe596eecaf7b1b1189f Mon Sep 17 00:00:00 2001 From: Karsten Hassel Date: Sat, 10 Dec 2022 21:01:34 +0100 Subject: [PATCH 1/2] improve electron tests (avoid errors in github workflows) --- CHANGELOG.md | 1 + tests/electron/helpers/global-setup.js | 26 +++++++++++++++----------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64d1b6eaad..f12dfb5815 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -49,6 +49,7 @@ Special thanks to: @rejas, @sdetweil, @MagMar94 - Possibility to change FontAwesome class in calendar, so icons like `fab fa-facebook-square` works. - Fix cors problems with newsfeed articles (as far as possible), allow disabling cors per feed with option `useCorsProxy: false` (#2840) - Tests not waiting for the application to start and stop before starting the next test +- Fix electron tests failing sometimes in github workflow ## [2.21.0] - 2022-10-01 diff --git a/tests/electron/helpers/global-setup.js b/tests/electron/helpers/global-setup.js index a8af02932c..b234080845 100644 --- a/tests/electron/helpers/global-setup.js +++ b/tests/electron/helpers/global-setup.js @@ -2,6 +2,7 @@ // https://github.com/microsoft/playwright/issues/6347#issuecomment-1085850728 // https://www.anycodings.com/1questions/958135/can-i-set-the-date-for-playwright-browser const { _electron: electron } = require("playwright"); +const events = require("events"); exports.startApplication = async (configFilename, systemDate = null, electronParams = ["js/electron.js"]) => { global.electronApp = null; @@ -10,19 +11,22 @@ exports.startApplication = async (configFilename, systemDate = null, electronPar process.env.TZ = "GMT"; jest.retryTimes(3); global.electronApp = await electron.launch({ args: electronParams }); - expect(global.electronApp); - if ((await global.electronApp.windows().length) === 1) { - global.page = await global.electronApp.firstWindow(); - if (systemDate) { - await global.page.evaluate((systemDate) => { - Date.now = () => { - return new Date(systemDate); - }; - }, systemDate); + while (global.electronApp.windows().length < electronParams.length) await events.on(global.electronApp, "window"); + + for (const win of global.electronApp.windows()) { + const title = await win.title(); + expect(["MagicMirror²", "DevTools"]).toContain(title); + if (title === "MagicMirror²") { + global.page = win; + if (systemDate) { + await global.page.evaluate((systemDate) => { + Date.now = () => { + return new Date(systemDate); + }; + }, systemDate); + } } - expect(await global.page.title()).toBe("MagicMirror²"); - expect(await global.page.isVisible("body")).toBe(true); } }; From cb7aff78a8d572091b4e16d5b87812b1ce8885f8 Mon Sep 17 00:00:00 2001 From: Karsten Hassel Date: Mon, 12 Dec 2022 19:38:24 +0100 Subject: [PATCH 2/2] improve error handling --- tests/electron/helpers/global-setup.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/electron/helpers/global-setup.js b/tests/electron/helpers/global-setup.js index b234080845..0641947523 100644 --- a/tests/electron/helpers/global-setup.js +++ b/tests/electron/helpers/global-setup.js @@ -2,7 +2,6 @@ // https://github.com/microsoft/playwright/issues/6347#issuecomment-1085850728 // https://www.anycodings.com/1questions/958135/can-i-set-the-date-for-playwright-browser const { _electron: electron } = require("playwright"); -const events = require("events"); exports.startApplication = async (configFilename, systemDate = null, electronParams = ["js/electron.js"]) => { global.electronApp = null; @@ -12,7 +11,7 @@ exports.startApplication = async (configFilename, systemDate = null, electronPar jest.retryTimes(3); global.electronApp = await electron.launch({ args: electronParams }); - while (global.electronApp.windows().length < electronParams.length) await events.on(global.electronApp, "window"); + await global.electronApp.firstWindow(); for (const win of global.electronApp.windows()) { const title = await win.title();