/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ // Tests that the Console API implements the time() and timeEnd() methods. "use strict"; const TEST_URI = "http://example.com/browser/devtools/client/webconsole/" + "test/browser/test-time-methods.html"; const TEST_URI2 = "data:text/html;charset=utf-8,"; const TEST_URI3 = "data:text/html;charset=utf-8,"; const TEST_URI4 = "data:text/html;charset=utf-8," + ""; add_task(async function () { // Calling console.time('aTimer') followed by console.timeEnd('aTimer') // should result in the aTimer being ended, and a message like aTimer: 123ms // printed to the console const hud1 = await openNewTabAndConsole(TEST_URI); const aTimerCompleted = await waitFor(() => findConsoleAPIMessage(hud1, "aTimer: ") ); ok( aTimerCompleted.textContent.includes("- timer ended"), "Calling " + "console.time('a') and console.timeEnd('a')ends the 'a' timer" ); // Calling console.time('bTimer') in the current tab, opening a new tab // and calling console.timeEnd('bTimer') in the new tab should not result in // the bTimer in the initial tab being ended, but rather a warning message // output to the console: Timer "bTimer" doesn't exist const hud2 = await openNewTabAndConsole(TEST_URI2); const error1 = await waitFor(() => findWarningMessage(hud2, "bTimer", ".timeEnd") ); ok( error1, "Timers with the same name but in separate tabs do not contain " + "the same value" ); // The next tests make sure that timers with the same name but in separate // pages do not contain the same value. await navigateTo(TEST_URI3); // The new console front-end does not display a message when timers are started, // so there should not be a 'bTimer started' message on the output // We use this await to 'sync' until the message appears, as the console API // guarantees us that the smoke signal will be printed after the message for // console.time("bTimer") (if there were any) await waitFor(() => findConsoleAPIMessage(hud2, "smoke signal")); is( findConsoleAPIMessage(hud2, "bTimer started"), undefined, "No message is printed to " + "the console when the timer starts" ); await clearOutput(hud2); // Calling console.time('bTimer') on a page, then navigating to another page // and calling console.timeEnd('bTimer') on the new console front-end should // result on a warning message: 'Timer "bTimer" does not exist', // as the timers in different pages are not related await navigateTo(TEST_URI4); const error2 = await waitFor(() => findWarningMessage(hud2, "bTimer", ".timeEnd") ); ok( error2, "Timers with the same name but in separate pages do not contain " + "the same value" ); });