diff --git a/test/browser/index.test.jsx b/test/browser/index.test.jsx
index 494900b..931c3c2 100644
--- a/test/browser/index.test.jsx
+++ b/test/browser/index.test.jsx
@@ -280,11 +280,40 @@ describe('web components', () => {
);
});
+ it('supports controlling light DOM with other custom elements', () => {
+ function Parent({ children }) {
+ return (
+ Light DOM Children
+
Child
; + } + + registerElement(Parent, 'light-dom-children-parent', []); + registerElement(Child, 'light-dom-children-child', []); + + const parent = document.createElement('light-dom-children-parent'); + const child = document.createElement('light-dom-children-child'); + + parent.appendChild(child); + root.appendChild(parent); + + assert.equal( + document.querySelector('light-dom-children-parent').innerHTML, + 'Child
Child 1
Child 2
Child 1
Child 2
Child
; + } + + registerElement(Parent, 'shadow-dom-children-parent', [], { + shadow: true, + }); + registerElement(Child, 'shadow-dom-children-child', [], { + shadow: true, + }); + + const parent = document.createElement('shadow-dom-children-parent'); + const child = document.createElement('shadow-dom-children-child'); + + parent.appendChild(child); + root.appendChild(parent); + + const getShadowHTML = (selector) => + document.querySelector(selector).shadowRoot.innerHTML; + + assert.equal( + getShadowHTML('shadow-dom-children-parent'), + 'Child
'); }); }); @@ -344,5 +410,45 @@ describe('web components', () => { }); assert.equal(getShadowHTML(), 'Active theme: sunny
'); }); + + it.only('passes context over light DOM custom element boundaries', async () => { + const Theme = createContext('light'); + + function DisplayTheme() { + const theme = useContext(Theme); + returnActive theme: {theme}
; + } + + function Parent({ children, theme = 'dark' }) { + return ( +Active theme: dark
Active theme: sunny