npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@qavajs/playwright-wdio-fixtures

v0.0.4

Published

A Playwright test fixture that enables using [WebdriverIO](https://webdriver.io/) browser and element APIs within Playwright tests, with extended Jest-style matchers for WebdriverIO elements.

Downloads

112

Readme

@qavajs/playwright-wdio-fixtures

A Playwright test fixture that enables using WebdriverIO browser and element APIs within Playwright tests, with extended Jest-style matchers for WebdriverIO elements.

Motivation

Introducing WebdriverIO fixtures for the Playwright test runner enables teams to combine Playwright’s powerful orchestration with WebdriverIO’s broad automation capabilities.

The Playwright test runner provides an advanced foundation for modern testing:

  • A fixture-based architecture that ensures clear test setup and teardown.
  • Parallelization and sharding out of the box for high performance.
  • Rich reporting and debugging tools such as trace viewer, HTML reports, and step-by-step execution insights.

On top of this, adding WebdriverIO fixtures brings unique advantages:

  • Real Cross-Browser Testing

WebdriverIO connects directly to native browser builds through the WebDriver protocol, including Chrome, Edge, Safari, and Firefox.

This ensures tests can be executed in the exact environments used by end users, providing full cross-browser coverage.

  • Appium & Mobile Automation

With WebdriverIO’s mature Appium integration, the same test runner can be extended to cover iOS and Android apps, both native and hybrid.

This makes it possible to unify web and mobile automation under a single testing strategy.

  • Unified Automation Ecosystem

Leveraging WebdriverIO fixtures brings in a rich ecosystem of integrations such as Appium, BrowserStack, and Sauce Labs.

Teams can scale their testing approach seamlessly—from fast local checks to full compatibility testing in cloud and mobile environments.

In short: Motivation = Playwright test runner + WebdriverIO fixtures =

  • Powerful orchestration with advanced reporting
  • Real cross-browser validation
  • Mobile automation with Appium
  • Unified and scalable automation framework

Features

  • Use WebdriverIO's browser and element APIs in Playwright test files.
  • Rich set of Jest-style matchers for WebdriverIO elements (toExist, toBeVisible, toHaveText, etc.).
  • Step logging and integration with Playwright's test runner and reporting.
  • TypeScript support

Installation

npm install @qavajs/playwright-wdio-fixtures

You also need @playwright/test and webdriverio as peer dependencies.

Usage

  1. Configure Playwright

In your playwright.config.ts:

import { defineConfig } from '@playwright/test';
import { WdioOptions } from '@qavajs/playwright-wdio-fixtures';

export default defineConfig<WdioOptions>({
  testDir: './tests',
  projects: [
    {
      name: 'wdio',
      use: {
        wdioLaunchOptions: {
          logLevel: 'error',
          capabilities: {
            browserName: 'chrome',
          },
        }
      }
    },
  ],
});
  1. Write Tests

In your test files, import test and expect from the module:

import { test, expect } from '@qavajs/playwright-wdio-fixtures';

test.beforeEach(async ({ driver, $ }) => {
  await driver.url('https://www.saucedemo.com/');
});

test('login button should be enabled', async ({ $ }) => {
  await expect($('#login-button')).toBeEnabled();
});

Fixtures

  • driver: WebdriverIO Browser instance.
  • $, $$: Element query functions, bound to the browser.

Matchers

You can use extended matchers on WebdriverIO elements, such as:

  • toExist
  • toBeVisible
  • toBeEnabled / toBeDisabled
  • toBeFocused
  • toHaveText
  • toHaveValue
  • toHaveAttribute
  • toHaveElementClass
  • toHaveId
  • toHaveProperty
  • toHaveUrl
  • toHaveTitle
  • ...and more

See tests/expect.spec.ts for examples.

Example

import { test, expect } from '@qavajs/playwright-wdio-fixtures';

test('should login successfully', async ({ $ }) => {
  await $('#user-name').setValue('standard_user');
  await $('#password').setValue('secret_sauce');
  await $('#login-button').click();
  await expect($('#user-name')).toBeHidden();
});

Scripts

  • npm run build — Compile TypeScript to lib/
  • npm test — Run Playwright tests
  • npm run debug — Run Playwright UI mode

License

MIT


See also: