codeceptjs 2.1.3 → 2.2.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 (173) hide show
  1. package/CHANGELOG.md +125 -37
  2. package/README.md +15 -22
  3. package/bin/codecept.js +4 -1
  4. package/docs/acceptance.md +44 -1
  5. package/docs/advanced.md +1 -1
  6. package/docs/angular.md +6 -9
  7. package/docs/basics.md +388 -75
  8. package/docs/bdd.md +4 -3
  9. package/docs/best.md +1 -1
  10. package/docs/books.md +31 -0
  11. package/docs/build/Appium.js +215 -176
  12. package/docs/build/Nightmare.js +618 -489
  13. package/docs/build/Polly.js +189 -0
  14. package/docs/build/Protractor.js +747 -608
  15. package/docs/build/Puppeteer.js +914 -633
  16. package/docs/build/REST.js +1 -1
  17. package/docs/build/TestCafe.js +1835 -0
  18. package/docs/build/WebDriver.js +861 -805
  19. package/docs/build/WebDriverIO.js +616 -617
  20. package/docs/changelog.md +410 -316
  21. package/docs/commands.md +6 -6
  22. package/docs/community-helpers.md +2 -0
  23. package/docs/detox.md +235 -0
  24. package/docs/examples.md +23 -0
  25. package/docs/helpers/ApiDataFactory.md +11 -10
  26. package/docs/helpers/Appium.md +130 -61
  27. package/docs/helpers/Detox.md +579 -0
  28. package/docs/helpers/FileSystem.md +2 -1
  29. package/docs/helpers/Mochawesome.md +1 -0
  30. package/docs/helpers/Nightmare.md +348 -128
  31. package/docs/helpers/Polly.md +85 -0
  32. package/docs/helpers/Protractor.md +451 -184
  33. package/docs/helpers/Puppeteer-firefox.md +55 -0
  34. package/docs/helpers/Puppeteer.md +619 -183
  35. package/docs/helpers/REST.md +17 -16
  36. package/docs/helpers/SeleniumWebdriver.md +9 -8
  37. package/docs/helpers/TestCafe.md +1168 -0
  38. package/docs/helpers/WebDriver.md +600 -291
  39. package/docs/helpers/WebDriverIO.md +393 -278
  40. package/docs/helpers.md +37 -18
  41. package/docs/locators.md +2 -0
  42. package/docs/mobile-react-native-locators.md +64 -0
  43. package/docs/mobile.md +5 -0
  44. package/docs/plugins.md +54 -13
  45. package/docs/puppeteer.md +74 -26
  46. package/docs/quickstart.md +47 -12
  47. package/docs/react.md +67 -0
  48. package/docs/reports.md +1 -1
  49. package/docs/{webapi/_keys.mustache → shared/keys.mustache} +0 -0
  50. package/docs/shared/react.mustache +1 -0
  51. package/docs/testcafe.md +157 -0
  52. package/docs/videos.md +19 -0
  53. package/docs/webapi/amOnPage.mustache +1 -1
  54. package/docs/webapi/appendField.mustache +2 -2
  55. package/docs/webapi/attachFile.mustache +2 -2
  56. package/docs/webapi/checkOption.mustache +2 -2
  57. package/docs/webapi/clearCookie.mustache +1 -1
  58. package/docs/webapi/clearField.mustache +1 -1
  59. package/docs/webapi/click.mustache +2 -2
  60. package/docs/webapi/clickLink.mustache +3 -3
  61. package/docs/webapi/dontSee.mustache +6 -3
  62. package/docs/webapi/dontSeeCheckboxIsChecked.mustache +7 -1
  63. package/docs/webapi/dontSeeCookie.mustache +5 -1
  64. package/docs/webapi/dontSeeCurrentUrlEquals.mustache +6 -1
  65. package/docs/webapi/dontSeeElement.mustache +5 -1
  66. package/docs/webapi/dontSeeElementInDOM.mustache +5 -1
  67. package/docs/webapi/dontSeeInCurrentUrl.mustache +1 -1
  68. package/docs/webapi/dontSeeInField.mustache +7 -2
  69. package/docs/webapi/dontSeeInSource.mustache +5 -1
  70. package/docs/webapi/dontSeeInTitle.mustache +5 -1
  71. package/docs/webapi/doubleClick.mustache +2 -2
  72. package/docs/webapi/downloadFile.mustache +2 -2
  73. package/docs/webapi/dragAndDrop.mustache +2 -2
  74. package/docs/webapi/dragSlider.mustache +2 -2
  75. package/docs/webapi/executeAsyncScript.mustache +1 -1
  76. package/docs/webapi/executeScript.mustache +1 -1
  77. package/docs/webapi/fillField.mustache +2 -2
  78. package/docs/webapi/grabAttributeFrom.mustache +3 -2
  79. package/docs/webapi/grabBrowserLogs.mustache +3 -1
  80. package/docs/webapi/grabCookie.mustache +2 -1
  81. package/docs/webapi/grabCssPropertyFrom.mustache +3 -2
  82. package/docs/webapi/grabCurrentUrl.mustache +3 -1
  83. package/docs/webapi/grabDataFromPerformanceTiming.mustache +19 -0
  84. package/docs/webapi/grabHTMLFrom.mustache +2 -1
  85. package/docs/webapi/grabNumberOfOpenTabs.mustache +4 -2
  86. package/docs/webapi/grabNumberOfVisibleElements.mustache +3 -2
  87. package/docs/webapi/grabPageScrollPosition.mustache +3 -1
  88. package/docs/webapi/grabSource.mustache +3 -1
  89. package/docs/webapi/grabTextFrom.mustache +2 -1
  90. package/docs/webapi/grabTitle.mustache +3 -1
  91. package/docs/webapi/grabValueFrom.mustache +2 -1
  92. package/docs/webapi/moveCursorTo.mustache +3 -3
  93. package/docs/webapi/pressKey.mustache +1 -1
  94. package/docs/webapi/resizeWindow.mustache +2 -2
  95. package/docs/webapi/rightClick.mustache +2 -2
  96. package/docs/webapi/saveScreenshot.mustache +3 -3
  97. package/docs/webapi/say.mustache +2 -2
  98. package/docs/webapi/scrollPageToBottom.mustache +1 -1
  99. package/docs/webapi/scrollPageToTop.mustache +1 -1
  100. package/docs/webapi/scrollTo.mustache +3 -3
  101. package/docs/webapi/see.mustache +2 -2
  102. package/docs/webapi/seeAttributesOnElements.mustache +3 -3
  103. package/docs/webapi/seeCheckboxIsChecked.mustache +2 -1
  104. package/docs/webapi/seeCookie.mustache +1 -1
  105. package/docs/webapi/seeCssPropertiesOnElements.mustache +2 -2
  106. package/docs/webapi/seeCurrentUrlEquals.mustache +1 -1
  107. package/docs/webapi/seeElement.mustache +1 -1
  108. package/docs/webapi/seeElementInDOM.mustache +1 -1
  109. package/docs/webapi/seeInCurrentUrl.mustache +1 -1
  110. package/docs/webapi/seeInField.mustache +2 -2
  111. package/docs/webapi/seeInSource.mustache +1 -1
  112. package/docs/webapi/seeInTitle.mustache +5 -1
  113. package/docs/webapi/seeNumberOfElements.mustache +10 -0
  114. package/docs/webapi/seeNumberOfVisibleElements.mustache +2 -2
  115. package/docs/webapi/selectOption.mustache +2 -2
  116. package/docs/webapi/setCookie.mustache +1 -1
  117. package/docs/webapi/switchTo.mustache +6 -1
  118. package/docs/webapi/uncheckOption.mustache +2 -2
  119. package/docs/webapi/wait.mustache +1 -2
  120. package/docs/webapi/waitForDetached.mustache +3 -3
  121. package/docs/webapi/waitForElement.mustache +2 -2
  122. package/docs/webapi/waitForEnabled.mustache +1 -1
  123. package/docs/webapi/waitForFunction.mustache +3 -3
  124. package/docs/webapi/waitForInvisible.mustache +3 -3
  125. package/docs/webapi/waitForText.mustache +3 -3
  126. package/docs/webapi/waitForValue.mustache +3 -3
  127. package/docs/webapi/waitForVisible.mustache +3 -3
  128. package/docs/webapi/waitInUrl.mustache +2 -2
  129. package/docs/webapi/waitNumberOfVisibleElements.mustache +3 -3
  130. package/docs/webapi/waitToHide.mustache +3 -3
  131. package/docs/webapi/waitUntil.mustache +3 -3
  132. package/docs/webapi/waitUrlEquals.mustache +2 -2
  133. package/docs/webdriver.md +453 -0
  134. package/lib/codecept.js +11 -9
  135. package/lib/command/definitions.js +183 -30
  136. package/lib/command/gherkin/snippets.js +29 -9
  137. package/lib/command/init.js +31 -9
  138. package/lib/command/run-multiple.js +46 -59
  139. package/lib/command/utils.js +1 -1
  140. package/lib/container.js +30 -4
  141. package/lib/data/dataScenarioConfig.js +18 -0
  142. package/lib/helper/Appium.js +24 -24
  143. package/lib/helper/Nightmare.js +81 -84
  144. package/lib/helper/Polly.js +189 -0
  145. package/lib/helper/Protractor.js +96 -86
  146. package/lib/helper/Puppeteer.js +238 -113
  147. package/lib/helper/REST.js +1 -1
  148. package/lib/helper/TestCafe.js +1257 -0
  149. package/lib/helper/WebDriver.js +217 -277
  150. package/lib/helper/WebDriverIO.js +75 -75
  151. package/lib/helper/clientscripts/nightmare.js +8 -0
  152. package/lib/helper/extras/React.js +55 -0
  153. package/lib/helper/testcafe/testControllerHolder.js +42 -0
  154. package/lib/helper/testcafe/testcafe-utils.js +63 -0
  155. package/lib/history.js +39 -0
  156. package/lib/hooks.js +25 -1
  157. package/lib/interfaces/gherkin.js +17 -1
  158. package/lib/interfaces/scenarioConfig.js +2 -2
  159. package/lib/listener/config.js +3 -3
  160. package/lib/locator.js +6 -0
  161. package/lib/pause.js +22 -1
  162. package/lib/plugin/allure.js +63 -0
  163. package/lib/plugin/autoLogin.js +65 -16
  164. package/lib/plugin/puppeteerCoverage.js +6 -1
  165. package/lib/plugin/stepByStepReport.js +4 -3
  166. package/lib/scenario.js +23 -17
  167. package/lib/step.js +5 -2
  168. package/lib/ui.js +1 -1
  169. package/lib/utils.js +70 -20
  170. package/package.json +20 -19
  171. package/translations/de-DE.js +69 -0
  172. package/translations/index.js +1 -0
  173. package/docs/video.md +0 -26
