Accessing Shadow DOM inside a Web Component from Cypress

A Custom Element with a input field placed inside a Shadow DOM:


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.

Comments:

can you give an example of how to test click a radio button and also clicking the submit button on the form?

Posted by Pao on April 07, 2020 at 10:31 PM CEST #

Post a Comment:
  • HTML Syntax: NOT allowed
...the last 150 posts
...the last 10 comments
License