"Use all the power of cypress component testing with Lit and web components. ⚡"
This package provides configuration and commands for test web components with all the magic of Lit templates (aka. lit-html) and the power of cypress.
To install, run:
npm install -D cypress-ct-lit
Once you have the package installed alongside Cypress, you can run npx cypress open
, choose "Component Testing", and Lit should appear in the list of frameworks available.
Learn more about third-party definitions
Add cypress-ct-lit
framework to your cypress.config.{ts,js}
file
export default defineConfig({
component: {
devServer: {
framework: 'cypress-ct-lit',
// more config here
}
}
})
If you're using TypeScript, you may get a type error when setting the framework property. If so, you'll need to typecast it as any
framework: 'cypress-ct-lit' as any,
Next, add the following lines to your component.{js.ts}
import { mount } from 'cypress-ct-lit'
Cypress.Commands.add('mount', mount)
Optionally, this package brings its custom types definitions. Add the following to tsconfig.json
or jsconfig.json
in your project.
{
"compilerOptions": {
// more compiler options...
"types": [
"cypress",
"cypress-ct-lit"
]
}
}
You can now mount any html content with Lit in a component test, for example:
import { html } from 'lit';
it('should display content', () => {
const text = 'I will show up in the test'
cy.mount(html`<div id='content'>${text}</div>`);
cy.get('#content').should('contain.text', text);
})
Or find content inside your web component
import 'path/to/my-element';
import { html } from 'lit';
it('should render its children', () => {
cy.mount(html`<my-element></my-element>`);
cy.get('my-element')
.shadow().find('.my-part')
.should('exist')
})
For more examples and basic usages see ´cypress/component´ examples
Note: You may prefer use
includeShadowDom
option to avoid writeshadow()
command on every test.export default defineConfig({ includeShadowDom: true, component: { devServer: { framework: 'cypress-ct-lit', // more config here } } })