Automate Browser Testing with Selenium

BrightSign users running OS 8.3.22 or above can now automate browser testing using the Selenium WebDriver and roHtmlWidget. Previously, Selenium could not establish a connection to BrightSign devices due to version number incompatibility.

The Selenium WebDriver can connect to roHtmlWidget through the Web Inspector and drive test cases. To establish this, enable a remote debugging port on roHtmlWidget:

roHtmlWidget creation
rect=CreateObject("roRectangle", 0, 0, width, height) config = { inspector_server: {port: 6813} url: "about:blank" } htmlWidget = CreateObject("roHtmlWidget", rect, config)


The Chrome WebDriver and BrightSign Chromium version must match. Chromium 69 is built into BrightSignOS 8.3, so specify ChromeDriver 2.41.0 in package.json:

package.json
{ "dependencies": { "chromedriver": "2.41.0", "selenium-webdriver": "*" } }


The code block below connects to the remote inspector and loads a web page, showing how Selenium connects to a player and sends commands. Remote access (which is an optional parameter) is enabled here:

main.js
// main.js var chromeDriver = require('chromedriver'), // Auto install ChromeDriver webdriver = require('selenium-webdriver'), By = webdriver.By, until = webdriver.until; var chrome = require("selenium-webdriver/chrome"); var options = new chrome.Options(); options.options_["debuggerAddress"] = "172.30.1.192:6813"; // Replace this with your own remote ip/port var driver = new webdriver.Builder() .forBrowser('chrome') .setChromeOptions(options) .build(); function start() { driver.get('https://www.brightsign.biz'); setTimeout(function () {console.log('finished');}, 10000); } process.on('SIGTERM', function shutdown() { driver.quit(); }); start();

 

The selenium_test.tar.gz file below is a sample application. It should be extracted and installed on a desktop PC using npm install:

This autorun.brs must be installed on the BrightSign player: