bigbluebutton-Github/bigbluebutton-tests/playwright
KDSBrowne 3bfdeb9cfd
feat(whiteboard): Reuse poll result diagram as a whiteboard shape (#20350)
* create poll shape to render chat poll component
2024-06-10 17:12:40 -04:00
..
api test: add an auto-run global hook for each test to close the context used at the end of the execution and dinamically set the context property in the Page object 2024-03-06 11:26:03 -03:00
audio test: flag tests to run in CI 2024-05-14 18:07:58 -03:00
breakout test: Fix breakout export option tests (#20343) 2024-06-06 16:15:36 -03:00
chat test: flag tests to run in CI 2024-05-14 18:07:58 -03:00
connectionFailure test: add an auto-run global hook for each test to close the context used at the end of the execution and dinamically set the context property in the Page object 2024-03-06 11:26:03 -03:00
connectionStatus test: add an auto-run global hook for each test to close the context used at the end of the execution and dinamically set the context property in the Page object 2024-03-06 11:26:03 -03:00
core feat(whiteboard): Reuse poll result diagram as a whiteboard shape (#20350) 2024-06-10 17:12:40 -04:00
layouts adding @ci flag 2024-05-22 15:21:32 -03:00
learningdashboard test: flag tests to run in CI 2024-05-14 18:07:58 -03:00
notifications test: flag tests to run in CI 2024-05-14 18:07:58 -03:00
options changed createParameter to joinParameter 2024-03-21 10:22:02 -03:00
parameters test: flag tests to run in CI 2024-05-14 18:07:58 -03:00
polling feat(whiteboard): Reuse poll result diagram as a whiteboard shape (#20350) 2024-06-10 17:12:40 -04:00
presentation test: update presentation test checks 2024-05-15 15:12:45 -03:00
reconnection test: add an auto-run global hook for each test to close the context used at the end of the execution and dinamically set the context property in the Page object 2024-03-06 11:26:03 -03:00
screenshare removed params from getYoutubeFrame function 2024-04-19 16:05:13 -03:00
sharednotes test: Fix breakout export option tests (#20343) 2024-06-06 16:15:36 -03:00
stress test: add an auto-run global hook for each test to close the context used at the end of the execution and dinamically set the context property in the Page object 2024-03-06 11:26:03 -03:00
user test: flag tests to run in CI 2024-05-14 18:07:58 -03:00
virtualizedlist test: add an auto-run global hook for each test to close the context used at the end of the execution and dinamically set the context property in the Page object 2024-03-06 11:26:03 -03:00
webcam test: flag tests to run in CI 2024-05-14 18:07:58 -03:00
whiteboard changed createParameter to joinParameter 2024-03-21 10:22:02 -03:00
.env.template test: update playwright tests to support sha256 and sha512 algorithms (#19725) 2024-03-17 21:34:46 -04:00
.gitignore test: add blob-report folder to gitignore 2024-05-14 18:15:51 -03:00
fixtures.js test: add an auto-run global hook for each test to close the context used at the end of the execution and dinamically set the context property in the Page object 2024-03-06 11:26:03 -03:00
package-lock.json test: update playwright tests to support sha256 and sha512 algorithms (#19725) 2024-03-17 21:34:46 -04:00
package.json test: update playwright tests to support sha256 and sha512 algorithms (#19725) 2024-03-17 21:34:46 -04:00
playwright.config.js test: Fix breakout export option tests (#20343) 2024-06-06 16:15:36 -03:00
README.md test: add parallel npm-script 2024-05-14 18:13:32 -03:00

BigBlueButton Playwright Tests

Tests for BigBlueButton using Playwright.

Setup (with an existing BigBlueButton server)

You need to install the dependencies:

$ cd ../bigbluebutton-tests/playwright
$ npm install
$ npx playwright install

You may also need to run the following command:

$ npx playwright install-deps

To run these tests with an existing BigBlueButton server, you need to find the server's URL and secret (can be done with bbb-conf --secret command). You need to put them into the .env file inside bigbluebutton-tests/playwright folder (variables BBB_URL and BBB_SECRET). Note: the value for BBB_URL follows the format of https://<hostname>/bigbluebutton/api.

Run tests

We recommend to use Node version 16 or higher to avoid errors in JavaScript. Tests can be executed using npx and npm test. You can run all tests in each of 3 supported environments (chromium, firefox, webkit) with one of the following commands:

$ npx playwright test
or
$ npm test

You can also run a single test suite and limit the execution to only one browser:

$ npx playwright test chat --project="firefox"
or
$ npm test chat -- --project="firefox" # or "chromium" for example

Npm-scripts parameters

Run fully parallel mode:

$ npm test chat --parallel -- --project chromium

Additional commands

To see the tests running visually, you must run them in headed mode:

$ npm run test:headed chat

If you want to run a specific test or a specific group of tests, you can do so with the following command:

$ npm run test:filter "Send public message"

(note that this filter needs to be passed in "double quotes")

You can also use this also through the test tree, adding the test suite / group of tests before the test filter:

$ npm run test:filter "notifications chat"

If you don't have BBB_URL and BBB_SECRET set, but have ssh access to the test server, you can use the following command to obtain BBB_URL and BBB_SECRET via ssh:

$ npm run test:ssh -- HOSTNAME

Recording Meteor messages

A modified version of websockify can be used to record the Meteor messages exchanged between client and server, by inserted a WebSocket proxy between the client and server, configured to record the sessions.

First, on the server, obtain the modified websockify:

git clone https://github.com/BrentBaccala/websockify.git

Install additional dependencies:

sudo apt install python3-numpy

Then add the following stanza to /usr/share/bigbluebutton/nginx/bbb-html5.nginx:

location ~* /html5client/.*/websocket {
  proxy_pass http://127.0.0.1:4200;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "Upgrade";
}

From the websockify directory, run websockify configured to proxy WebSocket connections from port 4200 to port 4100, recording the sessions to files named bbb.1, bbb.2, etc.:

./run -v --record=bbb --ws-target=ws://localhost:4100{path} 4200

Now reload nginx:

sudo systemctl reload nginx

Meteor messages for Big Blue Button sessions will now be recorded for later review.

It doesn't seem necessary to relay cookies, but that could be done by giving a --ws-relay-header=Cookie argument to websockify.

You can print the browser console log to standard output by setting the environment variable CONSOLE:

$ CONSOLE= npm test chat -- --project=firefox

CONSOLE can be blank (as in the example), or can be a comma-separated list of the following options:

Option Meaning
color (or "colour") colorize the output
label label each line with the BigBlueButton user
norefs remove JavaScript reference URLs
nots remove timestamps
nocl remove "clientLogger:" strings