@@ -61,6 +61,24 @@ class DataScenarioConfig {
61
61
  this.scenarios.forEach(scenario => scenario.tag(tagName));
62
62
  return this;
63
63
  }
64
+
65
+ /**
66
+ * Pass in additional objects to inject into test
67
+ * @param {*} obj
68
+ */
69
+ inject(obj) {
70
+ this.scenarios.forEach(scenario => scenario.inject(obj));
71
+ return this;
72
+ }
73
+
74
+ /**
75
+ * Dynamically injects dependencies, see https://codecept.io/pageobjects/#dynamic-injection
76
+ * @param {*} dependencies
77
+ */
78
+ injectDependencies(dependencies) {
79
+ this.scenarios.forEach(scenario => scenario.injectDependencies(dependencies));
80
+ return this;
81
+ }
64
82
  }
65
83
 
66
84
  module.exports = DataScenarioConfig;
@@ -116,7 +116,7 @@ class Appium extends Webdriver {
116
116
  const defaults = {
117
117
  // webdriverio defaults
118
118
  protocol: 'http',
119
- host: '0.0.0.0',
119
+ hostname: '0.0.0.0', // webdriverio specs
120
120
  port: 4723,
121
121
  path: '/wd/hub',
122
122
 
@@ -146,6 +146,8 @@ class Appium extends Webdriver {
146
146
  config.capabilities.platformName = config.platform || config.capabilities.platformName;
147
147
  config.waitForTimeout /= 1000; // convert to seconds
148
148
 
149
+ // [CodeceptJS compatible] transform host to hostname
150
+ config.hostname = config.host || config.hostname;
149
151
 
150
152
  if (!config.app && config.capabilities.browserName) {
151
153
  this.isWeb = true;
@@ -1219,7 +1221,7 @@ class Appium extends Webdriver {
1219
1221
  }
1220
1222
 
1221
1223
  /**
1222
- * {{> ../webapi/appendField }}
1224
+ * {{> appendField }}
1223
1225
  *
1224
1226
  */
1225
1227
  async appendField(field, value) {
@@ -1228,7 +1230,7 @@ class Appium extends Webdriver {
1228
1230
  }
1229
1231
 
1230
1232
  /**
1231
- * {{> ../webapi/checkOption }}
1233
+ * {{> checkOption }}
1232
1234
  *
1233
1235
  */
1234
1236
  async checkOption(field) {
@@ -1237,7 +1239,7 @@ class Appium extends Webdriver {
1237
1239
  }
1238
1240
 
1239
1241
  /**
1240
- * {{> ../webapi/click }}
1242
+ * {{> click }}
1241
1243
  *
1242
1244
  */
1243
1245
  async click(locator, context) {
@@ -1246,7 +1248,7 @@ class Appium extends Webdriver {
1246
1248
  }
1247
1249
 
1248
1250
  /**
1249
- * {{> ../webapi/dontSeeCheckboxIsChecked }}
1251
+ * {{> dontSeeCheckboxIsChecked }}
1250
1252
  *
1251
1253
  */
1252
1254
  async dontSeeCheckboxIsChecked(field) {
@@ -1255,16 +1257,15 @@ class Appium extends Webdriver {
1255
1257
  }
1256
1258
 
1257
1259
  /**
1258
- * {{> ../webapi/dontSeeElement }}
1259
- *
1260
+ * {{> dontSeeElement }}
1260
1261
  */
1261
- async dontSeeElement(locator, context) {
1262
+ async dontSeeElement(locator) {
1262
1263
  if (this.isWeb) return super.dontSeeElement(locator);
1263
1264
  return super.dontSeeElement(parseLocator.call(this, locator));
1264
1265
  }
1265
1266
 
1266
1267
  /**
1267
- * {{> ../webapi/dontSeeInField }}
1268
+ * {{> dontSeeInField }}
1268
1269
  *
1269
1270
  */
1270
1271
  async dontSeeInField(field, value) {
@@ -1274,16 +1275,15 @@ class Appium extends Webdriver {
1274
1275
 
1275
1276
 
1276
1277
  /**
1277
- * {{> ../webapi/dontSee }}
1278
- *
1278
+ * {{> dontSee }}
1279
1279
  */
1280
- async dontSee(text, context) {
1280
+ async dontSee(text, context = null) {
1281
1281
  if (this.isWeb) return super.dontSee(text, context);
1282
1282
  return super.dontSee(text, parseLocator.call(this, context));
1283
1283
  }
1284
1284
 
1285
1285
  /**
1286
- * {{> ../webapi/fillField }}
1286
+ * {{> fillField }}
1287
1287
  *
1288
1288
  */
1289
1289
  async fillField(field, value) {
@@ -1293,7 +1293,7 @@ class Appium extends Webdriver {
1293
1293
  }
1294
1294
 
1295
1295
  /**
1296
- * {{> ../webapi/grabTextFrom }}
1296
+ * {{> grabTextFrom }}
1297
1297
  *
1298
1298
  */
1299
1299
  async grabTextFrom(locator) {
@@ -1302,7 +1302,7 @@ class Appium extends Webdriver {
1302
1302
  }
1303
1303
 
1304
1304
  /**
1305
- * {{> ../webapi/grabValueFrom }}
1305
+ * {{> grabValueFrom }}
1306
1306
  *
1307
1307
  */
1308
1308
  async grabValueFrom(locator) {
@@ -1311,7 +1311,7 @@ class Appium extends Webdriver {
1311
1311
  }
1312
1312
 
1313
1313
  /**
1314
- * {{> ../webapi/seeCheckboxIsChecked }}
1314
+ * {{> seeCheckboxIsChecked }}
1315
1315
  *
1316
1316
  */
1317
1317
  async seeCheckboxIsChecked(field) {
@@ -1320,7 +1320,7 @@ class Appium extends Webdriver {
1320
1320
  }
1321
1321
 
1322
1322
  /**
1323
- * {{> ../webapi/seeElement }}
1323
+ * {{> seeElement }}
1324
1324
  *
1325
1325
  */
1326
1326
  async seeElement(locator) {
@@ -1329,7 +1329,7 @@ class Appium extends Webdriver {
1329
1329
  }
1330
1330
 
1331
1331
  /**
1332
- * {{> ../webapi/seeInField }}
1332
+ * {{> seeInField }}
1333
1333
  *
1334
1334
  */
1335
1335
  async seeInField(field, value) {
@@ -1338,7 +1338,7 @@ class Appium extends Webdriver {
1338
1338
  }
1339
1339
 
1340
1340
  /**
1341
- * {{> ../webapi/see }}
1341
+ * {{> see }}
1342
1342
  *
1343
1343
  */
1344
1344
  async see(text, context) {
@@ -1347,7 +1347,7 @@ class Appium extends Webdriver {
1347
1347
  }
1348
1348
 
1349
1349
  /**
1350
- * {{> ../webapi/selectOption }}
1350
+ * {{> selectOption }}
1351
1351
  *
1352
1352
  * * Supported on only for web testing!
1353
1353
  */
@@ -1357,7 +1357,7 @@ class Appium extends Webdriver {
1357
1357
  }
1358
1358
 
1359
1359
  /**
1360
- * {{> ../webapi/waitForElement }}
1360
+ * {{> waitForElement }}
1361
1361
  *
1362
1362
  */
1363
1363
  async waitForElement(locator, sec = null) {
@@ -1366,7 +1366,7 @@ class Appium extends Webdriver {
1366
1366
  }
1367
1367
 
1368
1368
  /**
1369
- * {{> ../webapi/waitForVisible }}
1369
+ * {{> waitForVisible }}
1370
1370
  *
1371
1371
  */
1372
1372
  async waitForVisible(locator, sec = null) {
@@ -1375,7 +1375,7 @@ class Appium extends Webdriver {
1375
1375
  }
1376
1376
 
1377
1377
  /**
1378
- * {{> ../webapi/waitForInvisible }}
1378
+ * {{> waitForInvisible }}
1379
1379
  *
1380
1380
  */
1381
1381
  async waitForInvisible(locator, sec = null) {
@@ -1384,7 +1384,7 @@ class Appium extends Webdriver {
1384
1384
  }
1385
1385
 
1386
1386
  /**
1387
- * {{> ../webapi/waitForText }}
1387
+ * {{> waitForText }}
1388
1388
  *
1389
1389
  */
1390
1390
  async waitForText(text, sec = null, context = null) {