From f7d5efe4be849a6a9eec369d407e2aac2f83742a Mon Sep 17 00:00:00 2001 From: Jackson Gardner Date: Fri, 14 Jun 2024 11:21:57 -0700 Subject: [PATCH 1/2] Hack to prevent Safari from being backgrounded during unit tests. --- lib/web_ui/dev/webdriver_browser.dart | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/web_ui/dev/webdriver_browser.dart b/lib/web_ui/dev/webdriver_browser.dart index 024a04580a40b..253d1244308fb 100644 --- a/lib/web_ui/dev/webdriver_browser.dart +++ b/lib/web_ui/dev/webdriver_browser.dart @@ -81,14 +81,30 @@ abstract class WebDriverBrowserEnvironment extends BrowserEnvironment { class WebDriverBrowser extends Browser { WebDriverBrowser(this._driver, this._url) { _driver.get(_url); + _activateLoopFuture = () async { + // Some browsers (i.e. Safari) stop actually executing our unit tests if + // their window is occluded or non-visible. This hacky solution of + // re-activating the window every two seconds prevents our unit tests from + // stalling out if the window becomes obscured by some other thing that + // may appear on the system. + while (!_shouldStopActivating) { + await (await _driver.window).setAsActive(); + await Future.delayed(const Duration(seconds: 2)); + } + }(); } final WebDriver _driver; final Uri _url; final Completer _onExitCompleter = Completer(); + bool _shouldStopActivating = false; + late final Future _activateLoopFuture; @override Future close() async { + _shouldStopActivating = true; + await _activateLoopFuture; + await (await _driver.window).close(); if (!_onExitCompleter.isCompleted) { _onExitCompleter.complete(); From 19145db7a6839b518b08587d54c36401317a86ec Mon Sep 17 00:00:00 2001 From: Jackson Gardner Date: Fri, 14 Jun 2024 12:17:35 -0700 Subject: [PATCH 2/2] Turn on safari unit tests for MacOS 14 as well. --- ci/builders/linux_web_engine.json | 12 ++++++------ lib/web_ui/dev/generate_builder_json.dart | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ci/builders/linux_web_engine.json b/ci/builders/linux_web_engine.json index 19b09660cf44f..79548d226fb88 100644 --- a/ci/builders/linux_web_engine.json +++ b/ci/builders/linux_web_engine.json @@ -1131,7 +1131,7 @@ "recipe": "engine_v2/tester_engine", "drone_dimensions": [ "device_type=none", - "os=Mac-13", + "os=Mac-13|Mac-14", "cpu=arm64" ], "gclient_variables": { @@ -1164,7 +1164,7 @@ "recipe": "engine_v2/tester_engine", "drone_dimensions": [ "device_type=none", - "os=Mac-13", + "os=Mac-13|Mac-14", "cpu=arm64" ], "gclient_variables": { @@ -1197,7 +1197,7 @@ "recipe": "engine_v2/tester_engine", "drone_dimensions": [ "device_type=none", - "os=Mac-13", + "os=Mac-13|Mac-14", "cpu=arm64" ], "gclient_variables": { @@ -1230,7 +1230,7 @@ "recipe": "engine_v2/tester_engine", "drone_dimensions": [ "device_type=none", - "os=Mac-13", + "os=Mac-13|Mac-14", "cpu=arm64" ], "gclient_variables": { @@ -1263,7 +1263,7 @@ "recipe": "engine_v2/tester_engine", "drone_dimensions": [ "device_type=none", - "os=Mac-13", + "os=Mac-13|Mac-14", "cpu=arm64" ], "gclient_variables": { @@ -1296,7 +1296,7 @@ "recipe": "engine_v2/tester_engine", "drone_dimensions": [ "device_type=none", - "os=Mac-13", + "os=Mac-13|Mac-14", "cpu=arm64" ], "gclient_variables": { diff --git a/lib/web_ui/dev/generate_builder_json.dart b/lib/web_ui/dev/generate_builder_json.dart index 6d9f5701a1ff2..f6252ec21d44a 100644 --- a/lib/web_ui/dev/generate_builder_json.dart +++ b/lib/web_ui/dev/generate_builder_json.dart @@ -113,7 +113,7 @@ Iterable _getAllTestSteps(List suites) { suite.runConfig.browser == BrowserName.chrome || suite.runConfig.browser == BrowserName.firefox ), - ..._getTestStepsForPlatform(suites, 'Mac', specificOS: 'Mac-13', cpu: 'arm64', (TestSuite suite) => + ..._getTestStepsForPlatform(suites, 'Mac', specificOS: 'Mac-13|Mac-14', cpu: 'arm64', (TestSuite suite) => suite.runConfig.browser == BrowserName.safari ), ..._getTestStepsForPlatform(suites, 'Windows', (TestSuite suite) =>