/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ // Tests that the addon commands works as they should const csscoverage = require("devtools/shared/fronts/csscoverage"); const {gDevTools} = require("devtools/client/framework/devtools"); const PAGE_1 = TEST_BASE_HTTPS + "browser_cmd_csscoverage_page1.html"; const PAGE_2 = TEST_BASE_HTTPS + "browser_cmd_csscoverage_page2.html"; const PAGE_3 = TEST_BASE_HTTPS + "browser_cmd_csscoverage_page3.html"; const SHEET_A = TEST_BASE_HTTPS + "browser_cmd_csscoverage_sheetA.css"; const SHEET_B = TEST_BASE_HTTPS + "browser_cmd_csscoverage_sheetB.css"; const SHEET_C = TEST_BASE_HTTPS + "browser_cmd_csscoverage_sheetC.css"; const SHEET_D = TEST_BASE_HTTPS + "browser_cmd_csscoverage_sheetD.css"; add_task(function* () { let options = yield helpers.openTab("about:blank"); yield helpers.openToolbar(options); let usage = yield csscoverage.getUsage(options.target); yield navigate(usage, options); yield checkPages(usage); yield checkEditorReport(usage); yield checkPageReport(usage); yield helpers.closeToolbar(options); yield helpers.closeTab(options); }); /** * Visit all the pages in the test */ function* navigate(usage, options) { yield usage.start(options.chromeWindow, options.target); ok(usage.isRunning(), "csscoverage is running"); // Load page 1. options.browser.loadURI(PAGE_1); // And wait until page 1 and page 2 (an iframe inside page 1) are both loaded. yield Promise.all([ BrowserTestUtils.browserLoaded(options.browser, false, PAGE_1), BrowserTestUtils.browserLoaded(options.browser, true, PAGE_2) ]); is(options.browser.currentURI.spec, PAGE_1, "page 1 loaded"); // page 2 has JS that navigates to page 3 after a timeout. yield BrowserTestUtils.browserLoaded(options.browser, false, PAGE_3); is(options.browser.currentURI.spec, PAGE_3, "page 3 loaded"); let toolboxReady = gDevTools.once("toolbox-ready"); yield usage.stop(); ok(!usage.isRunning(), "csscoverage not is running"); yield toolboxReady; } /** * Check the expected pages have been visited */ function* checkPages(usage) { // 'load' event order. '' is for the initial location let expectedVisited = [ "", PAGE_2, PAGE_1, PAGE_3 ]; let actualVisited = yield usage._testOnlyVisitedPages(); isEqualJson(actualVisited, expectedVisited, "Visited"); } /** * Check that createEditorReport returns the expected JSON */ function* checkEditorReport(usage) { // Page1 let expectedPage1 = { reports: [ { selectorText: ".page1-test2", start: { line: 8, column: 5 }, } ] }; let actualPage1 = yield usage.createEditorReport(PAGE_1 + " \u2192