@seleniumhq/side-runtime 4.0.0-alpha.9 → 4.0.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.
Files changed (94) 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 +2161 -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.d.ts +2 -2
  50. package/dist/playback-tree/command-leveler.d.ts.map +1 -1
  51. package/dist/playback-tree/command-leveler.js +4 -2
  52. package/dist/playback-tree/command-leveler.js.map +1 -1
  53. package/dist/playback-tree/command-node.d.ts +5 -4
  54. package/dist/playback-tree/command-node.d.ts.map +1 -1
  55. package/dist/playback-tree/command-node.js +81 -29
  56. package/dist/playback-tree/command-node.js.map +1 -1
  57. package/dist/playback-tree/commands.d.ts +12 -9
  58. package/dist/playback-tree/commands.d.ts.map +1 -1
  59. package/dist/playback-tree/commands.js +22 -14
  60. package/dist/playback-tree/commands.js.map +1 -1
  61. package/dist/playback-tree/index.d.ts +1 -1
  62. package/dist/playback-tree/index.d.ts.map +1 -1
  63. package/dist/playback-tree/index.js +5 -2
  64. package/dist/playback-tree/index.js.map +1 -1
  65. package/dist/playback-tree/syntax-validation.d.ts.map +1 -1
  66. package/dist/playback-tree/syntax-validation.js +4 -2
  67. package/dist/playback-tree/syntax-validation.js.map +1 -1
  68. package/dist/playback.d.ts +16 -12
  69. package/dist/playback.d.ts.map +1 -1
  70. package/dist/playback.js +64 -33
  71. package/dist/playback.js.map +1 -1
  72. package/dist/plugins.d.ts +4 -3
  73. package/dist/plugins.d.ts.map +1 -1
  74. package/dist/plugins.js +28 -9
  75. package/dist/plugins.js.map +1 -1
  76. package/dist/preprocessors.d.ts +2 -2
  77. package/dist/preprocessors.d.ts.map +1 -1
  78. package/dist/preprocessors.js +12 -28
  79. package/dist/preprocessors.js.map +1 -1
  80. package/dist/recording-syncronizer-webdriver.d.ts +3 -3
  81. package/dist/recording-syncronizer.d.ts +4 -3
  82. package/dist/recording-syncronizer.d.ts.map +1 -1
  83. package/dist/recording-syncronizer.js +1 -1
  84. package/dist/recording-syncronizer.js.map +1 -1
  85. package/dist/types.d.ts +25 -29
  86. package/dist/types.d.ts.map +1 -1
  87. package/dist/variables.d.ts.map +1 -1
  88. package/dist/variables.js +6 -0
  89. package/dist/variables.js.map +1 -1
  90. package/dist/webdriver.d.ts +39 -45
  91. package/dist/webdriver.d.ts.map +1 -1
  92. package/dist/webdriver.js +282 -222
  93. package/dist/webdriver.js.map +1 -1
  94. package/package.json +10 -7
