codeceptjs 3.3.1 → 3.3.2
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 +7 -0
- package/README.md +4 -25
- package/docs/build/Appium.js +18 -28
- package/docs/build/Nightmare.js +53 -53
- package/docs/build/Playwright.js +74 -99
- package/docs/build/Protractor.js +66 -66
- package/docs/build/Puppeteer.js +74 -74
- package/docs/build/REST.js +2 -2
- package/docs/build/TestCafe.js +53 -53
- package/docs/build/WebDriver.js +79 -81
- package/docs/changelog.md +7 -0
- package/docs/helpers/Appium.md +212 -268
- package/docs/helpers/Nightmare.md +92 -141
- package/docs/helpers/Playwright.md +266 -383
- package/docs/helpers/Puppeteer.md +171 -231
- package/docs/helpers/TestCafe.md +125 -174
- package/docs/helpers/WebDriver.md +184 -247
- package/docs/webapi/amOnPage.mustache +1 -1
- package/docs/webapi/appendField.mustache +1 -1
- package/docs/webapi/attachFile.mustache +1 -1
- package/docs/webapi/checkOption.mustache +1 -1
- package/docs/webapi/clearCookie.mustache +1 -1
- package/docs/webapi/clearField.mustache +1 -1
- package/docs/webapi/click.mustache +1 -1
- package/docs/webapi/clickLink.mustache +1 -1
- package/docs/webapi/closeCurrentTab.mustache +1 -1
- package/docs/webapi/closeOtherTabs.mustache +1 -1
- package/docs/webapi/dontSee.mustache +1 -1
- package/docs/webapi/dontSeeCheckboxIsChecked.mustache +1 -1
- package/docs/webapi/dontSeeCookie.mustache +1 -1
- package/docs/webapi/dontSeeCurrentUrlEquals.mustache +1 -1
- package/docs/webapi/dontSeeElement.mustache +1 -1
- package/docs/webapi/dontSeeElementInDOM.mustache +1 -1
- package/docs/webapi/dontSeeInCurrentUrl.mustache +1 -1
- package/docs/webapi/dontSeeInField.mustache +1 -1
- package/docs/webapi/dontSeeInSource.mustache +1 -1
- package/docs/webapi/dontSeeInTitle.mustache +1 -1
- package/docs/webapi/doubleClick.mustache +1 -1
- package/docs/webapi/downloadFile.mustache +1 -1
- package/docs/webapi/dragAndDrop.mustache +1 -1
- package/docs/webapi/dragSlider.mustache +1 -1
- package/docs/webapi/executeAsyncScript.mustache +1 -1
- package/docs/webapi/executeScript.mustache +1 -1
- package/docs/webapi/fillField.mustache +1 -1
- package/docs/webapi/forceClick.mustache +1 -1
- package/docs/webapi/forceRightClick.mustache +1 -1
- package/docs/webapi/grabDataFromPerformanceTiming.mustache +1 -1
- package/docs/webapi/moveCursorTo.mustache +1 -1
- package/docs/webapi/openNewTab.mustache +1 -1
- package/docs/webapi/pressKey.mustache +1 -1
- package/docs/webapi/pressKeyDown.mustache +1 -1
- package/docs/webapi/pressKeyUp.mustache +1 -1
- package/docs/webapi/pressKeyWithKeyNormalization.mustache +1 -1
- package/docs/webapi/refreshPage.mustache +1 -1
- package/docs/webapi/resizeWindow.mustache +1 -1
- package/docs/webapi/rightClick.mustache +1 -1
- package/docs/webapi/saveElementScreenshot.mustache +1 -1
- package/docs/webapi/saveScreenshot.mustache +1 -1
- package/docs/webapi/say.mustache +1 -1
- package/docs/webapi/scrollIntoView.mustache +1 -1
- package/docs/webapi/scrollPageToBottom.mustache +1 -1
- package/docs/webapi/scrollPageToTop.mustache +1 -1
- package/docs/webapi/scrollTo.mustache +1 -1
- package/docs/webapi/see.mustache +1 -1
- package/docs/webapi/seeAttributesOnElements.mustache +1 -1
- package/docs/webapi/seeCheckboxIsChecked.mustache +1 -1
- package/docs/webapi/seeCookie.mustache +1 -1
- package/docs/webapi/seeCssPropertiesOnElements.mustache +1 -1
- package/docs/webapi/seeCurrentUrlEquals.mustache +1 -1
- package/docs/webapi/seeElement.mustache +1 -1
- package/docs/webapi/seeElementInDOM.mustache +1 -1
- package/docs/webapi/seeInCurrentUrl.mustache +1 -1
- package/docs/webapi/seeInField.mustache +1 -1
- package/docs/webapi/seeInPopup.mustache +1 -1
- package/docs/webapi/seeInSource.mustache +1 -1
- package/docs/webapi/seeInTitle.mustache +1 -1
- package/docs/webapi/seeNumberOfElements.mustache +1 -1
- package/docs/webapi/seeNumberOfVisibleElements.mustache +1 -1
- package/docs/webapi/seeTextEquals.mustache +1 -1
- package/docs/webapi/seeTitleEquals.mustache +1 -1
- package/docs/webapi/selectOption.mustache +1 -1
- package/docs/webapi/setCookie.mustache +1 -1
- package/docs/webapi/setGeoLocation.mustache +1 -1
- package/docs/webapi/switchTo.mustache +1 -1
- package/docs/webapi/switchToNextTab.mustache +1 -1
- package/docs/webapi/switchToPreviousTab.mustache +1 -1
- package/docs/webapi/type.mustache +1 -1
- package/docs/webapi/uncheckOption.mustache +1 -1
- package/docs/webapi/wait.mustache +1 -1
- package/docs/webapi/waitForClickable.mustache +1 -1
- package/docs/webapi/waitForDetached.mustache +1 -1
- package/docs/webapi/waitForElement.mustache +1 -1
- package/docs/webapi/waitForEnabled.mustache +1 -1
- package/docs/webapi/waitForFunction.mustache +1 -1
- package/docs/webapi/waitForInvisible.mustache +1 -1
- package/docs/webapi/waitForText.mustache +1 -1
- package/docs/webapi/waitForValue.mustache +1 -1
- package/docs/webapi/waitForVisible.mustache +1 -1
- package/docs/webapi/waitInUrl.mustache +1 -1
- package/docs/webapi/waitNumberOfVisibleElements.mustache +1 -1
- package/docs/webapi/waitToHide.mustache +1 -1
- package/docs/webapi/waitUrlEquals.mustache +1 -1
- package/lib/helper/Appium.js +0 -10
- package/lib/helper/Playwright.js +3 -28
- package/lib/helper/REST.js +2 -2
- package/lib/helper/WebDriver.js +0 -2
- package/package.json +1 -1
- package/typings/types.d.ts +988 -517
|
@@ -82,7 +82,7 @@ I.amOnPage('/login'); // opens a login page
|
|
|
82
82
|
- `url` **[string][3]** url path or global url.
|
|
83
83
|
- `headers` **[object][4]?** list of request headers can be passed
|
|
84
84
|
|
|
85
|
-
Returns **
|
|
85
|
+
Returns **void** automatically synchronized promise with recorder #!
|
|
86
86
|
|
|
87
87
|
### appendField
|
|
88
88
|
|
|
@@ -97,8 +97,7 @@ I.appendField('#myTextField', 'appended');
|
|
|
97
97
|
|
|
98
98
|
- `field` **([string][3] | [object][4])** located by label|name|CSS|XPath|strict locator
|
|
99
99
|
- `value` **[string][3]** text value to append.
|
|
100
|
-
|
|
101
|
-
Returns **[Promise][5]<any>**
|
|
100
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
102
101
|
|
|
103
102
|
### attachFile
|
|
104
103
|
|
|
@@ -115,8 +114,7 @@ I.attachFile('form input[name=avatar]', 'data/avatar.jpg');
|
|
|
115
114
|
|
|
116
115
|
- `locator` **([string][3] | [object][4])** field located by label|name|CSS|XPath|strict locator.
|
|
117
116
|
- `pathToFile` **[string][3]** local file path relative to codecept.json config file.
|
|
118
|
-
|
|
119
|
-
Returns **[Promise][5]<any>** Doesn't work if the Chromium DevTools panel is open (as Chromium allows only one attachment to the debugger at a time. [See more][6])
|
|
117
|
+
[!] returns a _promise_ which is synchronized internally by recorderDoesn't work if the Chromium DevTools panel is open (as Chromium allows only one attachment to the debugger at a time. [See more][5])
|
|
120
118
|
|
|
121
119
|
### checkOption
|
|
122
120
|
|
|
@@ -134,9 +132,8 @@ I.checkOption('agree', '//form');
|
|
|
134
132
|
#### Parameters
|
|
135
133
|
|
|
136
134
|
- `field` **([string][3] | [object][4])** checkbox located by label | name | CSS | XPath | strict locator.
|
|
137
|
-
- `context` **([string][3]? | [object][4])** (optional, `null` by default) element located by CSS | XPath | strict locator.
|
|
138
|
-
|
|
139
|
-
Returns **[Promise][5]<any>**
|
|
135
|
+
- `context` **([string][3]? | [object][4])** (optional, `null` by default) element located by CSS | XPath | strict locator.
|
|
136
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
140
137
|
|
|
141
138
|
### clearCookie
|
|
142
139
|
|
|
@@ -150,9 +147,8 @@ I.clearCookie('test');
|
|
|
150
147
|
|
|
151
148
|
#### Parameters
|
|
152
149
|
|
|
153
|
-
- `cookie` **[string][3]?** (optional, `null` by default) cookie name
|
|
154
|
-
|
|
155
|
-
Returns **[Promise][5]<any>**
|
|
150
|
+
- `cookie` **[string][3]?** (optional, `null` by default) cookie name
|
|
151
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
156
152
|
|
|
157
153
|
### clearField
|
|
158
154
|
|
|
@@ -168,8 +164,7 @@ I.clearField('#email');
|
|
|
168
164
|
|
|
169
165
|
- `field`
|
|
170
166
|
- `editable` **([string][3] | [object][4])** field located by label|name|CSS|XPath|strict locator.
|
|
171
|
-
|
|
172
|
-
Returns **[Promise][5]<any>**
|
|
167
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
173
168
|
|
|
174
169
|
### click
|
|
175
170
|
|
|
@@ -198,9 +193,8 @@ I.click({css: 'nav a.login'});
|
|
|
198
193
|
#### Parameters
|
|
199
194
|
|
|
200
195
|
- `locator` **([string][3] | [object][4])** clickable link or button located by text, or any element located by CSS|XPath|strict locator.
|
|
201
|
-
- `context` **([string][3]? | [object][4] | null)** (optional, `null` by default) element to search in CSS|XPath|Strict locator.
|
|
202
|
-
|
|
203
|
-
Returns **[Promise][5]<any>**
|
|
196
|
+
- `context` **([string][3]? | [object][4] | null)** (optional, `null` by default) element to search in CSS|XPath|Strict locator.
|
|
197
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
204
198
|
|
|
205
199
|
### dontSee
|
|
206
200
|
|
|
@@ -215,9 +209,8 @@ I.dontSee('Login', '.nav'); // no login inside .nav element
|
|
|
215
209
|
#### Parameters
|
|
216
210
|
|
|
217
211
|
- `text` **[string][3]** which is not present.
|
|
218
|
-
- `context` **([string][3] | [object][4])?** (optional) element located by CSS|XPath|strict locator in which to perfrom search.
|
|
219
|
-
|
|
220
|
-
Returns **[Promise][5]<any>**
|
|
212
|
+
- `context` **([string][3] | [object][4])?** (optional) element located by CSS|XPath|strict locator in which to perfrom search.
|
|
213
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
221
214
|
|
|
222
215
|
### dontSeeCheckboxIsChecked
|
|
223
216
|
|
|
@@ -232,8 +225,7 @@ I.dontSeeCheckboxIsChecked('agree'); // located by name
|
|
|
232
225
|
#### Parameters
|
|
233
226
|
|
|
234
227
|
- `field` **([string][3] | [object][4])** located by label|name|CSS|XPath|strict locator.
|
|
235
|
-
|
|
236
|
-
Returns **[Promise][5]<any>**
|
|
228
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
237
229
|
|
|
238
230
|
### dontSeeCookie
|
|
239
231
|
|
|
@@ -246,8 +238,7 @@ I.dontSeeCookie('auth'); // no auth cookie
|
|
|
246
238
|
#### Parameters
|
|
247
239
|
|
|
248
240
|
- `name` **[string][3]** cookie name.
|
|
249
|
-
|
|
250
|
-
Returns **[Promise][5]<any>**
|
|
241
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
251
242
|
|
|
252
243
|
### dontSeeCurrentUrlEquals
|
|
253
244
|
|
|
@@ -262,8 +253,7 @@ I.dontSeeCurrentUrlEquals('http://mysite.com/login'); // absolute urls are also
|
|
|
262
253
|
#### Parameters
|
|
263
254
|
|
|
264
255
|
- `url` **[string][3]** value to check.
|
|
265
|
-
|
|
266
|
-
Returns **[Promise][5]<any>**
|
|
256
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
267
257
|
|
|
268
258
|
### dontSeeElement
|
|
269
259
|
|
|
@@ -276,8 +266,7 @@ I.dontSeeElement('.modal'); // modal is not shown
|
|
|
276
266
|
#### Parameters
|
|
277
267
|
|
|
278
268
|
- `locator` **([string][3] | [object][4])** located by CSS|XPath|Strict locator.
|
|
279
|
-
|
|
280
|
-
Returns **[Promise][5]<any>**
|
|
269
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
281
270
|
|
|
282
271
|
### dontSeeElementInDOM
|
|
283
272
|
|
|
@@ -290,8 +279,7 @@ I.dontSeeElementInDOM('.nav'); // checks that element is not on page visible or
|
|
|
290
279
|
#### Parameters
|
|
291
280
|
|
|
292
281
|
- `locator` **([string][3] | [object][4])** located by CSS|XPath|Strict locator.
|
|
293
|
-
|
|
294
|
-
Returns **[Promise][5]<any>**
|
|
282
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
295
283
|
|
|
296
284
|
### dontSeeInCurrentUrl
|
|
297
285
|
|
|
@@ -300,8 +288,7 @@ Checks that current url does not contain a provided fragment.
|
|
|
300
288
|
#### Parameters
|
|
301
289
|
|
|
302
290
|
- `url` **[string][3]** value to check.
|
|
303
|
-
|
|
304
|
-
Returns **[Promise][5]<any>**
|
|
291
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
305
292
|
|
|
306
293
|
### dontSeeInField
|
|
307
294
|
|
|
@@ -317,8 +304,7 @@ I.dontSeeInField({ css: 'form input.email' }, 'user@user.com'); // field by CSS
|
|
|
317
304
|
|
|
318
305
|
- `field` **([string][3] | [object][4])** located by label|name|CSS|XPath|strict locator.
|
|
319
306
|
- `value` **[string][3]** value to check.
|
|
320
|
-
|
|
321
|
-
Returns **[Promise][5]<any>**
|
|
307
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
322
308
|
|
|
323
309
|
### dontSeeInSource
|
|
324
310
|
|
|
@@ -332,8 +318,7 @@ I.dontSeeInSource('<!--'); // no comments in source
|
|
|
332
318
|
|
|
333
319
|
- `text`
|
|
334
320
|
- `value` **[string][3]** to check.
|
|
335
|
-
|
|
336
|
-
Returns **[Promise][5]<any>**
|
|
321
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
337
322
|
|
|
338
323
|
### dontSeeInTitle
|
|
339
324
|
|
|
@@ -346,8 +331,7 @@ I.dontSeeInTitle('Error');
|
|
|
346
331
|
#### Parameters
|
|
347
332
|
|
|
348
333
|
- `text` **[string][3]** value to check.
|
|
349
|
-
|
|
350
|
-
Returns **[Promise][5]<any>**
|
|
334
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
351
335
|
|
|
352
336
|
### doubleClick
|
|
353
337
|
|
|
@@ -364,16 +348,15 @@ I.doubleClick('.btn.edit');
|
|
|
364
348
|
#### Parameters
|
|
365
349
|
|
|
366
350
|
- `locator` **([string][3] | [object][4])** clickable link or button located by text, or any element located by CSS|XPath|strict locator.
|
|
367
|
-
- `context` **([string][3]? | [object][4])** (optional, `null` by default) element to search in CSS|XPath|Strict locator.
|
|
368
|
-
|
|
369
|
-
Returns **[Promise][5]<any>**
|
|
351
|
+
- `context` **([string][3]? | [object][4])** (optional, `null` by default) element to search in CSS|XPath|Strict locator.
|
|
352
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
370
353
|
|
|
371
354
|
### executeAsyncScript
|
|
372
355
|
|
|
373
356
|
Executes async script on page.
|
|
374
357
|
Provided function should execute a passed callback (as first argument) to signal it is finished.
|
|
375
358
|
|
|
376
|
-
Example: In Vue.js to make components completely rendered we are waiting for [nextTick][
|
|
359
|
+
Example: In Vue.js to make components completely rendered we are waiting for [nextTick][6].
|
|
377
360
|
|
|
378
361
|
```js
|
|
379
362
|
I.executeAsyncScript(function(done) {
|
|
@@ -394,11 +377,10 @@ let val = await I.executeAsyncScript(function(url, done) {
|
|
|
394
377
|
#### Parameters
|
|
395
378
|
|
|
396
379
|
- `args` **...any** to be passed to function.
|
|
380
|
+
[!] returns a _promise_ which is synchronized internally by recorderWrapper for asynchronous [evaluate][7].
|
|
381
|
+
Unlike NightmareJS implementation calling `done` will return its first argument.
|
|
397
382
|
- `fn` **([string][3] | [function][8])** function to be executed in browser context.
|
|
398
383
|
|
|
399
|
-
Returns **[Promise][5]<any>** Wrapper for asynchronous [evaluate][9].
|
|
400
|
-
Unlike NightmareJS implementation calling `done` will return its first argument.
|
|
401
|
-
|
|
402
384
|
### executeScript
|
|
403
385
|
|
|
404
386
|
Executes sync script on a page.
|
|
@@ -428,10 +410,9 @@ let date = await I.executeScript(function(el) {
|
|
|
428
410
|
#### Parameters
|
|
429
411
|
|
|
430
412
|
- `args` **...any** to be passed to function.
|
|
413
|
+
[!] returns a _promise_ which is synchronized internally by recorderWrapper for synchronous [evaluate][7]
|
|
431
414
|
- `fn` **([string][3] | [function][8])** function to be executed in browser context.
|
|
432
415
|
|
|
433
|
-
Returns **[Promise][5]<any>** Wrapper for synchronous [evaluate][9]
|
|
434
|
-
|
|
435
416
|
### fillField
|
|
436
417
|
|
|
437
418
|
Fills a text field or textarea, after clearing its value, with the given string.
|
|
@@ -452,8 +433,7 @@ I.fillField({css: 'form#login input[name=username]'}, 'John');
|
|
|
452
433
|
|
|
453
434
|
- `field` **([string][3] | [object][4])** located by label|name|CSS|XPath|strict locator.
|
|
454
435
|
- `value` **([string][3] | [object][4])** text value to fill.
|
|
455
|
-
|
|
456
|
-
Returns **[Promise][5]<any>**
|
|
436
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
457
437
|
|
|
458
438
|
### grabAttributeFrom
|
|
459
439
|
|
|
@@ -470,7 +450,7 @@ let hint = await I.grabAttributeFrom('#tooltip', 'title');
|
|
|
470
450
|
- `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
|
|
471
451
|
- `attr` **[string][3]** attribute name.
|
|
472
452
|
|
|
473
|
-
Returns **[Promise][
|
|
453
|
+
Returns **[Promise][9]<[string][3]>** attribute value
|
|
474
454
|
|
|
475
455
|
### grabAttributeFromAll
|
|
476
456
|
|
|
@@ -486,7 +466,7 @@ let hints = await I.grabAttributeFromAll('.tooltip', 'title');
|
|
|
486
466
|
- `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
|
|
487
467
|
- `attr` **[string][3]** attribute name.
|
|
488
468
|
|
|
489
|
-
Returns **[Promise][
|
|
469
|
+
Returns **[Promise][9]<[Array][10]<[string][3]>>** attribute value
|
|
490
470
|
|
|
491
471
|
### grabCookie
|
|
492
472
|
|
|
@@ -503,7 +483,7 @@ assert(cookie.value, '123456');
|
|
|
503
483
|
|
|
504
484
|
- `name` **[string][3]?** cookie name.
|
|
505
485
|
|
|
506
|
-
Returns **([Promise][
|
|
486
|
+
Returns **([Promise][9]<[string][3]> | [Promise][9]<[Array][10]<[string][3]>>)** attribute valueCookie in JSON format. If name not passed returns all cookies for this domain.Multiple cookies can be received by passing query object `I.grabCookie({ secure: true});`. If you'd like get all cookies for all urls, use: `.grabCookie({ url: null }).`
|
|
507
487
|
|
|
508
488
|
### grabCssPropertyFrom
|
|
509
489
|
|
|
@@ -520,7 +500,7 @@ const value = await I.grabCssPropertyFrom('h3', 'font-weight');
|
|
|
520
500
|
- `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
|
|
521
501
|
- `cssProperty` **[string][3]** CSS property name.
|
|
522
502
|
|
|
523
|
-
Returns **[Promise][
|
|
503
|
+
Returns **[Promise][9]<[string][3]>** CSS value
|
|
524
504
|
|
|
525
505
|
### grabCurrentUrl
|
|
526
506
|
|
|
@@ -532,7 +512,7 @@ let url = await I.grabCurrentUrl();
|
|
|
532
512
|
console.log(`Current URL is [${url}]`);
|
|
533
513
|
```
|
|
534
514
|
|
|
535
|
-
Returns **[Promise][
|
|
515
|
+
Returns **[Promise][9]<[string][3]>** current URL
|
|
536
516
|
|
|
537
517
|
### grabElementBoundingRect
|
|
538
518
|
|
|
@@ -560,7 +540,7 @@ const width = await I.grabElementBoundingRect('h3', 'width');
|
|
|
560
540
|
- `prop`
|
|
561
541
|
- `elementSize` **[string][3]?** x, y, width or height of the given element.
|
|
562
542
|
|
|
563
|
-
Returns **([Promise][
|
|
543
|
+
Returns **([Promise][9]<DOMRect> | [Promise][9]<[number][11]>)** Element bounding rectangle
|
|
564
544
|
|
|
565
545
|
### grabHAR
|
|
566
546
|
|
|
@@ -586,7 +566,7 @@ let postHTML = await I.grabHTMLFrom('#post');
|
|
|
586
566
|
- `locator`
|
|
587
567
|
- `element` **([string][3] | [object][4])** located by CSS|XPath|strict locator.
|
|
588
568
|
|
|
589
|
-
Returns **[Promise][
|
|
569
|
+
Returns **[Promise][9]<[string][3]>** HTML code for an element
|
|
590
570
|
|
|
591
571
|
### grabHTMLFromAll
|
|
592
572
|
|
|
@@ -602,7 +582,7 @@ let postHTMLs = await I.grabHTMLFromAll('.post');
|
|
|
602
582
|
- `locator`
|
|
603
583
|
- `element` **([string][3] | [object][4])** located by CSS|XPath|strict locator.
|
|
604
584
|
|
|
605
|
-
Returns **[Promise][
|
|
585
|
+
Returns **[Promise][9]<[Array][10]<[string][3]>>** HTML code for an element
|
|
606
586
|
|
|
607
587
|
### grabNumberOfVisibleElements
|
|
608
588
|
|
|
@@ -617,7 +597,7 @@ let numOfElements = await I.grabNumberOfVisibleElements('p');
|
|
|
617
597
|
|
|
618
598
|
- `locator` **([string][3] | [object][4])** located by CSS|XPath|strict locator.
|
|
619
599
|
|
|
620
|
-
Returns **[Promise][
|
|
600
|
+
Returns **[Promise][9]<[number][11]>** number of visible elements
|
|
621
601
|
|
|
622
602
|
### grabPageScrollPosition
|
|
623
603
|
|
|
@@ -628,7 +608,7 @@ Resumes test execution, so **should be used inside an async function with `await
|
|
|
628
608
|
let { x, y } = await I.grabPageScrollPosition();
|
|
629
609
|
```
|
|
630
610
|
|
|
631
|
-
Returns **[Promise][
|
|
611
|
+
Returns **[Promise][9]<PageScrollPosition>** scroll position
|
|
632
612
|
|
|
633
613
|
### grabTextFrom
|
|
634
614
|
|
|
@@ -645,7 +625,7 @@ If multiple elements found returns first element.
|
|
|
645
625
|
|
|
646
626
|
- `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
|
|
647
627
|
|
|
648
|
-
Returns **[Promise][
|
|
628
|
+
Returns **[Promise][9]<[string][3]>** attribute value
|
|
649
629
|
|
|
650
630
|
### grabTextFromAll
|
|
651
631
|
|
|
@@ -660,7 +640,7 @@ let pins = await I.grabTextFromAll('#pin li');
|
|
|
660
640
|
|
|
661
641
|
- `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
|
|
662
642
|
|
|
663
|
-
Returns **[Promise][
|
|
643
|
+
Returns **[Promise][9]<[Array][10]<[string][3]>>** attribute value
|
|
664
644
|
|
|
665
645
|
### grabTitle
|
|
666
646
|
|
|
@@ -671,7 +651,7 @@ Resumes test execution, so **should be used inside async with `await`** operator
|
|
|
671
651
|
let title = await I.grabTitle();
|
|
672
652
|
```
|
|
673
653
|
|
|
674
|
-
Returns **[Promise][
|
|
654
|
+
Returns **[Promise][9]<[string][3]>** title
|
|
675
655
|
|
|
676
656
|
### grabValueFrom
|
|
677
657
|
|
|
@@ -687,7 +667,7 @@ let email = await I.grabValueFrom('input[name=email]');
|
|
|
687
667
|
|
|
688
668
|
- `locator` **([string][3] | [object][4])** field located by label|name|CSS|XPath|strict locator.
|
|
689
669
|
|
|
690
|
-
Returns **[Promise][
|
|
670
|
+
Returns **[Promise][9]<[string][3]>** attribute value
|
|
691
671
|
|
|
692
672
|
### grabValueFromAll
|
|
693
673
|
|
|
@@ -702,7 +682,7 @@ let inputs = await I.grabValueFromAll('//form/input');
|
|
|
702
682
|
|
|
703
683
|
- `locator` **([string][3] | [object][4])** field located by label|name|CSS|XPath|strict locator.
|
|
704
684
|
|
|
705
|
-
Returns **[Promise][
|
|
685
|
+
Returns **[Promise][9]<[Array][10]<[string][3]>>** attribute value
|
|
706
686
|
|
|
707
687
|
### haveHeader
|
|
708
688
|
|
|
@@ -732,9 +712,8 @@ I.moveCursorTo('#submit', 5,5);
|
|
|
732
712
|
|
|
733
713
|
- `locator` **([string][3] | [object][4])** located by CSS|XPath|strict locator.
|
|
734
714
|
- `offsetX` **[number][11]** (optional, `0` by default) X-axis offset.
|
|
735
|
-
- `offsetY` **[number][11]** (optional, `0` by default) Y-axis offset.
|
|
736
|
-
|
|
737
|
-
Returns **[Promise][5]<any>**
|
|
715
|
+
- `offsetY` **[number][11]** (optional, `0` by default) Y-axis offset.
|
|
716
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
738
717
|
|
|
739
718
|
### pressKey
|
|
740
719
|
|
|
@@ -757,7 +736,7 @@ Reload the current page.
|
|
|
757
736
|
I.refreshPage();
|
|
758
737
|
```
|
|
759
738
|
|
|
760
|
-
|
|
739
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
761
740
|
|
|
762
741
|
### resizeWindow
|
|
763
742
|
|
|
@@ -768,8 +747,7 @@ First parameter can be set to `maximize`.
|
|
|
768
747
|
|
|
769
748
|
- `width` **[number][11]** width in pixels or `maximize`.
|
|
770
749
|
- `height` **[number][11]** height in pixels.
|
|
771
|
-
|
|
772
|
-
Returns **[Promise][5]<any>**
|
|
750
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
773
751
|
|
|
774
752
|
### rightClick
|
|
775
753
|
|
|
@@ -787,9 +765,8 @@ I.rightClick('Click me', '.context');
|
|
|
787
765
|
#### Parameters
|
|
788
766
|
|
|
789
767
|
- `locator` **([string][3] | [object][4])** clickable element located by CSS|XPath|strict locator.
|
|
790
|
-
- `context` **([string][3]? | [object][4])** (optional, `null` by default) element located by CSS|XPath|strict locator.
|
|
791
|
-
|
|
792
|
-
Returns **[Promise][5]<any>**
|
|
768
|
+
- `context` **([string][3]? | [object][4])** (optional, `null` by default) element located by CSS|XPath|strict locator.
|
|
769
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
793
770
|
|
|
794
771
|
### saveElementScreenshot
|
|
795
772
|
|
|
@@ -804,8 +781,7 @@ I.saveElementScreenshot(`#submit`,'debug.png');
|
|
|
804
781
|
|
|
805
782
|
- `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
|
|
806
783
|
- `fileName` **[string][3]** file name to save.
|
|
807
|
-
|
|
808
|
-
Returns **[Promise][5]<any>**
|
|
784
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
809
785
|
|
|
810
786
|
### saveScreenshot
|
|
811
787
|
|
|
@@ -821,9 +797,8 @@ I.saveScreenshot('debug.png', true) //resizes to available scrollHeight and scro
|
|
|
821
797
|
#### Parameters
|
|
822
798
|
|
|
823
799
|
- `fileName` **[string][3]** file name to save.
|
|
824
|
-
- `fullPage` **[boolean][13]** (optional, `false` by default) flag to enable fullscreen screenshot mode.
|
|
825
|
-
|
|
826
|
-
Returns **[Promise][5]<any>**
|
|
800
|
+
- `fullPage` **[boolean][13]** (optional, `false` by default) flag to enable fullscreen screenshot mode.
|
|
801
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
827
802
|
|
|
828
803
|
### scrollPageToBottom
|
|
829
804
|
|
|
@@ -833,7 +808,7 @@ Scroll page to the bottom.
|
|
|
833
808
|
I.scrollPageToBottom();
|
|
834
809
|
```
|
|
835
810
|
|
|
836
|
-
|
|
811
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
837
812
|
|
|
838
813
|
### scrollPageToTop
|
|
839
814
|
|
|
@@ -843,7 +818,7 @@ Scroll page to the top.
|
|
|
843
818
|
I.scrollPageToTop();
|
|
844
819
|
```
|
|
845
820
|
|
|
846
|
-
|
|
821
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
847
822
|
|
|
848
823
|
### scrollTo
|
|
849
824
|
|
|
@@ -859,9 +834,8 @@ I.scrollTo('#submit', 5, 5);
|
|
|
859
834
|
|
|
860
835
|
- `locator` **([string][3] | [object][4])** located by CSS|XPath|strict locator.
|
|
861
836
|
- `offsetX` **[number][11]** (optional, `0` by default) X-axis offset.
|
|
862
|
-
- `offsetY` **[number][11]** (optional, `0` by default) Y-axis offset.
|
|
863
|
-
|
|
864
|
-
Returns **[Promise][5]<any>**
|
|
837
|
+
- `offsetY` **[number][11]** (optional, `0` by default) Y-axis offset.
|
|
838
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
865
839
|
|
|
866
840
|
### see
|
|
867
841
|
|
|
@@ -877,9 +851,8 @@ I.see('Register', {css: 'form.register'}); // use strict locator
|
|
|
877
851
|
#### Parameters
|
|
878
852
|
|
|
879
853
|
- `text` **[string][3]** expected on page.
|
|
880
|
-
- `context` **([string][3]? | [object][4])** (optional, `null` by default) element located by CSS|Xpath|strict locator in which to search for text.
|
|
881
|
-
|
|
882
|
-
Returns **[Promise][5]<any>**
|
|
854
|
+
- `context` **([string][3]? | [object][4])** (optional, `null` by default) element located by CSS|Xpath|strict locator in which to search for text.
|
|
855
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
883
856
|
|
|
884
857
|
### seeCheckboxIsChecked
|
|
885
858
|
|
|
@@ -894,8 +867,7 @@ I.seeCheckboxIsChecked({css: '#signup_form input[type=checkbox]'});
|
|
|
894
867
|
#### Parameters
|
|
895
868
|
|
|
896
869
|
- `field` **([string][3] | [object][4])** located by label|name|CSS|XPath|strict locator.
|
|
897
|
-
|
|
898
|
-
Returns **[Promise][5]<any>**
|
|
870
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
899
871
|
|
|
900
872
|
### seeCookie
|
|
901
873
|
|
|
@@ -908,8 +880,7 @@ I.seeCookie('Auth');
|
|
|
908
880
|
#### Parameters
|
|
909
881
|
|
|
910
882
|
- `name` **[string][3]** cookie name.
|
|
911
|
-
|
|
912
|
-
Returns **[Promise][5]<any>**
|
|
883
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
913
884
|
|
|
914
885
|
### seeCurrentUrlEquals
|
|
915
886
|
|
|
@@ -925,8 +896,7 @@ I.seeCurrentUrlEquals('http://my.site.com/register');
|
|
|
925
896
|
#### Parameters
|
|
926
897
|
|
|
927
898
|
- `url` **[string][3]** value to check.
|
|
928
|
-
|
|
929
|
-
Returns **[Promise][5]<any>**
|
|
899
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
930
900
|
|
|
931
901
|
### seeElement
|
|
932
902
|
|
|
@@ -940,8 +910,7 @@ I.seeElement('#modal');
|
|
|
940
910
|
#### Parameters
|
|
941
911
|
|
|
942
912
|
- `locator` **([string][3] | [object][4])** located by CSS|XPath|strict locator.
|
|
943
|
-
|
|
944
|
-
Returns **[Promise][5]<any>**
|
|
913
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
945
914
|
|
|
946
915
|
### seeElementInDOM
|
|
947
916
|
|
|
@@ -955,8 +924,7 @@ I.seeElementInDOM('#modal');
|
|
|
955
924
|
#### Parameters
|
|
956
925
|
|
|
957
926
|
- `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
|
|
958
|
-
|
|
959
|
-
Returns **[Promise][5]<any>**
|
|
927
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
960
928
|
|
|
961
929
|
### seeInCurrentUrl
|
|
962
930
|
|
|
@@ -969,8 +937,7 @@ I.seeInCurrentUrl('/register'); // we are on registration page
|
|
|
969
937
|
#### Parameters
|
|
970
938
|
|
|
971
939
|
- `url` **[string][3]** a fragment to check
|
|
972
|
-
|
|
973
|
-
Returns **[Promise][5]<any>**
|
|
940
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
974
941
|
|
|
975
942
|
### seeInField
|
|
976
943
|
|
|
@@ -988,8 +955,7 @@ I.seeInField('#searchform input','Search');
|
|
|
988
955
|
|
|
989
956
|
- `field` **([string][3] | [object][4])** located by label|name|CSS|XPath|strict locator.
|
|
990
957
|
- `value` **[string][3]** value to check.
|
|
991
|
-
|
|
992
|
-
Returns **[Promise][5]<any>**
|
|
958
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
993
959
|
|
|
994
960
|
### seeInSource
|
|
995
961
|
|
|
@@ -1002,8 +968,7 @@ I.seeInSource('<h1>Green eggs & ham</h1>');
|
|
|
1002
968
|
#### Parameters
|
|
1003
969
|
|
|
1004
970
|
- `text` **[string][3]** value to check.
|
|
1005
|
-
|
|
1006
|
-
Returns **[Promise][5]<any>**
|
|
971
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
1007
972
|
|
|
1008
973
|
### seeInTitle
|
|
1009
974
|
|
|
@@ -1016,8 +981,7 @@ I.seeInTitle('Home Page');
|
|
|
1016
981
|
#### Parameters
|
|
1017
982
|
|
|
1018
983
|
- `text` **[string][3]** text value to check.
|
|
1019
|
-
|
|
1020
|
-
Returns **[Promise][5]<any>**
|
|
984
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
1021
985
|
|
|
1022
986
|
### seeNumberOfElements
|
|
1023
987
|
|
|
@@ -1032,8 +996,7 @@ I.seeNumberOfElements('#submitBtn', 1);
|
|
|
1032
996
|
|
|
1033
997
|
- `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
|
|
1034
998
|
- `num` **[number][11]** number of elements.
|
|
1035
|
-
|
|
1036
|
-
Returns **[Promise][5]<any>**
|
|
999
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
1037
1000
|
|
|
1038
1001
|
### seeNumberOfVisibleElements
|
|
1039
1002
|
|
|
@@ -1048,8 +1011,7 @@ I.seeNumberOfVisibleElements('.buttons', 3);
|
|
|
1048
1011
|
|
|
1049
1012
|
- `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
|
|
1050
1013
|
- `num` **[number][11]** number of elements.
|
|
1051
|
-
|
|
1052
|
-
Returns **[Promise][5]<any>**
|
|
1014
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
1053
1015
|
|
|
1054
1016
|
### selectOption
|
|
1055
1017
|
|
|
@@ -1076,8 +1038,7 @@ I.selectOption('Which OS do you use?', ['Android', 'iOS']);
|
|
|
1076
1038
|
|
|
1077
1039
|
- `select` **([string][3] | [object][4])** field located by label|name|CSS|XPath|strict locator.
|
|
1078
1040
|
- `option` **([string][3] | [Array][10]<any>)** visible text or value of option.
|
|
1079
|
-
|
|
1080
|
-
Returns **[Promise][5]<any>**
|
|
1041
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
1081
1042
|
|
|
1082
1043
|
### setCookie
|
|
1083
1044
|
|
|
@@ -1098,9 +1059,8 @@ I.setCookie([
|
|
|
1098
1059
|
#### Parameters
|
|
1099
1060
|
|
|
1100
1061
|
- `cookie` **(Cookie | [Array][10]<Cookie>)** a cookie object or array of cookie objects.
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
[See more][14]
|
|
1062
|
+
[!] returns a _promise_ which is synchronized internally by recorderWrapper for `.cookies.set(cookie)`.
|
|
1063
|
+
[See more][14]
|
|
1104
1064
|
|
|
1105
1065
|
### triggerMouseEvent
|
|
1106
1066
|
|
|
@@ -1133,9 +1093,8 @@ I.uncheckOption('agree', '//form');
|
|
|
1133
1093
|
#### Parameters
|
|
1134
1094
|
|
|
1135
1095
|
- `field` **([string][3] | [object][4])** checkbox located by label | name | CSS | XPath | strict locator.
|
|
1136
|
-
- `context` **([string][3]? | [object][4])** (optional, `null` by default) element located by CSS | XPath | strict locator.
|
|
1137
|
-
|
|
1138
|
-
Returns **[Promise][5]<any>**
|
|
1096
|
+
- `context` **([string][3]? | [object][4])** (optional, `null` by default) element located by CSS | XPath | strict locator.
|
|
1097
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
1139
1098
|
|
|
1140
1099
|
### wait
|
|
1141
1100
|
|
|
@@ -1148,8 +1107,7 @@ I.wait(2); // wait 2 secs
|
|
|
1148
1107
|
#### Parameters
|
|
1149
1108
|
|
|
1150
1109
|
- `sec` **[number][11]** number of second to wait.
|
|
1151
|
-
|
|
1152
|
-
Returns **[Promise][5]<any>**
|
|
1110
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
1153
1111
|
|
|
1154
1112
|
### waitForDetached
|
|
1155
1113
|
|
|
@@ -1163,9 +1121,8 @@ I.waitForDetached('#popup');
|
|
|
1163
1121
|
#### Parameters
|
|
1164
1122
|
|
|
1165
1123
|
- `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
|
|
1166
|
-
- `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
|
|
1167
|
-
|
|
1168
|
-
Returns **[Promise][5]<any>**
|
|
1124
|
+
- `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
|
|
1125
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
1169
1126
|
|
|
1170
1127
|
### waitForElement
|
|
1171
1128
|
|
|
@@ -1181,8 +1138,7 @@ I.waitForElement('.btn.continue', 5); // wait for 5 secs
|
|
|
1181
1138
|
|
|
1182
1139
|
- `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
|
|
1183
1140
|
- `sec` **[number][11]?** (optional, `1` by default) time in seconds to wait
|
|
1184
|
-
|
|
1185
|
-
Returns **[Promise][5]<any>**
|
|
1141
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
1186
1142
|
|
|
1187
1143
|
### waitForFunction
|
|
1188
1144
|
|
|
@@ -1203,9 +1159,8 @@ I.waitForFunction((count) => window.requests == count, [3], 5) // pass args and
|
|
|
1203
1159
|
|
|
1204
1160
|
- `fn` **([string][3] | [function][8])** to be executed in browser context.
|
|
1205
1161
|
- `argsOrSec` **([Array][10]<any> | [number][11])?** (optional, `1` by default) arguments for function or seconds.
|
|
1206
|
-
- `sec` **[number][11]?** (optional, `1` by default) time in seconds to wait
|
|
1207
|
-
|
|
1208
|
-
Returns **[Promise][5]<any>**
|
|
1162
|
+
- `sec` **[number][11]?** (optional, `1` by default) time in seconds to wait
|
|
1163
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
1209
1164
|
|
|
1210
1165
|
### waitForInvisible
|
|
1211
1166
|
|
|
@@ -1219,9 +1174,8 @@ I.waitForInvisible('#popup');
|
|
|
1219
1174
|
#### Parameters
|
|
1220
1175
|
|
|
1221
1176
|
- `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
|
|
1222
|
-
- `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
|
|
1223
|
-
|
|
1224
|
-
Returns **[Promise][5]<any>**
|
|
1177
|
+
- `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
|
|
1178
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
1225
1179
|
|
|
1226
1180
|
### waitForText
|
|
1227
1181
|
|
|
@@ -1238,9 +1192,8 @@ I.waitForText('Thank you, form has been submitted', 5, '#modal');
|
|
|
1238
1192
|
|
|
1239
1193
|
- `text` **[string][3]** to wait for.
|
|
1240
1194
|
- `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
|
|
1241
|
-
- `context` **([string][3] | [object][4])?** (optional) element located by CSS|XPath|strict locator.
|
|
1242
|
-
|
|
1243
|
-
Returns **[Promise][5]<any>**
|
|
1195
|
+
- `context` **([string][3] | [object][4])?** (optional) element located by CSS|XPath|strict locator.
|
|
1196
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
1244
1197
|
|
|
1245
1198
|
### waitForVisible
|
|
1246
1199
|
|
|
@@ -1254,9 +1207,8 @@ I.waitForVisible('#popup');
|
|
|
1254
1207
|
#### Parameters
|
|
1255
1208
|
|
|
1256
1209
|
- `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
|
|
1257
|
-
- `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
|
|
1258
|
-
|
|
1259
|
-
Returns **[Promise][5]<any>**
|
|
1210
|
+
- `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
|
|
1211
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
1260
1212
|
|
|
1261
1213
|
### waitToHide
|
|
1262
1214
|
|
|
@@ -1270,9 +1222,8 @@ I.waitToHide('#popup');
|
|
|
1270
1222
|
#### Parameters
|
|
1271
1223
|
|
|
1272
1224
|
- `locator` **([string][3] | [object][4])** element located by CSS|XPath|strict locator.
|
|
1273
|
-
- `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
|
|
1274
|
-
|
|
1275
|
-
Returns **[Promise][5]<any>**
|
|
1225
|
+
- `sec` **[number][11]** (optional, `1` by default) time in seconds to wait
|
|
1226
|
+
[!] returns a _promise_ which is synchronized internally by recorder
|
|
1276
1227
|
|
|
1277
1228
|
[1]: https://github.com/segmentio/nightmare
|
|
1278
1229
|
|
|
@@ -1282,15 +1233,15 @@ Returns **[Promise][5]<any>**
|
|
|
1282
1233
|
|
|
1283
1234
|
[4]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object
|
|
1284
1235
|
|
|
1285
|
-
[5]: https://
|
|
1236
|
+
[5]: https://github.com/rosshinkley/nightmare-upload#important-note-about-setting-file-upload-inputs
|
|
1286
1237
|
|
|
1287
|
-
[6]: https://
|
|
1238
|
+
[6]: https://vuejs.org/v2/api/#Vue-nextTick
|
|
1288
1239
|
|
|
1289
|
-
[7]: https://
|
|
1240
|
+
[7]: https://github.com/segmentio/nightmare#evaluatefn-arg1-arg2
|
|
1290
1241
|
|
|
1291
1242
|
[8]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function
|
|
1292
1243
|
|
|
1293
|
-
[9]: https://
|
|
1244
|
+
[9]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise
|
|
1294
1245
|
|
|
1295
1246
|
[10]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array
|
|
1296
1247
|
|