diff options
Diffstat (limited to '')
-rw-r--r-- | devtools/client/inspector/rules/test/browser_rules_color_scheme_simulation_bfcache.js | 103 |
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; + }); +} |