0.0.1-alpha.0 • Published 6 years ago

jest-environment-wc-webdriver v0.0.1-alpha.0

Weekly downloads
2
License
MIT
Repository
github
Last release
6 years ago

Jest Test Environment - Web Components & Selenium Web Driver

This project contains a test environment for testing Web Components with Selenium and Jest. It also provides coverage from istanbul and a file server for running HTML files injected with the Web Components polyfill.

Motivation

Polymer CLI has some great testing, however there was motivation to use Jest for testing. Additionally, all Jest DOM testers don't support Web Components (JSDOM, etc).

Installation

Install jest-environment-wc-webdriver with npm or yarn:

yarn add -D jest-environment-wc-webdriver
npm i --save-dev jest-environment-wc-webdriver

Then, in your jest.config.js (or whever you're configuring Jest), add:

module.exports = {
    "testEnvironment": "jest-environment-wc-webdriver"
}

Usage

This test environment automatically exposes some functions and objects to drive browsers.

browsers

By default browsers is:

{
    'chrome': ChromeDriver
}

Where ChromeDriver is the WebDriver created by selenium-webdriver. If you want to test more than one browser, you can configue the testEnvironmentOptions in your jest.config.js like so:

module.exports = {
    "testEnvironment": "jest-environment-wc-webdriver",
    "testEnvironmentOptions": {
        "browsers": ["chrome", "firefox", "safari"]
    }
}

Then in your __tests__/myComponent.js file:

const url = `${URL}/myComponent.spec.html`

Object.entries(browsers).forEach(([browserName, browser]) => {

    describe(`${browserName}: <my-component>`, () => {
        test('it renders', async () => {
            await browser.get(url) // Here, the URL is created by the test environment
            const component = await browser.findElement(by.tagName('my-component'));
            expect(component).toBeDefined();
        })
    })
});

This will test the component exists in each browser specified in the testEnvironmentOptions.browsers

Serving HTML files and instrumented JS files (via istanbul)

This test environment serves HTMl files from the __tests__ directory. It automatically injects a webcomponents-bundle.js javascript file for browsers that need it. Additionally, any JS files configured in the testEnvironmentOptions.js directory will be instrumented with Istanbul.

Configuration

The testEnvironmentOptions in your jest.config.js takes the following options:

optiontypedefaultdescription
browsersstring[]['chrome']Browsers to test
jsstring'lib'Javascript directory to serve instrumented JS files from
reportsstring[]['html', 'json']Istanbul report types
hoststring'localhost'Server host
coverageDirstring'coverage'Server port