@@ -18,7 +18,8 @@ import {
18
18
setButtonsInShadowRoot ,
19
19
} from "./webdriverAccess" ;
20
20
import { config , FrameworkData , initializeFrameworks , BenchmarkOptions } from "./common" ;
21
- import { WebDriver , By , WebElement } from "selenium-webdriver" ;
21
+ import { WebDriver , By , WebElement , logging } from "selenium-webdriver" ;
22
+
22
23
import * as R from "ramda" ;
23
24
import { valid } from "semver" ;
24
25
@@ -38,7 +39,7 @@ console.log("args.framework", args.framework, !args.framework);
38
39
// necessary to launch without specifiying a path
39
40
var chromedriver : any = require ( "chromedriver" ) ;
40
41
41
- let init = `
42
+ let init = ( shadowRootName : string ) => `
42
43
window.nonKeyedDetector_reset = function() {
43
44
window.nonKeyedDetector_tradded = [];
44
45
window.nonKeyedDetector_trremoved = [];
@@ -104,16 +105,20 @@ window.nonKeyedDetector_instrument = function() {
104
105
return true;
105
106
}
106
107
window.nonKeyedDetector_result = function() {
107
- return {tradded: nonKeyedDetector_tradded.length, trremoved: nonKeyedDetector_trremoved.length, removedStoredTr: nonKeyedDetector_removedStoredTr.length, newNodes: countDiff(window.nonKeyedDetector_tradded, window.nonKeyedDetector_trremoved),
108
- traddedDebug: JSON.stringify(nonKeyedDetector_tradded.map(d => d.innerHTML))};
108
+ return {tradded: nonKeyedDetector_tradded.length, trremoved: nonKeyedDetector_trremoved.length, removedStoredTr: nonKeyedDetector_trremoved.indexOf(window.storedTr)>-1, newNodes: countDiff(window.nonKeyedDetector_tradded, window.nonKeyedDetector_trremoved),
109
+ // storedTr_debug: window.storedTr.innerText, trremoved_debug: nonKeyedDetector_trremoved.map(t => t.innerText).join(","),
110
+ // traddedDebug: JSON.stringify(nonKeyedDetector_tradded.map(d => d.innerHTML))
111
+ };
109
112
}
110
113
window.nonKeyedDetector_storeTr = function() {
111
114
let node = document;
112
115
if (window.nonKeyedDetector_shadowRoot) {
113
- let main = document.querySelector("main-element" );
116
+ let main = document.querySelector(' ${ shadowRootName } ' );
114
117
if (main) node = main.shadowRoot;
115
118
}
116
- window.storedTr = node.querySelector('tr:nth-child(2)');
119
+ // Workaround: alpine adds a template with a tr inside the tbody. tr:nth-child(1) seems to be the tr from the template and returns null here.
120
+ let index = node.querySelector('tr:nth-child(1)') ? 2 : 3;
121
+ window.storedTr = node.querySelector('tr:nth-child('+index+')');
117
122
}
118
123
window.nonKeyedDetector_reset();
119
124
` ;
@@ -132,9 +137,9 @@ function isKeyedRun(result: any, shouldBeKeyed: boolean): boolean {
132
137
return r ;
133
138
}
134
139
function isKeyedRemove ( result : any , shouldBeKeyed : boolean ) : boolean {
135
- let r = result . removedStoredTr > 0 ;
140
+ let r = result . removedStoredTr ;
136
141
if ( r && ! shouldBeKeyed ) {
137
- console . log ( `Non-keyed test for remove failed . Expected that the dom node for the 2nd row would NOT be removed, but it was.` ) ;
142
+ console . log ( `Note: Non-keyed test for remove is acutally keyed . Expected that the dom node for the 2nd row would NOT be removed, but it was.` ) ;
138
143
} else if ( ! r && shouldBeKeyed ) {
139
144
console . log ( `Keyed test for remove failed. Expected that the dom node for the 2nd row would be removed, but it wasn't` ) ;
140
145
}
@@ -268,7 +273,7 @@ async function runBench(frameworkNames: string[]) {
268
273
allCorrect = false ;
269
274
}
270
275
271
- await driver . executeScript ( init ) ;
276
+ await driver . executeScript ( init ( framework . shadowRootName ) ) ;
272
277
if ( framework . useShadowRoot ) {
273
278
await driver . executeScript ( `window.nonKeyedDetector_setUseShadowDom("${ framework . shadowRootName } ");` ) ;
274
279
} else {
0 commit comments