Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(156)

Side by Side Diff: third_party/WebKit/LayoutTests/resources/js-test.js

Issue 1648123004: Fix lazy test result printing. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/WebKit/LayoutTests/intersection-observer/same-document-root.html ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // js-test now supports lazily printing test results which dumps all test 1 // js-test now supports lazily printing test results which dumps all test
2 // results once at the end of the test instead of building them up. To enable 2 // results once at the end of the test instead of building them up. To enable
3 // this option, call setPrintTestResultsLazily() before running any tests. 3 // this option, call setPrintTestResultsLazily() before running any tests.
4 var _lazyTestResults; // Set by setPrintTestResultsLazily(). 4 var _lazyTestResults; // Set by setPrintTestResultsLazily().
5 var _lazyDescription; // Set by description() after setPrintTestResultsLazily().
5 6
6 // svg/dynamic-updates tests set enablePixelTesting=true, as we want to dump tex t + pixel results 7 // svg/dynamic-updates tests set enablePixelTesting=true, as we want to dump tex t + pixel results
7 if (self.testRunner) { 8 if (self.testRunner) {
8 if (self.enablePixelTesting) 9 if (self.enablePixelTesting)
9 testRunner.dumpAsTextWithPixelResults(); 10 testRunner.dumpAsTextWithPixelResults();
10 else 11 else
11 testRunner.dumpAsText(); 12 testRunner.dumpAsText();
12 } 13 }
13 14
14 var isJsTest = true; 15 var isJsTest = true;
15 16
16 var description, debug, successfullyParsed; 17 var description, debug, successfullyParsed, getOrCreateTestElement;
17 18
18 var expectingError; // set by shouldHaveError() 19 var expectingError; // set by shouldHaveError()
19 var expectedErrorMessage; // set by onerror when expectingError is true 20 var expectedErrorMessage; // set by onerror when expectingError is true
20 var unexpectedErrorMessage; // set by onerror when expectingError is not true 21 var unexpectedErrorMessage; // set by onerror when expectingError is not true
21 22
22 (function() { 23 (function() {
23 24
24 function getOrCreate(id, tagName) 25 getOrCreateTestElement = function(id, tagName)
25 { 26 {
26 var element = document.getElementById(id); 27 var element = document.getElementById(id);
27 if (element) 28 if (element)
28 return element; 29 return element;
29 30
30 element = document.createElement(tagName); 31 element = document.createElement(tagName);
31 element.id = id; 32 element.id = id;
32 var refNode; 33 var refNode;
33 var parent = document.body || document.documentElement; 34 var parent = document.body || document.documentElement;
34 if (id == "description") 35 if (id == "description")
35 refNode = getOrCreate("console", "div"); 36 refNode = getOrCreateTestElement("console", "div");
36 else 37 else
37 refNode = parent.firstChild; 38 refNode = parent.firstChild;
38 39
39 parent.insertBefore(element, refNode); 40 parent.insertBefore(element, refNode);
40 return element; 41 return element;
41 } 42 }
42 43
43 description = function description(msg, quiet) 44 description = function description(msg, quiet)
44 { 45 {
45 // For MSIE 6 compatibility 46 // For MSIE 6 compatibility
46 var span = document.createElement("span"); 47 var span = document.createElement("span");
47 if (quiet) 48 if (quiet)
48 span.innerHTML = '<p>' + msg + '</p><p>On success, you will see no " <span class="fail">FAIL</span>" messages, followed by "<span class="pass">TEST C OMPLETE</span>".</p>'; 49 span.innerHTML = '<p>' + msg + '</p><p>On success, you will see no " <span class="fail">FAIL</span>" messages, followed by "<span class="pass">TEST C OMPLETE</span>".</p>';
49 else 50 else
50 span.innerHTML = '<p>' + msg + '</p><p>On success, you will see a se ries of "<span class="pass">PASS</span>" messages, followed by "<span class="pas s">TEST COMPLETE</span>".</p>'; 51 span.innerHTML = '<p>' + msg + '</p><p>On success, you will see a se ries of "<span class="pass">PASS</span>" messages, followed by "<span class="pas s">TEST COMPLETE</span>".</p>';
51 52
52 var description = getOrCreate("description", "p"); 53 if (_lazyTestResults) {
54 _lazyDescription = span;
55 return;
56 }
57
58 var description = getOrCreateTestElement("description", "p");
53 if (description.firstChild) 59 if (description.firstChild)
54 description.replaceChild(span, description.firstChild); 60 description.replaceChild(span, description.firstChild);
55 else 61 else
56 description.appendChild(span); 62 description.appendChild(span);
57 }; 63 };
58 64
59 debug = function debug(msg) 65 debug = function debug(msg)
60 { 66 {
61 if (self._lazyTestResults) { 67 if (self._lazyTestResults) {
62 self._lazyTestResults.push(msg); 68 self._lazyTestResults.push(msg);
63 } else { 69 } else {
64 var span = document.createElement("span"); 70 var span = document.createElement("span");
65 getOrCreate("console", "div").appendChild(span); // insert it first so XHTML knows the namespace 71 // insert it first so XHTML knows the namespace;
72 getOrCreateTestElement("console", "div").appendChild(span);
66 span.innerHTML = msg + '<br />'; 73 span.innerHTML = msg + '<br />';
67 } 74 }
68 }; 75 };
69 76
70 var css = 77 var css =
71 ".pass {" + 78 ".pass {" +
72 "font-weight: bold;" + 79 "font-weight: bold;" +
73 "color: green;" + 80 "color: green;" +
74 "}" + 81 "}" +
75 ".fail {" + 82 ".fail {" +
(...skipping 728 matching lines...) Expand 10 before | Expand all | Expand 10 after
804 811
805 // It's possible for an async test to call finishJSTest() before js-test-post.js 812 // It's possible for an async test to call finishJSTest() before js-test-post.js
806 // has been parsed. 813 // has been parsed.
807 function finishJSTest() 814 function finishJSTest()
808 { 815 {
809 wasFinishJSTestCalled = true; 816 wasFinishJSTestCalled = true;
810 if (!self.wasPostTestScriptParsed) 817 if (!self.wasPostTestScriptParsed)
811 return; 818 return;
812 isSuccessfullyParsed(); 819 isSuccessfullyParsed();
813 820
821 if (self._lazyDescription)
822 getOrCreateTestElement("description", "p").appendChild(self._lazyDescripti on);
823
814 if (self._lazyTestResults && self._lazyTestResults.length > 0) { 824 if (self._lazyTestResults && self._lazyTestResults.length > 0) {
815 var consoleElement = document.getElementById("console"); 825 var consoleElement = getOrCreateTestElement("console", "div");
816 if (!consoleElement) {
817 consoleElement = document.createElement("div");
818 consoleElement.id = "console";
819 var parent = document.body || document.documentElement;
820 parent.insertBefore(consoleElement, parent.firstChild);
821 }
822 self._lazyTestResults.forEach(function(msg) { 826 self._lazyTestResults.forEach(function(msg) {
823 var span = document.createElement("span"); 827 var span = document.createElement("span");
828 consoleElement.appendChild(span);
824 span.innerHTML = msg + '<br />'; 829 span.innerHTML = msg + '<br />';
825 consoleElement.appendChild(span);
826 }); 830 });
827 } 831 }
828 832
829 if (self.jsTestIsAsync && self.testRunner) 833 if (self.jsTestIsAsync && self.testRunner)
830 testRunner.notifyDone(); 834 testRunner.notifyDone();
831 } 835 }
832 836
833 function startWorker(testScriptURL, workerType) 837 function startWorker(testScriptURL, workerType)
834 { 838 {
835 self.jsTestIsAsync = true; 839 self.jsTestIsAsync = true;
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
909 testPassed = function(msg) { 913 testPassed = function(msg) {
910 workerPort.postMessage('PASS:' + msg); 914 workerPort.postMessage('PASS:' + msg);
911 }; 915 };
912 finishJSTest = function() { 916 finishJSTest = function() {
913 workerPort.postMessage('DONE:'); 917 workerPort.postMessage('DONE:');
914 }; 918 };
915 debug = function(msg) { 919 debug = function(msg) {
916 workerPort.postMessage(msg); 920 workerPort.postMessage(msg);
917 }; 921 };
918 } 922 }
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/intersection-observer/same-document-root.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698