@seleniumhq/side-runtime 4.0.0-alpha.30 → 4.0.0-alpha.32

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.
Files changed (81) hide show
  1. package/dist/__tests__/callstack.spec.d.ts +2 -0
  2. package/dist/__tests__/callstack.spec.d.ts.map +1 -0
  3. package/dist/__tests__/callstack.spec.js +63 -0
  4. package/dist/__tests__/callstack.spec.js.map +1 -0
  5. package/dist/__tests__/integration/playback-webdriver.spec.d.ts +2 -0
  6. package/dist/__tests__/integration/playback-webdriver.spec.d.ts.map +1 -0
  7. package/dist/__tests__/integration/playback-webdriver.spec.js +249 -0
  8. package/dist/__tests__/integration/playback-webdriver.spec.js.map +1 -0
  9. package/dist/__tests__/playback-tree/command-leveler.spec.d.ts +2 -0
  10. package/dist/__tests__/playback-tree/command-leveler.spec.d.ts.map +1 -0
  11. package/dist/__tests__/playback-tree/command-leveler.spec.js +69 -0
  12. package/dist/__tests__/playback-tree/command-leveler.spec.js.map +1 -0
  13. package/dist/__tests__/playback-tree/command-node.spec.d.ts +2 -0
  14. package/dist/__tests__/playback-tree/command-node.spec.d.ts.map +1 -0
  15. package/dist/__tests__/playback-tree/command-node.spec.js +232 -0
  16. package/dist/__tests__/playback-tree/command-node.spec.js.map +1 -0
  17. package/dist/__tests__/playback-tree/playback-tree.spec.d.ts +2 -0
  18. package/dist/__tests__/playback-tree/playback-tree.spec.d.ts.map +1 -0
  19. package/dist/__tests__/playback-tree/playback-tree.spec.js +463 -0
  20. package/dist/__tests__/playback-tree/playback-tree.spec.js.map +1 -0
  21. package/dist/__tests__/playback-tree/syntax-validation.spec.d.ts +2 -0
  22. package/dist/__tests__/playback-tree/syntax-validation.spec.d.ts.map +1 -0
  23. package/dist/__tests__/playback-tree/syntax-validation.spec.js +224 -0
  24. package/dist/__tests__/playback-tree/syntax-validation.spec.js.map +1 -0
  25. package/dist/__tests__/playback.spec.d.ts +2 -0
  26. package/dist/__tests__/playback.spec.d.ts.map +1 -0
  27. package/dist/__tests__/playback.spec.js +2162 -0
  28. package/dist/__tests__/playback.spec.js.map +1 -0
  29. package/dist/__tests__/preprocessors.spec.d.ts +2 -0
  30. package/dist/__tests__/preprocessors.spec.d.ts.map +1 -0
  31. package/dist/__tests__/preprocessors.spec.js +141 -0
  32. package/dist/__tests__/preprocessors.spec.js.map +1 -0
  33. package/dist/__tests__/util/FakeExecutor.d.ts +32 -0
  34. package/dist/__tests__/util/FakeExecutor.d.ts.map +1 -0
  35. package/dist/__tests__/util/FakeExecutor.js +81 -0
  36. package/dist/__tests__/util/FakeExecutor.js.map +1 -0
  37. package/dist/__tests__/util/JestFakeExecutor.d.ts +32 -0
  38. package/dist/__tests__/util/JestFakeExecutor.d.ts.map +1 -0
  39. package/dist/__tests__/util/JestFakeExecutor.js +79 -0
  40. package/dist/__tests__/util/JestFakeExecutor.js.map +1 -0
  41. package/dist/__tests__/utils.spec.d.ts +2 -0
  42. package/dist/__tests__/utils.spec.d.ts.map +1 -0
  43. package/dist/__tests__/utils.spec.js +40 -0
  44. package/dist/__tests__/utils.spec.js.map +1 -0
  45. package/dist/__tests__/webdriver.spec.d.ts +2 -0
  46. package/dist/__tests__/webdriver.spec.d.ts.map +1 -0
  47. package/dist/__tests__/webdriver.spec.js +522 -0
  48. package/dist/__tests__/webdriver.spec.js.map +1 -0
  49. package/dist/playback-tree/command-leveler.js +3 -2
  50. package/dist/playback-tree/command-leveler.js.map +1 -1
  51. package/dist/playback-tree/command-node.d.ts.map +1 -1
  52. package/dist/playback-tree/command-node.js +18 -5
  53. package/dist/playback-tree/command-node.js.map +1 -1
  54. package/dist/playback-tree/commands.d.ts +10 -10
  55. package/dist/playback-tree/commands.d.ts.map +1 -1
  56. package/dist/playback-tree/commands.js.map +1 -1
  57. package/dist/playback-tree/index.js +4 -2
  58. package/dist/playback-tree/index.js.map +1 -1
  59. package/dist/playback-tree/syntax-validation.d.ts.map +1 -1
  60. package/dist/playback-tree/syntax-validation.js +3 -2
  61. package/dist/playback-tree/syntax-validation.js.map +1 -1
  62. package/dist/playback.d.ts +1 -1
  63. package/dist/playback.d.ts.map +1 -1
  64. package/dist/playback.js +16 -8
  65. package/dist/playback.js.map +1 -1
  66. package/dist/preprocessors.d.ts +1 -1
  67. package/dist/preprocessors.d.ts.map +1 -1
  68. package/dist/preprocessors.js +12 -28
  69. package/dist/preprocessors.js.map +1 -1
  70. package/dist/recording-syncronizer-webdriver.d.ts +3 -3
  71. package/dist/recording-syncronizer.d.ts +4 -3
  72. package/dist/recording-syncronizer.d.ts.map +1 -1
  73. package/dist/recording-syncronizer.js +1 -1
  74. package/dist/recording-syncronizer.js.map +1 -1
  75. package/dist/types.d.ts +1 -1
  76. package/dist/types.d.ts.map +1 -1
  77. package/dist/webdriver.d.ts +13 -24
  78. package/dist/webdriver.d.ts.map +1 -1
  79. package/dist/webdriver.js +110 -74
  80. package/dist/webdriver.js.map +1 -1
  81. package/package.json +8 -6
