codeceptjs 3.3.0 → 3.3.3

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 (139) hide show
  1. package/CHANGELOG.md +50 -1
  2. package/README.md +6 -1
  3. package/docs/api.md +1 -1
  4. package/docs/bdd.md +1 -0
  5. package/docs/best.md +1 -1
  6. package/docs/build/ApiDataFactory.js +4 -3
  7. package/docs/build/Appium.js +21 -16
  8. package/docs/build/GraphQL.js +4 -2
  9. package/docs/build/GraphQLDataFactory.js +3 -3
  10. package/docs/build/JSONResponse.js +1 -1
  11. package/docs/build/Nightmare.js +54 -25
  12. package/docs/build/Playwright.js +105 -52
  13. package/docs/build/Protractor.js +72 -34
  14. package/docs/build/Puppeteer.js +80 -37
  15. package/docs/build/REST.js +5 -2
  16. package/docs/build/TestCafe.js +54 -23
  17. package/docs/build/WebDriver.js +115 -67
  18. package/docs/changelog.md +50 -1
  19. package/docs/custom-helpers.md +1 -1
  20. package/docs/data.md +2 -2
  21. package/docs/helpers/ApiDataFactory.md +7 -3
  22. package/docs/helpers/Appium.md +217 -175
  23. package/docs/helpers/GraphQL.md +6 -0
  24. package/docs/helpers/GraphQLDataFactory.md +3 -3
  25. package/docs/helpers/JSONResponse.md +1 -1
  26. package/docs/helpers/Nightmare.md +98 -45
  27. package/docs/helpers/Playwright.md +151 -59
  28. package/docs/helpers/Puppeteer.md +103 -26
  29. package/docs/helpers/REST.md +1 -1
  30. package/docs/helpers/TestCafe.md +77 -22
  31. package/docs/helpers/WebDriver.md +150 -62
  32. package/docs/index.md +1 -1
  33. package/docs/locators.md +1 -1
  34. package/docs/webapi/amOnPage.mustache +2 -1
  35. package/docs/webapi/appendField.mustache +2 -1
  36. package/docs/webapi/attachFile.mustache +2 -1
  37. package/docs/webapi/checkOption.mustache +2 -1
  38. package/docs/webapi/clearCookie.mustache +2 -1
  39. package/docs/webapi/clearField.mustache +1 -0
  40. package/docs/webapi/click.mustache +2 -1
  41. package/docs/webapi/clickLink.mustache +2 -1
  42. package/docs/webapi/closeCurrentTab.mustache +6 -4
  43. package/docs/webapi/closeOtherTabs.mustache +6 -4
  44. package/docs/webapi/dontSee.mustache +1 -0
  45. package/docs/webapi/dontSeeCheckboxIsChecked.mustache +1 -0
  46. package/docs/webapi/dontSeeCookie.mustache +2 -1
  47. package/docs/webapi/dontSeeCurrentUrlEquals.mustache +2 -1
  48. package/docs/webapi/dontSeeElement.mustache +2 -1
  49. package/docs/webapi/dontSeeElementInDOM.mustache +2 -1
  50. package/docs/webapi/dontSeeInCurrentUrl.mustache +2 -1
  51. package/docs/webapi/dontSeeInField.mustache +2 -1
  52. package/docs/webapi/dontSeeInSource.mustache +1 -0
  53. package/docs/webapi/dontSeeInTitle.mustache +2 -1
  54. package/docs/webapi/doubleClick.mustache +1 -0
  55. package/docs/webapi/downloadFile.mustache +2 -1
  56. package/docs/webapi/dragAndDrop.mustache +1 -0
  57. package/docs/webapi/dragSlider.mustache +2 -1
  58. package/docs/webapi/executeAsyncScript.mustache +1 -1
  59. package/docs/webapi/executeScript.mustache +1 -1
  60. package/docs/webapi/fillField.mustache +1 -0
  61. package/docs/webapi/forceClick.mustache +1 -0
  62. package/docs/webapi/forceRightClick.mustache +1 -0
  63. package/docs/webapi/grabDataFromPerformanceTiming.mustache +2 -1
  64. package/docs/webapi/moveCursorTo.mustache +1 -0
  65. package/docs/webapi/openNewTab.mustache +6 -4
  66. package/docs/webapi/pressKey.mustache +2 -1
  67. package/docs/webapi/pressKeyDown.mustache +1 -0
  68. package/docs/webapi/pressKeyUp.mustache +1 -0
  69. package/docs/webapi/pressKeyWithKeyNormalization.mustache +1 -0
  70. package/docs/webapi/refreshPage.mustache +1 -0
  71. package/docs/webapi/resizeWindow.mustache +2 -1
  72. package/docs/webapi/rightClick.mustache +1 -0
  73. package/docs/webapi/saveElementScreenshot.mustache +1 -0
  74. package/docs/webapi/saveScreenshot.mustache +2 -1
  75. package/docs/webapi/say.mustache +2 -1
  76. package/docs/webapi/scrollIntoView.mustache +1 -0
  77. package/docs/webapi/scrollPageToBottom.mustache +1 -0
  78. package/docs/webapi/scrollPageToTop.mustache +1 -0
  79. package/docs/webapi/scrollTo.mustache +2 -1
  80. package/docs/webapi/see.mustache +2 -1
  81. package/docs/webapi/seeAttributesOnElements.mustache +2 -1
  82. package/docs/webapi/seeCheckboxIsChecked.mustache +1 -0
  83. package/docs/webapi/seeCookie.mustache +1 -0
  84. package/docs/webapi/seeCssPropertiesOnElements.mustache +2 -1
  85. package/docs/webapi/seeCurrentUrlEquals.mustache +2 -1
  86. package/docs/webapi/seeElement.mustache +2 -1
  87. package/docs/webapi/seeElementInDOM.mustache +1 -0
  88. package/docs/webapi/seeInCurrentUrl.mustache +2 -1
  89. package/docs/webapi/seeInField.mustache +1 -0
  90. package/docs/webapi/seeInPopup.mustache +1 -0
  91. package/docs/webapi/seeInSource.mustache +2 -1
  92. package/docs/webapi/seeInTitle.mustache +2 -1
  93. package/docs/webapi/seeNumberOfElements.mustache +1 -0
  94. package/docs/webapi/seeNumberOfVisibleElements.mustache +1 -0
  95. package/docs/webapi/seeTextEquals.mustache +2 -1
  96. package/docs/webapi/seeTitleEquals.mustache +6 -5
  97. package/docs/webapi/selectOption.mustache +1 -0
  98. package/docs/webapi/setCookie.mustache +1 -0
  99. package/docs/webapi/setGeoLocation.mustache +1 -0
  100. package/docs/webapi/switchTo.mustache +2 -1
  101. package/docs/webapi/switchToNextTab.mustache +8 -7
  102. package/docs/webapi/switchToPreviousTab.mustache +8 -7
  103. package/docs/webapi/type.mustache +1 -0
  104. package/docs/webapi/uncheckOption.mustache +2 -1
  105. package/docs/webapi/wait.mustache +2 -1
  106. package/docs/webapi/waitForClickable.mustache +2 -1
  107. package/docs/webapi/waitForDetached.mustache +2 -1
  108. package/docs/webapi/waitForElement.mustache +2 -1
  109. package/docs/webapi/waitForEnabled.mustache +2 -1
  110. package/docs/webapi/waitForFunction.mustache +1 -0
  111. package/docs/webapi/waitForInvisible.mustache +2 -1
  112. package/docs/webapi/waitForText.mustache +2 -1
  113. package/docs/webapi/waitForValue.mustache +1 -0
  114. package/docs/webapi/waitForVisible.mustache +1 -0
  115. package/docs/webapi/waitInUrl.mustache +2 -1
  116. package/docs/webapi/waitNumberOfVisibleElements.mustache +2 -1
  117. package/docs/webapi/waitToHide.mustache +2 -1
  118. package/docs/webapi/waitUrlEquals.mustache +2 -1
  119. package/lib/cli.js +1 -1
  120. package/lib/command/definitions.js +9 -0
  121. package/lib/command/run-workers.js +1 -1
  122. package/lib/command/run.js +2 -2
  123. package/lib/command/workers/runTests.js +55 -0
  124. package/lib/helper/ApiDataFactory.js +4 -3
  125. package/lib/helper/Appium.js +2 -7
  126. package/lib/helper/GraphQL.js +4 -2
  127. package/lib/helper/GraphQLDataFactory.js +3 -3
  128. package/lib/helper/JSONResponse.js +1 -1
  129. package/lib/helper/Playwright.js +28 -17
  130. package/lib/helper/REST.js +5 -2
  131. package/lib/helper/WebDriver.js +4 -0
  132. package/lib/interfaces/bdd.js +5 -0
  133. package/lib/listener/steps.js +1 -0
  134. package/lib/output.js +4 -0
  135. package/lib/plugin/fakerTransform.js +1 -1
  136. package/lib/plugin/stepByStepReport.js +8 -6
  137. package/lib/workers.js +12 -0
  138. package/package.json +3 -3
  139. package/typings/types.d.ts +534 -112
