| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../http/tests/inspector/resources/inspector-test.js"></script> |
| <script> |
| function sleepTick() { |
| let now = performance.now(); |
| let until = now + 10; |
| while (performance.now() < until); |
| } |
| |
| function test() |
| { |
| let suite = InspectorTest.createAsyncSuite("console.time"); |
| |
| suite.addTestCase({ |
| name: "console.time.DefaultLabel", |
| description: "Test that default label works as expected.", |
| test(resolve, reject) { |
| let seen = 0; |
| const expected = 6; |
| WI.consoleManager.addEventListener(WI.ConsoleManager.Event.MessageAdded, handler); |
| function handler(event) { |
| let message = event.data.message; |
| InspectorTest.expectThat(message.type === WI.ConsoleMessage.MessageType.Timing, "Should receive a Timing type message."); |
| InspectorTest.expectThat(message.messageText.includes("default"), "Message should contain the 'default' label name somewhere."); |
| if (++seen === expected) { |
| WI.consoleManager.removeEventListener(WI.ConsoleManager.Event.MessageAdded, handler); |
| resolve(); |
| } |
| } |
| |
| InspectorTest.evaluateInPage(`console.time()`); |
| InspectorTest.evaluateInPage(`console.timeLog()`); |
| InspectorTest.evaluateInPage(`console.timeEnd()`); |
| |
| InspectorTest.evaluateInPage(`console.time(undefined)`); |
| InspectorTest.evaluateInPage(`console.timeLog('default')`); |
| InspectorTest.evaluateInPage(`console.timeEnd('default')`); |
| |
| InspectorTest.evaluateInPage(`console.time('default')`); |
| InspectorTest.evaluateInPage(`console.timeLog(undefined)`); |
| InspectorTest.evaluateInPage(`console.timeEnd(undefined)`); |
| } |
| }); |
| |
| suite.addTestCase({ |
| name: "console.time.UserLabels", |
| description: "Test that user labels works as expected.", |
| test(resolve, reject) { |
| let seen = 0; |
| const expected = 2; |
| WI.consoleManager.addEventListener(WI.ConsoleManager.Event.MessageAdded, handler); |
| function handler(event) { |
| let message = event.data.message; |
| InspectorTest.expectThat(message.type === WI.ConsoleMessage.MessageType.Timing, "Should receive a Timing type message."); |
| InspectorTest.expectThat(message.messageText.includes("my-label"), "Message should contain the 'my-label' label name somewhere."); |
| if (++seen === expected) { |
| WI.consoleManager.removeEventListener(WI.ConsoleManager.Event.MessageAdded, handler); |
| resolve(); |
| } |
| } |
| |
| InspectorTest.evaluateInPage(`console.time('my-label')`); |
| InspectorTest.evaluateInPage(`console.timeLog('my-label')`); |
| InspectorTest.evaluateInPage(`console.timeEnd('my-label')`); |
| } |
| }); |
| |
| suite.addTestCase({ |
| name: "console.time.MultipleTimers", |
| description: "Test that multiple timers running at the same time work as expected.", |
| test(resolve, reject) { |
| let seen = 0; |
| const expected = 2; |
| WI.consoleManager.addEventListener(WI.ConsoleManager.Event.MessageAdded, handler); |
| function handler(event) { |
| let message = event.data.message; |
| let expectedLabel = seen === 0 ? "my-label-2" : "my-label-1"; |
| InspectorTest.expectThat(message.type === WI.ConsoleMessage.MessageType.Timing, "Should receive a Timing type message."); |
| InspectorTest.expectThat(message.messageText.includes(expectedLabel), "Message should contain the '" + expectedLabel + "' label name somewhere."); |
| if (++seen === expected) { |
| WI.consoleManager.removeEventListener(WI.ConsoleManager.Event.MessageAdded, handler); |
| resolve(); |
| } |
| } |
| |
| InspectorTest.evaluateInPage(`console.time('my-label-1')`); |
| InspectorTest.evaluateInPage(`console.time('my-label-2')`); |
| InspectorTest.evaluateInPage(`console.timeEnd('my-label-2')`); |
| InspectorTest.evaluateInPage(`console.timeEnd('my-label-1')`); |
| } |
| }); |
| |
| suite.addTestCase({ |
| name: "console.time.WarnWhenExisting", |
| description: "Test for a warning when trying to start an already started timer.", |
| test(resolve, reject) { |
| WI.consoleManager.addEventListener(WI.ConsoleManager.Event.MessageAdded, handler); |
| function handler(event) { |
| let message = event.data.message; |
| if (message.level === WI.ConsoleMessage.MessageLevel.Warning) { |
| InspectorTest.expectThat(message.type === WI.ConsoleMessage.MessageType.Timing, "Should receive a Timing type message."); |
| InspectorTest.pass("Should receive a Warning level message"); |
| InspectorTest.expectThat(message.messageText.includes("default"), "Message should contain the 'default' label name somewhere."); |
| return; |
| } |
| if (message.type === WI.ConsoleMessage.MessageType.Timing) { |
| WI.consoleManager.removeEventListener(WI.ConsoleManager.Event.MessageAdded, handler); |
| resolve(); |
| } |
| } |
| |
| InspectorTest.evaluateInPage(`console.time()`); |
| InspectorTest.evaluateInPage(`console.time()`); // Warning |
| InspectorTest.evaluateInPage(`console.timeEnd()`); |
| } |
| }); |
| |
| suite.addTestCase({ |
| name: "console.time.WarnWhenNotExisting", |
| description: "Test for a warning when trying to start an already started timer.", |
| test(resolve, reject) { |
| let seen = 0; |
| const expected = 2; |
| WI.consoleManager.addEventListener(WI.ConsoleManager.Event.MessageAdded, handler); |
| function handler(event) { |
| let message = event.data.message; |
| if (message.type === WI.ConsoleMessage.MessageType.Clear) |
| return; |
| |
| InspectorTest.expectThat(message.type === WI.ConsoleMessage.MessageType.Timing, "Should receive a Timing type message."); |
| InspectorTest.expectThat(message.level === WI.ConsoleMessage.MessageLevel.Warning, "Should receive a Warning level message."); |
| InspectorTest.expectThat(message.messageText.includes("default"), "Message should contain the 'default' label name somewhere."); |
| if (++seen === expected) { |
| WI.consoleManager.removeEventListener(WI.ConsoleManager.Event.MessageAdded, handler); |
| resolve(); |
| } |
| } |
| |
| InspectorTest.evaluateInPage(`console.timeLog()`); // Warn |
| InspectorTest.evaluateInPage(`console.clear()`); |
| InspectorTest.evaluateInPage(`console.timeEnd()`); // Warn |
| } |
| }); |
| |
| suite.addTestCase({ |
| name: "console.time.TimeLogIncreasing", |
| description: "Test for timeLog multiple times with a timer should increase.", |
| test(resolve, reject) { |
| let lastTime = 0; |
| let seen = 0; |
| const expected = 4; |
| WI.consoleManager.addEventListener(WI.ConsoleManager.Event.MessageAdded, handler); |
| function handler(event) { |
| let message = event.data.message; |
| InspectorTest.expectThat(message.type === WI.ConsoleMessage.MessageType.Timing, "Should receive a Timing type message."); |
| InspectorTest.expectThat(message.messageText.includes("my-timelog-label"), "Message should contain the 'my-timelog-label' label name somewhere."); |
| |
| let match = message.messageText.match(/^my-timelog-label: (\d+(\.\d+)?ms)/) |
| if (match) { |
| let currentTime = parseFloat(match[1]); |
| if (lastTime) { |
| InspectorTest.assert(currentTime > 15, "At least 15 milliseconds should have elapsed since this is for timeLog 2 and later."); |
| InspectorTest.expectGreaterThan(currentTime, lastTime, "+ Timer time should be increasing."); |
| } else |
| InspectorTest.pass("+ Initial timer time seen."); |
| lastTime = currentTime; |
| } |
| |
| if (++seen === expected) { |
| WI.consoleManager.removeEventListener(WI.ConsoleManager.Event.MessageAdded, handler); |
| resolve(); |
| } |
| } |
| |
| InspectorTest.evaluateInPage(`console.time("my-timelog-label")`); |
| InspectorTest.evaluateInPage(`sleepTick(); console.timeLog("my-timelog-label")`); |
| InspectorTest.evaluateInPage(`sleepTick(); console.timeLog("my-timelog-label")`); |
| InspectorTest.evaluateInPage(`sleepTick(); console.timeLog("my-timelog-label")`); |
| InspectorTest.evaluateInPage(`sleepTick(); console.timeEnd("my-timelog-label")`); |
| } |
| }); |
| |
| suite.addTestCase({ |
| name: "console.time.TimeLogArguments", |
| description: "Test for timeLog with trailing parameters.", |
| test(resolve, reject) { |
| let seen = 0; |
| const expected = 4; |
| WI.consoleManager.addEventListener(WI.ConsoleManager.Event.MessageAdded, handler); |
| function handler(event) { |
| let message = event.data.message; |
| InspectorTest.expectThat(message.type === WI.ConsoleMessage.MessageType.Timing, "Should receive a Timing type message."); |
| |
| switch (seen) { |
| case 0: |
| InspectorTest.expectEqual(message.parameters, undefined, "timeLog should contain no parameters"); |
| break; |
| case 1: |
| InspectorTest.expectEqual(message.parameters.length, 1, "timeLog should contain 1 parameters"); |
| break; |
| case 2: |
| InspectorTest.expectEqual(message.parameters.length, 2, "timeLog should contain 2 parameters"); |
| break; |
| case 3: |
| InspectorTest.expectEqual(message.parameters, undefined, "timeEnd should contain no parameters"); |
| break; |
| } |
| |
| if (++seen === expected) { |
| WI.consoleManager.removeEventListener(WI.ConsoleManager.Event.MessageAdded, handler); |
| resolve(); |
| } |
| } |
| |
| InspectorTest.evaluateInPage(`console.time("x")`); |
| InspectorTest.evaluateInPage(`console.timeLog("x")`); |
| InspectorTest.evaluateInPage(`console.timeLog("x", 1)`); |
| InspectorTest.evaluateInPage(`console.timeLog("x", 2, window)`); |
| InspectorTest.evaluateInPage(`console.timeEnd("x")`); |
| } |
| }); |
| |
| suite.runTestCasesAndFinish(); |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p>Tests for the console.time, console.timeLog, and console.timeEnd APIs.</p> |
| </body> |
| </html> |