webdriverio 7.20.9 → 7.23.0

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.
@@ -1,3 +1,4 @@
1
+ import type { ElementReference } from '@wdio/protocols';
1
2
  import type { Selector, ElementArray } from '../../types';
2
3
  /**
3
4
  * The `$$` command is a short way to call the [`findElements`](/docs/api/webdriver#findelements) command in order
@@ -38,6 +39,14 @@ import type { Selector, ElementArray } from '../../types';
38
39
  })[0];
39
40
  console.log(await text.$$('li')[2].$('a').getText()); // outputs: "API"
40
41
  });
42
+
43
+ it('can create element array out of single elements', async () => {
44
+ const red = await $('.red');
45
+ const green = await $('.green');
46
+ const elems = $$([red, green]);
47
+ console.log(await elems.map((e) => e.getAttribute('class')));
48
+ // returns "[ 'box red ui-droppable', 'box green' ]"
49
+ });
41
50
  * </example>
42
51
  *
43
52
  * @alias $$
@@ -46,5 +55,5 @@ import type { Selector, ElementArray } from '../../types';
46
55
  * @type utility
47
56
  *
48
57
  */
49
- export default function $$(this: WebdriverIO.Browser | WebdriverIO.Element, selector: Selector): Promise<ElementArray>;
58
+ export default function $$(this: WebdriverIO.Browser | WebdriverIO.Element, selector: Selector | ElementReference[] | WebdriverIO.Element[]): Promise<ElementArray>;
50
59
  //# sourceMappingURL=$$.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"$$.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/$$.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAA8B,EAAE,CAC5B,IAAI,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,EAC/C,QAAQ,EAAE,QAAQ,yBAKrB"}
1
+ {"version":3,"file":"$$.d.ts","sourceRoot":"","sources":["../../../src/commands/browser/$$.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAIvD,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,wBAA8B,EAAE,CAC5B,IAAI,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,EAC/C,QAAQ,EAAE,QAAQ,GAAG,gBAAgB,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,yBAOlE"}
@@ -41,6 +41,14 @@ const getElementObject_1 = require("../../utils/getElementObject");
41
41
  })[0];
42
42
  console.log(await text.$$('li')[2].$('a').getText()); // outputs: "API"
43
43
  });
44
+
45
+ it('can create element array out of single elements', async () => {
46
+ const red = await $('.red');
47
+ const green = await $('.green');
48
+ const elems = $$([red, green]);
49
+ console.log(await elems.map((e) => e.getAttribute('class')));
50
+ // returns "[ 'box red ui-droppable', 'box green' ]"
51
+ });
44
52
  * </example>
45
53
  *
46
54
  * @alias $$
@@ -50,7 +58,9 @@ const getElementObject_1 = require("../../utils/getElementObject");
50
58
  *
51
59
  */
52
60
  async function $$(selector) {
53
- const res = await utils_1.findElements.call(this, selector);
61
+ const res = Array.isArray(selector)
62
+ ? selector
63
+ : await utils_1.findElements.call(this, selector);
54
64
  const elements = await getElementObject_1.getElements.call(this, selector, res);
55
65
  return (0, utils_1.enhanceElementsArray)(elements, this, selector);
56
66
  }
@@ -6,7 +6,7 @@
6
6
  :example.js
