cabbie-sync
Version:
A synchronous webdriver client
349 lines (235 loc) • 12.2 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.TimeOutType = exports.SelectorType = exports.MouseButton = exports.Mode = exports.LogSource = exports.LogLevel = exports.KeyboardKey = exports.Capability = exports.BrowserOrientation = exports.ApplicationCacheStatus = exports.WindowHandle = exports.Touch = exports.TimeOut = exports.SessionStorage = exports.Navigator = exports.Mouse = exports.LocalStorage = exports.IME = exports.GlobalTouch = exports.GlobalMouse = exports.Frame = exports.Element = exports.CookieStorage = exports.Browser = exports.Alert = exports.ActiveWindow = exports.TimeOutTypes = exports.SelectorTypes = exports.MouseButtons = exports.Modes = exports.LogSources = exports.LogLevels = exports.KeyboardKeys = exports.Capabilities = exports.BrowserOrientations = exports.ApplicationCacheStatuses = exports.waitFor = exports.Options = exports.Status = exports.Driver = exports.Debug = exports.Connection = undefined;
exports.default = createCabbieDriver;
exports.getSessions = getSessions;
exports.getStatus = getStatus;
exports.startChromedriver = startChromedriver;
var _applicationCacheStatuses = require('./enums/application-cache-statuses.js');
var _applicationCacheStatuses2 = _interopRequireDefault(_applicationCacheStatuses);
var _browserOrientations = require('./enums/browser-orientations.js');
var _browserOrientations2 = _interopRequireDefault(_browserOrientations);
var _capabilities = require('./enums/capabilities.js');
var _capabilities2 = _interopRequireDefault(_capabilities);
var _keyboardKeys = require('./enums/keyboard-keys.js');
var _keyboardKeys2 = _interopRequireDefault(_keyboardKeys);
var _logLevels = require('./enums/log-levels.js');
var _logLevels2 = _interopRequireDefault(_logLevels);
var _logSources = require('./enums/log-sources.js');
var _logSources2 = _interopRequireDefault(_logSources);
var _modes = require('./enums/modes.js');
var _modes2 = _interopRequireDefault(_modes);
var _mouseButtons = require('./enums/mouse-buttons.js');
var _mouseButtons2 = _interopRequireDefault(_mouseButtons);
var _selectorTypes = require('./enums/selector-types.js');
var _selectorTypes2 = _interopRequireDefault(_selectorTypes);
var _timeOutTypes = require('./enums/time-out-types.js');
var _timeOutTypes2 = _interopRequireDefault(_timeOutTypes);
var _activeWindow = require('./active-window.js');
var _activeWindow2 = _interopRequireDefault(_activeWindow);
var _alert = require('./alert.js');
var _alert2 = _interopRequireDefault(_alert);
var _browser = require('./browser.js');
var _browser2 = _interopRequireDefault(_browser);
var _cookieStorage = require('./cookie-storage.js');
var _cookieStorage2 = _interopRequireDefault(_cookieStorage);
var _element = require('./element.js');
var _element2 = _interopRequireDefault(_element);
var _frame = require('./frame.js');
var _frame2 = _interopRequireDefault(_frame);
var _globalMouse = require('./global-mouse.js');
var _globalMouse2 = _interopRequireDefault(_globalMouse);
var _globalTouch = require('./global-touch.js');
var _globalTouch2 = _interopRequireDefault(_globalTouch);
var _ime = require('./ime.js');
var _ime2 = _interopRequireDefault(_ime);
var _localStorage = require('./local-storage.js');
var _localStorage2 = _interopRequireDefault(_localStorage);
var _mouse = require('./mouse.js');
var _mouse2 = _interopRequireDefault(_mouse);
var _navigator = require('./navigator.js');
var _navigator2 = _interopRequireDefault(_navigator);
var _sessionStorage = require('./session-storage.js');
var _sessionStorage2 = _interopRequireDefault(_sessionStorage);
var _timeOut = require('./time-out.js');
var _timeOut2 = _interopRequireDefault(_timeOut);
var _touch = require('./touch.js');
var _touch2 = _interopRequireDefault(_touch);
var _windowHandle = require('./window-handle.js');
var _windowHandle2 = _interopRequireDefault(_windowHandle);
var _options = require('./flow-types/options');
var _sessionData = require('./flow-types/session-data');
var _connection = require('./connection');
var _connection2 = _interopRequireDefault(_connection);
var _debug = require('./debug');
var _debug2 = _interopRequireDefault(_debug);
var _driver = require('./driver');
var _driver2 = _interopRequireDefault(_driver);
var _parseResponse = require('./utils/parse-response');
var _parseResponse2 = _interopRequireDefault(_parseResponse);
var _status = require('./status');
var _status2 = _interopRequireDefault(_status);
var _waitFor = require('./utils/wait-for');
var _waitFor2 = _interopRequireDefault(_waitFor);
var _flowRuntime = require('flow-runtime');
var _flowRuntime2 = _interopRequireDefault(_flowRuntime);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Session = _flowRuntime2.default.tdz(function () {
return _sessionData.Session;
}); /**
*
* This file is generated automatically, run npm run build to re-generate.
**/
var Options = _flowRuntime2.default.tdz(function () {
return _options.Options;
});
var TimeOutType = _flowRuntime2.default.tdz(function () {
return _timeOutTypes2.default;
});
var SelectorType = _flowRuntime2.default.tdz(function () {
return _selectorTypes2.default;
});
var MouseButton = _flowRuntime2.default.tdz(function () {
return _mouseButtons2.default;
});
var Mode = _flowRuntime2.default.tdz(function () {
return _modes2.default;
});
var LogSource = _flowRuntime2.default.tdz(function () {
return _logSources2.default;
});
var LogLevel = _flowRuntime2.default.tdz(function () {
return _logLevels2.default;
});
var KeyboardKey = _flowRuntime2.default.tdz(function () {
return _keyboardKeys2.default;
});
var Capability = _flowRuntime2.default.tdz(function () {
return _capabilities2.default;
});
var BrowserOrientation = _flowRuntime2.default.tdz(function () {
return _browserOrientations2.default;
});
var ApplicationCacheStatus = _flowRuntime2.default.tdz(function () {
return _applicationCacheStatuses2.default;
});
exports.Connection = _connection2.default;
exports.Debug = _debug2.default;
exports.Driver = _driver2.default;
exports.Status = _status2.default;
/*
* Create a new cabbie Driver. See [getting started](/getting-started) for examples.
*/
function createCabbieDriver(remote /*: string*/) /*: Driver*/ {
var options /*: Options*/ = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _remoteType = _flowRuntime2.default.string();
var _optionsType = _flowRuntime2.default.ref(Options);
var _returnType = _flowRuntime2.default.return(_flowRuntime2.default.ref(_driver2.default));
_flowRuntime2.default.param('remote', _remoteType).assert(remote);
_flowRuntime2.default.param('options', _optionsType).assert(options);
return _returnType.assert(new _driver2.default(remote, options));
}
_flowRuntime2.default.annotate(createCabbieDriver, _flowRuntime2.default.function(_flowRuntime2.default.param('remote', _flowRuntime2.default.string()), _flowRuntime2.default.param('options', _flowRuntime2.default.ref(Options)), _flowRuntime2.default.return(_flowRuntime2.default.ref(_driver2.default))));
exports.Options = Options;
/*
* Returns a list of the currently active sessions
*
* Note: Appears not to be supported by the selenium-standalone-server!
*/
function getSessions(remote /*: string*/) /*: Array<Session>*/ {
var options /*: Options*/ = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _remoteType2 = _flowRuntime2.default.string();
var _optionsType2 = _flowRuntime2.default.ref(Options);
var _returnType2 = _flowRuntime2.default.return(_flowRuntime2.default.array(_flowRuntime2.default.ref(Session)));
_flowRuntime2.default.param('remote', _remoteType2).assert(remote);
_flowRuntime2.default.param('options', _optionsType2).assert(options);
var connection = new _connection2.default(remote, remote, new _debug2.default(options));
var rawSessions = connection.request('GET', '/sessions');
var sessions = (0, _parseResponse2.default)(rawSessions);
return _returnType2.assert(sessions.map(function (session) {
return { sessionID: session.id, capabilities: session.capabilities };
}));
}
/*
* Gets the selenium-system status
*/
_flowRuntime2.default.annotate(getSessions, _flowRuntime2.default.function(_flowRuntime2.default.param('remote', _flowRuntime2.default.string()), _flowRuntime2.default.param('options', _flowRuntime2.default.ref(Options)), _flowRuntime2.default.return(_flowRuntime2.default.array(_flowRuntime2.default.ref(Session)))));
function getStatus(remote /*: string*/) /*: Status*/ {
var options /*: Options*/ = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var _remoteType3 = _flowRuntime2.default.string();
var _optionsType3 = _flowRuntime2.default.ref(Options);
var _returnType3 = _flowRuntime2.default.return(_flowRuntime2.default.ref(_status2.default));
_flowRuntime2.default.param('remote', _remoteType3).assert(remote);
_flowRuntime2.default.param('options', _optionsType3).assert(options);
var connection = new _connection2.default(remote, remote, new _debug2.default(options));
var rawResponse = connection.request('GET', '/status');
var response = (0, _parseResponse2.default)(rawResponse);
return _returnType3.assert(new _status2.default(response));
}
_flowRuntime2.default.annotate(getStatus, _flowRuntime2.default.function(_flowRuntime2.default.param('remote', _flowRuntime2.default.string()), _flowRuntime2.default.param('options', _flowRuntime2.default.ref(Options)), _flowRuntime2.default.return(_flowRuntime2.default.ref(_status2.default))));
var chromedriverRunning = false;
/*
* Start a chromedriver instance. You must have installed chromedriver to use this:
*
* ```
* npm install chromedriver --save-dev
* ```
*/
function startChromedriver() /*: void*/ {
var _returnType4 = _flowRuntime2.default.return(_flowRuntime2.default.void());
if (chromedriverRunning) {
return _returnType4.assert();
}
var chromedriver = void 0;
try {
chromedriver = _flowRuntime2.default.any().assert(require)('chromedriver');
} catch (ex) {
throw new Error('You must install the chromedriver module via "npm install chromedriver --save-dev" to call ' + 'cabbie.startChromedriver();');
}
var cd = chromedriver;
cd.start().unref();
process.once('exit', function (code) {
cd.stop();
});
chromedriverRunning = true;
}
_flowRuntime2.default.annotate(startChromedriver, _flowRuntime2.default.function(_flowRuntime2.default.return(_flowRuntime2.default.void())));
exports.waitFor = _waitFor2.default;
exports.ApplicationCacheStatuses = _applicationCacheStatuses2.default;
exports.BrowserOrientations = _browserOrientations2.default;
exports.Capabilities = _capabilities2.default;
exports.KeyboardKeys = _keyboardKeys2.default;
exports.LogLevels = _logLevels2.default;
exports.LogSources = _logSources2.default;
exports.Modes = _modes2.default;
exports.MouseButtons = _mouseButtons2.default;
exports.SelectorTypes = _selectorTypes2.default;
exports.TimeOutTypes = _timeOutTypes2.default;
exports.ActiveWindow = _activeWindow2.default;
exports.Alert = _alert2.default;
exports.Browser = _browser2.default;
exports.CookieStorage = _cookieStorage2.default;
exports.Element = _element2.default;
exports.Frame = _frame2.default;
exports.GlobalMouse = _globalMouse2.default;
exports.GlobalTouch = _globalTouch2.default;
exports.IME = _ime2.default;
exports.LocalStorage = _localStorage2.default;
exports.Mouse = _mouse2.default;
exports.Navigator = _navigator2.default;
exports.SessionStorage = _sessionStorage2.default;
exports.TimeOut = _timeOut2.default;
exports.Touch = _touch2.default;
exports.WindowHandle = _windowHandle2.default;
exports.ApplicationCacheStatus = ApplicationCacheStatus;
exports.BrowserOrientation = BrowserOrientation;
exports.Capability = Capability;
exports.KeyboardKey = KeyboardKey;
exports.LogLevel = LogLevel;
exports.LogSource = LogSource;
exports.Mode = Mode;
exports.MouseButton = MouseButton;
exports.SelectorType = SelectorType;
exports.TimeOutType = TimeOutType;