@applitools/spec-driver-selenium 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
3
3
  ## Unreleased
4
4
 
5
5
 
6
+ ## 1.3.1 - 2022/1/12
7
+
8
+ - use chromedriver instead of selenium docker container for testing
9
+ - fix tests for selenium 3
10
+ - fix `getCapabilities` for selenium 3
11
+ - updated to @applitools/types@1.0.23 (from 1.0.20)
12
+ - updated to @applitools/utils@1.2.11 (from 1.2.4)
13
+
6
14
  ## 1.3.0 - 2021/11/17
7
15
 
8
16
  - implement `getCapabilities` and `getBarsHeight` instead of `getDriverInfo`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applitools/spec-driver-selenium",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "keywords": [
5
5
  "selenium",
6
6
  "selenium-webdriver",
@@ -41,9 +41,11 @@
41
41
  "lint": "eslint '**/*.ts'",
42
42
  "build": "ttsc",
43
43
  "test": "mocha ./test/**/*.spec.ts --no-timeouts -r ts-node/register -r @applitools/test-utils/mocha-hooks/docker",
44
- "setup": "yarn docker:setup",
44
+ "setup": "yarn chromedriver:setup",
45
+ "chromedriver:setup": "chromedriver --port=4444 --url-base=/wd/hub &",
45
46
  "docker:setup": "node ../scripts/scripts/generate-docker-compose-config.js && docker-compose up -d",
46
47
  "docker:teardown": "docker-compose down",
48
+ "upgrade:framework": "if [ ! -z $APPLITOOLS_SELENIUM_MAJOR_VERSION ]; then packagejson=`cat package.json`; yarn upgrade --no-lockfile selenium-webdriver@$APPLITOOLS_SELENIUM_MAJOR_VERSION; echo \"$packagejson\" > package.json; fi",
47
49
  "deps": "bongo deps",
48
50
  "gh:test": "gh workflow run test.yml --ref $(git rev-parse --abbrev-ref HEAD) -f packages='spec-selenium spec-selenium@3' -f links='types utils test-utils'",
49
51
  "gh:publish": "gh workflow run publish.yml --ref $(git rev-parse --abbrev-ref HEAD) -f packages='spec-selenium'",
@@ -57,19 +59,20 @@
57
59
  }
58
60
  },
59
61
  "dependencies": {
60
- "@applitools/types": "1.0.20",
61
- "@applitools/utils": "1.2.4"
62
+ "@applitools/types": "1.0.23",
63
+ "@applitools/utils": "1.2.11"
62
64
  },
63
65
  "devDependencies": {
64
- "@applitools/api-extractor": "^1.2.3",
65
- "@applitools/scripts": "1.0.1",
66
- "@applitools/sdk-release-kit": "0.13.4",
67
- "@applitools/test-utils": "1.0.9",
66
+ "@applitools/api-extractor": "^1.2.6",
67
+ "@applitools/scripts": "1.1.0",
68
+ "@applitools/sdk-release-kit": "0.13.10",
69
+ "@applitools/test-utils": "1.0.10",
68
70
  "@types/mocha": "^9.0.0",
69
71
  "@types/node": "^16.10.2",
70
72
  "@types/selenium-webdriver": "^4.0.15",
71
73
  "@typescript-eslint/eslint-plugin": "^4.15.1",
72
74
  "@typescript-eslint/parser": "^4.15.1",
75
+ "chromedriver": "^96",
73
76
  "eslint": "^7.9.0",
74
77
  "eslint-config-prettier": "^7.2.0",
75
78
  "eslint-plugin-mocha-no-only": "^1.1.1",
@@ -78,10 +81,10 @@
78
81
  "husky": "^4.3.7",
79
82
  "mocha": "^9.1.2",
80
83
  "prettier": "^2.4.1",
81
- "selenium-webdriver": "^4.0.0",
84
+ "selenium-webdriver": "^4.1.1",
82
85
  "ts-node": "^10.2.1",
83
86
  "ttypescript": "^1.5.12",
84
- "typescript": "^4.5.1-rc"
87
+ "typescript": "^4.5.4"
85
88
  },
