Speedometer 2.0: jQuery and Inferno tests don't delete all ToDo items
authorrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 19 May 2017 09:43:40 +0000 (09:43 +0000)
committerrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 19 May 2017 09:43:40 +0000 (09:43 +0000)
https://bugs.webkit.org/show_bug.cgi?id=172341

Reviewed by Antti Koivisto.

The bug was caused by the fact TodoMVC examples for jQuery and Inferno JS create a new button
to delete the todo item each time todo items are rendered.

Fixed the bug by dynamically look for .destroy using querySelector for each item.

Also moved the deletion of the iframe from the end of each test suite to the beginning of each suite.
This will make debugging the issue like this easier on InteractiveRunner.html since the iframe
will stick around after stepping the last item in the suite.

* Speedometer/InteractiveRunner.html: Tweaked the CSS to make buttons to "Step" and "Run" always visible
even if the list of suites and subtests are too long to fit in the viewport.

* Speedometer/resources/benchmark-runner.js:
(BenchmarkRunner.prototype.step):
(BenchmarkRunner.prototype._runTestAndRecordResults):

* Speedometer/resources/tests.js: Fixed the bug for jQuery and Inferno. In the case of jQuery
we also have to fix the code for checking every ToDo item as completed as well.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@217112 268f45cc-cd09-0410-ab3c-d52691b4dbfc

PerformanceTests/ChangeLog
PerformanceTests/Speedometer/InteractiveRunner.html
PerformanceTests/Speedometer/resources/benchmark-runner.js
PerformanceTests/Speedometer/resources/tests.js

index 95ad555..98c0286 100644 (file)
@@ -1,5 +1,31 @@
 2017-05-19  Ryosuke Niwa  <rniwa@webkit.org>
 
+        Speedometer 2.0: jQuery and Inferno tests don't delete all ToDo items
+        https://bugs.webkit.org/show_bug.cgi?id=172341
+
+        Reviewed by Antti Koivisto.
+
+        The bug was caused by the fact TodoMVC examples for jQuery and Inferno JS create a new button
+        to delete the todo item each time todo items are rendered.
+
+        Fixed the bug by dynamically look for .destroy using querySelector for each item.
+
+        Also moved the deletion of the iframe from the end of each test suite to the beginning of each suite.
+        This will make debugging the issue like this easier on InteractiveRunner.html since the iframe
+        will stick around after stepping the last item in the suite.
+
+        * Speedometer/InteractiveRunner.html: Tweaked the CSS to make buttons to "Step" and "Run" always visible
+        even if the list of suites and subtests are too long to fit in the viewport.
+
+        * Speedometer/resources/benchmark-runner.js:
+        (BenchmarkRunner.prototype.step):
+        (BenchmarkRunner.prototype._runTestAndRecordResults):
+
+        * Speedometer/resources/tests.js: Fixed the bug for jQuery and Inferno. In the case of jQuery
+        we also have to fix the code for checking every ToDo item as completed as well.
+
+2017-05-19  Ryosuke Niwa  <rniwa@webkit.org>
+
         Speedometer 2.0: Vanilla JS test doesn't mark all todo items as completed
         https://bugs.webkit.org/show_bug.cgi?id=172348
 
index 7e5fe2a..ff41620 100644 (file)
@@ -10,7 +10,8 @@ ol { list-style: none; margin: 0; padding: 0; }
 ol ol { margin-left: 2em; list-position: outside; }
 .running { text-decoration: underline; }
 .ran { color: grey; }
-nav { position: absolute; right: 10px; }
+nav { position: absolute; right: 10px; max-height: 600px; }
+nav > ol { height: 100%; overflow-y: scroll; }
 </style>
 </head>
 <body>
index 36c03c4..55bd570 100644 (file)
@@ -192,6 +192,7 @@ BenchmarkRunner.prototype.step = function (state) {
     }
 
     if (state.isFirstTest()) {
+        this._removeFrame();
         this._masuredValuesForCurrentSuite = {};
         var self = this;
         return state.prepareCurrentSuite(this, this._appendFrame()).then(function (prepareReturnValue) {
@@ -251,8 +252,6 @@ BenchmarkRunner.prototype._runTestAndRecordResults = function (state) {
                 self._client.didRunTest(suite, test);
 
             state.next();
-            if (state.currentSuite() != suite)
-                self._removeFrame();
             promise.resolve(state);
         });
     }, 0);
index dc59f8f..2c9d397 100644 (file)
@@ -340,14 +340,13 @@ Suites.push({
             }
         }),
         new BenchmarkTestStep('CompletingAllItems', function (newTodo, contentWindow, contentDocument) {
-            var checkboxes = contentDocument.querySelectorAll('.toggle');
+            var checkboxes = contentDocument.getElementsByClassName('toggle');
             for (var i = 0; i < checkboxes.length; i++)
                 checkboxes[i].click();
         }),
         new BenchmarkTestStep('DeletingAllItems', function (newTodo, contentWindow, contentDocument) {
-            var deleteButtons = contentDocument.querySelectorAll('.destroy');
-            for (var i = 0; i < deleteButtons.length; i++)
-                deleteButtons[i].click();
+            for (var i = 0; i < numberOfItemsToAdd; i++)
+                contentDocument.querySelector('.destroy').click();
         }),
     ]
 })
@@ -408,8 +407,8 @@ Suites.push({
         }),
         new BenchmarkTestStep('DeletingItems', function (params, contentWindow, contentDocument) {
             var deleteButtons = contentDocument.querySelectorAll('.destroy');
-            for (var i = 0; i < deleteButtons.length; i++)
-                deleteButtons[i].click();
+            for (var i = 0; i < numberOfItemsToAdd; i++)
+                contentDocument.querySelector('.destroy').click();
         }),
     ]
 });