summaryrefslogtreecommitdiffstats
path: root/devtools/client/performance-new/test/browser/browser_devtools-onboarding.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/performance-new/test/browser/browser_devtools-onboarding.js')
-rw-r--r--devtools/client/performance-new/test/browser/browser_devtools-onboarding.js95
1 files changed, 95 insertions, 0 deletions
diff --git a/devtools/client/performance-new/test/browser/browser_devtools-onboarding.js b/devtools/client/performance-new/test/browser/browser_devtools-onboarding.js
new file mode 100644
index 0000000000..ac253b9562
--- /dev/null
+++ b/devtools/client/performance-new/test/browser/browser_devtools-onboarding.js
@@ -0,0 +1,95 @@
+/* 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/. */
+
+"use strict";
+
+const ONBOARDING_PREF = "devtools.performance.new-panel-onboarding";
+
+add_task(async function testWithOnboardingPreferenceFalse() {
+ info("Test that the onboarding message is displayed as expected.");
+
+ info("Test the onboarding message when the preference is false");
+ await SpecialPowers.pushPrefEnv({
+ set: [[ONBOARDING_PREF, false]],
+ });
+ await withDevToolsPanel(async document => {
+ {
+ // Wait for another UI element to be rendered before asserting the
+ // onboarding message.
+ await getActiveButtonFromText(document, "Start recording");
+ ok(
+ !isOnboardingDisplayed(document),
+ "Onboarding message is not displayed"
+ );
+ }
+ });
+});
+
+add_task(async function testWithOnboardingPreferenceTrue() {
+ info("Test the onboarding message when the preference is true");
+ await SpecialPowers.pushPrefEnv({
+ set: [[ONBOARDING_PREF, true]],
+ });
+
+ await withDevToolsPanel(async document => {
+ await waitUntil(
+ () => isOnboardingDisplayed(document),
+ "Waiting for the onboarding message to be displayed"
+ );
+ ok(true, "Onboarding message is displayed");
+ await closeOnboardingMessage(document);
+ });
+
+ is(
+ Services.prefs.getBoolPref(ONBOARDING_PREF),
+ false,
+ "onboarding preference should be false after closing the message"
+ );
+});
+
+add_task(async function testWithOnboardingPreferenceNotSet() {
+ info("Test the onboarding message when the preference is not set");
+ await SpecialPowers.pushPrefEnv({
+ clear: [[ONBOARDING_PREF]],
+ });
+
+ await withDevToolsPanel(async document => {
+ await waitUntil(
+ () => isOnboardingDisplayed(document),
+ "Waiting for the onboarding message to be displayed"
+ );
+ ok(true, "Onboarding message is displayed");
+ await closeOnboardingMessage(document);
+ });
+
+ is(
+ Services.prefs.getBoolPref(ONBOARDING_PREF),
+ false,
+ "onboarding preference should be false after closing the message"
+ );
+});
+
+/**
+ * Helper to close the onboarding message by clicking on the close button.
+ */
+async function closeOnboardingMessage(document) {
+ const closeButton = await getActiveButtonFromText(
+ document,
+ "Close the onboarding message"
+ );
+ info("Click the close button to hide the onboarding message.");
+ closeButton.click();
+
+ await waitUntil(
+ () => !isOnboardingDisplayed(document),
+ "Waiting for the onboarding message to disappear"
+ );
+}
+
+function isOnboardingDisplayed(document) {
+ return maybeGetElementFromDocumentByText(
+ document,
+ "Firefox Profiler is now integrated into Developer Tools"
+ );
+}