@@ -0,0 +1,522 @@
1
+ "use strict";
2
+ // Licensed to the Software Freedom Conservancy (SFC) under one
3
+ // or more contributor license agreements. See the NOTICE file
4
+ // distributed with this work for additional information
5
+ // regarding copyright ownership. The SFC licenses this file
6
+ // to you under the Apache License, Version 2.0 (the
7
+ // "License"); you may not use this file except in compliance
8
+ // with the License. You may obtain a copy of the License at
9
+ //
10
+ // http://www.apache.org/licenses/LICENSE-2.0
11
+ //
12
+ // Unless required by applicable law or agreed to in writing,
13
+ // software distributed under the License is distributed on an
14
+ // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ // KIND, either express or implied. See the License for the
16
+ // specific language governing permissions and limitations
17
+ // under the License.
18
+ var __importDefault = (this && this.__importDefault) || function (mod) {
19
+ return (mod && mod.__esModule) ? mod : { "default": mod };
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ const selenium_webdriver_1 = require("selenium-webdriver");
23
+ const webdriver_testkit_1 = require("@seleniumhq/webdriver-testkit");
24
+ const side_model_1 = require("@seleniumhq/side-model");
25
+ const commands_1 = require("../playback-tree/commands");
26
+ const variables_1 = __importDefault(require("../variables"));
27
+ const webdriver_1 = __importDefault(require("../webdriver"));
28
+ jest.setTimeout(30000);
29
+ const port = 8080;
30
+ describe('webdriver executor', () => {
31
+ it('should implement all the Selenium commands', () => {
32
+ Object.keys(side_model_1.Commands).forEach((command) => {
33
+ if (!(command in commands_1.ControlFlowCommandNames)) {
34
+ expect(() => {
35
+ if (
36
+ // @ts-expect-error I'll solve this later
37
+ !webdriver_1.default.prototype[`do${command.charAt(0).toUpperCase() + command.slice(1)}`]) {
38
+ throw new Error(`${command} is not implemented!`);
39
+ }
40
+ }).not.toThrow();
41
+ }
42
+ });
43
+ });
44
+ describe.each([
45
+ ['chrome', webdriver_testkit_1.createHeadlessChrome],
46
+ ['firefox', webdriver_testkit_1.createHeadlessFirefox],
47
+ ])('commands on %s', (_browserName, createDriver) => {
48
+ let driver, executor, variables;
49
+ beforeAll(async () => {
50
+ variables = new variables_1.default();
51
+ driver = await createDriver();
52
+ executor = new webdriver_1.default({ driver });
53
+ await executor.init({ baseUrl: '', logger: console, variables });
54
+ });
55
+ afterAll(async () => {
56
+ await driver?.quit();
57
+ });
58
+ afterEach(async () => {
59
+ try {
60
+ await driver.actions({ bridge: true }).clear();
61
+ }
62
+ catch (err) {
63
+ // chromedriver doesn't support clear()
64
+ }
65
+ });
66
+ describe('plugins', () => {
67
+ it('should be able to register a command', async () => {
68
+ expect.assertions(3);
69
+ executor.registerCommand('commandName', async function (target, value) {
70
+ expect(this).toBe(executor);
71
+ expect(target).toBe('target');
72
+ expect(value).toBe('value');
73
+ });
74
+ // @ts-expect-error I'll solve this later
75
+ await executor.doCommandName('target', 'value');
76
+ });
77
+ });
78
+ describe('accept alert', () => {
79
+ it('should dismiss an alert', async () => {
80
+ await driver.get(`http://localhost:${port}/popup/alert.html`);
81
+ const element = await driver.findElement(selenium_webdriver_1.By.css('button'));
82
+ await element.click();
83
+ await executor.doAcceptAlert();
84
+ await element.click();
85
+ // accepting twice to make sure that we can interact with the page
86
+ // after accepting initially
87
+ await executor.doAcceptAlert();
88
+ });
89
+ });
90
+ describe('add selection', () => {
91
+ it('should select a single select item', async () => {
92
+ await driver.get(`http://localhost:${port}/select.html`);
93
+ const element = await driver.findElement(selenium_webdriver_1.By.css('select'));
94
+ expect(await element.getAttribute('value')).toBe('1');
95
+ await executor.doAddSelection('css=select', 'label=Two');
96
+ expect(await element.getAttribute('value')).toBe('2');
97
+ });
98
+ it('should add to a multi select element', async () => {
99
+ await driver.get(`http://localhost:${port}/select.html`);
100
+ const element = await driver.findElement(selenium_webdriver_1.By.id('mult'));
101
+ expect((await driver.executeScript('return arguments[0].selectedOptions', element)).length).toBe(0);
102
+ await executor.doAddSelection('id=mult', 'label=Volvo');
103
+ const selections = await driver.executeScript('return arguments[0].selectedOptions', element);
104
+ expect(selections.length).toBe(1);
105
+ expect(await selections[0].getAttribute('value')).toBe('volvo');
106
+ await executor.doAddSelection('id=mult', 'value=volvo');
107
+ // no deselections by mistake
108
+ expect((await driver.executeScript('return arguments[0].selectedOptions', element)).length).toBe(1);
109
+ await executor.doAddSelection('id=mult', 'value=audi');
110
+ expect((await driver.executeScript('return arguments[0].selectedOptions', element)).length).toBe(2);
111
+ });
112
+ });
113
+ describe('answer prompt', () => {
114
+ it('should answer prompt', async () => {
115
+ await driver.get(`http://localhost:${port}/popup/prompt.html`);
116
+ const element = await driver.findElement(selenium_webdriver_1.By.css('button'));
117
+ await element.click();
118
+ await executor.doAnswerPrompt('hello');
119
+ await driver.sleep(10);
120
+ expect(await driver.getTitle()).toBe('hello');
121
+ await element.click();
122
+ await executor.doAnswerPrompt('world');
123
+ await driver.sleep(10);
124
+ expect(await driver.getTitle()).toBe('world');
125
+ await element.click();
126
+ await executor.doAnswerPrompt('');
127
+ await driver.sleep(10);
128
+ expect(await driver.getTitle()).toBe('empty');
129
+ });
130
+ });
131
+ describe('assert alert', () => {
132
+ it('should assert alert visibility', async () => {
133
+ expect.assertions(1);
134
+ await driver.get(`http://localhost:${port}/popup/alert.html`);
135
+ const element = await driver.findElement(selenium_webdriver_1.By.css('button'));
136
+ await element.click();
137
+ await executor.doAssertAlert('test');
138
+ await expect(executor.doAssertAlert('wat')).rejects.toThrow("Actual alert text 'test' did not match 'wat'");
139
+ await driver.switchTo().alert().accept();
140
+ });
141
+ });
142
+ describe('assert confirmation', () => {
143
+ it('should assert confirmation visibility', async () => {
144
+ expect.assertions(1);
145
+ await driver.get(`http://localhost:${port}/popup/confirm.html`);
146
+ const element = await driver.findElement(selenium_webdriver_1.By.css('button'));
147
+ await element.click();
148
+ await executor.doAssertConfirmation('test');
149
+ await expect(executor.doAssertConfirmation('wat')).rejects.toThrow("Actual confirm text 'test' did not match 'wat'");
150
+ await driver.switchTo().alert().dismiss();
151
+ });
152
+ });
153
+ describe('assert editable', () => {
154
+ it('should assert wether different inputs are editable', async () => {
155
+ await driver.get(`http://localhost:${port}/editable.html`);
156
+ await executor.doAssertEditable('id=e');
157
+ await expect(executor.doAssertEditable('id=d')).rejects.toThrow('Element is not editable');
158
+ await expect(executor.doAssertEditable('id=r')).rejects.toThrow('Element is not editable');
159
+ });
160
+ it('should assert wether different inputs are not editable', async () => {
161
+ await driver.get(`http://localhost:${port}/editable.html`);
162
+ await executor.doAssertNotEditable('id=d');
163
+ await executor.doAssertNotEditable('id=r');
164
+ await expect(executor.doAssertNotEditable('id=e')).rejects.toThrow('Element is editable');
165
+ });
166
+ });
167
+ describe('assert prompt', () => {
168
+ it('should assert prompt visibility', async () => {
169
+ expect.assertions(1);
170
+ await driver.get(`http://localhost:${port}/popup/prompt.html`);
171
+ const element = await driver.findElement(selenium_webdriver_1.By.css('button'));
172
+ await element.click();
173
+ await executor.doAssertPrompt('test');
174
+ await expect(executor.doAssertPrompt('wat')).rejects.toThrow("Actual prompt text 'test' did not match 'wat'");
175
+ await driver.switchTo().alert().dismiss();
176
+ });
177
+ });
178
+ describe('click and click at', () => {
179
+ it('should click', async () => {
180
+ await driver.get(`http://localhost:${port}/click.html`);
181
+ await executor.doClick('id=c');
182
+ const r = await driver.findElement(selenium_webdriver_1.By.id('r'));
183
+ expect(await r.getText()).toMatch(/^click/);
184
+ });
185
+ it('should click (using click at)', async () => {
186
+ await driver.get(`http://localhost:${port}/click.html`);
187
+ await executor.doClickAt('id=c', '10,5');
188
+ const r = await driver.findElement(selenium_webdriver_1.By.id('r'));
189
+ expect(await r.getText()).toMatch(/^click/);
190
+ });
191
+ it.skip('should click at a specific coordinate', async () => {
192
+ // skip until chromedriver implements actions api correctly
193
+ await driver.get(`http://localhost:${port}/click.html`);
194
+ await executor.doClickAt('id=c', '10,5');
195
+ const r = await driver.findElement(selenium_webdriver_1.By.id('r'));
196
+ expect(await r.getText()).toBe('click 58,13');
197
+ });
198
+ });
199
+ describe('dismiss confirmation', () => {
200
+ it('should dismiss a confirmation', async () => {
201
+ await driver.get(`http://localhost:${port}/popup/confirm.html`);
202
+ const element = await driver.findElement(selenium_webdriver_1.By.css('button'));
203
+ await element.click();
204
+ await executor.doDismissConfirmation();
205
+ await element.click();
206
+ // accepting twice to make sure that we can interact with the page
207
+ // after accepting initially
208
+ await executor.doDismissConfirmation();
209
+ });
210
+ });
211
+ describe('dismiss prompt', () => {
212
+ it('should dismiss a prompt', async () => {
213
+ await driver.get(`http://localhost:${port}/popup/prompt.html`);
214
+ const element = await driver.findElement(selenium_webdriver_1.By.css('button'));
215
+ await element.click();
216
+ await executor.doDismissPrompt();
217
+ await element.click();
218
+ // accepting twice to make sure that we can interact with the page
219
+ // after accepting initially
220
+ await executor.doDismissPrompt();
221
+ });
222
+ });
223
+ describe('double click and double click at', () => {
224
+ it('should double click', async () => {
225
+ await driver.get(`http://localhost:${port}/click.html`);
226
+ await executor.doDoubleClick('id=d');
227
+ const r = await driver.findElement(selenium_webdriver_1.By.id('r'));
228
+ expect(await r.getText()).toMatch(/^double/);
229
+ });
230
+ it('should double click (using double click at)', async () => {
231
+ await driver.get(`http://localhost:${port}/click.html`);
232
+ await executor.doDoubleClickAt('id=d', '10,5');
233
+ const r = await driver.findElement(selenium_webdriver_1.By.id('r'));
234
+ expect(await r.getText()).toMatch(/^double/);
235
+ });
236
+ it.skip('should double click at a specific coordinate', async () => {
237
+ // skip until chromedriver implements actions api correctly
238
+ await driver.get(`http://localhost:${port}/click.html`);
239
+ await executor.doDoubleClickAt('id=d', '10,5');
240
+ const r = await driver.findElement(selenium_webdriver_1.By.id('r'));
241
+ expect(await r.getText()).toBe('double 58,13');
242
+ });
243
+ });
244
+ describe.skip('drag and drop', () => {
245
+ // skip until webdriver implements html5 dnd
246
+ it('should drag and drop an element', async () => {
247
+ await driver.get(`http://localhost:${port}/dnd.html`);
248
+ await executor.doDragAndDropToObject('id=p1', 'id=target');
249
+ const r = await driver.findElement(selenium_webdriver_1.By.id('target'));
250
+ expect(await r.getText()).toBe('dropped');
251
+ });
252
+ });
253
+ describe('edit content', () => {
254
+ it('should set the content of a content editable element', async () => {
255
+ await driver.get(`http://localhost:${port}/contenteditable.html`);
256
+ await executor.doEditContent('id=c', 'hello world');
257
+ const r = await driver.findElement(selenium_webdriver_1.By.id('c'));
258
+ expect(await r.getText()).toBe('hello world');
259
+ });
260
+ it('should escape HTML when put into a content editable element', async () => {
261
+ await driver.get(`http://localhost:${port}/contenteditable.html`);
262
+ await executor.doEditContent('id=c', '<b>hello world</b>');
263
+ const r = await driver.findElement(selenium_webdriver_1.By.id('c'));
264
+ expect(await r.getText()).toBe('<b>hello world</b>');
265
+ });
266
+ it('should throw if trying to set the content of a non-content editable element', async () => {
267
+ await driver.get(`http://localhost:${port}/editable.html`);
268
+ await expect(executor.doEditContent('id=e', 'hello world')).rejects.toThrow('Element is not content editable');
269
+ });
270
+ });
271
+ describe('mouse down and mouse down at', () => {
272
+ it('it should move and press the left mouse button on an element', async () => {
273
+ await driver.get(`http://localhost:${port}/mouse/updown.html`);
274
+ await executor.doMouseDown('id=a');
275
+ const r = await driver.findElement(selenium_webdriver_1.By.id('a'));
276
+ expect(await r.getText()).toMatch(/^down/);
277
+ });
278
+ it('it should move and press the left mouse button on an element (using mouse down at)', async () => {
279
+ await driver.get(`http://localhost:${port}/mouse/updown.html`);
280
+ await executor.doMouseDownAt('id=a', '100,50');
281
+ const r = await driver.findElement(selenium_webdriver_1.By.id('a'));
282
+ expect(await r.getText()).toMatch(/^down/);
283
+ });
284
+ it.skip('it should move and press the left mouse button on an element at a specific point', async () => {
285
+ // decide wether coordinates are relative to center or to the top-left corner
286
+ await driver.get(`http://localhost:${port}/mouse/updown.html`);
287
+ await executor.doMouseDownAt('id=a', '100,5');
288
+ const r = await driver.findElement(selenium_webdriver_1.By.id('a'));
289
+ expect(await r.getText()).toBe('down 10,5');
290
+ });
291
+ });
292
+ describe('mouse move at', () => {
293
+ it('it should move to a specific point in an element', async () => {
294
+ // decide wether coordinates are relative to center or to the top-left corner
295
+ await driver.get(`http://localhost:${port}/mouse/move.html`);
296
+ await executor.doMouseMoveAt('id=a', '100,5');
297
+ const r = await driver.findElement(selenium_webdriver_1.By.id('a'));
298
+ expect(await r.getText()).toBe('move 350,255');
299
+ });
300
+ });
301
+ describe('mouse out', () => {
302
+ it('should move out of an element through the top', async () => {
303
+ await driver.get(`http://localhost:${port}/mouse/out.html?y=1`);
304
+ const r = await driver.findElement(selenium_webdriver_1.By.id('cont'));
305
+ await driver.actions({ bridge: true }).move({ origin: r }).perform();
306
+ await executor.doMouseOut('id=cont');
307
+ expect(await r.getText()).toBe('out 250,-1');
308
+ });
309
+ it('should move out of an element through the right', async () => {
310
+ await driver.manage().window().setRect({ height: 1000, width: 1000 });
311
+ await driver.get(`http://localhost:${port}/mouse/out.html?x=0&y=0`);
312
+ const r = await driver.findElement(selenium_webdriver_1.By.id('cont'));
313
+ await driver.actions({ bridge: true }).move({ origin: r }).perform();
314
+ await executor.doMouseOut('id=cont');
315
+ expect(await r.getText()).toBe('out 501,250');
316
+ });
317
+ it('should move out of an element through the bottom', async () => {
318
+ await driver.manage().window().setRect({ height: 1000, width: 1000 });
319
+ await driver.get(`http://localhost:${port}/mouse/out.html?x=0&y=0&w=1000`);
320
+ const r = await driver.findElement(selenium_webdriver_1.By.id('cont'));
321
+ await driver.actions({ bridge: true }).move({ origin: r }).perform();
322
+ await executor.doMouseOut('id=cont');
323
+ expect(await r.getText()).toBe('out 500,501');
324
+ });
325
+ it('should move out of an element through the left', async () => {
326
+ await driver.manage().window().setRect({ height: 400, width: 1000 });
327
+ await driver.get(`http://localhost:${port}/mouse/out.html?x=1&y=0&w=1000&h=400`);
328
+ const r = await driver.findElement(selenium_webdriver_1.By.id('cont'));
329
+ await driver.actions({ bridge: true }).move({ origin: r }).perform();
330
+ await executor.doMouseOut('id=cont');
331
+ expect(await r.getText()).toMatch(/^out -1,/);
332
+ });
333
+ it('should throw if the element takes up the entire viewport', async () => {
334
+ await driver.manage().window().setRect({ height: 400, width: 400 });
335
+ await driver.get(`http://localhost:${port}/mouse/out.html?x=0&y=0&w=500&h=500`);
336
+ await expect(executor.doMouseOut('id=cont')).rejects.toThrow('Unable to perform mouse out as the element takes up the entire viewport');
337
+ });
338
+ });
339
+ describe('mouse over', () => {
340
+ it('should be able to move the pointer over an element', async () => {
341
+ await driver.get(`http://localhost:${port}/mouse/over.html`);
342
+ await executor.doMouseOver('id=a');
343
+ const r = await driver.findElement(selenium_webdriver_1.By.id('a'));
344
+ expect(await r.getText()).toMatch(/^over/);
345
+ });
346
+ });
347
+ describe('mouse up and mouse up at', () => {
348
+ it('it should move and release the left mouse button on an element', async () => {
349
+ await driver.get(`http://localhost:${port}/mouse/updown.html`);
350
+ const r = await driver.findElement(selenium_webdriver_1.By.id('a'));
351
+ await driver
352
+ .actions({ bridge: true })
353
+ .move({ origin: r })
354
+ .press()
355
+ .perform();
356
+ await executor.doMouseUp('id=a');
357
+ expect(await r.getText()).toMatch(/^up/);
358
+ });
359
+ it('it should move and press the release mouse button on an element (using mouse up at)', async () => {
360
+ await driver.get(`http://localhost:${port}/mouse/updown.html`);
361
+ const r = await driver.findElement(selenium_webdriver_1.By.id('a'));
362
+ await driver
363
+ .actions({ bridge: true })
364
+ .move({ origin: r })
365
+ .press()
366
+ .perform();
367
+ await executor.doMouseUpAt('id=a', '100,50');
368
+ expect(await r.getText()).toMatch(/^up/);
369
+ });
370
+ it.skip('it should move and release the left mouse button on an element at a specific point', async () => {
371
+ // decide wether coordinates are relative to center or to the top-left corner
372
+ await driver.get(`http://localhost:${port}/mouse/updown.html`);
373
+ const r = await driver.findElement(selenium_webdriver_1.By.id('a'));
374
+ await driver
375
+ .actions({ bridge: true })
376
+ .move({ origin: r })
377
+ .press()
378
+ .perform();
379
+ await executor.doMouseUpAt('id=a', '100,5');
380
+ expect(await r.getText()).toBe('up 10,5');
381
+ });
382
+ });
383
+ describe('remove selection', () => {
384
+ it('should throw when trying to use with a single item select', async () => {
385
+ await driver.get(`http://localhost:${port}/select.html`);
386
+ await expect(executor.doRemoveSelection('css=select', 'label=Two')).rejects.toThrow('Given element is not a multiple select type element');
387
+ });
388
+ it('should remove from a multi select element', async () => {
389
+ await driver.get(`http://localhost:${port}/select.html`);
390
+ const element = await driver.findElement(selenium_webdriver_1.By.id('mult'));
391
+ const opt1 = await element.findElement(selenium_webdriver_1.By.css('option:nth-child(1)'));
392
+ const opt4 = await element.findElement(selenium_webdriver_1.By.css('option:nth-child(4)'));
393
+ await opt1.click();
394
+ await opt4.click();
395
+ expect((await driver.executeScript('return arguments[0].selectedOptions', element)).length).toBe(2);
396
+ await executor.doRemoveSelection('id=mult', 'label=Volvo');
397
+ const selections = await driver.executeScript('return arguments[0].selectedOptions', element);
398
+ expect(selections.length).toBe(1);
399
+ await executor.doRemoveSelection('id=mult', 'value=volvo');
400
+ // no selections by mistake
401
+ expect((await driver.executeScript('return arguments[0].selectedOptions', element)).length).toBe(1);
402
+ await executor.doRemoveSelection('id=mult', 'value=audi');
403
+ expect((await driver.executeScript('return arguments[0].selectedOptions', element)).length).toBe(0);
404
+ });
405
+ });
406
+ describe('store json', () => {
407
+ it('should the JSON string as an object', async () => {
408
+ const varName = 'blah';
409
+ await executor.doStoreJson('{"blah":"blah"}', varName);
410
+ const result = executor.variables.get(varName);
411
+ expect(typeof result).toMatch('object');
412
+ expect(result.blah).toMatch('blah');
413
+ });
414
+ });
415
+ describe('store attribute', () => {
416
+ it('should store the attribute of an element', async () => {
417
+ await driver.get(`http://localhost:${port}/store/attributes.html`);
418
+ await executor.doStoreAttribute('id=disabled@disabled', 'd');
419
+ expect(executor.variables.get('d')).toBe('true');
420
+ await executor.doStoreAttribute('id=disabled@type', 't');
421
+ expect(executor.variables.get('t')).toBe('text');
422
+ await executor.doStoreAttribute('id=disabled@nan', 'n');
423
+ expect(executor.variables.get('n')).toBe(null);
424
+ });
425
+ });
426
+ describe('store title', () => {
427
+ it('should store the title of a page', async () => {
428
+ await driver.get(`http://localhost:${port}/title.html`);
429
+ await executor.doStoreTitle('t');
430
+ expect(executor.variables.get('t')).toBe('test title');
431
+ });
432
+ });
433
+ describe('store element count', () => {
434
+ it('should store the number of elements in a page', async () => {
435
+ await driver.get(`http://localhost:${port}/store/nodes.html`);
436
+ await executor.doStoreElementCount('css=.testclass', 'n');
437
+ expect(executor.variables.get('n')).toBe(6);
438
+ await executor.doStoreElementCount('css=.nan', 'n');
439
+ expect(executor.variables.get('n')).toBe(0);
440
+ });
441
+ });
442
+ describe('wait for element editable', () => {
443
+ it('should wait for an element to be editable', async () => {
444
+ await driver.get(`http://localhost:${port}/wait/editable.html`);
445
+ const button = await driver.findElement(selenium_webdriver_1.By.id('b'));
446
+ await button.click();
447
+ await executor.doWaitForElementEditable('id=t', '500');
448
+ const input = await driver.findElement(selenium_webdriver_1.By.id('t'));
449
+ await input.sendKeys('hey');
450
+ expect(await input.getAttribute('value')).toBe('hey');
451
+ });
452
+ it('should timeout trying to wait for an element to be editable', async () => {
453
+ await driver.get(`http://localhost:${port}/wait/editable.html`);
454
+ await expect(executor.doWaitForElementEditable('id=t', '100')).rejects.toThrow();
455
+ });
456
+ it('should wait for an element to be not editable', async () => {
457
+ await driver.get(`http://localhost:${port}/wait/not-editable.html`);
458
+ const button = await driver.findElement(selenium_webdriver_1.By.id('b'));
459
+ await button.click();
460
+ await executor.doWaitForElementNotEditable('id=t', '500');
461
+ const input = await driver.findElement(selenium_webdriver_1.By.id('t'));
462
+ await expect(input.sendKeys('hey')).rejects.toThrow();
463
+ });
464
+ it('should timeout trying to wait for an element to be not editable', async () => {
465
+ await driver.get(`http://localhost:${port}/wait/not-editable.html`);
466
+ await expect(executor.doWaitForElementNotEditable('id=t', '100')).rejects.toThrow();
467
+ });
468
+ });
469
+ describe('wait for element present', () => {
470
+ it('should wait for an element to appear', async () => {
471
+ await driver.get(`http://localhost:${port}/wait/present.html`);
472
+ const button = await driver.findElement(selenium_webdriver_1.By.id('b'));
473
+ await button.click();
474
+ await executor.doWaitForElementPresent('id=t', '500');
475
+ expect(await driver.findElement(selenium_webdriver_1.By.id('t'))).toBeInstanceOf(selenium_webdriver_1.WebElement);
476
+ });
477
+ it('should timeout trying to wait for an element to appear', async () => {
478
+ await driver.get(`http://localhost:${port}/wait/present.html`);
479
+ await expect(executor.doWaitForElementPresent('id=t', '100')).rejects.toThrow();
480
+ });
481
+ it('should wait for an element to disappear', async () => {
482
+ await driver.get(`http://localhost:${port}/wait/not-present.html`);
483
+ expect(await driver.findElement(selenium_webdriver_1.By.id('t'))).toBeInstanceOf(selenium_webdriver_1.WebElement);
484
+ const button = await driver.findElement(selenium_webdriver_1.By.id('b'));
485
+ await button.click();
486
+ await executor.doWaitForElementNotPresent('id=t', '500');
487
+ await expect(driver.findElement(selenium_webdriver_1.By.id('t'))).rejects.toThrow();
488
+ });
489
+ it('should timeout trying to wait for an element to disappear', async () => {
490
+ await driver.get(`http://localhost:${port}/wait/not-present.html`);
491
+ await expect(executor.doWaitForElementNotPresent('id=t', '100')).rejects.toThrow();
492
+ });
493
+ });
494
+ describe('wait for element visible', () => {
495
+ it('should wait for an element to be visible', async () => {
496
+ await driver.get(`http://localhost:${port}/wait/visible.html`);
497
+ const button = await driver.findElement(selenium_webdriver_1.By.id('b'));
498
+ await button.click();
499
+ await executor.doWaitForElementVisible('id=t', '500');
500
+ expect(await driver.findElement(selenium_webdriver_1.By.id('t'))).toBeInstanceOf(selenium_webdriver_1.WebElement);
501
+ });
502
+ it('should timeout trying to wait for an element to be visible', async () => {
503
+ await driver.get(`http://localhost:${port}/wait/visible.html`);
504
+ await expect(executor.doWaitForElementVisible('id=t', '100')).rejects.toThrow();
505
+ });
506
+ it('should wait for an element to be invisible', async () => {
507
+ await driver.get(`http://localhost:${port}/wait/not-visible.html`);
508
+ const elem = await driver.findElement(selenium_webdriver_1.By.id('t'));
509
+ expect(await elem.isDisplayed()).toBeTruthy();
510
+ const button = await driver.findElement(selenium_webdriver_1.By.id('b'));
511
+ await button.click();
512
+ await executor.doWaitForElementNotVisible('id=t', '500');
513
+ expect(await elem.isDisplayed()).toBeFalsy();
514
+ });
515
+ it('should timeout trying to wait for an element to be invisible', async () => {
516
+ await driver.get(`http://localhost:${port}/wait/not-visible.html`);
517
+ await expect(executor.doWaitForElementNotVisible('id=t', '100')).rejects.toThrow();
518
+ });
519
+ });
520
+ });
521
+ });
522
+ //# sourceMappingURL=webdriver.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webdriver.spec.js","sourceRoot":"","sources":["../../src/__tests__/webdriver.spec.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { CommandShape } from '@seleniumhq/side-model';
2
2
  export declare function deriveCommandLevels(commandStack: CommandShape[]): number[];
3
- export declare type LevelCommand = (command: CommandShape, level: number, levels: number[]) => ({
3
+ export type LevelCommand = (command: CommandShape, level: number, levels: number[]) => {
4
4
  level: number;
5
5
  levels: number[];
6
- });
6
+ };
7
7
  //# sourceMappingURL=command-leveler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"command-leveler.d.ts","sourceRoot":"","sources":["../../src/playback-tree/command-leveler.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAErD,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAS1E;AAED,oBAAY,YAAY,GAAG,CACzB,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EAAE,KACb,CAAC;IACJ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,CAAC,CAAA"}
1
+ {"version":3,"file":"command-leveler.d.ts","sourceRoot":"","sources":["../../src/playback-tree/command-leveler.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAErD,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAS1E;AAED,MAAM,MAAM,YAAY,GAAG,CACzB,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EAAE,KACb;IACH,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA"}
@@ -54,8 +54,9 @@ const levelElse = (_command, level, _levels) => {
54
54
  return { level, levels };
55
55
  };
56
56
  const levelCommand = (command, level, levels) => {
57
- if (!command.skip && commandLevelers[command.command]) {
58
- return commandLevelers[command.command](command, level, levels);
57
+ if (!command.skip && command.command in commandLevelers) {
58
+ const levelerKey = command.command;
59
+ return commandLevelers[levelerKey](command, level, levels);
59
60
  }
60
61
  return levelDefault(command, level, levels);
61
62
  };
@@ -68,6 +69,7 @@ const commandLevelers = {
68
69
  [commands_1.ControlFlowCommandNames.if]: levelBranchOpen,
69
70
  [commands_1.ControlFlowCommandNames.repeatIf]: levelBranchEnd,
70
71
  [commands_1.ControlFlowCommandNames.times]: levelBranchOpen,
72
+ [commands_1.ControlFlowCommandNames.try]: levelBranchOpen,
71
73
  [commands_1.ControlFlowCommandNames.while]: levelBranchOpen,
72
74
  };
73
75
  //# sourceMappingURL=command-leveler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command-leveler.js","sourceRoot":"","sources":["../../src/playback-tree/command-leveler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-leveler.js","sourceRoot":"","sources":["../../src/playback-tree/command-leveler.ts"],"names":[],"mappings":"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"}