diff options
Diffstat (limited to 'devtools/client/jsonview/test/browser_jsonview_serviceworker.js')
-rw-r--r-- | devtools/client/jsonview/test/browser_jsonview_serviceworker.js | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/devtools/client/jsonview/test/browser_jsonview_serviceworker.js b/devtools/client/jsonview/test/browser_jsonview_serviceworker.js new file mode 100644 index 0000000000..37c407ecd4 --- /dev/null +++ b/devtools/client/jsonview/test/browser_jsonview_serviceworker.js @@ -0,0 +1,89 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +const TEST_JSON_URL = URL_ROOT_SSL + "valid_json.json"; +const EMPTY_PAGE = URL_ROOT_SSL + "empty.html"; +const SW = URL_ROOT_SSL + "passthrough-sw.js"; + +add_task(async function () { + info("Test valid JSON with service worker started"); + + await SpecialPowers.pushPrefEnv({ + set: [ + ["dom.serviceWorkers.exemptFromPerDomainMax", true], + ["dom.serviceWorkers.enabled", true], + ["dom.serviceWorkers.testing.enabled", true], + ], + }); + + const swTab = BrowserTestUtils.addTab(gBrowser, EMPTY_PAGE); + const browser = gBrowser.getBrowserForTab(swTab); + await BrowserTestUtils.browserLoaded(browser); + await SpecialPowers.spawn( + browser, + [{ script: SW, scope: TEST_JSON_URL }], + async opts => { + const reg = await content.navigator.serviceWorker.register(opts.script, { + scope: opts.scope, + }); + return new content.window.Promise(resolve => { + const worker = reg.installing; + if (worker.state === "activated") { + resolve(); + return; + } + worker.addEventListener("statechange", evt => { + if (worker.state === "activated") { + resolve(); + } + }); + }); + } + ); + + const tab = await addJsonViewTab(TEST_JSON_URL); + + ok( + tab.linkedBrowser.contentPrincipal.isNullPrincipal, + "Should have null principal" + ); + + is(await countRows(), 3, "There must be three rows"); + + const objectCellCount = await getElementCount( + ".jsonPanelBox .treeTable .objectCell" + ); + is(objectCellCount, 1, "There must be one object cell"); + + const objectCellText = await getElementText( + ".jsonPanelBox .treeTable .objectCell" + ); + is(objectCellText, "", "The summary is hidden when object is expanded"); + + // Clicking the value does not collapse it (so that it can be selected and copied). + await clickJsonNode(".jsonPanelBox .treeTable .treeValueCell"); + is(await countRows(), 3, "There must still be three rows"); + + // Clicking the label collapses the auto-expanded node. + await clickJsonNode(".jsonPanelBox .treeTable .treeLabel"); + is(await countRows(), 1, "There must be one row"); + + await SpecialPowers.spawn( + browser, + [{ script: SW, scope: TEST_JSON_URL }], + async opts => { + const reg = await content.navigator.serviceWorker.getRegistration( + opts.scope + ); + await reg.unregister(); + } + ); + + BrowserTestUtils.removeTab(swTab); +}); + +function countRows() { + return getElementCount(".jsonPanelBox .treeTable .treeRow"); +} |