diff options
Diffstat (limited to 'toolkit/components/telemetry/tests/marionette/tests/client/test_main_tab_scalars.py')
-rw-r--r-- | toolkit/components/telemetry/tests/marionette/tests/client/test_main_tab_scalars.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/toolkit/components/telemetry/tests/marionette/tests/client/test_main_tab_scalars.py b/toolkit/components/telemetry/tests/marionette/tests/client/test_main_tab_scalars.py new file mode 100644 index 0000000000..d548d7ccc9 --- /dev/null +++ b/toolkit/components/telemetry/tests/marionette/tests/client/test_main_tab_scalars.py @@ -0,0 +1,54 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from telemetry_harness.ping_filters import MAIN_SHUTDOWN_PING +from telemetry_harness.testcase import TelemetryTestCase + + +class TestMainTabScalars(TelemetryTestCase): + """Tests for Telemetry Scalars.""" + + def test_main_tab_scalars(self): + """Test for Telemetry Scalars.""" + + with self.marionette.using_context(self.marionette.CONTEXT_CHROME): + # Bug 1829464: BrowserUsageTelemetry's telemetry collection about + # open tabs is async. We manually set the task timeout here to 0 ms + # so that it instead happens immediately after a tab opens. This + # prevents race conditions between telemetry submission and our + # test. + self.marionette.execute_script( + """ + const { BrowserUsageTelemetry } = ChromeUtils.import( + "resource:///modules/BrowserUsageTelemetry.jsm" + ); + + BrowserUsageTelemetry._onTabsOpenedTask._timeoutMs = 0; + """ + ) + + start_tab = self.marionette.current_window_handle + + tab2 = self.open_tab(focus=True) + self.marionette.switch_to_window(tab2) + + tab3 = self.open_tab(focus=True) + self.marionette.switch_to_window(tab3) + + self.marionette.close() + self.marionette.switch_to_window(tab2) + + self.marionette.close() + self.marionette.switch_to_window(start_tab) + + ping = self.wait_for_ping(self.restart_browser, MAIN_SHUTDOWN_PING) + + self.assertEqual(ping["type"], "main") + self.assertEqual(ping["clientId"], self.client_id) + + scalars = ping["payload"]["processes"]["parent"]["scalars"] + + self.assertEqual(scalars["browser.engagement.max_concurrent_tab_count"], 3) + self.assertEqual(scalars["browser.engagement.tab_open_event_count"], 2) + self.assertEqual(scalars["browser.engagement.max_concurrent_window_count"], 1) |