| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 function createTestSuite(domAutomationController) | 40 function createTestSuite(domAutomationController) |
| 41 { | 41 { |
| 42 | 42 |
| 43 /** | 43 /** |
| 44 * Test suite for interactive UI tests. | 44 * Test suite for interactive UI tests. |
| 45 * @constructor | 45 * @constructor |
| 46 */ | 46 */ |
| 47 function TestSuite() | 47 function TestSuite() |
| 48 { | 48 { |
| 49 WebInspector.TestBase.call(this, domAutomationController); | 49 WebInspector.TestBase.call(this, domAutomationController); |
| 50 this._asyncInvocationId = 0; |
| 50 }; | 51 }; |
| 51 | 52 |
| 52 TestSuite.prototype = { | 53 TestSuite.prototype = { |
| 53 __proto__: WebInspector.TestBase.prototype | 54 __proto__: WebInspector.TestBase.prototype |
| 54 }; | 55 }; |
| 55 | 56 |
| 56 | 57 |
| 57 /** | 58 /** |
| 58 * @param {string} panelName Name of the panel to show. | 59 * @param {string} panelName Name of the panel to show. |
| 59 */ | 60 */ |
| (...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 644 if (text === "PASS") | 645 if (text === "PASS") |
| 645 this.releaseControl(); | 646 this.releaseControl(); |
| 646 else if (/^FAIL/.test(text)) | 647 else if (/^FAIL/.test(text)) |
| 647 this.fail(text); | 648 this.fail(text); |
| 648 } | 649 } |
| 649 | 650 |
| 650 WebInspector.multitargetConsoleModel.addEventListener(WebInspector.ConsoleMo
del.Events.MessageAdded, onConsoleMessage, this); | 651 WebInspector.multitargetConsoleModel.addEventListener(WebInspector.ConsoleMo
del.Events.MessageAdded, onConsoleMessage, this); |
| 651 this.takeControl(); | 652 this.takeControl(); |
| 652 }; | 653 }; |
| 653 | 654 |
| 654 TestSuite.prototype.invokeAsyncWithTimeline_ = function(functionName, callback) | 655 TestSuite.prototype.startTimeline = function(callback) |
| 655 { | 656 { |
| 656 var test = this; | 657 this.showPanel("timeline").then(function() { |
| 657 test.showPanel("timeline").then(function() { | |
| 658 WebInspector.panels.timeline._model.addEventListener(WebInspector.Timeli
neModel.Events.RecordingStarted, onRecordingStarted); | 658 WebInspector.panels.timeline._model.addEventListener(WebInspector.Timeli
neModel.Events.RecordingStarted, onRecordingStarted); |
| 659 WebInspector.panels.timeline._toggleRecording(); | 659 WebInspector.panels.timeline._toggleRecording(); |
| 660 }); | 660 }); |
| 661 | 661 |
| 662 function onRecordingStarted() | 662 function onRecordingStarted() |
| 663 { | 663 { |
| 664 WebInspector.panels.timeline._model.removeEventListener(WebInspector.Tim
elineModel.Events.RecordingStarted, onRecordingStarted); | 664 WebInspector.panels.timeline._model.removeEventListener(WebInspector.Tim
elineModel.Events.RecordingStarted, onRecordingStarted); |
| 665 test.evaluateInConsole_(functionName + "(function() { console.log('DONE'
); });", function() {}); | 665 callback(); |
| 666 WebInspector.multitargetConsoleModel.addEventListener(WebInspector.Conso
leModel.Events.MessageAdded, onConsoleMessage); | |
| 667 } | 666 } |
| 667 } |
| 668 | 668 |
| 669 function onConsoleMessage(event) | 669 TestSuite.prototype.stopTimeline = function(callback) |
| 670 { | 670 { |
| 671 var text = event.data.messageText; | 671 WebInspector.panels.timeline._model.addEventListener(WebInspector.TimelineMo
del.Events.RecordingStopped, onRecordingStopped); |
| 672 if (text === "DONE") { | 672 WebInspector.panels.timeline._toggleRecording(); |
| 673 WebInspector.multitargetConsoleModel.removeEventListener(WebInspecto
r.ConsoleModel.Events.MessageAdded, onConsoleMessage); | |
| 674 pageActionsDone(); | |
| 675 } | |
| 676 } | |
| 677 | |
| 678 function pageActionsDone() | |
| 679 { | |
| 680 WebInspector.panels.timeline._model.addEventListener(WebInspector.Timeli
neModel.Events.RecordingStopped, onRecordingStopped); | |
| 681 WebInspector.panels.timeline._toggleRecording(); | |
| 682 } | |
| 683 | |
| 684 function onRecordingStopped() | 673 function onRecordingStopped() |
| 685 { | 674 { |
| 686 WebInspector.panels.timeline._model.removeEventListener(WebInspector.Tim
elineModel.Events.RecordingStopped, onRecordingStopped); | 675 WebInspector.panels.timeline._model.removeEventListener(WebInspector.Tim
elineModel.Events.RecordingStopped, onRecordingStopped); |
| 687 callback(); | 676 callback(); |
| 688 } | 677 } |
| 678 } |
| 679 |
| 680 TestSuite.prototype.invokePageFunctionAsync = function(functionName, opt_args, c
allback_is_always_last) |
| 681 { |
| 682 var callback = arguments[arguments.length - 1]; |
| 683 var doneMessage = `DONE: ${functionName}.${++this._asyncInvocationId}`; |
| 684 var argsString = arguments.length < 3 ? "" : Array.prototype.slice.call(argu
ments, 1, -1).map(arg => JSON.stringify(arg)).join(",") + ","; |
| 685 this.evaluateInConsole_(`${functionName}(${argsString} function() { console.
log('${doneMessage}'); });`, function() {}); |
| 686 WebInspector.multitargetConsoleModel.addEventListener(WebInspector.ConsoleMo
del.Events.MessageAdded, onConsoleMessage); |
| 687 |
| 688 function onConsoleMessage(event) |
| 689 { |
| 690 var text = event.data.messageText; |
| 691 if (text === doneMessage) { |
| 692 WebInspector.multitargetConsoleModel.removeEventListener(WebInspecto
r.ConsoleModel.Events.MessageAdded, onConsoleMessage); |
| 693 callback(); |
| 694 } |
| 695 } |
| 696 } |
| 697 |
| 698 TestSuite.prototype.invokeAsyncWithTimeline_ = function(functionName, callback) |
| 699 { |
| 700 var test = this; |
| 701 |
| 702 this.startTimeline(onRecordingStarted); |
| 703 |
| 704 function onRecordingStarted() |
| 705 { |
| 706 test.invokePageFunctionAsync(functionName, pageActionsDone); |
| 707 } |
| 708 |
| 709 function pageActionsDone() |
| 710 { |
| 711 test.stopTimeline(callback); |
| 712 } |
| 689 }; | 713 }; |
| 690 | 714 |
| 715 TestSuite.prototype.enableExperiment = function(name) |
| 716 { |
| 717 Runtime.experiments.enableForTest(name); |
| 718 } |
| 719 |
| 720 TestSuite.prototype.checkInputEventsPresent = function() |
| 721 { |
| 722 var expectedEvents = new Set(arguments); |
| 723 var model = WebInspector.panels.timeline._model; |
| 724 var asyncEvents = model.mainThreadAsyncEvents(); |
| 725 var input = asyncEvents.get(WebInspector.TimelineUIUtils.asyncEventGroups().
input) || []; |
| 726 var prefix = "InputLatency::"; |
| 727 for (var e of input) { |
| 728 if (!e.name.startsWith(prefix)) |
| 729 continue; |
| 730 expectedEvents.delete(e.name.substr(prefix.length)); |
| 731 } |
| 732 if (expectedEvents.size) |
| 733 throw "Some expected events are not found: " + Array.from(expectedEvents
.keys()).join(","); |
| 734 } |
| 735 |
| 691 /** | 736 /** |
| 692 * Serializes array of uiSourceCodes to string. | 737 * Serializes array of uiSourceCodes to string. |
| 693 * @param {!Array.<!WebInspectorUISourceCode>} uiSourceCodes | 738 * @param {!Array.<!WebInspectorUISourceCode>} uiSourceCodes |
| 694 * @return {string} | 739 * @return {string} |
| 695 */ | 740 */ |
| 696 TestSuite.prototype.uiSourceCodesToString_ = function(uiSourceCodes) | 741 TestSuite.prototype.uiSourceCodesToString_ = function(uiSourceCodes) |
| 697 { | 742 { |
| 698 var names = []; | 743 var names = []; |
| 699 for (var i = 0; i < uiSourceCodes.length; i++) | 744 for (var i = 0; i < uiSourceCodes.length; i++) |
| 700 names.push('"' + WebInspector.networkMapping.networkURL(uiSourceCodes[i]
) + '"'); | 745 names.push('"' + WebInspector.networkMapping.networkURL(uiSourceCodes[i]
) + '"'); |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 833 }; | 878 }; |
| 834 | 879 |
| 835 return new TestSuite(); | 880 return new TestSuite(); |
| 836 | 881 |
| 837 } | 882 } |
| 838 | 883 |
| 839 if (window.uiTests) { | 884 if (window.uiTests) { |
| 840 WebInspector.notifications.addEventListener(WebInspector.NotificationService
.Events.InspectorAgentEnabledForTests, | 885 WebInspector.notifications.addEventListener(WebInspector.NotificationService
.Events.InspectorAgentEnabledForTests, |
| 841 window.uiTests.testSuiteReady.bind(null, createTestSuite)); | 886 window.uiTests.testSuiteReady.bind(null, createTestSuite)); |
| 842 } | 887 } |
| OLD | NEW |