package/dist/types.d.ts CHANGED
@@ -23,7 +23,7 @@ export interface StoreWindowHandleHookInput {
23
23
  export interface WindowAppearedHookInput {
24
24
  command: CommandShape;
25
25
  windowHandleName: CommandShape['windowHandleName'];
26
- windowHandle: string;
26
+ windowHandle?: string;
27
27
  }
28
28
  export interface WindowSwitchedHookInput {
29
29
  windowHandle: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAA;AACjE,OAAO,EAAE,EAAE,EAAE,MAAM,qCAAqC,CAAA;AACxD,OAAO,iBAAiB,EAAE,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,MAAM,WAAW,kBAAkB;IACjC,qBAAqB,CAAC,EAAE,EAAE,CAAA;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7E;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,YAAY,CAAA;CACtB;AAED,MAAM,WAAW,0BAA0B;IACzC,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,YAAY,CAAA;IACrB,gBAAgB,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAA;IAClD,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,YAAY,CAAA;CACtB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE3B,MAAM,WAAW,WAAY,SAAQ,sBAAsB;IACzD,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1D,SAAS,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;CACrC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE;QACL,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,oBAAoB,CAAC,EAAE,MAAM,CAAA;QAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAA;QAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;CACF;AAED;;;;GAIG;AAEH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;IAC7C,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;IACvB,KAAK,CAAC,EAAE,WAAW,CAAA;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAA;AACjE,OAAO,EAAE,EAAE,EAAE,MAAM,qCAAqC,CAAA;AACxD,OAAO,iBAAiB,EAAE,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,MAAM,WAAW,kBAAkB;IACjC,qBAAqB,CAAC,EAAE,EAAE,CAAA;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7E;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,YAAY,CAAA;CACtB;AAED,MAAM,WAAW,0BAA0B;IACzC,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,YAAY,CAAA;IACrB,gBAAgB,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAA;IAClD,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,YAAY,CAAA;CACtB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE3B,MAAM,WAAW,WAAY,SAAQ,sBAAsB;IACzD,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1D,SAAS,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;CACrC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE;QACL,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,oBAAoB,CAAC,EAAE,MAAM,CAAA;QAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAA;QAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;CACF;AAED;;;;GAIG;AAEH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;IAC7C,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;IACvB,KAAK,CAAC,EAAE,WAAW,CAAA;CACpB"}
@@ -2,7 +2,7 @@ import webdriver, { Capabilities, WebDriver, WebElement as WebElementShape } fro
2
2
  import Variables from './variables';
3
3
  import { Fn } from '@seleniumhq/side-commons';
4
4
  import { CommandShape } from '@seleniumhq/side-model';
5
- import { PluginRuntimeShape } from './types';
5
+ import { PluginRuntimeShape, StoreWindowHandleHookInput, WindowAppearedHookInput, WindowSwitchedHookInput } from './types';
6
6
  export type ExpandedCapabilities = Partial<Capabilities> & {
7
7
  browserName: string;
8
8
  'goog:chromeOptions'?: Record<string, boolean | number | string | string[]>;
@@ -39,18 +39,6 @@ export interface BeforePlayHookInput {
39
39
  export interface CommandHookInput {
40
40
  command: CommandShape;
41
41
  }
42
- export interface StoreWindowHandleHookInput {
43
- windowHandle: string;
44
- windowHandleName: string;
45
- }
46
- export interface WindowAppearedHookInput {
47
- command: CommandShape;
48
- windowHandleName: CommandShape['windowHandleName'];
49
- windowHandle?: string | Error;
50
- }
51
- export interface WindowSwitchedHookInput {
52
- windowHandle?: string | Error;
53
- }
54
42
  export type GeneralHook<T> = (input: T) => Promise<void> | void;
55
43
  export interface WebDriverExecutorHooks {
56
44
  onBeforePlay?: GeneralHook<BeforePlayHookInput>;
@@ -109,17 +97,17 @@ export default class WebDriverExecutor {
109
97
  doRemoveSelection(locator: string, optionLocator: string, commandObject?: Partial<CommandShape>): Promise<void>;
110
98
  doCheck(locator: string, _: string, commandObject?: Partial<CommandShape>): Promise<void>;
111
99
  doUncheck(locator: string, _: string, commandObject?: Partial<CommandShape>): Promise<void>;
112
- doClick(locator: string, _: string): Promise<void>;
100
+ doClick(locator: string, _?: string, commandObject?: Partial<CommandShape>): Promise<void>;
113
101
  doClickAt(locator: string, coordString: string, commandObject?: Partial<CommandShape>): Promise<void>;
114
- doDoubleClick(locator: string, _: string, commandObject?: Partial<CommandShape>): Promise<void>;
102
+ doDoubleClick(locator: string, _?: string, _commandObject?: Partial<CommandShape>): Promise<void>;
115
103
  doDoubleClickAt(locator: string, coordString: string, commandObject?: Partial<CommandShape>): Promise<void>;
116
104
  doDragAndDropToObject(dragLocator: string, dropLocator: string, commandObject?: Partial<CommandShape>): Promise<void>;
117
- doMouseDown(locator: string, _: string, commandObject?: Partial<CommandShape>): Promise<void>;
105
+ doMouseDown(locator: string, _?: string, _commandObject?: Partial<CommandShape>): Promise<void>;
118
106
  doMouseDownAt(locator: string, coordString: string, commandObject?: Partial<CommandShape>): Promise<void>;
119
107
  doMouseMoveAt(locator: string, coordString: string, commandObject?: Partial<CommandShape>): Promise<void>;
120
- doMouseOut(locator: string, _: string, commandObject?: Partial<CommandShape>): Promise<void>;
121
- doMouseOver(locator: string, _: string, commandObject?: Partial<CommandShape>): Promise<void>;
122
- doMouseUp(locator: string, _: string, commandObject?: Partial<CommandShape>): Promise<void>;
108
+ doMouseOut(locator: string, _?: string, _commandObject?: Partial<CommandShape>): Promise<void>;
109
+ doMouseOver(locator: string, _?: string, _commandObject?: Partial<CommandShape>): Promise<void>;
110
+ doMouseUp(locator: string, _?: string, _commandObject?: Partial<CommandShape>): Promise<void>;
123
111
  doMouseUpAt(locator: string, coordString: string, commandObject?: Partial<CommandShape>): Promise<void>;
124
112
  doSelect(locator: string, optionLocator: string, commandObject?: Partial<CommandShape>): Promise<void>;
125
113
  doEditContent(locator: string, value: string, commandObject?: Partial<CommandShape>): Promise<void>;
@@ -151,8 +139,8 @@ export default class WebDriverExecutor {
151
139
  doAssert(variableName: string, value: string): Promise<void>;
152
140
  doAssertAlert(expectedText: string): Promise<void>;
153
141
  doAssertConfirmation(expectedText: string): Promise<void>;
154
- doAssertEditable(locator: string, _: string, commandObject?: Partial<CommandShape>): Promise<void>;
155
- doAssertNotEditable(locator: string, _: string, commandObject?: Partial<CommandShape>): Promise<void>;
142
+ doAssertEditable(locator: string, _?: string, _commandObject?: Partial<CommandShape>): Promise<void>;
143
+ doAssertNotEditable(locator: string, _?: string, _commandObject?: Partial<CommandShape>): Promise<void>;
156
144
  doAssertPrompt(expectedText: string): Promise<void>;
157
145
  doAssertTitle(title: string): Promise<void>;
158
146
  doAssertElementPresent(locator: string, _: string, commandObject?: Partial<CommandShape>): Promise<void>;
@@ -173,10 +161,11 @@ export default class WebDriverExecutor {
173
161
  doRun(): Promise<void>;
174
162
  doSetSpeed(): Promise<void>;
175
163
  evaluateConditional(script: ScriptShape): Promise<WebDriverExecutorCondEvalResult>;
176
- elementIsLocated(locator: string, fallback?: [string, string][]): Promise<WebElementShape | null>;
177
- waitForElement(locator: string, fallback?: [string, string][]): Promise<WebElementShape>;
164
+ elementIsLocated(locator: string, ..._fallbacks: (undefined | [string, string][])[]): Promise<WebElementShape | null>;
165
+ withCancel<T extends () => Promise<any>>(poller: T): () => Promise<any>;
166
+ waitForElement(locator: string, ...fallbacks: (undefined | [string, string][])[]): Promise<WebElementShape>;
178
167
  isElementEditable(element: WebElementShape): Promise<boolean>;
179
- waitForElementVisible(locator: string, timeout: number, fallback?: [string, string][]): Promise<webdriver.WebElement>;
168
+ waitForElementVisible(locator: string, timeout: number, ...fallbacks: (undefined | [string, string][])[]): Promise<webdriver.WebElement>;
180
169
  waitForText(locator: string, text: string, fallback?: [string, string][]): Promise<void>;
181
170
  }
182
171
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"webdriver.d.ts","sourceRoot":"","sources":["../src/webdriver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webdriver.d.ts","sourceRoot":"","sources":["../src/webdriver.ts"],"names":[],"mappings":"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"}
package/dist/webdriver.js CHANGED
@@ -74,7 +74,8 @@ class WebDriverExecutor {
74
74
  }
75
75
  }
76
76
  async cleanup() {
77
- if (this.initialized) {
77
+ // await this.cancel()
78
+ if (this.driver) {
78
79
  await this.driver.quit();
79
80
  // @ts-expect-error
80
81
  this.driver = undefined;
@@ -130,7 +131,7 @@ class WebDriverExecutor {
130
131
  async waitForNewWindow(timeout = 2000) {
131
132
  const finder = new Promise((resolve) => {
132
133
  const start = Date.now();
133
- const findHandle = async () => {
134
+ const findHandle = this.withCancel(async () => {
134
135
  if (Date.now() - start > timeout) {
135
136
  resolve(undefined);
136
137
  return;
@@ -143,7 +144,7 @@ class WebDriverExecutor {
143
144
  }
144
145
  // cant find, wait next time.
145
146
  setTimeout(findHandle, 200);
146
- };
147
+ });
147
148
  findHandle();
148
149
  });
149
150
  return this.driver.wait(finder, timeout);
@@ -230,7 +231,7 @@ class WebDriverExecutor {
230
231
  }
231
232
  // mouse commands
232
233
  async doAddSelection(locator, optionLocator, commandObject = {}) {
233
- const element = await this.waitForElement(locator, commandObject.targetFallback);
234
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
234
235
  const option = await element.findElement(parseOptionLocator(optionLocator));
235
236
  const selections = (await this.driver.executeScript('return arguments[0].selectedOptions', element));
236
237
  if (!(await findElement(selections, option))) {
@@ -238,7 +239,7 @@ class WebDriverExecutor {
238
239
  }
239
240
  }
240
241
  async doRemoveSelection(locator, optionLocator, commandObject = {}) {
241
- const element = await this.waitForElement(locator, commandObject.targetFallback);
242
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
242
243
  if (!(await element.getAttribute('multiple'))) {
243
244
  throw new Error('Given element is not a multiple select type element');
244
245
  }
@@ -249,37 +250,38 @@ class WebDriverExecutor {
249
250
  }
250
251
  }
251
252
  async doCheck(locator, _, commandObject = {}) {
252
- const element = await this.waitForElement(locator, commandObject.targetFallback);
253
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
253
254
  if (!(await element.isSelected())) {
254
255
  await element.click();
255
256
  }
256
257
  }
257
258
  async doUncheck(locator, _, commandObject = {}) {
258
- const element = await this.waitForElement(locator, commandObject.targetFallback);
259
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
259
260
  if (await element.isSelected()) {
260
261
  await element.click();
261
262
  }
262
263
  }
263
- async doClick(locator, _) {
264
- const element = await this.waitForElementVisible(locator, this.implicitWait);
264
+ async doClick(locator, _, commandObject = {}) {
265
+ const element = await this.waitForElementVisible(locator, this.implicitWait, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
265
266
  await element.click();
266
267
  }
267
268
  async doClickAt(locator, coordString, commandObject = {}) {
268
269
  const coords = parseCoordString(coordString);
269
- const element = await this.waitForElement(locator, commandObject.targetFallback);
270
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
270
271
  await this.driver
271
272
  .actions({ bridge: true })
272
273
  .move({ origin: element, ...coords })
273
274
  .click()
274
275
  .perform();
275
276
  }
276
- async doDoubleClick(locator, _, commandObject = {}) {
277
- const element = await this.waitForElement(locator, commandObject.targetFallback);
277
+ async doDoubleClick(locator, _, _commandObject) {
278
+ const commandObject = _commandObject || {};
279
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
278
280
  await this.driver.actions({ bridge: true }).doubleClick(element).perform();
279
281
  }
280
282
  async doDoubleClickAt(locator, coordString, commandObject = {}) {
281
283
  const coords = parseCoordString(coordString);
282
- const element = await this.waitForElement(locator, commandObject.targetFallback);
284
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
283
285
  await this.driver
284
286
  .actions({ bridge: true })
285
287
  .move({ origin: element, ...coords })
@@ -294,8 +296,9 @@ class WebDriverExecutor {
294
296
  .dragAndDrop(drag, drop)
295
297
  .perform();
296
298
  }
297
- async doMouseDown(locator, _, commandObject = {}) {
298
- const element = await this.waitForElement(locator, commandObject.targetFallback);
299
+ async doMouseDown(locator, _, _commandObject) {
300
+ const commandObject = _commandObject || {};
301
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
299
302
  await this.driver
300
303
  .actions({ bridge: true })
301
304
  .move({ origin: element })
@@ -304,7 +307,7 @@ class WebDriverExecutor {
304
307
  }
305
308
  async doMouseDownAt(locator, coordString, commandObject = {}) {
306
309
  const coords = parseCoordString(coordString);
307
- const element = await this.waitForElement(locator, commandObject.targetFallback);
310
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
308
311
  await this.driver
309
312
  .actions({ bridge: true })
310
313
  .move({ origin: element, ...coords })
@@ -313,14 +316,15 @@ class WebDriverExecutor {
313
316
  }
314
317
  async doMouseMoveAt(locator, coordString, commandObject = {}) {
315
318
  const coords = parseCoordString(coordString);
316
- const element = await this.waitForElement(locator, commandObject.targetFallback);
319
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
317
320
  await this.driver
318
321
  .actions({ bridge: true })
319
322
  .move({ origin: element, ...coords })
320
323
  .perform();
321
324
  }
322
- async doMouseOut(locator, _, commandObject = {}) {
323
- const element = await this.waitForElement(locator, commandObject.targetFallback);
325
+ async doMouseOut(locator, _, _commandObject) {
326
+ const commandObject = _commandObject || {};
327
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
324
328
  const [rect, vp] = await this.driver.executeScript('return [arguments[0].getBoundingClientRect(), {height: window.innerHeight, width: window.innerWidth}];', element);
325
329
  // try top
326
330
  if (rect.top > 0) {
@@ -348,7 +352,7 @@ class WebDriverExecutor {
348
352
  }
349
353
  // try left
350
354
  else if (rect.left > 0) {
351
- const x = -rect.right / 2;
355
+ const x = Math.round(-rect.right / 2);
352
356
  return await this.driver
353
357
  .actions({ bridge: true })
354
358
  .move({ origin: element, x })
@@ -356,15 +360,17 @@ class WebDriverExecutor {
356
360
  }
357
361
  throw new Error('Unable to perform mouse out as the element takes up the entire viewport');
358
362
  }
359
- async doMouseOver(locator, _, commandObject = {}) {
360
- const element = await this.waitForElement(locator, commandObject.targetFallback);
363
+ async doMouseOver(locator, _, _commandObject) {
364
+ const commandObject = _commandObject || {};
365
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
361
366
  await this.driver
362
367
  .actions({ bridge: true })
363
368
  .move({ origin: element })
364
369
  .perform();
365
370
  }
366
- async doMouseUp(locator, _, commandObject = {}) {
367
- const element = await this.waitForElement(locator, commandObject.targetFallback);
371
+ async doMouseUp(locator, _, _commandObject) {
372
+ const commandObject = _commandObject || {};
373
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
368
374
  await this.driver
369
375
  .actions({ bridge: true })
370
376
  .move({ origin: element })
@@ -373,7 +379,7 @@ class WebDriverExecutor {
373
379
  }
374
380
  async doMouseUpAt(locator, coordString, commandObject = {}) {
375
381
  const coords = parseCoordString(coordString);
376
- const element = await this.waitForElement(locator, commandObject.targetFallback);
382
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
377
383
  await this.driver
378
384
  .actions({ bridge: true })
379
385
  .move({ origin: element, ...coords })
@@ -381,35 +387,50 @@ class WebDriverExecutor {
381
387
  .perform();
382
388
  }
383
389
  async doSelect(locator, optionLocator, commandObject = {}) {
384
- const element = await this.waitForElement(locator, commandObject.targetFallback);
390
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
385
391
  const option = await element.findElement(parseOptionLocator(optionLocator));
386
392
  await option.click();
387
393
  }
388
394
  // keyboard commands
389
395
  async doEditContent(locator, value, commandObject = {}) {
390
- const element = await this.waitForElement(locator, commandObject.targetFallback);
396
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
391
397
  await this.driver.executeScript("if(arguments[0].contentEditable === 'true') {arguments[0].innerText = arguments[1]} else {throw new Error('Element is not content editable')}", element, value);
392
398
  }
393
399
  async doType(locator, value, commandObject = {}) {
394
- const element = await this.waitForElement(locator, commandObject.targetFallback);
400
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
395
401
  await element.clear();
396
402
  await element.sendKeys(value);
397
403
  }
398
404
  async doSendKeys(locator, value, commandObject = {}) {
399
- const element = await this.waitForElement(locator, commandObject.targetFallback);
405
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
400
406
  await element.sendKeys(...value);
401
407
  }
402
408
  // wait commands
403
409
  async doWaitForElementEditable(locator, timeout) {
404
- const element = await this.driver.findElement(parseLocator(locator));
405
- await this.driver.wait(this.isElementEditable(element), parseInt(timeout), 'Timed out waiting for element to be editable');
410
+ const condition = new Condition('for element to be editable', async () => {
411
+ const element = await this.driver.findElement(parseLocator(locator));
412
+ if (!element) {
413
+ return null;
414
+ }
415
+ const isEditable = await this.isElementEditable(element);
416
+ return isEditable;
417
+ });
418
+ await this.driver.wait(condition, parseInt(timeout));
406
419
  }
407
420
  async doWaitForElementNotEditable(locator, timeout) {
408
- const element = await this.driver.findElement(parseLocator(locator));
409
- await this.driver.wait(this.isElementEditable(element), parseInt(timeout), 'Timed out waiting for element to not be editable');
421
+ const condition = new Condition('for element to be editable', async () => {
422
+ const element = await this.driver.findElement(parseLocator(locator));
423
+ if (!element) {
424
+ return null;
425
+ }
426
+ const isEditable = await this.isElementEditable(element);
427
+ return !isEditable;
428
+ });
429
+ await this.driver.wait(condition, parseInt(timeout));
410
430
  }
411
431
  async doWaitForElementPresent(locator, timeout, commandObj = {}) {
412
- await this.driver.wait(this.elementIsLocated(locator, commandObj.targetFallback), parseInt(timeout));
432
+ const locatorCondition = new WebElementCondition('for element to be present', async () => await this.elementIsLocated(locator, commandObj.targetFallback, commandObj.targets, commandObj.fallbackTargets));
433
+ await this.driver.wait(locatorCondition, Number(timeout));
413
434
  }
414
435
  async doWaitForElementNotPresent(locator, timeout) {
415
436
  const parsedLocator = parseLocator(locator);
@@ -493,7 +514,7 @@ class WebDriverExecutor {
493
514
  return Promise.resolve();
494
515
  }
495
516
  async doStoreText(locator, variable, commandObject = {}) {
496
- const element = await this.waitForElement(locator, commandObject.targetFallback);
517
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
497
518
  const text = await element.getText();
498
519
  this.variables.set(variable, text);
499
520
  }
@@ -502,7 +523,7 @@ class WebDriverExecutor {
502
523
  this.variables.set(variable, title);
503
524
  }
504
525
  async doStoreValue(locator, variable, commandObject = {}) {
505
- const element = await this.waitForElement(locator, commandObject.targetFallback);
526
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
506
527
  const value = await element.getAttribute('value');
507
528
  this.variables.set(variable, value);
508
529
  }
@@ -543,14 +564,16 @@ class WebDriverExecutor {
543
564
  "'");
544
565
  }
545
566
  }
546
- async doAssertEditable(locator, _, commandObject = {}) {
547
- const element = await this.waitForElement(locator, commandObject.targetFallback);
567
+ async doAssertEditable(locator, _, _commandObject) {
568
+ const commandObject = _commandObject || {};
569
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
548
570
  if (!(await this.isElementEditable(element))) {
549
571
  throw new errors_1.AssertionError('Element is not editable');
550
572
  }
551
573
  }
552
- async doAssertNotEditable(locator, _, commandObject = {}) {
553
- const element = await this.waitForElement(locator, commandObject.targetFallback);
574
+ async doAssertNotEditable(locator, _, _commandObject) {
575
+ const commandObject = _commandObject || {};
576
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
554
577
  if (await this.isElementEditable(element)) {
555
578
  throw new errors_1.AssertionError('Element is editable');
556
579
  }
@@ -582,21 +605,21 @@ class WebDriverExecutor {
582
605
  }
583
606
  }
584
607
  async doAssertText(locator, value, commandObject = {}) {
585
- const element = await this.waitForElement(locator, commandObject.targetFallback);
608
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
586
609
  const text = await element.getText();
587
610
  if (text !== value) {
588
611
  throw new errors_1.AssertionError("Actual value '" + text + "' did not match '" + value + "'");
589
612
  }
590
613
  }
591
614
  async doAssertNotText(locator, value, commandObject = {}) {
592
- const element = await this.waitForElement(locator, commandObject.targetFallback);
615
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
593
616
  const text = await element.getText();
594
617
  if (text === value) {
595
618
  throw new errors_1.AssertionError("Actual value '" + text + "' did match '" + value + "'");
596
619
  }
597
620
  }
598
621
  async doAssertValue(locator, value, commandObject = {}) {
599
- const element = await this.waitForElement(locator, commandObject.targetFallback);
622
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
600
623
  const elementValue = await element.getAttribute('value');
601
624
  if (elementValue !== value) {
602
625
  throw new errors_1.AssertionError("Actual value '" + elementValue + "' did not match '" + value + "'");
@@ -604,40 +627,40 @@ class WebDriverExecutor {
604
627
  }
605
628
  // not generally implemented
606
629
  async doAssertNotValue(locator, value, commandObject = {}) {
607
- const element = await this.waitForElement(locator, commandObject.targetFallback);
630
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
608
631
  const elementValue = await element.getAttribute('value');
609
632
  if (elementValue === value) {
610
633
  throw new errors_1.AssertionError("Actual value '" + elementValue + "' did match '" + value + "'");
611
634
  }
612
635
  }
613
636
  async doAssertChecked(locator, _, commandObject = {}) {
614
- const element = await this.waitForElement(locator, commandObject.targetFallback);
637
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
615
638
  if (!(await element.isSelected())) {
616
639
  throw new errors_1.AssertionError('Element is not checked, expected to be checked');
617
640
  }
618
641
  }
619
642
  async doAssertNotChecked(locator, _, commandObject = {}) {
620
- const element = await this.waitForElement(locator, commandObject.targetFallback);
643
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
621
644
  if (await element.isSelected()) {
622
645
  throw new errors_1.AssertionError('Element is checked, expected to be unchecked');
623
646
  }
624
647
  }
625
648
  async doAssertSelectedValue(locator, value, commandObject = {}) {
626
- const element = await this.waitForElement(locator, commandObject.targetFallback);
649
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
627
650
  const elementValue = await element.getAttribute('value');
628
651
  if (elementValue !== value) {
629
652
  throw new errors_1.AssertionError("Actual value '" + elementValue + "' did not match '" + value + "'");
630
653
  }
631
654
  }
632
655
  async doAssertNotSelectedValue(locator, value, commandObject = {}) {
633
- const element = await this.waitForElement(locator, commandObject.targetFallback);
656
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
634
657
  const elementValue = await element.getAttribute('value');
635
658
  if (elementValue === value) {
636
659
  throw new errors_1.AssertionError("Actual value '" + elementValue + "' did match '" + value + "'");
637
660
  }
638
661
  }
639
662
  async doAssertSelectedLabel(locator, label, commandObject = {}) {
640
- const element = await this.waitForElement(locator, commandObject.targetFallback);
663
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
641
664
  const selectedValue = await element.getAttribute('value');
642
665
  const selectedOption = await element.findElement(By.xpath(`option[@value="${selectedValue}"]`));
643
666
  const selectedOptionLabel = await selectedOption.getText();
@@ -650,7 +673,7 @@ class WebDriverExecutor {
650
673
  }
651
674
  }
652
675
  async doAssertNotSelectedLabel(locator, label, commandObject = {}) {
653
- const element = await this.waitForElement(locator, commandObject?.targetFallback);
676
+ const element = await this.waitForElement(locator, commandObject.targetFallback, commandObject.targets, commandObject.fallbackTargets);
654
677
  const selectedValue = await element.getAttribute('value');
655
678
  const selectedOption = await element.findElement(By.xpath(`option[@value="${selectedValue}"]`));
656
679
  const selectedOptionLabel = await selectedOption.getText();
@@ -682,55 +705,68 @@ class WebDriverExecutor {
682
705
  value: !!result,
683
706
  };
684
707
  }
685
- async elementIsLocated(locator, fallback = []) {
708
+ async elementIsLocated(locator, ..._fallbacks) {
686
709
  const elementLocator = parseLocator(locator);
687
- try {
688
- return await this.driver.findElement(elementLocator);
689
- }
690
- catch (e) {
691
- for (let i = 0; i < fallback.length; i++) {
692
- try {
693
- let loc = parseLocator(fallback[i][0]);
694
- return await this.driver.findElement(loc);
695
- }
696
- catch (e) {
697
- // try the next one
698
- }
699
- }
710
+ const matches = await this.driver.findElements(elementLocator);
711
+ if (matches.length > 0)
712
+ return matches[0];
713
+ const fallbacks = _fallbacks.filter(Boolean).flat();
714
+ for (let i = 0; i < fallbacks.length; i++) {
715
+ const loc = parseLocator(fallbacks[i][0]);
716
+ const fallbackMatches = await this.driver.findElements(loc);
717
+ if (fallbackMatches.length)
718
+ return fallbackMatches[0];
700
719
  }
701
720
  return null;
702
721
  }
703
- async waitForElement(locator, fallback = []) {
704
- const locatorCondition = new WebElementCondition('for element to be located', async () => {
705
- const el = await this.elementIsLocated(locator, fallback);
706
- return el;
722
+ withCancel(poller) {
723
+ let resolveCancel;
724
+ const cancelPromise = new Promise((res) => {
725
+ resolveCancel = res;
707
726
  });
727
+ let cancelled = false;
728
+ this.cancellable = {
729
+ cancel: () => {
730
+ cancelled = true;
731
+ return cancelPromise;
732
+ },
733
+ };
734
+ return async () => {
735
+ if (cancelled) {
736
+ resolveCancel();
737
+ throw new Error('aborted');
738
+ }
739
+ return await poller();
740
+ };
741
+ }
742
+ async waitForElement(locator, ...fallbacks) {
743
+ const locatorCondition = new WebElementCondition('for element to be located', this.withCancel(async () => await this.elementIsLocated(locator, ...fallbacks)));
708
744
  return await this.driver.wait(locatorCondition, this.implicitWait);
709
745
  }
710
746
  async isElementEditable(element) {
711
747
  const { enabled, readonly } = await this.driver.executeScript('return { enabled: !arguments[0].disabled, readonly: arguments[0].readOnly };', element);
712
748
  return enabled && !readonly;
713
749
  }
714
- async waitForElementVisible(locator, timeout, fallback = []) {
715
- const visibleCondition = new WebElementCondition('for element to be visible', async () => {
716
- const el = await this.elementIsLocated(locator, fallback);
750
+ async waitForElementVisible(locator, timeout, ...fallbacks) {
751
+ const visibleCondition = new WebElementCondition('for element to be visible', this.withCancel(async () => {
752
+ const el = await this.elementIsLocated(locator, ...fallbacks);
717
753
  if (!el)
718
754
  return null;
719
755
  if (!(await el.isDisplayed()))
720
756
  return null;
721
757
  return el;
722
- });
758
+ }));
723
759
  return await this.driver.wait(visibleCondition, timeout);
724
760
  }
725
761
  async waitForText(locator, text, fallback = []) {
726
762
  const timeout = this.implicitWait;
727
- const textCondition = new Condition('for text to be present in element', async () => {
763
+ const textCondition = new Condition('for text to be present in element', this.withCancel(async () => {
728
764
  const el = await this.elementIsLocated(locator, fallback);
729
765
  if (!el)
730
766
  return null;
731
767
  const elText = await el.getText();
732
768
  return elText === text;
733
- });
769
+ }));
734
770
  await this.driver.wait(textCondition, timeout);
735
771
  }
736
772
  }