@@ -896,6 +896,7 @@ class WebDriver extends Helper {
896
896
  * ```
897
897
  *
898
898
  * @param {string} url url path or global url.
899
+ * @return {void} automatically synchronized promise with recorder #!
899
900
  *
900
901
  */
901
902
  amOnPage(url) {
@@ -934,7 +935,8 @@ class WebDriver extends Helper {
934
935
  * ```
935
936
  *
936
937
  * @param {CodeceptJS.LocatorOrString} locator clickable link or button located by text, or any element located by CSS|XPath|strict locator.
937
- * @param {?CodeceptJS.LocatorOrString} [context=null] (optional, `null` by default) element to search in CSS|XPath|Strict locator.
938
+ * @param {?CodeceptJS.LocatorOrString | null} [context=null] (optional, `null` by default) element to search in CSS|XPath|Strict locator.
939
+ * [!] returns a _promise_ which is synchronized internally by recorder
938
940
  *
939
941
  *
940
942
  * {{ react }}
@@ -981,6 +983,7 @@ class WebDriver extends Helper {
981
983
  *
982
984
  * @param {CodeceptJS.LocatorOrString} locator clickable link or button located by text, or any element located by CSS|XPath|strict locator.
983
985
  * @param {?CodeceptJS.LocatorOrString} [context=null] (optional, `null` by default) element to search in CSS|XPath|Strict locator.
986
+ * [!] returns a _promise_ which is synchronized internally by recorder
984
987
  *
985
988
  *
986
989
  * {{ react }}
@@ -1019,7 +1022,7 @@ class WebDriver extends Helper {
1019
1022
  *
1020
1023
  * @param {CodeceptJS.LocatorOrString} locator clickable link or button located by text, or any element located by CSS|XPath|strict locator.
1021
1024
  * @param {?CodeceptJS.LocatorOrString} [context=null] (optional, `null` by default) element to search in CSS|XPath|Strict locator.
1022
- *
1025
+ * [!] returns a _promise_ which is synchronized internally by recorder
1023
1026
  *
1024
1027
  * {{ react }}
1025
1028
  */
@@ -1051,7 +1054,7 @@ class WebDriver extends Helper {
1051
1054
  *
1052
1055
  * @param {CodeceptJS.LocatorOrString} locator clickable element located by CSS|XPath|strict locator.
1053
1056
  * @param {?CodeceptJS.LocatorOrString} [context=null] (optional, `null` by default) element located by CSS|XPath|strict locator.
1054
- *
1057
+ * [!] returns a _promise_ which is synchronized internally by recorder
1055
1058
  *
1056
1059
  * {{ react }}
1057
1060
  */
@@ -1094,7 +1097,7 @@ class WebDriver extends Helper {
1094
1097
  *
1095
1098
  * @param {CodeceptJS.LocatorOrString} locator clickable link or button located by text, or any element located by CSS|XPath|strict locator.
1096
1099
  * @param {?CodeceptJS.LocatorOrString} [context=null] (optional, `null` by default) element to search in CSS|XPath|Strict locator.
1097
- *
1100
+ * [!] returns a _promise_ which is synchronized internally by recorder
1098
1101
  *
1099
1102
  * {{ react }}
1100
1103
  */
@@ -1135,7 +1138,7 @@ class WebDriver extends Helper {
1135
1138
  * ```
1136
1139
  * @param {CodeceptJS.LocatorOrString} field located by label|name|CSS|XPath|strict locator.
1137
1140
  * @param {CodeceptJS.StringOrSecret} value text value to fill.
1138
- *
1141
+ * [!] returns a _promise_ which is synchronized internally by recorder
1139
1142
  * {{ react }}
1140
1143
  * {{ custom }}
1141
1144
  *
@@ -1156,6 +1159,7 @@ class WebDriver extends Helper {
1156
1159
  * ```
1157
1160
  * @param {CodeceptJS.LocatorOrString} field located by label|name|CSS|XPath|strict locator
1158
1161
  * @param {string} value text value to append.
1162
+ * [!] returns a _promise_ which is synchronized internally by recorder
1159
1163
  * {{ react }}
1160
1164
  */
1161
1165
  async appendField(field, value) {
@@ -1174,7 +1178,7 @@ class WebDriver extends Helper {
1174
1178
  * I.clearField('#email');
1175
1179
  * ```
1176
1180
  * @param {LocatorOrString} editable field located by label|name|CSS|XPath|strict locator.
1177
- *
1181
+ * [!] returns a _promise_ which is synchronized internally by recorder
1178
1182
  *
1179
1183
  */
1180
1184
  async clearField(field) {
@@ -1205,7 +1209,7 @@ class WebDriver extends Helper {
1205
1209
  * ```
1206
1210
  * @param {LocatorOrString} select field located by label|name|CSS|XPath|strict locator.
1207
1211
  * @param {string|Array<*>} option visible text or value of option.
1208
- *
1212
+ * [!] returns a _promise_ which is synchronized internally by recorder
1209
1213
  */
1210
1214
  async selectOption(select, option) {
1211
1215
  const res = await findFields.call(this, select);
@@ -1248,6 +1252,7 @@ class WebDriver extends Helper {
1248
1252
  *
1249
1253
  * @param {CodeceptJS.LocatorOrString} locator field located by label|name|CSS|XPath|strict locator.
1250
1254
  * @param {string} pathToFile local file path relative to codecept.json config file.
1255
+ * [!] returns a _promise_ which is synchronized internally by recorder
1251
1256
  * Appium: not tested
1252
1257
  */
1253
1258
  async attachFile(locator, pathToFile) {
@@ -1287,6 +1292,7 @@ class WebDriver extends Helper {
1287
1292
  * ```
1288
1293
  * @param {CodeceptJS.LocatorOrString} field checkbox located by label | name | CSS | XPath | strict locator.
1289
1294
  * @param {?CodeceptJS.LocatorOrString} [context=null] (optional, `null` by default) element located by CSS | XPath | strict locator.
1295
+ * [!] returns a _promise_ which is synchronized internally by recorder
1290
1296
  * Appium: not tested
1291
1297
  */
1292
1298
  async checkOption(field, context = null) {
@@ -1317,6 +1323,7 @@ class WebDriver extends Helper {
1317
1323
  * ```
1318
1324
  * @param {CodeceptJS.LocatorOrString} field checkbox located by label | name | CSS | XPath | strict locator.
1319
1325
  * @param {?CodeceptJS.LocatorOrString} [context=null] (optional, `null` by default) element located by CSS | XPath | strict locator.
1326
+ * [!] returns a _promise_ which is synchronized internally by recorder
1320
1327
  * Appium: not tested
1321
1328
  */
1322
1329
  async uncheckOption(field, context = null) {
@@ -1559,6 +1566,7 @@ class WebDriver extends Helper {
1559
1566
  * ```
1560
1567
  *
1561
1568
  * @param {string} text text value to check.
1569
+ * [!] returns a _promise_ which is synchronized internally by recorder
1562
1570
  */
1563
1571
  async seeInTitle(text) {
1564
1572
  const title = await this.browser.getTitle();
@@ -1566,14 +1574,14 @@ class WebDriver extends Helper {
1566
1574
  }
1567
1575
 
1568
1576
  /**
1569
- * Checks that title is equal to provided one.
1570
- *
1571
- * ```js
1572
- * I.seeTitleEquals('Test title.');
1573
- * ```
1577
+ * Checks that title is equal to provided one.
1574
1578
  *
1575
- * @param {string} text value to check.
1579
+ * ```js
1580
+ * I.seeTitleEquals('Test title.');
1581
+ * ```
1576
1582
  *
1583
+ * @param {string} text value to check.
1584
+ * [!] returns a _promise_ which is synchronized internally by recorder
1577
1585
  */
1578
1586
  async seeTitleEquals(text) {
1579
1587
  const title = await this.browser.getTitle();
@@ -1588,6 +1596,7 @@ class WebDriver extends Helper {
1588
1596
  * ```
1589
1597
  *
1590
1598
  * @param {string} text value to check.
1599
+ * [!] returns a _promise_ which is synchronized internally by recorder
1591
1600
  */
1592
1601
  async dontSeeInTitle(text) {
1593
1602
  const title = await this.browser.getTitle();
@@ -1621,6 +1630,7 @@ class WebDriver extends Helper {
1621
1630
  * ```
1622
1631
  * @param {string} text expected on page.
1623
1632
  * @param {?CodeceptJS.LocatorOrString} [context=null] (optional, `null` by default) element located by CSS|Xpath|strict locator in which to search for text.
1633
+ * [!] returns a _promise_ which is synchronized internally by recorder
1624
1634
  *
1625
1635
  * {{ react }}
1626
1636
  */
@@ -1637,6 +1647,7 @@ class WebDriver extends Helper {
1637
1647
  *
1638
1648
  * @param {string} text element value to check.
1639
1649
  * @param {CodeceptJS.LocatorOrString?} [context=null] element located by CSS|XPath|strict locator.
1650
+ * [!] returns a _promise_ which is synchronized internally by recorder
1640
1651
  */
1641
1652
  async seeTextEquals(text, context = null) {
1642
1653
  return proceedSee.call(this, 'assert', text, context, true);
@@ -1653,7 +1664,7 @@ class WebDriver extends Helper {
1653
1664
  *
1654
1665
  * @param {string} text which is not present.
1655
1666
  * @param {CodeceptJS.LocatorOrString} [context] (optional) element located by CSS|XPath|strict locator in which to perfrom search.
1656
- *
1667
+ * [!] returns a _promise_ which is synchronized internally by recorder
1657
1668
  *
1658
1669
  * {{ react }}
1659
1670
  */
@@ -1673,7 +1684,7 @@ class WebDriver extends Helper {
1673
1684
  * ```
1674
1685
  * @param {CodeceptJS.LocatorOrString} field located by label|name|CSS|XPath|strict locator.
1675
1686
  * @param {string} value value to check.
1676
- *
1687
+ * [!] returns a _promise_ which is synchronized internally by recorder
1677
1688
  *
1678
1689
  */
1679
1690
  async seeInField(field, value) {
@@ -1691,6 +1702,7 @@ class WebDriver extends Helper {
1691
1702
  *
1692
1703
  * @param {CodeceptJS.LocatorOrString} field located by label|name|CSS|XPath|strict locator.
1693
1704
  * @param {string} value value to check.
1705
+ * [!] returns a _promise_ which is synchronized internally by recorder
1694
1706
  *
1695
1707
  */
1696
1708
  async dontSeeInField(field, value) {
@@ -1707,7 +1719,7 @@ class WebDriver extends Helper {
1707
1719
  * ```
1708
1720
  *
1709
1721
  * @param {CodeceptJS.LocatorOrString} field located by label|name|CSS|XPath|strict locator.
1710
- *
1722
+ * [!] returns a _promise_ which is synchronized internally by recorder
1711
1723
  * Appium: not tested
1712
1724
  */
1713
1725
  async seeCheckboxIsChecked(field) {
@@ -1724,7 +1736,7 @@ class WebDriver extends Helper {
1724
1736
  * ```
1725
1737
  *
1726
1738
  * @param {CodeceptJS.LocatorOrString} field located by label|name|CSS|XPath|strict locator.
1727
- *
1739
+ * [!] returns a _promise_ which is synchronized internally by recorder
1728
1740
  * Appium: not tested
1729
1741
  */
1730
1742
  async dontSeeCheckboxIsChecked(field) {
@@ -1739,6 +1751,7 @@ class WebDriver extends Helper {
1739
1751
  * I.seeElement('#modal');
1740
1752
  * ```
1741
1753
  * @param {CodeceptJS.LocatorOrString} locator located by CSS|XPath|strict locator.
1754
+ * [!] returns a _promise_ which is synchronized internally by recorder
1742
1755
  * {{ react }}
1743
1756
  *
1744
1757
  */
@@ -1757,6 +1770,7 @@ class WebDriver extends Helper {
1757
1770
  * ```
1758
1771
  *
1759
1772
  * @param {CodeceptJS.LocatorOrString} locator located by CSS|XPath|Strict locator.
1773
+ * [!] returns a _promise_ which is synchronized internally by recorder
1760
1774
  * {{ react }}
1761
1775
  */
1762
1776
  async dontSeeElement(locator) {
@@ -1776,7 +1790,7 @@ class WebDriver extends Helper {
1776
1790
  * I.seeElementInDOM('#modal');
1777
1791
  * ```
1778
1792
  * @param {CodeceptJS.LocatorOrString} locator element located by CSS|XPath|strict locator.
1779
- *
1793
+ * [!] returns a _promise_ which is synchronized internally by recorder
1780
1794
  *
1781
1795
  */
1782
1796
  async seeElementInDOM(locator) {
@@ -1792,6 +1806,7 @@ class WebDriver extends Helper {
1792
1806
  * ```
1793
1807
  *
1794
1808
  * @param {CodeceptJS.LocatorOrString} locator located by CSS|XPath|Strict locator.
1809
+ * [!] returns a _promise_ which is synchronized internally by recorder
1795
1810
  *
1796
1811
  */
1797
1812
  async dontSeeElementInDOM(locator) {
@@ -1806,6 +1821,7 @@ class WebDriver extends Helper {
1806
1821
  * I.seeInSource('<h1>Green eggs &amp; ham</h1>');
1807
1822
  * ```
1808
1823
  * @param {string} text value to check.
1824
+ * [!] returns a _promise_ which is synchronized internally by recorder
1809
1825
  *
1810
1826
  */
1811
1827
  async seeInSource(text) {
@@ -1873,7 +1889,7 @@ class WebDriver extends Helper {
1873
1889
  * ```
1874
1890
  *
1875
1891
  * @param {string} value to check.
1876
- *
1892
+ * [!] returns a _promise_ which is synchronized internally by recorder
1877
1893
  */
1878
1894
  async dontSeeInSource(text) {
1879
1895
  const source = await this.browser.getPageSource();
@@ -1891,7 +1907,7 @@ class WebDriver extends Helper {
1891
1907
  *
1892
1908
  * @param {CodeceptJS.LocatorOrString} locator element located by CSS|XPath|strict locator.
1893
1909
  * @param {number} num number of elements.
1894
- *
1910
+ * [!] returns a _promise_ which is synchronized internally by recorder
1895
1911
  * {{ react }}
1896
1912
  */
1897
1913
  async seeNumberOfElements(locator, num) {
@@ -1909,7 +1925,7 @@ class WebDriver extends Helper {
1909
1925
  *
1910
1926
  * @param {CodeceptJS.LocatorOrString} locator element located by CSS|XPath|strict locator.
1911
1927
  * @param {number} num number of elements.
1912
- *
1928
+ * [!] returns a _promise_ which is synchronized internally by recorder
1913
1929
  * {{ react }}
1914
1930
  */
1915
1931
  async seeNumberOfVisibleElements(locator, num) {
@@ -1926,6 +1942,7 @@ class WebDriver extends Helper {
1926
1942
  *
1927
1943
  * @param {CodeceptJS.LocatorOrString} locator located by CSS|XPath|strict locator.
1928
1944
  * @param {object} cssProperties object with CSS properties and their values to check.
1945
+ * [!] returns a _promise_ which is synchronized internally by recorder
1929
1946
  */
1930
1947
  async seeCssPropertiesOnElements(locator, cssProperties) {
1931
1948
  const res = await this._locate(locator);
@@ -1968,6 +1985,7 @@ class WebDriver extends Helper {
1968
1985
  *
1969
1986
  * @param {CodeceptJS.LocatorOrString} locator located by CSS|XPath|strict locator.
1970
1987
  * @param {object} attributes attributes and their values to check.
1988
+ * [!] returns a _promise_ which is synchronized internally by recorder
1971
1989
  */
1972
1990
  async seeAttributesOnElements(locator, attributes) {
1973
1991
  const res = await this._locate(locator);
@@ -2021,6 +2039,7 @@ class WebDriver extends Helper {
2021
2039
  * ```
2022
2040
  *
2023
2041
  * @param {string} url a fragment to check
2042
+ * [!] returns a _promise_ which is synchronized internally by recorder
2024
2043
  *
2025
2044
  */
2026
2045
  async seeInCurrentUrl(url) {
@@ -2032,6 +2051,7 @@ class WebDriver extends Helper {
2032
2051
  * Checks that current url does not contain a provided fragment.
2033
2052
  *
2034
2053
  * @param {string} url value to check.
2054
+ * [!] returns a _promise_ which is synchronized internally by recorder
2035
2055
  *
2036
2056
  */
2037
2057
  async dontSeeInCurrentUrl(url) {
@@ -2050,6 +2070,7 @@ class WebDriver extends Helper {
2050
2070
  * ```
2051
2071
  *
2052
2072
  * @param {string} url value to check.
2073
+ * [!] returns a _promise_ which is synchronized internally by recorder
2053
2074
  *
2054
2075
  */
2055
2076
  async seeCurrentUrlEquals(url) {
@@ -2067,6 +2088,7 @@ class WebDriver extends Helper {
2067
2088
  * ```
2068
2089
  *
2069
2090
  * @param {string} url value to check.
2091
+ * [!] returns a _promise_ which is synchronized internally by recorder
2070
2092
  *
2071
2093
  */
2072
2094
  async dontSeeCurrentUrlEquals(url) {
@@ -2100,7 +2122,7 @@ class WebDriver extends Helper {
2100
2122
  *
2101
2123
  * @param {string|function} fn function to be executed in browser context.
2102
2124
  * @param {...any} args to be passed to function.
2103
- * @return {Promise<any>}
2125
+ * [!] returns a _promise_ which is synchronized internally by recorder
2104
2126
  *
2105
2127
  *
2106
2128
  *
@@ -2134,7 +2156,7 @@ class WebDriver extends Helper {
2134
2156
  *
2135
2157
  * @param {string|function} fn function to be executed in browser context.
2136
2158
  * @param {...any} args to be passed to function.
2137
- * @return {Promise<any>}
2159
+ * [!] returns a _promise_ which is synchronized internally by recorder
2138
2160
  *
2139
2161
  *
2140
2162
  */
@@ -2153,7 +2175,7 @@ class WebDriver extends Helper {
2153
2175
  *
2154
2176
  * @param {LocatorOrString} locator located by CSS|XPath|strict locator.
2155
2177
  * @param {ScrollIntoViewOptions} scrollIntoViewOptions see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView.
2156
- *
2178
+ * [!] returns a _promise_ which is synchronized internally by recorder
2157
2179
  *
2158
2180
  */
2159
2181
  async scrollIntoView(locator, scrollIntoViewOptions) {
@@ -2175,6 +2197,7 @@ class WebDriver extends Helper {
2175
2197
  * @param {CodeceptJS.LocatorOrString} locator located by CSS|XPath|strict locator.
2176
2198
  * @param {number} [offsetX=0] (optional, `0` by default) X-axis offset.
2177
2199
  * @param {number} [offsetY=0] (optional, `0` by default) Y-axis offset.
2200
+ * [!] returns a _promise_ which is synchronized internally by recorder
2178
2201
  *
2179
2202
  */
2180
2203
  async scrollTo(locator, offsetX = 0, offsetY = 0) {
@@ -2216,7 +2239,7 @@ class WebDriver extends Helper {
2216
2239
  * @param {CodeceptJS.LocatorOrString} locator located by CSS|XPath|strict locator.
2217
2240
  * @param {number} [offsetX=0] (optional, `0` by default) X-axis offset.
2218
2241
  * @param {number} [offsetY=0] (optional, `0` by default) Y-axis offset.
2219
- *
2242
+ * [!] returns a _promise_ which is synchronized internally by recorder
2220
2243
  */
2221
2244
  async moveCursorTo(locator, xOffset, yOffset) {
2222
2245
  const res = await this._locate(withStrictLocator(locator), true);
@@ -2236,7 +2259,7 @@ class WebDriver extends Helper {
2236
2259
  *
2237
2260
  * @param {CodeceptJS.LocatorOrString} locator element located by CSS|XPath|strict locator.
2238
2261
  * @param {string} fileName file name to save.
2239
- *
2262
+ * [!] returns a _promise_ which is synchronized internally by recorder
2240
2263
  *
2241
2264
  */
2242
2265
  async saveElementScreenshot(locator, fileName) {
@@ -2262,6 +2285,7 @@ class WebDriver extends Helper {
2262
2285
  *
2263
2286
  * @param {string} fileName file name to save.
2264
2287
  * @param {boolean} [fullPage=false] (optional, `false` by default) flag to enable fullscreen screenshot mode.
2288
+ * [!] returns a _promise_ which is synchronized internally by recorder
2265
2289
  */
2266
2290
  async saveScreenshot(fileName, fullPage = false) {
2267
2291
  const outputFile = screenshotOutputFolder(fileName);
@@ -2316,7 +2340,7 @@ class WebDriver extends Helper {
2316
2340
  * ```
2317
2341
  *
2318
2342
  * @param {Cookie|Array<Cookie>} cookie a cookie object or array of cookie objects.
2319
- *
2343
+ * [!] returns a _promise_ which is synchronized internally by recorder
2320
2344
  *
2321
2345
  *
2322
2346
  * Uses Selenium's JSON [cookie
@@ -2336,6 +2360,7 @@ class WebDriver extends Helper {
2336
2360
  * ```
2337
2361
  *
2338
2362
  * @param {?string} [cookie=null] (optional, `null` by default) cookie name
2363
+ * [!] returns a _promise_ which is synchronized internally by recorder
2339
2364
  */
2340
2365
  async clearCookie(cookie) {
2341
2366
  return this.browser.deleteCookies(cookie);
@@ -2349,7 +2374,7 @@ class WebDriver extends Helper {
2349
2374
  * ```
2350
2375
  *
2351
2376
  * @param {string} name cookie name.
2352
- *
2377
+ * [!] returns a _promise_ which is synchronized internally by recorder
2353
2378
  */
2354
2379
  async seeCookie(name) {
2355
2380
  const cookie = await this.browser.getCookies([name]);
@@ -2364,6 +2389,7 @@ class WebDriver extends Helper {
2364
2389
  * ```
2365
2390
  *
2366
2391
  * @param {string} name cookie name.
2392
+ * [!] returns a _promise_ which is synchronized internally by recorder
2367
2393
  */
2368
2394
  async dontSeeCookie(name) {
2369
2395
  const cookie = await this.browser.getCookies([name]);
@@ -2459,7 +2485,7 @@ class WebDriver extends Helper {
2459
2485
  * ```
2460
2486
  *
2461
2487
  * @param {string} key name of key to press down.
2462
- *
2488
+ * [!] returns a _promise_ which is synchronized internally by recorder
2463
2489
  */
2464
2490
  async pressKeyDown(key) {
2465
2491
  key = getNormalizedKey.call(this, key);
@@ -2488,7 +2514,7 @@ class WebDriver extends Helper {
2488
2514
  * ```
2489
2515
  *
2490
2516
  * @param {string} key name of key to release.
2491
- *
2517
+ * [!] returns a _promise_ which is synchronized internally by recorder
2492
2518
  */
2493
2519
  async pressKeyUp(key) {
2494
2520
  key = getNormalizedKey.call(this, key);
@@ -2565,6 +2591,7 @@ class WebDriver extends Helper {
2565
2591
  * - `'Tab'`
2566
2592
  *
2567
2593
  * @param {string|string[]} key key or array of keys to press.
2594
+ * [!] returns a _promise_ which is synchronized internally by recorder
2568
2595
  *
2569
2596
  *
2570
2597
  * _Note:_ In case a text field or textarea is focused be aware that some browsers do not respect active modifier when combining modifier keys with other keys.
@@ -2625,7 +2652,7 @@ class WebDriver extends Helper {
2625
2652
  *
2626
2653
  * @param {string|string[]} key or array of keys to type.
2627
2654
  * @param {?number} [delay=null] (optional) delay in ms between key presses
2628
- *
2655
+ * [!] returns a _promise_ which is synchronized internally by recorder
2629
2656
  */
2630
2657
  async type(keys, delay = null) {
2631
2658
  if (!Array.isArray(keys)) {
@@ -2647,6 +2674,7 @@ class WebDriver extends Helper {
2647
2674
  *
2648
2675
  * @param {number} width width in pixels or `maximize`.
2649
2676
  * @param {number} height height in pixels.
2677
+ * [!] returns a _promise_ which is synchronized internally by recorder
2650
2678
  * Appium: not tested in web, in apps doesn't work
2651
2679
  */
2652
2680
  async resizeWindow(width, height) {
@@ -2683,7 +2711,7 @@ class WebDriver extends Helper {
2683
2711
  *
2684
2712
  * @param {LocatorOrString} srcElement located by CSS|XPath|strict locator.
2685
2713
  * @param {LocatorOrString} destElement located by CSS|XPath|strict locator.
2686
- *
2714
+ * [!] returns a _promise_ which is synchronized internally by recorder
2687
2715
  * Appium: not tested
2688
2716
  */
2689
2717
  async dragAndDrop(srcElement, destElement) {
@@ -2709,6 +2737,7 @@ class WebDriver extends Helper {
2709
2737
  *
2710
2738
  * @param {CodeceptJS.LocatorOrString} locator located by label|name|CSS|XPath|strict locator.
2711
2739
  * @param {number} offsetX position to drag.
2740
+ * [!] returns a _promise_ which is synchronized internally by recorder
2712
2741
  */
2713
2742
  async dragSlider(locator, offsetX = 0) {
2714
2743
  const browser = this.browser;
@@ -2788,13 +2817,14 @@ class WebDriver extends Helper {
2788
2817
  }
2789
2818
 
2790
2819
  /**
2791
- * Close all tabs except for the current one.
2820
+ * Close all tabs except for the current one.
2792
2821
  *
2793
2822
  *
2794
- * ```js
2795
- * I.closeOtherTabs();
2796
- * ```
2823
+ * ```js
2824
+ * I.closeOtherTabs();
2825
+ * ```
2797
2826
  *
2827
+ * [!] returns a _promise_ which is synchronized internally by recorder
2798
2828
  */
2799
2829
  async closeOtherTabs() {
2800
2830
  const handles = await this.browser.getWindowHandles();
@@ -2816,6 +2846,7 @@ class WebDriver extends Helper {
2816
2846
  * ```
2817
2847
  *
2818
2848
  * @param {number} sec number of second to wait.
2849
+ * [!] returns a _promise_ which is synchronized internally by recorder
2819
2850
  */
2820
2851
  async wait(sec) {
2821
2852
  return new Promise(resolve => setTimeout(resolve, sec * 1000));
@@ -2827,6 +2858,7 @@ class WebDriver extends Helper {
2827
2858
  *
2828
2859
  * @param {CodeceptJS.LocatorOrString} locator element located by CSS|XPath|strict locator.
2829
2860
  * @param {number} [sec=1] (optional) time in seconds to wait, 1 by default.
2861
+ * [!] returns a _promise_ which is synchronized internally by recorder
2830
2862
  */
2831
2863
  async waitForEnabled(locator, sec = null) {
2832
2864
  const aSec = sec || this.options.waitForTimeout;
@@ -2870,6 +2902,7 @@ class WebDriver extends Helper {
2870
2902
  *
2871
2903
  * @param {CodeceptJS.LocatorOrString} locator element located by CSS|XPath|strict locator.
2872
2904
  * @param {number} [sec] (optional, `1` by default) time in seconds to wait
2905
+ * [!] returns a _promise_ which is synchronized internally by recorder
2873
2906
  */
2874
2907
  async waitForElement(locator, sec = null) {
2875
2908
  const aSec = sec || this.options.waitForTimeout;
@@ -2896,6 +2929,7 @@ class WebDriver extends Helper {
2896
2929
  *
2897
2930
  * @param {CodeceptJS.LocatorOrString} locator element located by CSS|XPath|strict locator.
2898
2931
  * @param {number} [sec] (optional, `1` by default) time in seconds to wait
2932
+ * [!] returns a _promise_ which is synchronized internally by recorder
2899
2933
  */
2900
2934
  async waitForClickable(locator, waitTimeout) {
2901
2935
  waitTimeout = waitTimeout || this.options.waitForTimeout;
@@ -2918,6 +2952,7 @@ class WebDriver extends Helper {
2918
2952
  *
2919
2953
  * @param {string} urlPart value to check.
2920
2954
  * @param {number} [sec=1] (optional, `1` by default) time in seconds to wait
2955
+ * [!] returns a _promise_ which is synchronized internally by recorder
2921
2956
  */
2922
2957
  async waitInUrl(urlPart, sec = null) {
2923
2958
  const client = this.browser;
@@ -2961,6 +2996,7 @@ class WebDriver extends Helper {
2961
2996
  *
2962
2997
  * @param {string} urlPart value to check.
2963
2998
  * @param {number} [sec=1] (optional, `1` by default) time in seconds to wait
2999
+ * [!] returns a _promise_ which is synchronized internally by recorder
2964
3000
  */
2965
3001
  async waitUrlEquals(urlPart, sec = null) {
2966
3002
  const aSec = sec || this.options.waitForTimeout;
@@ -2995,6 +3031,7 @@ class WebDriver extends Helper {
2995
3031
  * @param {string }text to wait for.
2996
3032
  * @param {number} [sec=1] (optional, `1` by default) time in seconds to wait
2997
3033
  * @param {CodeceptJS.LocatorOrString} [context] (optional) element located by CSS|XPath|strict locator.
3034
+ * [!] returns a _promise_ which is synchronized internally by recorder
2998
3035
  *
2999
3036
  */
3000
3037
  async waitForText(text, sec = null, context = null) {
@@ -3041,7 +3078,7 @@ class WebDriver extends Helper {
3041
3078
  * @param {LocatorOrString} field input field.
3042
3079
  * @param {string }value expected value.
3043
3080
  * @param {number} [sec=1] (optional, `1` by default) time in seconds to wait
3044
- *
3081
+ * [!] returns a _promise_ which is synchronized internally by recorder
3045
3082
  */
3046
3083
  async waitForValue(field, value, sec = null) {
3047
3084
  const client = this.browser;
@@ -3086,7 +3123,7 @@ class WebDriver extends Helper {
3086
3123
  *
3087
3124
  * @param {CodeceptJS.LocatorOrString} locator element located by CSS|XPath|strict locator.
3088
3125
  * @param {number} [sec=1] (optional, `1` by default) time in seconds to wait
3089
- *
3126
+ * [!] returns a _promise_ which is synchronized internally by recorder
3090
3127
  *
3091
3128
  */
3092
3129
  async waitForVisible(locator, sec = null) {
@@ -3123,6 +3160,7 @@ class WebDriver extends Helper {
3123
3160
  * @param {CodeceptJS.LocatorOrString} locator element located by CSS|XPath|strict locator.
3124
3161
  * @param {number} num number of elements.
3125
3162
  * @param {number} [sec=1] (optional, `1` by default) time in seconds to wait
3163
+ * [!] returns a _promise_ which is synchronized internally by recorder
3126
3164
  */
3127
3165
  async waitNumberOfVisibleElements(locator, num, sec = null) {
3128
3166
  const aSec = sec || this.options.waitForTimeout;
@@ -3158,6 +3196,7 @@ class WebDriver extends Helper {
3158
3196
  *
3159
3197
  * @param {CodeceptJS.LocatorOrString} locator element located by CSS|XPath|strict locator.
3160
3198
  * @param {number} [sec=1] (optional, `1` by default) time in seconds to wait
3199
+ * [!] returns a _promise_ which is synchronized internally by recorder
3161
3200
  */
3162
3201
  async waitForInvisible(locator, sec = null) {
3163
3202
  const aSec = sec || this.options.waitForTimeout;
@@ -3187,6 +3226,7 @@ class WebDriver extends Helper {
3187
3226
  *
3188
3227
  * @param {CodeceptJS.LocatorOrString} locator element located by CSS|XPath|strict locator.
3189
3228
  * @param {number} [sec=1] (optional, `1` by default) time in seconds to wait
3229
+ * [!] returns a _promise_ which is synchronized internally by recorder
3190
3230
  */
3191
3231
  async waitToHide(locator, sec = null) {
3192
3232
  return this.waitForInvisible(locator, sec);
@@ -3202,6 +3242,7 @@ class WebDriver extends Helper {
3202
3242
  *
3203
3243
  * @param {CodeceptJS.LocatorOrString} locator element located by CSS|XPath|strict locator.
3204
3244
  * @param {number} [sec=1] (optional, `1` by default) time in seconds to wait
3245
+ * [!] returns a _promise_ which is synchronized internally by recorder
3205
3246
  */
3206
3247
  async waitForDetached(locator, sec = null) {
3207
3248
  const aSec = sec || this.options.waitForTimeout;
@@ -3240,7 +3281,7 @@ class WebDriver extends Helper {
3240
3281
  * @param {string|function} fn to be executed in browser context.
3241
3282
  * @param {any[]|number} [argsOrSec] (optional, `1` by default) arguments for function or seconds.
3242
3283
  * @param {number} [sec] (optional, `1` by default) time in seconds to wait
3243
- *
3284
+ * [!] returns a _promise_ which is synchronized internally by recorder
3244
3285
  */
3245
3286
  async waitForFunction(fn, argsOrSec = null, sec = null) {
3246
3287
  let args = [];
@@ -3268,6 +3309,7 @@ class WebDriver extends Helper {
3268
3309
  * ```
3269
3310
  *
3270
3311
  * @param {?CodeceptJS.LocatorOrString} [locator=null] (optional, `null` by default) element located by CSS|XPath|strict locator.
3312
+ * [!] returns a _promise_ which is synchronized internally by recorder
3271
3313
  */
3272
3314
  async switchTo(locator) {
3273
3315
  this.browser.isInsideFrame = true;
@@ -3285,16 +3327,16 @@ class WebDriver extends Helper {
3285
3327
  }
3286
3328
 
3287
3329
  /**
3288
- * Switch focus to a particular tab by its number. It waits tabs loading and then switch tab.
3330
+ * Switch focus to a particular tab by its number. It waits tabs loading and then switch tab.
3289
3331
  *
3290
- * ```js
3291
- * I.switchToNextTab();
3292
- * I.switchToNextTab(2);
3293
- * ```
3294
- *
3295
- * @param {number} [num] (optional) number of tabs to switch forward, default: 1.
3296
- * @param {number | null} [sec] (optional) time in seconds to wait.
3332
+ * ```js
3333
+ * I.switchToNextTab();
3334
+ * I.switchToNextTab(2);
3335
+ * ```
3297
3336
  *
3337
+ * @param {number} [num] (optional) number of tabs to switch forward, default: 1.
3338
+ * @param {number | null} [sec] (optional) time in seconds to wait.
3339
+ * [!] returns a _promise_ which is synchronized internally by recorder
3298
3340
  */
3299
3341
  async switchToNextTab(num = 1, sec = null) {
3300
3342
  const aSec = sec || this.options.waitForTimeout;
@@ -3325,16 +3367,16 @@ class WebDriver extends Helper {
3325
3367
  }
3326
3368
 
3327
3369
  /**
3328
- * Switch focus to a particular tab by its number. It waits tabs loading and then switch tab.
3370
+ * Switch focus to a particular tab by its number. It waits tabs loading and then switch tab.
3329
3371
  *
3330
- * ```js
3331
- * I.switchToPreviousTab();
3332
- * I.switchToPreviousTab(2);
3333
- * ```
3334
- *
3335
- * @param {number} [num] (optional) number of tabs to switch backward, default: 1.
3336
- * @param {number?} [sec] (optional) time in seconds to wait.
3372
+ * ```js
3373
+ * I.switchToPreviousTab();
3374
+ * I.switchToPreviousTab(2);
3375
+ * ```
3337
3376
  *
3377
+ * @param {number} [num] (optional) number of tabs to switch backward, default: 1.
3378
+ * @param {number?} [sec] (optional) time in seconds to wait.
3379
+ * [!] returns a _promise_ which is synchronized internally by recorder
3338
3380
  */
3339
3381
  async switchToPreviousTab(num = 1, sec = null) {
3340
3382
  const aSec = sec || this.options.waitForTimeout;
@@ -3365,12 +3407,13 @@ class WebDriver extends Helper {
3365
3407
  }
3366
3408
 
3367
3409
  /**
3368
- * Close current tab.
3410
+ * Close current tab.
3369
3411
  *
3370
- * ```js
3371
- * I.closeCurrentTab();
3372
- * ```
3412
+ * ```js
3413
+ * I.closeCurrentTab();
3414
+ * ```
3373
3415
  *
3416
+ * [!] returns a _promise_ which is synchronized internally by recorder
3374
3417
  */
3375
3418
  async closeCurrentTab() {
3376
3419
  await this.browser.closeWindow();
@@ -3379,12 +3422,13 @@ class WebDriver extends Helper {
3379
3422
  }
3380
3423
 
3381
3424
  /**
3382
- * Open new tab and switch to it.
3425
+ * Open new tab and switch to it.
3383
3426
  *
3384
- * ```js
3385
- * I.openNewTab();
3386
- * ```
3427
+ * ```js
3428
+ * I.openNewTab();
3429
+ * ```
3387
3430
  *
3431
+ * [!] returns a _promise_ which is synchronized internally by recorder
3388
3432
  */
3389
3433
  async openNewTab(url = 'about:blank', windowName = null) {
3390
3434
  const client = this.browser;
@@ -3418,7 +3462,7 @@ class WebDriver extends Helper {
3418
3462
  * ```js
3419
3463
  * I.refreshPage();
3420
3464
  * ```
3421
- *
3465
+ * [!] returns a _promise_ which is synchronized internally by recorder
3422
3466
  */
3423
3467
  async refreshPage() {
3424
3468
  const client = this.browser;
@@ -3431,7 +3475,7 @@ class WebDriver extends Helper {
3431
3475
  * ```js
3432
3476
  * I.scrollPageToTop();
3433
3477
  * ```
3434
- *
3478
+ * [!] returns a _promise_ which is synchronized internally by recorder
3435
3479
  */
3436
3480
  scrollPageToTop() {
3437
3481
  const client = this.browser;
@@ -3448,7 +3492,7 @@ class WebDriver extends Helper {
3448
3492
  * ```js
3449
3493
  * I.scrollPageToBottom();
3450
3494
  * ```
3451
- *
3495
+ * [!] returns a _promise_ which is synchronized internally by recorder
3452
3496
  */
3453
3497
  scrollPageToBottom() {
3454
3498
  const client = this.browser;
@@ -3499,7 +3543,7 @@ class WebDriver extends Helper {
3499
3543
  * @param {number} latitude to set.
3500
3544
  * @param {number} longitude to set
3501
3545
  * @param {number=} altitude (optional, null by default) to set
3502
- *
3546
+ * [!] returns a _promise_ which is synchronized internally by recorder
3503
3547
  */
3504
3548
  async setGeoLocation(latitude, longitude, altitude = null) {
3505
3549
  if (altitude) {
@@ -3561,6 +3605,8 @@ class WebDriver extends Helper {
3561
3605
 
3562
3606
  /**
3563
3607
  * Placeholder for ~ locator only test case write once run on both Appium and WebDriver.
3608
+ * @param {*} caps
3609
+ * @param {*} fn
3564
3610
  */
3565
3611
  /* eslint-disable */
3566
3612
  runOnIOS(caps, fn) {
@@ -3568,6 +3614,8 @@ class WebDriver extends Helper {
3568
3614
 
3569
3615
  /**
3570
3616
  * Placeholder for ~ locator only test case write once run on both Appium and WebDriver.
3617
+ * @param {*} caps
3618
+ * @param {*} fn
3571
3619
  */
3572
3620
  runOnAndroid(caps, fn) {
3573
3621
  }