wd-sync

sync version of wd using fibers.

Usage no npm install needed!

<script type="module">
  import wdSync from 'https://cdn.skypack.dev/wd-sync';
</script>

README

wd-sync

A synchronous version with a nice api of wd, the lightweight WebDriver / Selenium2 client for node.js, built using node-fibers.

Site

Note: headless zombie was removed in 1.1.0

status

Build Status Selenium Test Status

Selenium Test Status

install

npm install wd-sync

code samples

CoffeeScript

# assumes that selenium server is running

wdSync = require 'wd-sync'

# 1/ simple Wd example

{browser, sync} = wdSync.remote()

sync ->
  console.log "server status:", @status()
  @init browserName:'firefox'
  console.log "session id:", @getSessionId()
  console.log "session capabilities:", @sessionCapabilities()

  @get "http://google.com"
  console.log @title()

  queryField = @elementByName 'q'
  @type queryField, "Hello World"
  @type queryField, "\n"

  @setWaitTimeout 3000
  @elementByCss '#ires' # waiting for new page to load
  console.log @title()

  console.log @elementByNameIfExists 'not_exists' # undefined

  @quit()

JavaScript

// assumes that selenium server is running

var wdSync = require('wd-sync');

// 1/ simple Wd example

var client = wdSync.remote()
    , browser = client.browser
    , sync = client.sync;

sync( function() {

  console.log("server status:", browser.status());
  browser.init( { browserName: 'firefox'} );
  console.log("session id:", browser.getSessionId());
  console.log("session capabilities:", browser.sessionCapabilities());

  browser.get("http://google.com");
  console.log(browser.title());

  var queryField = browser.elementByName('q');
  browser.type(queryField, "Hello World");
  browser.type(queryField, "\n");

  browser.setWaitTimeout(3000);
  browser.elementByCss('#ires'); // waiting for new page to load
  console.log(browser.title());

  console.log(browser.elementByNameIfExists('not_exists')); // undefined

  browser.quit();

});

doc

Note: Doc and README modifications must be done in the doc/template directory.

examples

api

supported

full JsonWireProtocol mapping

available environments

WebDriver

local WebDriver / Selenium2 server

Sauce Labs

Remote testing with Sauce Labs.

running tests

local / selenium server:

1/ Install and start Selenium server

./node_modules/.bin/install_selenium
./node_modules/.bin/install_chromedriver
./node_modules/.bin/start_selenium_with_chromedriver

2/ run tests

make test 

remote / Sauce Labs

1/ configure sauce environment

export SAUCE_USERNAME=<SAUCE_USERNAME>
export SAUCE_ACCESS_KEY=<SAUCE_ACCESS_KEY>
# if using sauce connect
./node_modules/.bin/install_sauce_connect
./node_modules/.bin/start_sauce_connect

2/ run tests

make test_e2e_sauce
make test_midway_sauce_connect

building doc/mapping

README + doc

1/ Update the templates

2/ run make build_doc

mappings

1/ Upgrade wd

2/ run make build_mapping

publishing

npm version [patch|minor|major]
git push --tags origin master
npm publish