Skip to content

Commit 0daefd7

Browse files
authored
[closure] Fix failing //javascript/atoms:test-* targets (#16749)
* [closure] Fix failing `//javascript/atoms:test-*` targets * Fix up the failing actions test
1 parent e3d46e1 commit 0daefd7

File tree

7 files changed

+41
-21
lines changed

7 files changed

+41
-21
lines changed

.skipped-tests

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@
1919
-//java/test/org/openqa/selenium/grid/router:RemoteWebDriverDownloadTest-remote
2020
-//java/test/org/openqa/selenium/remote:RemoteWebDriverBuilderTest
2121
-//java/test/org/openqa/selenium/remote:RemoteWebDriverScreenshotTest-remote
22-
-//javascript/atoms:test-chrome
23-
-//javascript/atoms:test-edge
24-
-//javascript/atoms:test-firefox-beta
2522
-//javascript/chrome-driver/...
2623
-//javascript/selenium-webdriver:test-builder-test.js-chrome
2724
-//javascript/selenium-webdriver:test-chrome-devtools-test.js-chrome

javascript/atoms/action.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ bot.action.clear = function (element) {
120120
// able to interact with this element anymore in Firefox.
121121
bot.action.LegacyDevice_.focusOnElement(element);
122122
if (goog.userAgent.GECKO) {
123-
element.innerHTML = ' ';
123+
element.textContent = ' ';
124124
} else {
125125
element.textContent = '';
126126
}

javascript/atoms/dom.js

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -540,10 +540,21 @@ bot.dom.isShown_ = function (elem, ignoreOpacity, displayedFn) {
540540
// Zero-sized elements should still be considered to have positive size
541541
// if they have a child element or text node with positive size, unless
542542
// the element has an 'overflow' style of 'hidden'.
543+
// Note: Text nodes containing only structural whitespace (with newlines
544+
// or tabs) are ignored as they are likely just HTML formatting, not
545+
// visible content.
543546
return bot.dom.getEffectiveStyle(e, 'overflow') != 'hidden' &&
544547
goog.array.some(e.childNodes, function (n) {
545-
return n.nodeType == goog.dom.NodeType.TEXT ||
546-
(bot.dom.isElement(n) && positiveSize(n));
548+
if (n.nodeType == goog.dom.NodeType.TEXT) {
549+
var text = n.nodeValue;
550+
// Ignore text nodes that are purely structural whitespace
551+
// (contain newlines or tabs and nothing else besides spaces)
552+
if (/^[\s]*$/.test(text) && /[\n\r\t]/.test(text)) {
553+
return false;
554+
}
555+
return true;
556+
}
557+
return bot.dom.isElement(n) && positiveSize(n);
547558
});
548559
}
549560
if (!positiveSize(elem)) {
@@ -1412,9 +1423,13 @@ bot.dom.isNodeDistributedIntoShadowDom = function (node) {
14121423
bot.dom.appendVisibleTextLinesFromElementInComposedDom_ = function (
14131424
elem, lines) {
14141425
if (elem.shadowRoot) {
1426+
// Get the effective styles from the shadow host element for text nodes in shadow DOM
1427+
var whitespace = bot.dom.getEffectiveStyle(elem, 'white-space');
1428+
var textTransform = bot.dom.getEffectiveStyle(elem, 'text-transform');
1429+
14151430
goog.array.forEach(elem.shadowRoot.childNodes, function (node) {
14161431
bot.dom.appendVisibleTextLinesFromNodeInComposedDom_(
1417-
node, lines, true, null, null);
1432+
node, lines, true, whitespace, textTransform);
14181433
});
14191434
}
14201435

javascript/atoms/events.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -369,10 +369,15 @@ bot.events.KeyboardEventFactory_.prototype.create = function (target, opt_args)
369369
event.ctrlKey = args.ctrlKey;
370370
event.metaKey = args.metaKey;
371371
event.shiftKey = args.shiftKey;
372-
event.keyCode = args.charCode || args.keyCode;
373-
if (goog.userAgent.WEBKIT || goog.userAgent.EDGE) {
374-
event.charCode = (this == bot.events.EventType.KEYPRESS) ?
375-
event.keyCode : 0;
372+
if (goog.userAgent.GECKO) {
373+
event.keyCode = args.charCode ? 0 : args.keyCode;
374+
event.charCode = args.charCode;
375+
} else {
376+
event.keyCode = args.charCode || args.keyCode;
377+
if (goog.userAgent.WEBKIT || goog.userAgent.EDGE) {
378+
event.charCode = (this == bot.events.EventType.KEYPRESS) ?
379+
event.keyCode : 0;
380+
}
376381
}
377382
}
378383

javascript/atoms/keyboard.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,7 @@ bot.Keyboard.prototype.maybeSubmitForm_ = function (key) {
496496
if (key != bot.Keyboard.Keys.ENTER) {
497497
return;
498498
}
499-
if (goog.userAgent.GECKO ||
499+
if ((goog.userAgent.GECKO && !bot.userAgent.isEngineVersion(93)) ||
500500
!bot.dom.isElement(this.getElement(), goog.dom.TagName.INPUT)) {
501501
return;
502502
}

javascript/atoms/test/shown_test.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@
300300
assertFalse(bot.dom.isShown(select));
301301
assertTrue('Select should be visible when ignoring opacity',
302302
bot.dom.isShown(select, true));
303-
assertTrue(bot.dom.isShown(select.firstChild));
303+
assertTrue(bot.dom.isShown(select.firstElementChild));
304304
}
305305

306306
/** @see http://code.google.com/p/selenium/issues/detail?id=1941 */
@@ -374,7 +374,7 @@
374374
function testTableRowDefaultVisibility() {
375375
var elem = findElement({ id: 'visible-row' });
376376
assertTrue(isShown(elem));
377-
assertTrue(isShown(elem.firstChild));
377+
assertTrue(isShown(elem.firstElementChild));
378378
}
379379

380380
function testTableRowCollapsedVisibility() {
@@ -384,14 +384,14 @@
384384
var elem = findElement({ id: 'collapsed-row' });
385385
expectedFailures.run(function () {
386386
assertFalse(isShown(elem));
387-
assertFalse(isShown(elem.firstChild));
387+
assertFalse(isShown(elem.firstElementChild));
388388
});
389389
}
390390

391391
function testVisibleTableRowAfterCollapsedRow() {
392392
var elem = findElement({ id: 'post-collapsed-row' });
393393
assertTrue(isShown(elem));
394-
assertTrue(isShown(elem.firstChild));
394+
assertTrue(isShown(elem.firstElementChild));
395395
}
396396

397397
function testDisplayContentsOverflowIgnored() {
@@ -406,7 +406,7 @@
406406
function testDetailsNonSummaryDescendantsVisibility() {
407407
var contents = findElement({ id: 'non-summary' });
408408
assertFalse(isShown(contents));
409-
assertFalse(isShown(contents.firstChild));
409+
assertFalse(isShown(contents.firstElementChild));
410410
}
411411

412412
function testContentVisibleHidden() {

javascript/atoms/test/text_shadow_test.html

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,18 @@
5454
if (type == 'closed') {
5555
document.querySelector(`closed-shadow-element`)._shadowRoot.innerHTML = html;
5656
} else {
57-
document.querySelector(`open-shadow-element`).shadowRoot.innerHTML = html;
57+
// Set shadow DOM on ALL open-shadow-element instances
58+
document.querySelectorAll(`open-shadow-element`).forEach(elem => {
59+
elem.shadowRoot.innerHTML = html;
60+
});
5861
}
5962
}
6063

6164
function tearDown() {
62-
let open = document.querySelector('open-shadow-element');
65+
document.querySelectorAll('open-shadow-element').forEach(elem => {
66+
elem.shadowRoot.innerHTML = '';
67+
});
6368
let closed = document.querySelector('closed-shadow-element');
64-
65-
open.shadowRoot.innerHTML = '';
6669
closed._shadowRoot.innerHTML = '';
6770
}
6871

0 commit comments

Comments
 (0)