7
7
  it('should fetch the project title', async () => {
8
8
  await browser.url('https://webdriver.io')
9
- await browser.addLocatorStrategy('myStrat', (selector) => {
9
+ browser.addLocatorStrategy('myStrat', (selector) => {
10
10
  return document.querySelectorAll(selector)
11
11
  })
12
12
 
@@ -10,7 +10,7 @@ const constants_1 = require("../../constants");
10
10
  :example.js
11
11
  it('should fetch the project title', async () => {
12
12
  await browser.url('https://webdriver.io')
13
- await browser.addLocatorStrategy('myStrat', (selector) => {
13
+ browser.addLocatorStrategy('myStrat', (selector) => {
14
14
  return document.querySelectorAll(selector)
15
15
  })
16
16
 
@@ -1 +1 @@
1
- {"version":3,"file":"isClickable.d.ts","sourceRoot":"","sources":["../../../src/commands/element/isClickable.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAA8B,WAAW,CAAE,IAAI,EAAE,WAAW,CAAC,OAAO,oBAUnE"}
1
+ {"version":3,"file":"isClickable.d.ts","sourceRoot":"","sources":["../../../src/commands/element/isClickable.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAA8B,WAAW,CAAE,IAAI,EAAE,WAAW,CAAC,OAAO,oBAcnE"}
@@ -48,6 +48,9 @@ async function isClickable() {
48
48
  if (!await this.isDisplayed()) {
49
49
  return false;
50
50
  }
51
+ if (this.isMobile && await this.getContext() === 'NATIVE_APP') {
52
+ throw new Error('Method not supported in mobile native environment. It is unlikely that you need to use this command.');
53
+ }
51
54
  const browser = (0, utils_1.getBrowserObject)(this);
52
55
  return browser.execute(isElementClickable_1.default, {
53
56
  [constants_1.ELEMENT_KEY]: this.elementId,
@@ -1 +1 @@
1
- {"version":3,"file":"isEqual.d.ts","sourceRoot":"","sources":["../../../src/commands/element/isEqual.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAA8B,OAAO,CACjC,IAAI,EAAE,WAAW,CAAC,OAAO,EACzB,EAAE,EAAE,WAAW,CAAC,OAAO,oBAwB1B"}
1
+ {"version":3,"file":"isEqual.d.ts","sourceRoot":"","sources":["../../../src/commands/element/isEqual.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAA8B,OAAO,CACjC,IAAI,EAAE,WAAW,CAAC,OAAO,EACzB,EAAE,EAAE,WAAW,CAAC,OAAO,oBA4B1B"}
@@ -33,7 +33,10 @@ async function isEqual(el) {
33
33
  // mobile native
34
34
  if (browser.isMobile) {
35
35
  const context = await browser.getContext();
36
- if (context === null || context === void 0 ? void 0 : context.toLowerCase().includes('native')) {
36
+ const contextId = typeof context === 'string'
37
+ ? context
38
+ : context === null || context === void 0 ? void 0 : context.id;
39
+ if (contextId && contextId.toLowerCase().includes('native')) {
37
40
  return this.elementId === el.elementId;
38
41
  }
39
42
  }
@@ -121,7 +121,7 @@ const findStrategy = function (selector, isW3C, isMobile) {
121
121
  // user has specified locator strategy directly
122
122
  case 'directly': {
123
123
  const match = stringSelector.match(DIRECT_SELECTOR_REGEXP);
124
- if (!match || !isMobile && isW3C && !constants_1.W3C_SELECTOR_STRATEGIES.includes(match[1])) {
124
+ if (!match) {
125
125
  throw new Error('InvalidSelectorStrategy'); // ToDo: move error to wdio-error package
126
126
  }
127
127
  using = match[1];
@@ -13,5 +13,5 @@ export declare const getElement: (this: WebdriverIO.Browser | WebdriverIO.Elemen
13
13
  * @param {Object} res findElements response
14
14
  * @return {Array} array of WDIO elements
15
15
  */
16
- export declare const getElements: (this: WebdriverIO.Browser | WebdriverIO.Element, selector: Selector, elemResponse: ElementReference[], isReactElement?: boolean) => ElementArray;
16
+ export declare const getElements: (this: WebdriverIO.Browser | WebdriverIO.Element, selector: Selector | ElementReference[] | WebdriverIO.Element[], elemResponse: ElementReference[], isReactElement?: boolean) => ElementArray;
17
17
  //# sourceMappingURL=getElementObject.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getElementObject.d.ts","sourceRoot":"","sources":["../../src/utils/getElementObject.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAKvD,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEtD;;;;;GAKG;AACH,eAAO,MAAM,UAAU,SACb,YAAY,OAAO,GAAG,mBAAmB,aACpC,QAAQ,QACb,gBAAgB,GAAG,KAAK,+BAE/B,mBA8CF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,SACd,YAAY,OAAO,GAAG,mBAAmB,YACrC,QAAQ,gBACJ,gBAAgB,EAAE,+BAEjC,YA+CF,CAAA"}
1
+ {"version":3,"file":"getElementObject.d.ts","sourceRoot":"","sources":["../../src/utils/getElementObject.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAKvD,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEtD;;;;;GAKG;AACH,eAAO,MAAM,UAAU,SACb,YAAY,OAAO,GAAG,mBAAmB,aACpC,QAAQ,QACb,gBAAgB,GAAG,KAAK,+BAE/B,mBA8CF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,SACd,YAAY,OAAO,GAAG,mBAAmB,YACrC,QAAQ,GAAG,gBAAgB,EAAE,GAAG,mBAAmB,EAAE,gBACjD,gBAAgB,EAAE,+BAEjC,YAwDF,CAAA"}
@@ -70,6 +70,12 @@ const getElements = function getElements(selector, elemResponse, isReactElement
70
70
  ...(0, _1.getPrototype)('element')
71
71
  };
72
72
  const elements = elemResponse.map((res, i) => {
73
+ /**
74
+ * if we already deal with an element, just return it
75
+ */
76
+ if (res.selector) {
77
+ return res;
78
+ }
73
79
  propertiesObject.scope = { value: 'element' };
74
80
  const element = (0, utils_1.webdriverMonad)(this.options, (client) => {
75
81
  const elementId = (0, _1.getElementFromResponse)(res);
@@ -87,7 +93,9 @@ const getElements = function getElements(selector, elemResponse, isReactElement
87
93
  else {
88
94
  client.error = res;
89
95
  }
90
- client.selector = selector;
96
+ client.selector = Array.isArray(selector)
97
+ ? selector[i].selector
98
+ : selector;
91
99
  client.parent = this;
92
100
  client.index = i;
93
101
  client.emit = this.emit.bind(this);
@@ -79,7 +79,7 @@ export declare function addLocatorStrategyHandler(scope: WebdriverIO.Browser | W
79
79
  * @param {Array} props additional properties required to fetch elements again
80
80
  * @returns {object[]} elements
81
81
  */
82
- export declare const enhanceElementsArray: (elements: ElementArray, parent: WebdriverIO.Browser | WebdriverIO.Element, selector: Selector, foundWith?: string, props?: any[]) => ElementArray;
82
+ export declare const enhanceElementsArray: (elements: ElementArray, parent: WebdriverIO.Browser | WebdriverIO.Element, selector: Selector | ElementReference[] | WebdriverIO.Element[], foundWith?: string, props?: any[]) => ElementArray;
83
83
  /**
84
84
  * is protocol stub
85
85
  * @param {string} automationProtocol
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,aAAa,CAAA;AAKxD,OAAO,KAAK,EAAE,YAAY,EAAmB,QAAQ,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAA;AAsBjH;;GAEG;AACH,eAAO,MAAM,YAAY,UAAW,SAAS,GAAG,SAAS,uCAmBxD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QAAS,gBAAgB,QAuB3D,CAAA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAE,IAAI,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAGtG;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAE,KAAK,EAAE,GAAG,EAAE,kBAAkB,UAAO,YA0B3E;AAWD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,kBAkDvE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CACxB,KAAK,EAAE,MAAM,EACb,UAAU,UAAQ,YAKrB;AAkBD;;GAEG;AACH,wBAAsB,WAAW,CAC7B,IAAI,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,EAC/C,QAAQ,EAAE,QAAQ,qCAmDrB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAC9B,IAAI,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,EAC/C,QAAQ,EAAE,QAAQ,+BAgDrB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,GAAG,OAkBpD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,iDAuC9D;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,UAInD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,QAIrD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAcnE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAE,KAAK,EAAE,WAAW,CAAC,OAAO;;;GAK5D;AAED,wBAAsB,YAAY,CAAE,OAAO,EAAE,WAAW,CAAC,OAAO,oBAkB/D;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,kBAAkB,UACnF,MAAM,mBAAmB,MAAM,SAAS,WAAW,KAAK,wBAAwB,UAOjG;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,aACnB,YAAY,UACd,YAAY,OAAO,GAAG,mBAAmB,YACvC,QAAQ,8BAEX,GAAG,EAAE,iBAOf,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,MAAM,wBAAyB,MAAM,YAA6C,CAAA;AAE/F,eAAO,MAAM,qBAAqB,WAAkB,mBAAmB,GAAG,QAAQ,UAAU,wCAmE3F,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,WAAkB,mBAAmB,GAAG,QAAQ,UAAU,uBAAuB,QAAQ,kBAAkB,kBAIzI,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,SACvB,OAAO,MAAM,EAAE,MAAM,CAAC,SACrB,OAAO,MAAM,EAAE,MAAM,CAAC,YAShC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,aAAa,CAAA;AAKxD,OAAO,KAAK,EAAE,YAAY,EAAmB,QAAQ,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAA;AAsBjH;;GAEG;AACH,eAAO,MAAM,YAAY,UAAW,SAAS,GAAG,SAAS,uCAmBxD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QAAS,gBAAgB,QAuB3D,CAAA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAE,IAAI,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAGtG;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAE,KAAK,EAAE,GAAG,EAAE,kBAAkB,UAAO,YA0B3E;AAWD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,kBAkDvE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CACxB,KAAK,EAAE,MAAM,EACb,UAAU,UAAQ,YAKrB;AAkBD;;GAEG;AACH,wBAAsB,WAAW,CAC7B,IAAI,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,EAC/C,QAAQ,EAAE,QAAQ,qCAmDrB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAC9B,IAAI,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,EAC/C,QAAQ,EAAE,QAAQ,+BAgDrB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,GAAG,OAkBpD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,iDAuC9D;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,UAInD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,QAIrD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAcnE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAE,KAAK,EAAE,WAAW,CAAC,OAAO;;;GAK5D;AAED,wBAAsB,YAAY,CAAE,OAAO,EAAE,WAAW,CAAC,OAAO,oBAkB/D;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,kBAAkB,UACnF,MAAM,mBAAmB,MAAM,SAAS,WAAW,KAAK,wBAAwB,UAOjG;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,aACnB,YAAY,UACd,YAAY,OAAO,GAAG,mBAAmB,YACvC,QAAQ,GAAG,gBAAgB,EAAE,GAAG,mBAAmB,EAAE,8BAExD,GAAG,EAAE,iBAcf,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,MAAM,wBAAyB,MAAM,YAA6C,CAAA;AAE/F,eAAO,MAAM,qBAAqB,WAAkB,mBAAmB,GAAG,QAAQ,UAAU,wCAmE3F,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,WAAkB,mBAAmB,GAAG,QAAQ,UAAU,uBAAuB,QAAQ,kBAAkB,kBAIzI,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,SACvB,OAAO,MAAM,EAAE,MAAM,CAAC,SACrB,OAAO,MAAM,EAAE,MAAM,CAAC,YAShC,CAAA"}
@@ -446,8 +446,14 @@ exports.addLocatorStrategyHandler = addLocatorStrategyHandler;
446
446
  * @returns {object[]} elements
447
447
  */
448
448
  const enhanceElementsArray = (elements, parent, selector, foundWith = '$$', props = []) => {
449
+ /**
450
+ * if we have an element collection, e.g. `const elems = $$([elemA, elemB])`
451
+ * we cna't assign a common selector to the element array
452
+ */
453
+ if (!Array.isArray(selector)) {
454
+ elements.selector = selector;
455
+ }
449
456
  elements.parent = parent;
450
- elements.selector = selector;
451
457
  elements.foundWith = foundWith;
452
458
  elements.props = props;
453
459
  return elements;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "webdriverio",
3
3
  "description": "Next-gen browser and mobile automation test framework for Node.js",
4
- "version": "7.20.9",
4
+ "version": "7.23.0",
5
5
  "homepage": "https://webdriver.io",
6
6
  "author": "Christian Bromann <mail@bromann.dev>",
7
7
  "license": "MIT",
@@ -57,18 +57,18 @@
57
57
  "dependencies": {
58
58
  "@types/aria-query": "^5.0.0",
59
59
  "@types/node": "^18.0.0",
60
- "@wdio/config": "7.20.8",
60
+ "@wdio/config": "7.23.0",
61
61
  "@wdio/logger": "7.19.0",
62
- "@wdio/protocols": "7.20.6",
63
- "@wdio/repl": "7.20.7",
64
- "@wdio/types": "7.20.7",
65
- "@wdio/utils": "7.20.7",
62
+ "@wdio/protocols": "7.22.0",
63
+ "@wdio/repl": "7.23.0",
64
+ "@wdio/types": "7.23.0",
65
+ "@wdio/utils": "7.23.0",
66
66
  "archiver": "^5.0.0",
67
67
  "aria-query": "^5.0.0",
68
68
  "css-shorthand-properties": "^1.1.1",
69
69
  "css-value": "^0.0.1",
70
- "devtools": "7.20.8",
71
- "devtools-protocol": "^0.0.1029085",
70
+ "devtools": "7.23.0",
71
+ "devtools-protocol": "^0.0.1034970",
72
72
  "fs-extra": "^10.0.0",
73
73
  "grapheme-splitter": "^1.0.2",
74
74
  "lodash.clonedeep": "^4.5.0",
@@ -81,7 +81,7 @@
81
81
  "resq": "^1.9.1",
82
82
  "rgb2hex": "0.2.5",
83
83
  "serialize-error": "^8.0.0",
84
- "webdriver": "7.20.8"
84
+ "webdriver": "7.23.0"
85
85
  },
86
- "gitHead": "4de5ffd553e64ac129980cbb0a374d061f884fa7"
86
+ "gitHead": "00407ba4e1b414c38195789c748bbad69df1b26d"
87
87
  }