86
89
  "peerDependencies": {
87
90
  "selenium-webdriver": ">=3.6.0"
package/dist/index.js DELETED
@@ -1,37 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
22
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
23
- };
24
- Object.defineProperty(exports, "__esModule", { value: true });
25
- const spec = __importStar(require("./spec-driver"));
26
- if (!process.env.APPLITOOLS_SELENIUM_MAJOR_VERSION) {
27
- try {
28
- const { version } = require('selenium-webdriver/package.json');
29
- const [major] = version.split('.', 1);
30
- process.env.APPLITOOLS_SELENIUM_MAJOR_VERSION = major;
31
- }
32
- catch (_a) {
33
- // NOTE: ignore error
34
- }
35
- }
36
- __exportStar(require("./spec-driver"), exports);
37
- exports.default = spec;
@@ -1,380 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __rest = (this && this.__rest) || function (s, e) {
22
- var t = {};
23
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
24
- t[p] = s[p];
25
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
26
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
27
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
28
- t[p[i]] = s[p[i]];
29
- }
30
- return t;
31
- };
32
- Object.defineProperty(exports, "__esModule", { value: true });
33
- exports.build = exports.performAction = exports.getElementText = exports.getElementAttribute = exports.getElementRegion = exports.getOrientation = exports.getBarsHeight = exports.waitUntilDisplayed = exports.scrollIntoView = exports.type = exports.hover = exports.click = exports.takeScreenshot = exports.visit = exports.getUrl = exports.getTitle = exports.getCapabilities = exports.getDriverInfo = exports.getCookies = exports.setWindowSize = exports.getWindowSize = exports.findElements = exports.findElement = exports.childContext = exports.parentContext = exports.mainContext = exports.executeScript = exports.isEqualElements = exports.isStaleElementError = exports.transformSelector = exports.transformDriver = exports.isSelector = exports.isElement = exports.isDriver = void 0;
34
- const utils = __importStar(require("@applitools/utils"));
35
- // #region HELPERS
36
- const byHash = ['className', 'css', 'id', 'js', 'linkText', 'name', 'partialLinkText', 'tagName', 'xpath'];
37
- function extractElementId(element) {
38
- return element.getId();
39
- }
40
- // #endregion
41
- // #region UTILITY
42
- function isDriver(driver) {
43
- return utils.types.instanceOf(driver, 'WebDriver');
44
- }
45
- exports.isDriver = isDriver;
46
- function isElement(element) {
47
- return utils.types.instanceOf(element, 'WebElement');
48
- }
49
- exports.isElement = isElement;
50
- function isSelector(selector) {
51
- if (!selector)
52
- return false;
53
- return utils.types.has(selector, ['using', 'value']) || byHash.includes(Object.keys(selector)[0]);
54
- }
55
- exports.isSelector = isSelector;
56
- function transformDriver(driver) {
57
- driver.getExecutor().defineCommand('getSessionDetails', 'GET', '/session/:sessionId');
58
- driver.getExecutor().defineCommand('getOrientation', 'GET', '/session/:sessionId/orientation');
59
- driver.getExecutor().defineCommand('getSystemBars', 'GET', '/session/:sessionId/appium/device/system_bars');
60
- driver.getExecutor().defineCommand('performTouch', 'POST', '/session/:sessionId/touch/perform');
61
- driver.getExecutor().defineCommand('executeCdp', 'POST', '/session/:sessionId/chromium/send_command_and_get_result');
62
- if (process.env.APPLITOOLS_SELENIUM_MAJOR_VERSION === '3') {
63
- driver.getExecutor().defineCommand('switchToParentFrame', 'POST', '/session/:sessionId/frame/parent');
64
- }
65
- return driver;
66
- }
67
- exports.transformDriver = transformDriver;
68
- function transformSelector(selector) {
69
- if (utils.types.isString(selector)) {
70
- return { css: selector };
71
- }
72
- else if (utils.types.has(selector, 'selector')) {
73
- if (!utils.types.isString(selector.selector))
74
- return selector.selector;
75
- if (!utils.types.has(selector, 'type'))
76
- return { css: selector.selector };
77
- if (selector.type === 'css')
78
- return { css: selector.selector };
79
- else
80
- return { using: selector.type, value: selector.selector };
81
- }
82
- return selector;
83
- }
84
- exports.transformSelector = transformSelector;
85
- function isStaleElementError(error) {
86
- if (!error)
87
- return false;
88
- error = error.originalError || error;
89
- return error instanceof Error && error.name === 'StaleElementReferenceError';
90
- }
91
- exports.isStaleElementError = isStaleElementError;
92
- async function isEqualElements(_driver, element1, element2) {
93
- if (!element1 || !element2)
94
- return false;
95
- const elementId1 = await extractElementId(element1);
96
- const elementId2 = await extractElementId(element2);
97
- return elementId1 === elementId2;
98
- }
99
- exports.isEqualElements = isEqualElements;
100
- // #endregion
101
- // #region COMMANDS
102
- async function executeScript(driver, script, arg) {
103
- return driver.executeScript(script, arg);
104
- }
105
- exports.executeScript = executeScript;
106
- async function mainContext(driver) {
107
- await driver.switchTo().defaultContent();
108
- return driver;
109
- }
110
- exports.mainContext = mainContext;
111
- async function parentContext(driver) {
112
- if (process.env.APPLITOOLS_SELENIUM_MAJOR_VERSION === '3') {
113
- const { Command } = require('selenium-webdriver/lib/command');
114
- await driver.schedule(new Command('switchToParentFrame'));
115
- return driver;
116
- }
117
- await driver.switchTo().parentFrame();
118
- return driver;
119
- }
120
- exports.parentContext = parentContext;
121
- async function childContext(driver, element) {
122
- await driver.switchTo().frame(element);
123
- return driver;
124
- }
125
- exports.childContext = childContext;
126
- async function findElement(driver, selector, parent) {
127
- try {
128
- const root = parent !== null && parent !== void 0 ? parent : driver;
129
- return await root.findElement(selector);
130
- }
131
- catch (err) {
132
- if (err.name === 'NoSuchElementError')
133
- return null;
134
- else
135
- throw err;
136
- }
137
- }
138
- exports.findElement = findElement;
139
- async function findElements(driver, selector, parent) {
140
- const root = parent !== null && parent !== void 0 ? parent : driver;
141
- return root.findElements(selector);
142
- }
143
- exports.findElements = findElements;
144
- async function getWindowSize(driver) {
145
- try {
146
- const window = driver.manage().window();
147
- if (utils.types.isFunction(window.getSize)) {
148
- return await window.getSize();
149
- }
150
- else {
151
- const rect = await window.getRect();
152
- return { width: rect.width, height: rect.height };
153
- }
154
- }
155
- catch (err) {
156
- // workaround for Appium
157
- const cmd = require('selenium-webdriver/lib/command');
158
- return driver.execute(new cmd.Command(cmd.Name.GET_WINDOW_SIZE).setParameter('windowHandle', 'current'));
159
- }
160
- }
161
- exports.getWindowSize = getWindowSize;
162
- async function setWindowSize(driver, size) {
163
- const window = driver.manage().window();
164
- if (utils.types.isFunction(window.setRect)) {
165
- await window.setRect({ x: 0, y: 0, width: size.width, height: size.height });
166
- }
167
- else {
168
- await window.setPosition(0, 0);
169
- await window.setSize(size.width, size.height);
170
- }
171
- }
172
- exports.setWindowSize = setWindowSize;
173
- async function getCookies(driver, context) {
174
- if (context)
175
- return driver.manage().getCookies();
176
- let cookies;
177
- if (utils.types.isFunction(driver, 'sendAndGetDevToolsCommand')) {
178
- const response = await driver.sendAndGetDevToolsCommand('Network.getAllCookies');
179
- cookies = response.cookies;
180
- }
181
- else {
182
- const { Command } = require('selenium-webdriver/lib/command');
183
- const executeCdpCommand = new Command('executeCdp').setParameters({ cmd: 'Network.getAllCookies', params: {} });
184
- const response = process.env.APPLITOOLS_SELENIUM_MAJOR_VERSION === '3'
185
- ? await driver.schedule(executeCdpCommand)
186
- : await driver.execute(executeCdpCommand);
187
- cookies = response.cookies;
188
- }
189
- return cookies.map((cookie) => {
190
- const copy = Object.assign(Object.assign({}, cookie), { expiry: cookie.expires });
191
- delete copy.expires;
192
- delete copy.size;
193
- delete copy.priority;
194
- delete copy.session;
195
- delete copy.sameParty;
196
- delete copy.sourceScheme;
197
- delete copy.sourcePort;
198
- return copy;
199
- });
200
- }
201
- exports.getCookies = getCookies;
202
- async function getDriverInfo(driver) {
203
- const session = await driver.getSession();
204
- return { sessionId: session.getId() };
205
- }
206
- exports.getDriverInfo = getDriverInfo;
207
- async function getCapabilities(driver) {
208
- try {
209
- const { Command } = require('selenium-webdriver/lib/command');
210
- const getSessionDetailsCommand = new Command('getSessionDetails');
211
- return process.env.APPLITOOLS_SELENIUM_MAJOR_VERSION === '3'
212
- ? await driver.schedule(getSessionDetailsCommand)
213
- : await driver.execute(getSessionDetailsCommand);
214
- }
215
- catch (_a) {
216
- const capabilities = await driver.getCapabilities();
217
- return process.env.APPLITOOLS_SELENIUM_MAJOR_VERSION === '3'
218
- ? capabilities.toJSON()
219
- : Object.fromEntries(Array.from(capabilities.keys(), key => [key, capabilities.get(key)]));
220
- }
221
- }
222
- exports.getCapabilities = getCapabilities;
223
- async function getTitle(driver) {
224
- return driver.getTitle();
225
- }
226
- exports.getTitle = getTitle;
227
- async function getUrl(driver) {
228
- return driver.getCurrentUrl();
229
- }
230
- exports.getUrl = getUrl;
231
- async function visit(driver, url) {
232
- await driver.get(url);
233
- }
234
- exports.visit = visit;
235
- async function takeScreenshot(driver) {
236
- return driver.takeScreenshot();
237
- }
238
- exports.takeScreenshot = takeScreenshot;
239
- async function click(driver, element) {
240
- if (isSelector(element))
241
- element = await findElement(driver, element);
242
- await element.click();
243
- }
244
- exports.click = click;
245
- async function hover(driver, element) {
246
- if (isSelector(element))
247
- element = await findElement(driver, element);
248
- if (process.env.APPLITOOLS_SELENIUM_MAJOR_VERSION === '3') {
249
- const { ActionSequence } = require('selenium-webdriver');
250
- const action = new ActionSequence(driver);
251
- await action.mouseMove(element).perform();
252
- }
253
- else {
254
- await driver.actions().move({ origin: element }).perform();
255
- }
256
- }
257
- exports.hover = hover;
258
- async function type(driver, element, keys) {
259
- if (isSelector(element))
260
- element = await findElement(driver, element);
261
- await element.sendKeys(keys);
262
- }
263
- exports.type = type;
264
- async function scrollIntoView(driver, element, align = false) {
265
- if (isSelector(element))
266
- element = await findElement(driver, element);
267
- await driver.executeScript('arguments[0].scrollIntoView(arguments[1])', element, align);
268
- }
269
- exports.scrollIntoView = scrollIntoView;
270
- async function waitUntilDisplayed(driver, selector, timeout) {
271
- const { until } = require('selenium-webdriver');
272
- const element = await findElement(driver, selector);
273
- await driver.wait(until.elementIsVisible(element), timeout);
274
- }
275
- exports.waitUntilDisplayed = waitUntilDisplayed;
276
- // #endregion
277
- // #region MOBILE COMMANDS
278
- async function getBarsHeight(driver) {
279
- const { Command } = require('selenium-webdriver/lib/command');
280
- const getSystemBarsCommand = new Command('getSystemBars');
281
- const { statusBar, navigationBar } = process.env.APPLITOOLS_SELENIUM_MAJOR_VERSION === '3'
282
- ? await driver.schedule(getSystemBarsCommand)
283
- : await driver.execute(getSystemBarsCommand);
284
- return {
285
- statusBarHeight: statusBar.visible ? statusBar.height : 0,
286
- navigationBarHeight: navigationBar.visible ? navigationBar.height : 0,
287
- };
288
- }
289
- exports.getBarsHeight = getBarsHeight;
290
- async function getOrientation(driver) {
291
- const { Command } = require('selenium-webdriver/lib/command');
292
- const getOrientationCommand = new Command('getOrientation');
293
- const orientation = process.env.APPLITOOLS_SELENIUM_MAJOR_VERSION === '3'
294
- ? await driver.schedule(getOrientationCommand)
295
- : await driver.execute(getOrientationCommand);
296
- return orientation.toLowerCase();
297
- }
298
- exports.getOrientation = getOrientation;
299
- async function getElementRegion(_driver, element) {
300
- if (utils.types.isFunction(element.getRect)) {
301
- return element.getRect();
302
- }
303
- else {
304
- const { x, y } = await element.getLocation();
305
- const { width, height } = await element.getSize();
306
- return { x, y, width, height };
307
- }
308
- }
309
- exports.getElementRegion = getElementRegion;
310
- async function getElementAttribute(_driver, element, attr) {
311
- return element.getAttribute(attr);
312
- }
313
- exports.getElementAttribute = getElementAttribute;
314
- async function getElementText(_driver, element) {
315
- return element.getText();
316
- }
317
- exports.getElementText = getElementText;
318
- async function performAction(driver, steps) {
319
- const { Command } = require('selenium-webdriver/lib/command');
320
- const performTouchCommand = new Command('performTouch').setParameters({
321
- actions: steps.map((_a) => {
322
- var { action } = _a, options = __rest(_a, ["action"]);
323
- return ({ action, options });
324
- }),
325
- });
326
- if (process.env.APPLITOOLS_SELENIUM_MAJOR_VERSION === '3') {
327
- await driver.schedule(performTouchCommand);
328
- }
329
- else {
330
- await driver.execute(performTouchCommand);
331
- }
332
- }
333
- exports.performAction = performAction;
334
- // #endregion
335
- // #region TESTING
336
- const browserOptionsNames = {
337
- chrome: 'goog:chromeOptions',
338
- firefox: 'moz:firefoxOptions',
339
- };
340
- async function build(env) {
341
- var _a;
342
- const { Builder } = require('selenium-webdriver');
343
- const parseEnv = require('@applitools/test-utils/src/parse-env');
344
- const { browser, capabilities, url, attach, proxy, configurable = true, appium = false, args = [], headless, } = parseEnv(Object.assign(Object.assign({}, env), { legacy: (_a = env.legacy) !== null && _a !== void 0 ? _a : process.env.APPLITOOLS_SELENIUM_MAJOR_VERSION === '3' }));
345
- const desiredCapabilities = Object.assign({}, capabilities);
346
- if (configurable) {
347
- const browserOptionsName = browserOptionsNames[browser || desiredCapabilities.browserName];
348
- if (browserOptionsName) {
349
- const browserOptions = desiredCapabilities[browserOptionsName] || {};
350
- browserOptions.args = [...(browserOptions.args || []), ...args];
351
- if (headless)
352
- browserOptions.args.push('headless');
353
- if (attach) {
354
- browserOptions.debuggerAddress = attach === true ? 'localhost:9222' : attach;
355
- if (browser !== 'firefox')
356
- browserOptions.w3c = false;
357
- }
358
- desiredCapabilities[browserOptionsName] = browserOptions;
359
- }
360
- }
361
- if (appium && browser === 'chrome') {
362
- desiredCapabilities['appium:chromeOptions'] = { w3c: false };
363
- }
364
- const builder = new Builder().withCapabilities(desiredCapabilities);
365
- if (url && !attach)
366
- builder.usingServer(url.href);
367
- if (proxy) {
368
- builder.setProxy({
369
- proxyType: 'manual',
370
- httpProxy: proxy.http || proxy.server,
371
- sslProxy: proxy.https || proxy.server,
372
- ftpProxy: proxy.ftp,
373
- noProxy: proxy.bypass,
374
- });
375
- }
376
- const driver = await builder.build();
377
- return [driver, () => driver.quit()];
378
- }
379
- exports.build = build;
380
- // #endregion
package/types/index.d.ts DELETED
@@ -1,39 +0,0 @@
1
- declare const _default: import('@applitools/types').SpecDriver<Driver, Driver, Element, Selector>;
2
- export default _default;
3
- export function isDriver(driver: any): driver is Driver;
4
- export function isElement(element: any): element is Element;
5
- export function isSelector(selector: any): selector is Selector;
6
- export function transformDriver(driver: Driver): Driver;
7
- export function transformSelector(selector: Selector | (string | { selector: string | Selector; type?: string; })): Selector;
8
- export function isStaleElementError(error: any): boolean;
9
- export function isEqualElements(_driver: Driver, element1: Element, element2: Element): Promise<boolean>;
10
- export function executeScript(driver: Driver, script: string | ((arg: any) => any), arg: any): Promise<any>;
11
- export function mainContext(driver: Driver): Promise<Driver>;
12
- export function parentContext(driver: Driver): Promise<Driver>;
13
- export function childContext(driver: Driver, element: Element): Promise<Driver>;
14
- export function findElement(driver: Driver, selector: Selector, parent?: Element): Promise<Element>;
15
- export function findElements(driver: Driver, selector: Selector, parent?: Element): Promise<Array<Element>>;
16
- export function getWindowSize(driver: Driver): Promise<import('@applitools/types').Size>;
17
- export function setWindowSize(driver: Driver, size: import('@applitools/types').Size): Promise<void>;
18
- export function getCookies(driver: Driver, context?: boolean): Promise<Array<import('@applitools/types').Cookie>>;
19
- export function getDriverInfo(driver: Driver): Promise<import('@applitools/types').DriverInfo>;
20
- export function getCapabilities(driver: Driver): Promise<Record<string, any>>;
21
- export function getTitle(driver: Driver): Promise<string>;
22
- export function getUrl(driver: Driver): Promise<string>;
23
- export function visit(driver: Driver, url: string): Promise<void>;
24
- export function takeScreenshot(driver: Driver): Promise<string>;
25
- export function click(driver: Driver, element: Element | Selector): Promise<void>;
26
- export function hover(driver: Driver, element: Element | Selector): Promise<void>;
27
- export function type(driver: Driver, element: Element | Selector, keys: string): Promise<void>;
28
- export function scrollIntoView(driver: Driver, element: Element | Selector, align: boolean): Promise<void>;
29
- export function waitUntilDisplayed(driver: Driver, selector: Selector, timeout: number): Promise<void>;
30
- export function getBarsHeight(driver: Driver): Promise<{ statusBarHeight: number; navigationBarHeight: number; }>;
31
- export function getOrientation(driver: Driver): Promise<"portrait" | "landscape">;
32
- export function getElementRegion(_driver: Driver, element: Element): Promise<import('@applitools/types').Region>;
33
- export function getElementAttribute(_driver: Driver, element: Element, attr: string): Promise<string>;
34
- export function getElementText(_driver: Driver, element: Element): Promise<string>;
35
- export function performAction(driver: Driver, steps: Array<any>): Promise<void>;
36
- export function build(env: any): Promise<[Driver, () => Promise<void>]>;
37
- export type Driver = import('selenium-webdriver').WebDriver & { __applitoolsBrand?: never; };
38
- export type Element = import('selenium-webdriver').WebElement & { __applitoolsBrand?: never; };
39
- export type Selector = (import('selenium-webdriver').Locator | { using: string; value: string; }) & { __applitoolsBrand?: never; };