blob: 237d3966ba07e0d705dd5e0c2901f446b931b868 [file] [log] [blame]
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="/filez/_main/third_party/js/qunit/qunit.css">
<script src="/filez/_main/third_party/js/qunit/qunit.js"></script>
<script src="/filez/_main/third_party/js/qunit/qunit_test_runner.js"></script>
<script src="../test_bootstrap.js"></script>
<script type="text/javascript">
goog.require('bot.dom');
</script>
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<h1>Page for Shadow DOM tests</h1>
<div id="is-shown">Foo</div>
<div id="is-shown-in-shadow"></div>
<div id="is-shown-directly-in-shadow"></div>
<div id="is-shown-in-slot"><div>Foo</div></div>
<div id="get-parent"><div></div></div>
<div id="get-parent-slot"><div></div></div>
<div id="get-text">Foo</div>
<div id="get-text-shadow"></div>
<div id="get-text-slot">Foo</div>
<div id="get-text-slots">
<div slot="a">Foo</div>
<div slot="b">Bar</div>
<div slot="c">Baz</div>
</div>
<script>
var elementIsShownInShadow;
var elementIsShown;
var elementIsShownDirectlyInShadow;
var elementIsShownInSlot;
var elementGetParent;
var elementGetParentSlot;
var elementGetText;
var elementGetTextShadow;
var elementGetTextSlot;
var elementGetTextSlots;
if (bot.dom.IS_SHADOW_DOM_ENABLED) {
elementIsShownInShadow =
document.querySelector('#is-shown-in-shadow');
elementIsShownInShadow.attachShadow({ mode: 'open' });
elementIsShownInShadow.shadowRoot.innerHTML =
'<div><div class="test">Foo</div></div>';
elementIsShownDirectlyInShadow =
document.querySelector('#is-shown-directly-in-shadow');
elementIsShownDirectlyInShadow.attachShadow({ mode: 'open' });
elementIsShownDirectlyInShadow.shadowRoot.innerHTML =
'<div>Foo</div>';
elementIsShown = document.querySelector('#is-shown');
elementIsShownInSlot =
document.querySelector('#is-shown-in-slot');
elementIsShownInSlot.attachShadow({ mode: 'open' });
elementIsShownInSlot.shadowRoot.innerHTML =
'<slot></slot>';
elementGetParent =
document.querySelector('#get-parent');
elementGetParentSlot =
document.querySelector('#get-parent-slot');
elementGetParentSlot.attachShadow({ mode: 'open' });
elementGetParentSlot.shadowRoot.innerHTML =
'<div><slot></slot></div>';
elementGetText =
document.querySelector('#get-text');
elementGetTextShadow =
document.querySelector('#get-text-shadow');
elementGetTextShadow.attachShadow({ mode: 'open' });
elementGetTextShadow.shadowRoot.innerHTML = 'foo';
elementGetTextSlot =
document.querySelector('#get-text-slot');
elementGetTextSlot.attachShadow({ mode: 'open' });
elementGetTextSlot.shadowRoot.innerHTML =
'<span>a</span><slot></slot><span>b</span>';
elementGetTextSlots =
document.querySelector('#get-text-slots');
elementGetTextSlots.attachShadow({ mode: 'open' });
elementGetTextSlots.shadowRoot.innerHTML =
'<slot name="a">Default</slot><slot name="b">Default</slot>';
}
QUnit.test('isShown', function(assert) {
if (!bot.dom.IS_SHADOW_DOM_ENABLED) {
assert.ok(true, 'Skipping: shadow DOM not enabled');
return;
}
assert.ok(bot.dom.isShown(elementIsShown));
elementIsShown.style.display = 'none';
assert.notOk(bot.dom.isShown(elementIsShown));
});
QUnit.test('isShownInShadow', function(assert) {
if (!bot.dom.IS_SHADOW_DOM_ENABLED) {
assert.ok(true, 'Skipping: shadow DOM not enabled');
return;
}
var el = elementIsShownInShadow
.shadowRoot
.querySelector('.test');
assert.ok(bot.dom.isShown(el));
elementIsShownInShadow.style.display = 'none';
assert.notOk(bot.dom.isShown(el));
});
QUnit.test('isShownDirectlyInShadow', function(assert) {
if (!bot.dom.IS_SHADOW_DOM_ENABLED) {
assert.ok(true, 'Skipping: shadow DOM not enabled');
return;
}
var el = elementIsShownDirectlyInShadow
.shadowRoot
.querySelector('div');
assert.ok(bot.dom.isShown(el));
elementIsShownDirectlyInShadow.style.display = 'none';
assert.notOk(bot.dom.isShown(el));
});
QUnit.test('isShownInSlot', function(assert) {
if (!bot.dom.IS_SHADOW_DOM_ENABLED) {
assert.ok(true, 'Skipping: shadow DOM not enabled');
return;
}
var el = elementIsShownInSlot.children[0];
assert.ok(bot.dom.isShown(el));
elementIsShownInSlot.style.display = 'none';
assert.notOk(bot.dom.isShown(el));
elementIsShownInSlot.style.display = '';
// Remove the slot, so our child is no longer slotted
elementIsShownInSlot.shadowRoot.innerHTML = '';
assert.notOk(bot.dom.isShown(el));
});
QUnit.test('getParentNodeInComposedDom', function(assert) {
if (!bot.dom.IS_SHADOW_DOM_ENABLED) {
assert.ok(true, 'Skipping: shadow DOM not enabled');
return;
}
var el = elementGetParent.children[0];
assert.strictEqual(bot.dom.getParentNodeInComposedDom(el), elementGetParent);
el = elementGetParentSlot.children[0];
assert.strictEqual(
bot.dom.getParentNodeInComposedDom(el),
elementGetParentSlot.shadowRoot.querySelector('div')
);
elementGetParentSlot.shadowRoot.innerHTML = '';
assert.strictEqual(bot.dom.getParentNodeInComposedDom(el), null);
});
QUnit.test('getVisibleText', function(assert) {
if (!bot.dom.IS_SHADOW_DOM_ENABLED) {
assert.ok(true, 'Skipping: shadow DOM not enabled');
return;
}
assert.strictEqual(bot.dom.getVisibleText(elementGetText), 'Foo');
});
QUnit.test('getVisibleTextInShadow', function(assert) {
if (!bot.dom.IS_SHADOW_DOM_ENABLED) {
assert.ok(true, 'Skipping: shadow DOM not enabled');
return;
}
assert.strictEqual(bot.dom.getVisibleText(elementGetTextShadow), 'foo');
});
QUnit.test('getVisibleTextInSlot', function(assert) {
if (!bot.dom.IS_SHADOW_DOM_ENABLED) {
assert.ok(true, 'Skipping: shadow DOM not enabled');
return;
}
assert.strictEqual(bot.dom.getVisibleText(elementGetTextSlot), 'aFoob');
});
QUnit.test('getVisibleTextInSlots', function(assert) {
if (!bot.dom.IS_SHADOW_DOM_ENABLED) {
assert.ok(true, 'Skipping: shadow DOM not enabled');
return;
}
assert.strictEqual(bot.dom.getVisibleText(elementGetTextSlots), 'Foo\nBar');
});
</script>
</body>
</html>