Coder Social home page Coder Social logo

rolios / lib-testrtc Goto Github PK

View Code? Open in Web Editor NEW

This project forked from webrtc/testrtc

2.0 1.0 2.0 6.11 MB

lib-testrtc: Turns TestRTC into a library to make webrtc tests embeddable in any page.

License: BSD 3-Clause "New" or "Revised" License

JavaScript 100.00%
javascript

lib-testrtc's Introduction

lib-testrtc

Turns TestRTC into a library to make tests embeddable in any page.

TestRTC

WebRTC troubleshooter provides a set of tests that can be easily run by a user to help diagnose WebRTC related issues. The user can then download a report containing all the gathered information or upload the log and create a temporary link with the report result.

Usage

Install with npm / yarn npm install lib-testrtc yarn add lib-testrtc

Or import the script into your page and use the global object TestRTC.

<script type="text/javascript" src="testrtc-min.js"></script>
<script type="text/javascript">
    const testRTC = new TestRTC({
      turnUsername: 'USERNAME',
      turnCredential: 'PASSWORD',
      turnURI: 'YOUR_TURN_URL',
      strunURI: 'YOUR_STUN_URI',
    });

    testRTC.start();
</script>

Callbacks

You can suscribe to different callbacks to get the tests reports:

// Test Progress
testRTC.onTestProgress((suiteName, testName, progress) => {});
// Global Progress
testRTC.onGlobalProgress((finishedCount, remainingCount) => {});
// Result
testRTC.onTestProgress((suiteName, testName, result) => {});
// Logs
testRTC.onTestReport((suite, test, level, message) => {});
// Tests completed
testRTC.onComplete(() => {});
// Tests stopped
testRTC.onStopped(() => {});

Suite control

The following commands are available:

testRTC.start() (Start from the beggining) testRTC.pause() testRTC.resume() testRTC.stop() (Stop the test suite)

testRTC.state gives an indication of the current state of the suite: stopped/started/paused.

Filtering tests

You can prevent the execution of a suites or a test case by passing it through a filter array in parameter:

const testRTC = new TestRTC(
  {
    turnUsername: 'USERNAME',
    turnCredential: 'PASSWORD',
    turnURI: 'YOUR_TURN_URL',
    strunURI: 'YOUR_STUN_URI'
  },
  (filter = [TestRTC.SUITES.CAMERA, TestRTC.TESTS.IPV6ENABLED])
);

The accepted values can be found here

Tests descriptions

  • Microphone
    • Audio capture
      • Checks the microphone is able to produce 2 seconds of non-silent audio
      • Computes peak level and maximum RMS
      • Clip detection
      • Mono mic detection
  • Camera
    • Check WxH resolution
      • Checks the camera is able to capture at the requested resolution for 5 seconds
      • Checks if the frames are frozen or muted/black
      • Detects how long to start encode frames
      • Reports encode time and average framerate
    • Check supported resolutions
      • Lists resolutions that appear to be supported
  • Network
    • Udp/Tcp
      • Verifies it can talk with a turn server with the given protocol
    • IPv6 connectivity
      • Verifies it can gather at least one IPv6 candidate
  • Connectivity
    • Relay
      • Verifies connections can be established between peers through a TURN server
    • Reflexive
      • Verifies connections can be established between peers through NAT
    • Host
      • Verifies connections can be established between peers with the same IP address
  • Throughput
    • Data throughput
      • Establishes a loopback call and tests data channels throughput on the link
    • Video bandwidth
      • Establishes a loopback call and tests video performance on the link
      • Measures rtt on media channels.
      • Measures bandwidth estimation performance (rampup time, max, average)
    • Network latency
      • Establishs a loopback call and sends very small packets (via data channels) during 5 minutes plotting them to the user. It can be used to identify issues on the network.

Build lib-testrtc

yarn && grunt build

Feel free to contribute by opening a pull request.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.