Skip to content

sand4rt/playwright-ct-web

Repository files navigation

🎭 Playwright Web component testing

The API has been designed to closely resemble Playwright's API wherever applicable. This library is (without guarantee) aimed at facilitating a smooth transition once Playwright offers official support for Web component testing.

Capabilities

  • Run tests fast, in parallel and optionally over multiple machines with sharding or Azure's Testing Service.
  • Run the test headless or headed accross multiple real desktop and/or mobile browser engines.
  • Full support for shadow DOM, SVG/Canvas, multiple origins, (i)frames, browser tabs and contexts.
  • Minimizes flakyness, due to auto waiting, web first assertions and ensures that every test runs in full isolation.
  • Advanced emulation capabilities such as modifying screen size, geolocation, color scheme and the network.
  • Interactions with the components are indistinguishable from real user behavior.
  • Visual regression / screenshot testing.
  • Zero-configuration TypeScript support.

Along with all these ✨ awesome capabilities ✨ that come with Playwright, you will also get:

Usage

Initialize Playwright Web component testing with PNPM, NPM or Yarn and follow the installation steps:

pnpm create playwright-sand4rt --ct
npm init playwright-sand4rt@latest -- --ct
yarn create playwright-sand4rt --ct

Now you can start creating your tests:

// Button.ts
import { LitElement, html } from 'lit';
import { customElement, property } from 'lit/decorators.js';

@customElement('button-component')
export class Button extends LitElement {
  @property({ type: String })
  title!: string;

  render() {
    return html`<button>${this.title}</button>`;
  }
}
// Button.test.ts
import { test, expect } from '@sand4rt/experimental-ct-web';
import { Button } from './components/Button';

test('render props', async ({ mount }) => {
  const component = await mount(Button, {
    props: {
      title: 'Submit',
    },
  });
  await expect(component).toContainText('Submit');
});

See the official playwright component testing documentation and the tests for lit and native web components for more information on how to use it.