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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@cloudflare/realtimekit-device-emulator

v0.0.2

Published

Adds methods to emulate various devices on MediaDevices class.

Readme

About The Project

For a WebRTC-based solution like Cloudflare RealtimeKit, having integration tests that can test multi-user calls with audio/video enabled is necessary. Part of the integration testing is the ability to test different media behaviors.

These are not straightforward as media devices are usually not available in virtualized or testing environments. These interfaces (getUserMedia) are a reflection of actual hardware connected to the device, and therefore it is difficult to test real-world scenarios in a software test run.

Even if you have devices available, scenarios such as:

  • A new microphone device is plugged in—does my application switch the input to the new device?
  • How does my application handle hardware failure?

become difficult to test automatically.

Cloudflare RealtimeKit's Device Emulator is a solution for the above problems. It provides ways to add and remove media devices and mimic specific real-world behavior. By using this emulation toolkit, QA engineers, developers, and testers can ensure that WebRTC applications deliver a consistent and high-quality user experience across different hardware setups.

Usage

Install the package

npm install @cloudflare/realtimekit-device-emulator

Import the package

import '@cloudflare/realtimekit-device-emulator';

Listening for the Device Emulator Ready Event

The device emulator dispatches a realtimekit:device-emulator:ready event on the window when it's fully loaded and ready to use:

window.addEventListener('realtimekit:device-emulator:ready', () => {
    // Device emulator is ready, you can now add emulated devices
    navigator.mediaDevices.addEmulatedDevice('videoinput');
});

Adding a virtual device

navigator.mediaDevices.addEmulatedDevice('videoinput');

Failing a virtual device

navigator.mediaDevices.failDevice(deviceId, true);

Silencing a virtual device

navigator.mediaDevices.silenceDevice(deviceId, true);

Built With

  • Canvas
  • MediaDevices interface
  • Typescript