diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 72ee1373d..ebc4d6c14 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -25,12 +25,3 @@ npm install npm start ``` -# Testing - -Some of the samples have an associated test. These are currently using [Nightwatch.JS](https://nightwatchjs.org) and -are only testing the UI of the samples. The purpose of these is to provide examples of how you can write UI tests for -your WebRTC web application. - -When creating a new sample or updating an existing one, please make sure you also create, or update any existing, tests. -All tests in this repository are implemented as Nightwatch.JS UI tests, so please follow the same design in your own. - diff --git a/nightwatch.conf.js b/nightwatch.conf.js deleted file mode 100644 index 2945d1314..000000000 --- a/nightwatch.conf.js +++ /dev/null @@ -1,3 +0,0 @@ -require('babel-core/register') - -module.exports = require('./nightwatch.json') diff --git a/nightwatch.json b/nightwatch.json deleted file mode 100644 index 956389dd3..000000000 --- a/nightwatch.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "src_folders": [ - "src/content/getusermedia/gum/test", - "src/content/getusermedia/resolution/test", - "src/content/devices/input-output/test", - "src/content/datachannel/filetransfer/test", - "src/content/datachannel/datatransfer/test", - "src/content/datachannel/basic/test", - "src/content/peerconnection/audio/test" - ], - "output_folder": false, - "custom_commands_path": [ - "nightwatch/customCommands" - ], - "custom_assertions_path": [ - "nightwatch/customAsserts" - ], - "page_objects_path": "", - "selenium": { - "start_process": true, - "server_path": "./node_modules/selenium-server/lib/runner/selenium-server-standalone-3.141.59.jar", - "port": 4444, - "log_path": "", - "cli_args": { - "webdriver.firefox.profile": "./node_modules/.bin/geckodriver", - "webdriver.chrome.driver":"./node_modules/.bin/chromedriver" - } - }, - "test_settings": { - "default": { - "screenshots": { - "enabled": false - } - }, - "chrome": { - "selenium_port": 4444, - "selenium_host": "localhost", - "desiredCapabilities": { - "browserName": "chrome", - "javascriptEnabled": true, - "acceptSslCerts": true, - "chromeOptions": { - "args": [ - "--headless", - "--no-sandbox", - "--allow-file-access-from-files", - "--use-fake-device-for-media-stream", - "--use-fake-ui-for-media-stream", - "--disable-translate", - "--no-process-singleton-dialog", - "--mute-audio" - ] - } - } - }, - "firefox": { - "selenium_port": 4444, - "selenium_host": "localhost", - "desiredCapabilities": { - "browserName": "firefox", - "javascriptEnabled": true, - "acceptSslCerts": true, - "marionette": true, - "moz:firefoxOptions": { - "log": { - "level": "trace" - }, - "args": [ - "-headless", - "-no-remote" - ], - "prefs": { - "browser.cache.disk.enable": false, - "browser.cache.disk.capacity": 0, - "browser.cache.disk.smart_size.enabled": false, - "browser.cache.disk.smart_size.first_run": false, - "browser.sessionstore.resume_from_crash": false, - "browser.startup.page": 0, - "media.navigator.streams.fake": true, - "media.navigator.permission.disabled": true, - "device.storage.enabled": false, - "media.gstreamer.enabled": false, - "browser.startup.homepage": "about:blank", - "browser.startup.firstrunSkipsHomepage": false, - "extensions.update.enabled": false, - "app.update.enabled": false, - "network.http.use-cache": false, - "browser.shell.checkDefaultBrowser": false - } - } - } - } - } -} diff --git a/nightwatch/customAsserts/videoHeight.js b/nightwatch/customAsserts/videoHeight.js deleted file mode 100644 index 24e0d8db1..000000000 --- a/nightwatch/customAsserts/videoHeight.js +++ /dev/null @@ -1,15 +0,0 @@ -exports.assertion = function(selector, videoHeight, msg) { - this.message = msg || `Testing if element <${selector}> has videoHeight ${videoHeight}`; - this.expected = videoHeight; - - this.pass = value => value === videoHeight; - - this.value = result => result.value; - - this.command = function(callback) { - this.api.execute(function(selector) { - const element = document.querySelector(selector); - return element.videoHeight; - }, [selector], callback); - }; -}; diff --git a/nightwatch/customAsserts/videoWidth.js b/nightwatch/customAsserts/videoWidth.js deleted file mode 100644 index a37777919..000000000 --- a/nightwatch/customAsserts/videoWidth.js +++ /dev/null @@ -1,15 +0,0 @@ -exports.assertion = function(selector, videoWidth, msg) { - this.message = msg || `Testing if element <${selector}> has videoWidth ${videoWidth}`; - this.expected = videoWidth; - - this.pass = value => value === videoWidth; - - this.value = result => result.value; - - this.command = function(callback) { - this.api.execute(function(selector) { - const element = document.querySelector(selector); - return element.videoWidth; - }, [selector], callback); - }; -}; diff --git a/nightwatch/customCommands/waitForMediaPlaybackReady.js b/nightwatch/customCommands/waitForMediaPlaybackReady.js deleted file mode 100644 index d90ad8090..000000000 --- a/nightwatch/customCommands/waitForMediaPlaybackReady.js +++ /dev/null @@ -1,39 +0,0 @@ -import EventEmitter from 'events'; -import assert from 'assert'; - -class MediaPlaybackReady extends EventEmitter { - constructor() { - super(); - } - - command(selector, timeout, message) { - this.startTime = new Date().getTime(); - const self = this; - - const executeArgs = [selector]; - const checkFunction = (selector, cb) => { - console.error('checkFunction'); - const element = document.querySelector(selector); - // readyState === 4 means that video/audio is ready to play - cb(element.readyState); - }; - const callback = result => { - const now = new Date().getTime(); - if (result.value === 4) { - const msg = message || `Media element ${selector} started playing in ${now - self.startTime} ms`; - self.emit('done'); - } else if (now - self.startTime < timeout) { - this.api.executeAsync(checkFunction, executeArgs, callback); - } else { - const failMsg = message || `Media element ${selector} failed to start in ${now - self.startTime} ms`; - assert.equal(result.value, 4, failMsg); - self.emit('done'); - } - }; - this.api.executeAsync(checkFunction, executeArgs, callback); - - return this; - } -} - -export default MediaPlaybackReady; diff --git a/nightwatch/customCommands/waitForReadyState.js b/nightwatch/customCommands/waitForReadyState.js deleted file mode 100644 index 372675e36..000000000 --- a/nightwatch/customCommands/waitForReadyState.js +++ /dev/null @@ -1,38 +0,0 @@ -import EventEmitter from 'events'; -import assert from 'assert'; - -class WaitForReadyState extends EventEmitter { - constructor() { - super(); - } - - command(selector, readyState, timeout, message) { - this.readyState = readyState; - this.startTime = new Date().getTime(); - const self = this; - - const executeArgs = [selector]; - const checkFunction = (selector, cb) => { - const element = document.querySelector(selector); - cb(element.readyState); - }; - const callback = result => { - const now = new Date().getTime(); - if (result.value === this.readyState) { - const msg = message || `Ready state for ${selector} become ${this.readyState} in ${now - self.startTime} ms`; - self.emit('done'); - } else if (now - self.startTime < timeout) { - this.api.executeAsync(checkFunction, executeArgs, callback); - } else { - const failMsg = message || `Ready state for ${selector} didn't become ${this.readyState} in ${now - self.startTime} ms`; - assert.equal(result.value, this.readyState, failMsg); - self.emit('done'); - } - }; - this.api.executeAsync(checkFunction, executeArgs, callback); - - return this; - } -} - -export default WaitForReadyState; diff --git a/package.json b/package.json index 0b2d36477..b7617fa13 100644 --- a/package.json +++ b/package.json @@ -28,13 +28,9 @@ "'**/third_party/*.js'" ], "devDependencies": { - "chromedriver": ">76.0.1", "eslint": "^8.9.0", "eslint-config-google": "^0.14.0", - "geckodriver": ">1.19.1", "http-server": "^14.1.0", - "nightwatch": "^2.0.7", - "selenium-server": "^3.141.59", "stylelint": "^14.5.3", "stylelint-config-recommended": "^7.0.0" }