summaryrefslogtreecommitdiffstats
path: root/devtools/client/inspector/rules/test/browser_rules_color_scheme_simulation_bfcache.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--devtools/client/inspector/rules/test/browser_rules_color_scheme_simulation_bfcache.js103
1 files changed, 103 insertions, 0 deletions
diff --git a/devtools/client/inspector/rules/test/browser_rules_color_scheme_simulation_bfcache.js b/devtools/client/inspector/rules/test/browser_rules_color_scheme_simulation_bfcache.js
new file mode 100644
index 0000000000..c4995a3cb3
--- /dev/null
+++ b/devtools/client/inspector/rules/test/browser_rules_color_scheme_simulation_bfcache.js
@@ -0,0 +1,103 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// Test color scheme simulation.
+const TEST_URI = URL_ROOT_SSL + "doc_media_queries.html";
+
+add_task(async function testBfCacheNavigationWithDevTools() {
+ await addTab(TEST_URI);
+ const { inspector, toolbox } = await openRuleView();
+
+ is(await isSimulationEnabled(), false, "color scheme simulation is disabled");
+
+ const darkButton = inspector.panelDoc.querySelector(
+ "#color-scheme-simulation-dark-toggle"
+ );
+ ok(darkButton, "The dark color scheme simulation button exists");
+
+ info("Click on the dark button");
+ darkButton.click();
+ await waitFor(async () => isSimulationEnabled());
+ is(await isSimulationEnabled(), true, "color scheme simulation is enabled");
+
+ info("Navigate to a different URL and disable the color simulation");
+ await navigateTo(TEST_URI + "?someparameter");
+ darkButton.click();
+ await waitFor(async () => !(await isSimulationEnabled()));
+ is(await isSimulationEnabled(), false, "color scheme simulation is disabled");
+
+ info(
+ "Perform a bfcache navigation and check that the simulation is still disabled"
+ );
+ const waitForDevToolsReload = await watchForDevToolsReload(
+ gBrowser.selectedBrowser
+ );
+ gBrowser.goBack();
+ await waitForDevToolsReload();
+ is(await isSimulationEnabled(), false, "color scheme simulation is disabled");
+
+ await toolbox.destroy();
+});
+
+add_task(async function testBfCacheNavigationAfterClosingDevTools() {
+ await addTab(TEST_URI);
+ const { inspector, toolbox } = await openRuleView();
+
+ is(await isSimulationEnabled(), false, "color scheme simulation is disabled");
+
+ const darkButton = inspector.panelDoc.querySelector(
+ "#color-scheme-simulation-dark-toggle"
+ );
+ ok(darkButton, "The dark color scheme simulation button exists");
+
+ info("Click on the dark button");
+ darkButton.click();
+ await waitFor(async () => isSimulationEnabled());
+ is(await isSimulationEnabled(), true, "color scheme simulation is enabled");
+
+ // Wait for the iframe target to be processed before destroying the toolbox,
+ // to avoid unhandled promise rejections.
+ // The iframe URL starts with https://example.org/document-builder.sjs
+ let onIframeProcessed;
+
+ // Do not wait for the additional target in the noeft-nofis flavor.
+ const isNoEFTNoFis = !isFissionEnabled() && !isEveryFrameTargetEnabled();
+ if (!isNoEFTNoFis) {
+ const iframeURL = "https://example.org/document-builder.sjs";
+ onIframeProcessed = waitForTargetProcessed(toolbox.commands, targetFront =>
+ targetFront.url.startsWith(iframeURL)
+ );
+ }
+
+ info("Navigate to a different URL");
+ await navigateTo(TEST_URI + "?someparameter");
+
+ info("Wait for the iframe target to be processed by target-command");
+ await onIframeProcessed;
+
+ info("Close DevTools to disable the simulation");
+ await toolbox.destroy();
+ await waitFor(async () => !(await isSimulationEnabled()));
+ is(await isSimulationEnabled(), false, "color scheme simulation is disabled");
+
+ info(
+ "Perform a bfcache navigation and check that the simulation is still disabled"
+ );
+ const awaitPageShow = BrowserTestUtils.waitForContentEvent(
+ gBrowser.selectedBrowser,
+ "pageshow"
+ );
+ gBrowser.goBack();
+ await awaitPageShow;
+
+ is(await isSimulationEnabled(), false, "color scheme simulation is disabled");
+});
+
+function isSimulationEnabled() {
+ return SpecialPowers.spawn(gBrowser.selectedBrowser, [], () => {
+ const { matches } = content.matchMedia("(prefers-color-scheme: dark)");
+ return matches;
+ });
+}