Permalink
Browse files

added wdio example

  • Loading branch information...
1 parent 91db8f4 commit 389eff27dfb237fc8b58754cb5cb3125e5fe398f @christian-bromann christian-bromann committed Aug 18, 2016
View
@@ -27,6 +27,3 @@ build
# Users Environment Variables
.lock-wscript
-
-# video files
-*.y4m
Oops, something went wrong.
Oops, something went wrong.
@@ -11,23 +11,16 @@
var WebdriverIO = require('webdriverio')
var WebdriverRTC = require('../')
var path = require('path')
-var fs = require('fs')
var args = [
'use-fake-device-for-media-stream',
'use-fake-ui-for-media-stream'
]
-/**
- * check if fake videos exist
- */
var argsBrowserA = args.slice(0, args.length)
-if (fs.existsSync(path.join(__dirname, '..', 'sign_irene_qcif.y4m'))) {
- argsBrowserA.push('use-file-for-fake-video-capture=' + path.join(__dirname, '..', 'sign_irene_qcif.y4m'))
-}
+argsBrowserA.push('use-file-for-fake-video-capture=' + path.join(__dirname, 'fixtures', 'sign_irene_qcif.y4m'))
+
var argsBrowserB = args.slice(0, args.length)
-if (fs.existsSync(path.join(__dirname, '..', 'silent_qcif.y4m'))) {
- argsBrowserB.push('use-file-for-fake-video-capture=' + path.join(__dirname, '..', 'silent_qcif.y4m'))
-}
+argsBrowserB.push('use-file-for-fake-video-capture=' + path.join(__dirname, 'fixtures', 'silent_qcif.y4m'))
var matrix = WebdriverIO.multiremote({
browserA: {
@@ -0,0 +1,5 @@
+{
+ "env": {
+ "mocha": true,
+ }
+}
@@ -0,0 +1,45 @@
+/*global browser, appController */
+var assert = require('assert')
+
+describe('does webrtc test', function () {
+ var channel = Math.round(Math.random() * 100000000000)
+ var stats
+
+ it('records connection data and prints them out', function () {
+ /**
+ * open webrtc connection by going to a random channel on apprtc.appspot.com
+ */
+ browser.url('/r/' + channel)
+ browser.click('#confirm-join-button').pause(5000)
+
+ /**
+ * start analyzing
+ */
+ var browserA = browser.select('browserA')
+ browserA.startAnalyzing(function () {
+ return appController.call_.pcClient_.pc_
+ })
+
+ var connectionType = browserA.getConnectionInformation()
+ console.log(connectionType)
+
+ /**
+ * record data for 5s
+ */
+ browser.pause(5000)
+
+ /**
+ * print data
+ */
+ stats = browserA.getStats(5000)
+ console.log('mean:', stats.mean)
+ console.log('median:', stats.median)
+ console.log('max:', stats.max)
+ console.log('min:', stats.min)
+ })
+
+ it('check audio input level being lower than 5db', function () {
+ var inputLevel = stats.max.audio.outbound.inputLevel
+ assert.ok(inputLevel < 5000, 'This was too loud! Your audio input level was ' + inputLevel + '.')
+ })
+})
@@ -0,0 +1,196 @@
+var path = require('path')
+
+exports.config = {
+ //
+ // ==================
+ // Specify Test Files
+ // ==================
+ // Define which test specs should run. The pattern is relative to the directory
+ // from which `wdio` was called. Notice that, if you are calling `wdio` from an
+ // NPM script (see https://docs.npmjs.com/cli/run-script) then the current working
+ // directory is where your package.json resides, so `wdio` will be called from there.
+ //
+ specs: [
+ path.join(__dirname, '/test.spec.js')
+ ],
+ // Patterns to exclude.
+ exclude: [
+ // 'path/to/excluded/files'
+ ],
+ //
+ // ============
+ // Capabilities
+ // ============
+ // Define your capabilities here. WebdriverIO can run multiple capabilities at the same
+ // time. Depending on the number of capabilities, WebdriverIO launches several test
+ // sessions. Within your capabilities you can overwrite the spec and exclude options in
+ // order to group specific specs to a specific capability.
+ //
+ // First, you can define how many instances should be started at the same time. Let's
+ // say you have 3 different capabilities (Chrome, Firefox, and Safari) and you have
+ // set maxInstances to 1; wdio will spawn 3 processes. Therefore, if you have 10 spec
+ // files and you set maxInstances to 10, all spec files will get tested at the same time
+ // and 30 processes will get spawned. The property handles how many capabilities
+ // from the same test should run tests.
+ //
+ maxInstances: 10,
+ //
+ // If you have trouble getting all important capabilities together, check out the
+ // Sauce Labs platform configurator - a great tool to configure your capabilities:
+ // https://docs.saucelabs.com/reference/platforms-configurator
+ //
+ capabilities: {
+ browserA: {
+ desiredCapabilities: {
+ browserName: 'chrome',
+ chromeOptions: { args: [
+ 'use-fake-device-for-media-stream',
+ 'use-fake-ui-for-media-stream',
+ 'use-file-for-fake-video-capture=' + path.join(__dirname, '..', 'fixtures', 'sign_irene_qcif.y4m')
+ ]}
+ }
+ },
+ browserB: {
+ desiredCapabilities: {
+ browserName: 'chrome',
+ chromeOptions: { args: [
+ 'use-fake-device-for-media-stream',
+ 'use-fake-ui-for-media-stream',
+ 'use-file-for-fake-video-capture=' + path.join(__dirname, '..', 'fixtures', 'silent_qcif.y4m')
+ ]}
+ }
+ }
+ },
+ //
+ // ===================
+ // Test Configurations
+ // ===================
+ // Define all options that are relevant for the WebdriverIO instance here
+ //
+ // By default WebdriverIO commands are executed in a synchronous way using
+ // the wdio-sync package. If you still want to run your tests in an async way
+ // e.g. using promises you can set the sync option to false.
+ sync: true,
+ //
+ // Level of logging verbosity: silent | verbose | command | data | result | error
+ logLevel: 'silent',
+ //
+ // Enables colors for log output.
+ coloredLogs: true,
+ //
+ // Saves a screenshot to a given path if a command fails.
+ screenshotPath: './errorShots/',
+ //
+ // Set a base URL in order to shorten url command calls. If your url parameter starts
+ // with "/", then the base url gets prepended.
+ baseUrl: 'https://apprtc.appspot.com',
+ //
+ // Default timeout for all waitFor* commands.
+ waitforTimeout: 10000,
+ //
+ // Default timeout in milliseconds for request
+ // if Selenium Grid doesn't send response
+ connectionRetryTimeout: 90000,
+ //
+ // Default request retries count
+ connectionRetryCount: 3,
+ //
+ // Initialize the browser instance with a WebdriverIO plugin. The object should have the
+ // plugin name as key and the desired plugin options as properties. Make sure you have
+ // the plugin installed before running any tests. The following plugins are currently
+ // available:
+ // WebdriverCSS: https://github.com/webdriverio/webdrivercss
+ // WebdriverRTC: https://github.com/webdriverio/webdriverrtc
+ // Browserevent: https://github.com/webdriverio/browserevent
+ plugins: {
+ webdriverrtc: {
+ browser: 'browserA'
+ }
+ },
+ //
+ // Test runner services
+ // Services take over a specific job you don't want to take care of. They enhance
+ // your test setup with almost no effort. Unlike plugins, they don't add new
+ // commands. Instead, they hook themselves up into the test process.
+ // services: [],//
+ // Framework you want to run your specs with.
+ // The following are supported: Mocha, Jasmine, and Cucumber
+ // see also: http://webdriver.io/guide/testrunner/frameworks.html
+ //
+ // Make sure you have the wdio adapter package for the specific framework installed
+ // before running any tests.
+ framework: 'mocha',
+ //
+ // Test reporter for stdout.
+ // The only one supported by default is 'dot'
+ // see also: http://webdriver.io/guide/testrunner/reporters.html
+ reporters: ['dot'],
+ //
+ // Options to be passed to Mocha.
+ // See the full list at http://mochajs.org/
+ mochaOpts: {
+ ui: 'bdd',
+ timeout: 60000
+ }
+ //
+ // =====
+ // Hooks
+ // =====
+ // WebdriverIO provides several hooks you can use to interfere with the test process in order to enhance
+ // it and to build services around it. You can either apply a single function or an array of
+ // methods to it. If one of them returns with a promise, WebdriverIO will wait until that promise got
+ // resolved to continue.
+ //
+ // Gets executed once before all workers get launched.
+ // onPrepare: function (config, capabilities) {
+ // },
+ //
+ // Gets executed before test execution begins. At this point you can access all global
+ // variables, such as `browser`. It is the perfect place to define custom commands.
+ // before: function (capabilities, specs) {
+ // },
+ //
+ // Hook that gets executed before the suite starts
+ // beforeSuite: function (suite) {
+ // },
+ //
+ // Hook that gets executed _before_ a hook within the suite starts (e.g. runs before calling
+ // beforeEach in Mocha)
+ // beforeHook: function () {
+ // },
+ //
+ // Hook that gets executed _after_ a hook within the suite starts (e.g. runs after calling
+ // afterEach in Mocha)
+ // afterHook: function () {
+ // },
+ //
+ // Function to be executed before a test (in Mocha/Jasmine) or a step (in Cucumber) starts.
+ // beforeTest: function (test) {
+ // },
+ //
+ // Runs before a WebdriverIO command gets executed.
+ // beforeCommand: function (commandName, args) {
+ // },
+ //
+ // Runs after a WebdriverIO command gets executed
+ // afterCommand: function (commandName, args, result, error) {
+ // },
+ //
+ // Function to be executed after a test (in Mocha/Jasmine) or a step (in Cucumber) starts.
+ // afterTest: function (test) {
+ // },
+ //
+ // Hook that gets executed after the suite has ended
+ // afterSuite: function (suite) {
+ // },
+ //
+ // Gets executed after all tests are done. You still have access to all global variables from
+ // the test.
+ // after: function (result, capabilities, specs) {
+ // },
+ //
+ // Gets executed after all workers got shut down and the process is about to exit. It is not
+ // possible to defer the end of the process using a promise.
+ // onComplete: function(exitCode) {
+ // }
+}
View
@@ -53,6 +53,8 @@
"grunt-npm": "0.0.2",
"load-grunt-tasks": "^3.5.2",
"mocha": "^3.0.2",
+ "wdio-dot-reporter": "0.0.6",
+ "wdio-mocha-framework": "^0.4.0",
"webdriverio": "^4.2.5"
},
"dependencies": {

0 comments on commit 389eff2

Please sign in to comment.