Jitsi Meet is a very popular open source video conferencing engine. If you are using it, then the script provided here is a great starting point.
Preparation
There is a “Jitsi example” script in any account created on testRTC. It is used as a sample and starting point for those who are evaluating our service.
The script itself creates a random room on meet.jitsi and then enters that room.
If you use the service manually, it ends up looking something like
this:
.waitForElementVisible('.action-btn', 60 * sec)
.pause(300) //wait for page render
.click(".action-btn")
Why comment them out? Because these wait for the “Join meeting” button to appear and then click it. If you don’t have that in your Jitsi service, then the test script will fail on it, waiting for a button that will never appear on screen.
Using the test script
- Copy the code from the bottom of this article to your test script (or use the existing sample in your account)
- Decide the number of probes you want to use
- Concurrent probes: 2 concurrent probes would be good starting point – keep it at an even number (you need pairs of probes for this)
- Set the Session size to the number of concurrent probes for this sample
- Replace the Service URL of the script with the URL where your Jitsi Meet server is installed
Test execution
Run the script. It does everything for you. If you want, you can join the same room from your browser once you see the URL in the progress messages of the test.
/*
This example shows how to automate Jitsi based scenarios in testRTC
SCENARIO
* Browser joins room URL
* Browser runs for 2 minutes
SCALING
To scale the test, change the number of concurrent users and/or the
number of users in the session (look at #session:2 in Run Options).
THINGS TO PLAY WITH
* Probe configurations (look after the script):
- Location of probes
- Media files to use
- Network configuration and quality
- Browser version
* Number of concurrent users (in a paid account. Evals limited to 2 max)
* Session size (Run Options; #session:2 value)
* Join with your own browser to the URL of the test
(try opening https://meet.jit.si/testRTC0 when the test is running)
*/
// Variables that we will use in this example
var roomUrl = process.env.RTC_SERVICE_URL + "testRTC000" + process.env.RTC_SESSION_IDX;
var sec = 1000;
var agentType = Number(process.env.RTC_IN_SESSION_ID);
var sessionJoinRate = 500;
// We set a few expectations. If these don't happen, the test will fail
// In Jitsi case, we want to make sure we have:
// 1. At least 2 incoming A/V channels
// 2. No more than 2 outgoing A/V chanels (2 due to Jitsi's P2P4121 mode)
// 3. Media being sent and received
client
.rtcSetTestExpectation("audio.in >= 1")
.rtcSetTestExpectation("audio.out >= 1")
.rtcSetTestExpectation("video.in >= 1")
.rtcSetTestExpectation("video.out >= 1")
.rtcSetTestExpectation("audio.in.bitrate > 0")
.rtcSetTestExpectation("audio.out.bitrate > 0")
.rtcSetTestExpectation("video.in.bitrate > 0")
.rtcSetTestExpectation("video.out.bitrate > 0");
// Join the room
client
.rtcInfo(roomUrl)
.resizeWindow(1280, 720)
.rtcProgress('open ' + roomUrl)
.pause((sessionJoinRate * agentType) + 10)
.url(roomUrl)
.waitForElementVisible('.action-btn', 60 * sec)
.pause(300) //wait for page render
.click(".action-btn")
// Now that the browser is connected and in the room, we wait
.pause(60 * sec)
.rtcScreenshot("in session")
/* //Now Lets switch to a 3G network
.rtcSetAdditionalInfo("Network degrades to Regular 3G mid call")
.rtcEvent("Network 3G", "global")
.rtcSetNetworkProfile("Regular 3G")
.pause(30 * sec)
.rtcScreenshot("3G")*/
.pause(30 * sec)
.rtcProgress("Bye");