View Source

# module selenium-webdriver/testing

Provides wrappers around the following global functions from Mocha's BDD interface:

- after
- afterEach
- before
- beforeEach
- it
- it.only
- it.skip
- xit

The provided wrappers leverage the `webdriver.promise.ControlFlow` to simplify writing asynchronous tests:

    var By = require('selenium-webdriver').By,
        until = require('selenium-webdriver').until,
        firefox = require('selenium-webdriver/firefox'),
        test = require('selenium-webdriver/testing');

    test.describe('Google Search', function() {
      var driver;

      test.before(function() {
        driver = new firefox.Driver();
      });

      test.after(function() {
        driver.quit();
      });

      test.it('should append query to title', function() {
        driver.get('http://www.google.com/ncr');
        driver.findElement(By.name('q')).sendKeys('webdriver');
        driver.findElement(By.name('btnG')).click();
        driver.wait(until.titleIs('webdriver - Google Search'), 1000);
      });
    });

You may conditionally suppress a test function using the exported "ignore" function. If the provided predicate returns true, the attached test case will be skipped:

    test.ignore(maybe()).it('is flaky', function() {
      if (Math.random() < 0.5) throw Error();
    });

    function maybe() { return Math.random() < 0.5; }

## Functions

### after(fn)code »

Register a function to call after the current suite finishes.

Parameters

fn`function(): ?`

  .

### afterEach(fn)code »

Register a function to call after each test in a suite.

Parameters

fn`function(): ?`

  .

### before(fn)code »

Register a function to call before the current suite starts.

Parameters

fn`function(): ?`

  .

### beforeEach(fn)code »

Register a function to call before each test in a suite.

Parameters

fn`function(): ?`

  .

### describe(name, fn)code »

Registers a new test suite.

Parameters

name`string`

  The suite name.

fn`function(): ?=`

  The suite function, or `undefined` to define a pending test suite.

### ignore(predicateFn)code »

Ignores the test chained to this function if the provided predicate returns true.

Parameters

predicateFn`function(): boolean`

  A predicate to call to determine if the test should be suppressed. This function MUST be synchronous.

Returns

`Object`

  An object with wrapped versions of `#it()` and `#describe()` that ignore tests as indicated by the predicate.

### iit(name, fn)code »

An alias for `#it()` that flags the test as the only one that should be run within the current suite.

Parameters

name`string`

  The test name.

fn`function(): ?=`

  The test function, or `undefined` to define a pending test case.

### it(name, fn)code »

Add a test to the current suite.

Parameters

name`string`

  The test name.

fn`function(): ?=`

  The test function, or `undefined` to define a pending test case.

### xdescribe(name, fn)code »

Defines a suppressed test suite.

Parameters

name`string`

  The suite name.

fn`function(): ?=`

  The suite function, or `undefined` to define a pending test suite.

### xit(name, fn)code »

Adds a test to the current suite while suppressing it so it is not run.

Parameters

name`string`

  The test name.

fn`function(): ?=`

  The test function, or `undefined` to define a pending test case.