@@ -18,7 +18,8 @@ import {
1818 setButtonsInShadowRoot ,
1919} from "./webdriverAccess" ;
2020import { config , FrameworkData , initializeFrameworks , BenchmarkOptions } from "./common" ;
21- import { WebDriver , By , WebElement } from "selenium-webdriver" ;
21+ import { WebDriver , By , WebElement , logging } from "selenium-webdriver" ;
22+
2223import * as R from "ramda" ;
2324import { valid } from "semver" ;
2425
@@ -38,7 +39,7 @@ console.log("args.framework", args.framework, !args.framework);
3839// necessary to launch without specifiying a path
3940var chromedriver : any = require ( "chromedriver" ) ;
4041
41- let init = `
42+ let init = ( shadowRootName : string ) => `
4243window.nonKeyedDetector_reset = function() {
4344 window.nonKeyedDetector_tradded = [];
4445 window.nonKeyedDetector_trremoved = [];
@@ -104,16 +105,20 @@ window.nonKeyedDetector_instrument = function() {
104105 return true;
105106}
106107window.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+ };
109112}
110113window.nonKeyedDetector_storeTr = function() {
111114 let node = document;
112115 if (window.nonKeyedDetector_shadowRoot) {
113- let main = document.querySelector("main-element" );
116+ let main = document.querySelector(' ${ shadowRootName } ' );
114117 if (main) node = main.shadowRoot;
115118 }
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+')');
117122}
118123window.nonKeyedDetector_reset();
119124` ;
@@ -132,9 +137,9 @@ function isKeyedRun(result: any, shouldBeKeyed: boolean): boolean {
132137 return r ;
133138}
134139function isKeyedRemove ( result : any , shouldBeKeyed : boolean ) : boolean {
135- let r = result . removedStoredTr > 0 ;
140+ let r = result . removedStoredTr ;
136141 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.` ) ;
138143 } else if ( ! r && shouldBeKeyed ) {
139144 console . log ( `Keyed test for remove failed. Expected that the dom node for the 2nd row would be removed, but it wasn't` ) ;
140145 }
@@ -268,7 +273,7 @@ async function runBench(frameworkNames: string[]) {
268273 allCorrect = false ;
269274 }
270275
271- await driver . executeScript ( init ) ;
276+ await driver . executeScript ( init ( framework . shadowRootName ) ) ;
272277 if ( framework . useShadowRoot ) {
273278 await driver . executeScript ( `window.nonKeyedDetector_setUseShadowDom("${ framework . shadowRootName } ");` ) ;
274279 } else {
0 commit comments