Accessing Shadow DOM inside a Web Component from Cypress 📎
class ShadowInput extends HTMLElement {
constructor() {
super();
this.root = this.attachShadow({mode:"open"});
}
connectedCallback() {
this.root.innerHTML = `
<input placeholder="something"></input>
`;
}
}
customElements.define('shadow-input',ShadowInput);
can be tested with cypress.io by accessing
the native input field by querying the shadowRoot
:
context('the shadow', () => {
beforeEach(() => {
cy.visit('localhost:3000');
})
it('custom text field', () => {
cy.get('shadow-input').should(e => {
const [dom] = e.get();
dom.shadowRoot.querySelector('input').value = "hey duke";
});
});
})
See it in action and "from scratch":
See you at Web, MicroProfile and Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting. Is Munich's airport too far? Learn from home: airhacks.io.