codeceptjs 4.0.2-beta.8 → 4.0.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.
Files changed (326) hide show
  1. package/README.md +39 -28
  2. package/bin/codecept.js +15 -2
  3. package/bin/codeceptq.js +49 -0
  4. package/bin/mcp-server.js +1189 -0
  5. package/docs/advanced.md +201 -0
  6. package/docs/agents.md +181 -0
  7. package/docs/ai.md +489 -0
  8. package/docs/aitrace.md +266 -0
  9. package/docs/api.md +332 -0
  10. package/docs/architecture.md +235 -0
  11. package/docs/assertions.md +415 -0
  12. package/docs/auth.md +318 -0
  13. package/docs/basics.md +424 -0
  14. package/docs/bdd.md +539 -0
  15. package/docs/best.md +240 -0
  16. package/docs/bootstrap.md +132 -0
  17. package/docs/commands.md +352 -0
  18. package/docs/community-helpers.md +63 -0
  19. package/docs/configuration.md +185 -0
  20. package/docs/continuous-integration.md +431 -0
  21. package/docs/custom-helpers.md +297 -0
  22. package/docs/data.md +448 -0
  23. package/docs/debugging.md +332 -0
  24. package/docs/detox.md +235 -0
  25. package/docs/docker.md +107 -0
  26. package/docs/effects.md +179 -0
  27. package/docs/element-based-testing.md +295 -0
  28. package/docs/element-selection.md +125 -0
  29. package/docs/els.md +328 -0
  30. package/docs/environment-variables.md +131 -0
  31. package/docs/examples.md +160 -0
  32. package/docs/heal.md +213 -0
  33. package/docs/helpers/ApiDataFactory.md +267 -0
  34. package/docs/helpers/Appium.md +1419 -0
  35. package/docs/helpers/Detox.md +665 -0
  36. package/docs/helpers/ExpectHelper.md +275 -0
  37. package/docs/helpers/FileSystem.md +152 -0
  38. package/docs/helpers/GraphQL.md +152 -0
  39. package/docs/helpers/GraphQLDataFactory.md +226 -0
  40. package/docs/helpers/JSONResponse.md +255 -0
  41. package/docs/helpers/MockRequest.md +377 -0
  42. package/docs/helpers/Playwright.md +2970 -0
  43. package/docs/helpers/Puppeteer-firefox.md +86 -0
  44. package/docs/helpers/Puppeteer.md +2583 -0
  45. package/docs/helpers/REST.md +289 -0
  46. package/docs/helpers/WebDriver.md +2639 -0
  47. package/docs/hooks.md +148 -0
  48. package/docs/index.md +111 -0
  49. package/docs/installation.md +121 -0
  50. package/docs/internal-test-server.md +89 -0
  51. package/docs/locators.md +355 -0
  52. package/docs/mcp.md +485 -0
  53. package/docs/migrate-from-cypress.md +98 -0
  54. package/docs/migrate-from-java.md +108 -0
  55. package/docs/migrate-from-protractor.md +101 -0
  56. package/docs/migrate-from-testcafe.md +99 -0
  57. package/docs/migration-4.md +745 -0
  58. package/docs/mobile.md +338 -0
  59. package/docs/pageobjects.md +399 -0
  60. package/docs/parallel.md +187 -0
  61. package/docs/playwright.md +714 -0
  62. package/docs/plugins/aiTrace.md +49 -0
  63. package/docs/plugins/analyze.md +66 -0
  64. package/docs/plugins/auth.md +241 -0
  65. package/docs/plugins/autoDelay.md +48 -0
  66. package/docs/plugins/browser.md +41 -0
  67. package/docs/plugins/coverage.md +39 -0
  68. package/docs/plugins/customLocator.md +119 -0
  69. package/docs/plugins/customReporter.md +16 -0
  70. package/docs/plugins/expose.md +75 -0
  71. package/docs/plugins/heal.md +44 -0
  72. package/docs/plugins/junitReporter.md +51 -0
  73. package/docs/plugins/pageInfo.md +34 -0
  74. package/docs/plugins/pause.md +43 -0
  75. package/docs/plugins/pauseOnFail.md +18 -0
  76. package/docs/plugins/retryFailedStep.md +75 -0
  77. package/docs/plugins/screencast.md +55 -0
  78. package/docs/plugins/screenshot.md +58 -0
  79. package/docs/plugins/screenshotOnFail.md +18 -0
  80. package/docs/plugins/stepTimeout.md +65 -0
  81. package/docs/plugins.md +87 -0
  82. package/docs/puppeteer.md +314 -0
  83. package/docs/quickstart.md +120 -0
  84. package/docs/reports.md +195 -0
  85. package/docs/retry.md +311 -0
  86. package/docs/secrets.md +150 -0
  87. package/docs/sessions.md +80 -0
  88. package/docs/shadow.md +68 -0
  89. package/docs/store.md +94 -0
  90. package/docs/test-structure.md +275 -0
  91. package/docs/timeouts.md +183 -0
  92. package/docs/translation.md +247 -0
  93. package/docs/tutorial.md +323 -0
  94. package/docs/typescript.md +159 -0
  95. package/docs/web-element.md +251 -0
  96. package/docs/webdriver.md +641 -0
  97. package/docs/within.md +55 -0
  98. package/lib/actor.js +1 -36
  99. package/lib/ai.js +3 -2
  100. package/lib/aria.js +260 -0
  101. package/lib/assertions.js +18 -0
  102. package/lib/codecept.js +34 -25
  103. package/lib/command/check.js +2 -1
  104. package/lib/command/definitions.js +6 -7
  105. package/lib/command/dryRun.js +24 -5
  106. package/lib/command/generate.js +3 -1
  107. package/lib/command/gherkin/snippets.js +5 -4
  108. package/lib/command/init.js +249 -270
  109. package/lib/command/list.js +150 -10
  110. package/lib/command/query.js +218 -0
  111. package/lib/command/run-multiple.js +3 -1
  112. package/lib/command/run-workers.js +2 -14
  113. package/lib/command/run.js +3 -17
  114. package/lib/command/utils.js +14 -0
  115. package/lib/command/workers/runTests.js +91 -37
  116. package/lib/config.js +96 -18
  117. package/lib/container.js +115 -17
  118. package/lib/effects.js +17 -0
  119. package/lib/element/WebElement.js +246 -2
  120. package/lib/els.js +12 -6
  121. package/lib/globals.js +32 -19
  122. package/lib/heal.js +7 -4
  123. package/lib/helper/ApiDataFactory.js +2 -1
  124. package/lib/helper/Appium.js +8 -8
  125. package/lib/helper/FileSystem.js +3 -2
  126. package/lib/helper/GraphQLDataFactory.js +2 -1
  127. package/lib/helper/Playwright.js +358 -467
  128. package/lib/helper/Puppeteer.js +335 -192
  129. package/lib/helper/WebDriver.js +324 -111
  130. package/lib/helper/errors/ElementNotFound.js +5 -2
  131. package/lib/helper/errors/MultipleElementsFound.js +52 -0
  132. package/lib/helper/errors/NonFocusedType.js +8 -0
  133. package/lib/helper/extras/Download.js +45 -0
  134. package/lib/helper/extras/PlaywrightLocator.js +7 -107
  135. package/lib/helper/extras/elementSelection.js +58 -0
  136. package/lib/helper/extras/focusCheck.js +43 -0
  137. package/lib/helper/extras/richTextEditor.js +178 -0
  138. package/lib/helper/scripts/dropFile.js +11 -0
  139. package/lib/history.js +3 -2
  140. package/lib/html.js +103 -16
  141. package/lib/index.js +9 -1
  142. package/lib/listener/config.js +6 -4
  143. package/lib/listener/emptyRun.js +2 -1
  144. package/lib/listener/globalRetry.js +32 -6
  145. package/lib/listener/helpers.js +4 -1
  146. package/lib/listener/mocha.js +2 -1
  147. package/lib/listener/pageobjects.js +43 -0
  148. package/lib/listener/result.js +3 -2
  149. package/lib/locator.js +158 -16
  150. package/lib/mocha/cli.js +19 -1
  151. package/lib/mocha/factory.js +11 -1
  152. package/lib/mocha/inject.js +1 -1
  153. package/lib/mocha/scenarioConfig.js +2 -1
  154. package/lib/mocha/ui.js +5 -6
  155. package/lib/parser.js +2 -2
  156. package/lib/pause.js +38 -4
  157. package/lib/plugin/aiTrace.js +457 -0
  158. package/lib/plugin/analyze.js +9 -9
  159. package/lib/plugin/auth.js +5 -4
  160. package/lib/plugin/browser.js +77 -0
  161. package/lib/plugin/expose.js +159 -0
  162. package/lib/plugin/heal.js +47 -3
  163. package/lib/plugin/junitReporter.js +303 -0
  164. package/lib/plugin/pageInfo.js +54 -52
  165. package/lib/plugin/pause.js +131 -0
  166. package/lib/plugin/pauseOnFail.js +11 -33
  167. package/lib/plugin/retryFailedStep.js +43 -32
  168. package/lib/plugin/screencast.js +289 -0
  169. package/lib/plugin/screenshot.js +558 -0
  170. package/lib/plugin/screenshotOnFail.js +9 -170
  171. package/lib/plugin/stepTimeout.js +3 -2
  172. package/lib/recorder.js +1 -1
  173. package/lib/rerun.js +2 -1
  174. package/lib/result.js +2 -1
  175. package/lib/step/base.js +10 -9
  176. package/lib/step/comment.js +2 -2
  177. package/lib/step/config.js +15 -2
  178. package/lib/step/helper.js +4 -4
  179. package/lib/step/meta.js +3 -3
  180. package/lib/step/record.js +5 -5
  181. package/lib/store.js +72 -3
  182. package/lib/translation.js +2 -1
  183. package/lib/utils/loaderCheck.js +28 -0
  184. package/lib/utils/mask_data.js +2 -1
  185. package/lib/utils/pluginParser.js +151 -0
  186. package/lib/utils/trace.js +297 -0
  187. package/lib/utils/typescript.js +188 -23
  188. package/lib/utils.js +77 -3
  189. package/lib/workers.js +65 -40
  190. package/package.json +35 -30
  191. package/typings/index.d.ts +119 -8
  192. package/typings/promiseBasedTypes.d.ts +3158 -6065
  193. package/typings/types.d.ts +3453 -6494
  194. package/docs/webapi/amOnPage.mustache +0 -11
  195. package/docs/webapi/appendField.mustache +0 -11
  196. package/docs/webapi/attachFile.mustache +0 -12
  197. package/docs/webapi/blur.mustache +0 -18
  198. package/docs/webapi/checkOption.mustache +0 -13
  199. package/docs/webapi/clearCookie.mustache +0 -9
  200. package/docs/webapi/clearField.mustache +0 -9
  201. package/docs/webapi/click.mustache +0 -29
  202. package/docs/webapi/clickLink.mustache +0 -8
  203. package/docs/webapi/closeCurrentTab.mustache +0 -7
  204. package/docs/webapi/closeOtherTabs.mustache +0 -8
  205. package/docs/webapi/dontSee.mustache +0 -11
  206. package/docs/webapi/dontSeeCheckboxIsChecked.mustache +0 -10
  207. package/docs/webapi/dontSeeCookie.mustache +0 -8
  208. package/docs/webapi/dontSeeCurrentUrlEquals.mustache +0 -10
  209. package/docs/webapi/dontSeeElement.mustache +0 -8
  210. package/docs/webapi/dontSeeElementInDOM.mustache +0 -8
  211. package/docs/webapi/dontSeeInCurrentUrl.mustache +0 -4
  212. package/docs/webapi/dontSeeInField.mustache +0 -11
  213. package/docs/webapi/dontSeeInSource.mustache +0 -8
  214. package/docs/webapi/dontSeeInTitle.mustache +0 -8
  215. package/docs/webapi/dontSeeTraffic.mustache +0 -13
  216. package/docs/webapi/doubleClick.mustache +0 -13
  217. package/docs/webapi/downloadFile.mustache +0 -12
  218. package/docs/webapi/dragAndDrop.mustache +0 -9
  219. package/docs/webapi/dragSlider.mustache +0 -11
  220. package/docs/webapi/executeAsyncScript.mustache +0 -24
  221. package/docs/webapi/executeScript.mustache +0 -26
  222. package/docs/webapi/fillField.mustache +0 -16
  223. package/docs/webapi/flushNetworkTraffics.mustache +0 -5
  224. package/docs/webapi/focus.mustache +0 -13
  225. package/docs/webapi/forceClick.mustache +0 -28
  226. package/docs/webapi/forceRightClick.mustache +0 -18
  227. package/docs/webapi/grabAllWindowHandles.mustache +0 -7
  228. package/docs/webapi/grabAttributeFrom.mustache +0 -10
  229. package/docs/webapi/grabAttributeFromAll.mustache +0 -9
  230. package/docs/webapi/grabBrowserLogs.mustache +0 -9
  231. package/docs/webapi/grabCookie.mustache +0 -11
  232. package/docs/webapi/grabCssPropertyFrom.mustache +0 -11
  233. package/docs/webapi/grabCssPropertyFromAll.mustache +0 -10
  234. package/docs/webapi/grabCurrentUrl.mustache +0 -9
  235. package/docs/webapi/grabCurrentWindowHandle.mustache +0 -6
  236. package/docs/webapi/grabDataFromPerformanceTiming.mustache +0 -20
  237. package/docs/webapi/grabElementBoundingRect.mustache +0 -20
  238. package/docs/webapi/grabGeoLocation.mustache +0 -8
  239. package/docs/webapi/grabHTMLFrom.mustache +0 -10
  240. package/docs/webapi/grabHTMLFromAll.mustache +0 -9
  241. package/docs/webapi/grabNumberOfOpenTabs.mustache +0 -8
  242. package/docs/webapi/grabNumberOfVisibleElements.mustache +0 -9
  243. package/docs/webapi/grabPageScrollPosition.mustache +0 -8
  244. package/docs/webapi/grabPopupText.mustache +0 -5
  245. package/docs/webapi/grabRecordedNetworkTraffics.mustache +0 -10
  246. package/docs/webapi/grabSource.mustache +0 -8
  247. package/docs/webapi/grabTextFrom.mustache +0 -10
  248. package/docs/webapi/grabTextFromAll.mustache +0 -9
  249. package/docs/webapi/grabTitle.mustache +0 -8
  250. package/docs/webapi/grabValueFrom.mustache +0 -9
  251. package/docs/webapi/grabValueFromAll.mustache +0 -8
  252. package/docs/webapi/grabWebElement.mustache +0 -9
  253. package/docs/webapi/grabWebElements.mustache +0 -9
  254. package/docs/webapi/moveCursorTo.mustache +0 -12
  255. package/docs/webapi/openNewTab.mustache +0 -7
  256. package/docs/webapi/pressKey.mustache +0 -12
  257. package/docs/webapi/pressKeyDown.mustache +0 -12
  258. package/docs/webapi/pressKeyUp.mustache +0 -12
  259. package/docs/webapi/pressKeyWithKeyNormalization.mustache +0 -60
  260. package/docs/webapi/refreshPage.mustache +0 -6
  261. package/docs/webapi/resizeWindow.mustache +0 -6
  262. package/docs/webapi/rightClick.mustache +0 -14
  263. package/docs/webapi/saveElementScreenshot.mustache +0 -10
  264. package/docs/webapi/saveScreenshot.mustache +0 -12
  265. package/docs/webapi/say.mustache +0 -10
  266. package/docs/webapi/scrollIntoView.mustache +0 -11
  267. package/docs/webapi/scrollPageToBottom.mustache +0 -6
  268. package/docs/webapi/scrollPageToTop.mustache +0 -6
  269. package/docs/webapi/scrollTo.mustache +0 -12
  270. package/docs/webapi/see.mustache +0 -11
  271. package/docs/webapi/seeAttributesOnElements.mustache +0 -9
  272. package/docs/webapi/seeCheckboxIsChecked.mustache +0 -10
  273. package/docs/webapi/seeCookie.mustache +0 -8
  274. package/docs/webapi/seeCssPropertiesOnElements.mustache +0 -9
  275. package/docs/webapi/seeCurrentUrlEquals.mustache +0 -11
  276. package/docs/webapi/seeElement.mustache +0 -8
  277. package/docs/webapi/seeElementInDOM.mustache +0 -8
  278. package/docs/webapi/seeInCurrentUrl.mustache +0 -8
  279. package/docs/webapi/seeInField.mustache +0 -12
  280. package/docs/webapi/seeInPopup.mustache +0 -8
  281. package/docs/webapi/seeInSource.mustache +0 -7
  282. package/docs/webapi/seeInTitle.mustache +0 -8
  283. package/docs/webapi/seeNumberOfElements.mustache +0 -11
  284. package/docs/webapi/seeNumberOfVisibleElements.mustache +0 -10
  285. package/docs/webapi/seeTextEquals.mustache +0 -9
  286. package/docs/webapi/seeTitleEquals.mustache +0 -8
  287. package/docs/webapi/seeTraffic.mustache +0 -36
  288. package/docs/webapi/selectOption.mustache +0 -21
  289. package/docs/webapi/setCookie.mustache +0 -16
  290. package/docs/webapi/setGeoLocation.mustache +0 -12
  291. package/docs/webapi/startRecordingTraffic.mustache +0 -8
  292. package/docs/webapi/startRecordingWebSocketMessages.mustache +0 -8
  293. package/docs/webapi/stopRecordingTraffic.mustache +0 -5
  294. package/docs/webapi/stopRecordingWebSocketMessages.mustache +0 -7
  295. package/docs/webapi/switchTo.mustache +0 -9
  296. package/docs/webapi/switchToNextTab.mustache +0 -10
  297. package/docs/webapi/switchToPreviousTab.mustache +0 -10
  298. package/docs/webapi/type.mustache +0 -21
  299. package/docs/webapi/uncheckOption.mustache +0 -13
  300. package/docs/webapi/wait.mustache +0 -8
  301. package/docs/webapi/waitForClickable.mustache +0 -11
  302. package/docs/webapi/waitForCookie.mustache +0 -9
  303. package/docs/webapi/waitForDetached.mustache +0 -10
  304. package/docs/webapi/waitForDisabled.mustache +0 -6
  305. package/docs/webapi/waitForElement.mustache +0 -11
  306. package/docs/webapi/waitForEnabled.mustache +0 -6
  307. package/docs/webapi/waitForFunction.mustache +0 -17
  308. package/docs/webapi/waitForInvisible.mustache +0 -10
  309. package/docs/webapi/waitForNumberOfTabs.mustache +0 -9
  310. package/docs/webapi/waitForText.mustache +0 -13
  311. package/docs/webapi/waitForValue.mustache +0 -10
  312. package/docs/webapi/waitForVisible.mustache +0 -10
  313. package/docs/webapi/waitInUrl.mustache +0 -9
  314. package/docs/webapi/waitNumberOfVisibleElements.mustache +0 -10
  315. package/docs/webapi/waitToHide.mustache +0 -10
  316. package/docs/webapi/waitUrlEquals.mustache +0 -10
  317. package/lib/helper/AI.js +0 -214
  318. package/lib/helper/Mochawesome.js +0 -96
  319. package/lib/helper/extras/PlaywrightReactVueLocator.js +0 -52
  320. package/lib/helper/extras/React.js +0 -65
  321. package/lib/listener/enhancedGlobalRetry.js +0 -110
  322. package/lib/plugin/enhancedRetryFailedStep.js +0 -99
  323. package/lib/plugin/htmlReporter.js +0 -3648
  324. package/lib/plugin/stepByStepReport.js +0 -427
  325. package/lib/plugin/subtitles.js +0 -89
  326. package/lib/retryCoordinator.js +0 -207
@@ -0,0 +1,352 @@
1
+ ---
2
+ permalink: /commands
3
+ title: Commands
4
+ ---
5
+
6
+ # Commands
7
+
8
+ ## Run
9
+
10
+ Executes tests. Requires `codecept.conf.js` config to be present in provided path.
11
+
12
+ ---
13
+
14
+ Run all tests from current dir
15
+
16
+ ```sh
17
+ npx codeceptjs run
18
+ ```
19
+
20
+ Load config and run tests from `test` dir
21
+
22
+ ```sh
23
+ npx codeceptjs run -c test
24
+ ```
25
+
26
+ Run only tests with "signin" word in name
27
+
28
+ ```sh
29
+ npx codeceptjs run --grep "signin"
30
+ ```
31
+
32
+ Run all tests without "@IEOnly" word in name
33
+
34
+ ```sh
35
+ npx codeceptjs run --grep "@IEOnly" --invert
36
+ ```
37
+
38
+ Run single test [path to codecept.js] [test filename]
39
+
40
+ ```sh
41
+ npx codeceptjs run github_test.js
42
+ ```
43
+
44
+ Run single test with steps printed
45
+
46
+ ```sh
47
+ npx codeceptjs run github_test.js --steps
48
+ ```
49
+
50
+ Run test files in shuffled order
51
+
52
+ ```sh
53
+ npx codeceptjs run --shuffle
54
+ ```
55
+
56
+ Run single test in debug mode (see more in [debugging](#Debugging) section)
57
+
58
+ ```sh
59
+ npx codeceptjs run github_test.js --debug
60
+ ```
61
+
62
+ Select config file manually (`-c` or `--config` option)
63
+
64
+ ```sh
65
+ npx codeceptjs run -c my.codecept.conf.js
66
+ npx codeceptjs run --config path/to/codecept.conf.js
67
+ ```
68
+
69
+ Override config on the fly. Provide valid JSON which will be merged into current config:
70
+
71
+ ```sh
72
+ npx codeceptjs run --override '{ "helpers": {"WebDriver": {"browser": "chrome"}}}'
73
+ ```
74
+
75
+ Run tests and produce xunit report:
76
+
77
+ ```sh
78
+ npx codeceptjs run --reporter xunit
79
+ ```
80
+
81
+ Use any of [Mocha reporters](https://github.com/mochajs/mocha/tree/master/lib/reporters) used.
82
+
83
+ #### Debugging
84
+
85
+ Run single test in debug mode
86
+
87
+ ```sh
88
+ npx codeceptjs run --debug
89
+ ```
90
+
91
+ Run test with internal logs printed.
92
+
93
+ ```sh
94
+ npx codeceptjs run --verbose
95
+ ```
96
+
97
+ Display complete debug output including scheduled promises
98
+
99
+ ```
100
+ DEBUG=codeceptjs:* npx codeceptjs run
101
+ ```
102
+
103
+ ## Plugin Arguments
104
+
105
+ `run`, `run-workers`, `run-multiple`, `run-rerun` and `dry-run` accept a `-p` (`--plugins`) flag to enable plugins on the command line, with optional arguments per plugin. Tokens are colon-chained per plugin, comma-separated across plugins:
106
+
107
+ ```sh
108
+ npx codeceptjs run -p <name> # enable plugin
109
+ npx codeceptjs run -p <name>:<arg1>:<arg2> # enable + pass args
110
+ npx codeceptjs run -p <plugin1>,<plugin2>:<arg> # multiple plugins
111
+ ```
112
+
113
+ Plugins listed via `-p` are activated even when their config has `enabled: false` (or no `enabled` flag). This is the supported way to switch a plugin on for a single run without editing `codecept.conf`.
114
+
115
+ A few examples:
116
+
117
+ ```sh
118
+ npx codeceptjs run -p pause # pause on first failure (default on=fail)
119
+ npx codeceptjs run -p pause:on=step # pause before every step
120
+ npx codeceptjs run -p pause:on=url:pattern=/checkout/* # pause on URL match
121
+ npx codeceptjs run -p "screenshot:on=step;slides=true" # produce a step-by-step HTML report
122
+ ```
123
+
124
+ ### Browser Control
125
+
126
+ The built-in `browser` plugin overrides browser-helper config from the CLI — works for Playwright, Puppeteer, WebDriver and Appium without editing `codecept.conf`.
127
+
128
+ ```sh
129
+ npx codeceptjs run -p browser:show # force visible browser
130
+ npx codeceptjs run -p browser:hide # force headless
131
+ npx codeceptjs run -p browser:browser=firefox # switch engine
132
+ npx codeceptjs run -p browser:windowSize=1024x768 # set viewport
133
+ npx codeceptjs run -p browser:hide:browser=webkit:windowSize=800x600
134
+ ```
135
+
136
+ Tokens after `browser:` are either flags (`show`, `hide`) or `key=value` pairs. Three keys get per-helper translation:
137
+
138
+ - `browser=<name>` — Puppeteer receives `product`, Playwright/WebDriver receive `browser`. Validated per helper (`chromium`/`webkit`/`firefox` for Playwright, `chrome`/`firefox` for Puppeteer).
139
+ - `show=true|false` (or the `show`/`hide` flag) — sets `show` on Playwright/Puppeteer; injects/strips `--headless` in WebDriver chrome/firefox capability args.
140
+ - `windowSize=WxH` — sets `windowSize` on every helper; also adds `--window-size=W,H` to chromium/chrome args for Playwright/Puppeteer.
141
+
142
+ Anything else (`-p browser:video=false:waitForTimeout=10000`) is shallow-merged onto every browser helper present in config. Values are coerced (`true`/`false` → boolean, digits → Number, otherwise string).
143
+
144
+ ## Run Workers
145
+
146
+ Run tests in parallel threads. CodeceptJS supports different distribution strategies for optimal performance.
147
+
148
+ ```bash
149
+ # Run with 3 workers using default strategy (pre-assign tests)
150
+ npx codeceptjs run-workers 3
151
+
152
+ # Run with pool mode for dynamic test distribution (recommended)
153
+ npx codeceptjs run-workers 3 --by pool
154
+
155
+ # Run with suite distribution
156
+ npx codeceptjs run-workers 3 --by suite
157
+
158
+ # Pool mode with filtering
159
+ npx codeceptjs run-workers 4 --by pool --grep "@smoke"
160
+ ```
161
+
162
+ **Test Distribution Strategies:**
163
+
164
+ - `--by test` (default): Pre-assigns individual tests to workers
165
+ - `--by suite`: Pre-assigns entire test suites to workers
166
+ - `--by pool`: Dynamic distribution for optimal load balancing (recommended for best performance)
167
+
168
+ The pool mode provides the best load balancing by maintaining tests in a shared pool and distributing them dynamically as workers become available. This prevents workers from sitting idle and ensures optimal CPU utilization, especially when tests have varying execution times.
169
+
170
+ See [Parallel Execution](/parallel) documentation for more details.
171
+
172
+ ## Run Rerun <Badge text="Since 3.3.6" type="warning"/>
173
+
174
+ Run tests multiple times to detect and fix flaky tests.
175
+
176
+ ```
177
+ npx codeceptjs run-rerun
178
+ ```
179
+
180
+ For this command configuration is required:
181
+
182
+ ```js
183
+ {
184
+ // inside codecept.conf.js
185
+ rerun: {
186
+ // how many times all tests should pass
187
+ minSuccess: 2,
188
+
189
+ // how many times to try to rerun all tests
190
+ maxReruns: 4,
191
+ }
192
+ }
193
+ ```
194
+
195
+ Use Cases:
196
+
197
+ * `minSuccess: 1, maxReruns: 5` - run all tests no more than 5 times, until first successful run.
198
+ * `minSuccess: 3, maxReruns: 5` - run all tests no more than 5 times, until reaching 3 successfull runs.
199
+ * `minSuccess: 10, maxReruns: 10` - run all tests exactly 10 times, to check their stability.
200
+
201
+
202
+ ## Dry Run
203
+
204
+ Prints test scenarios without executing them
205
+
206
+ ```
207
+ npx codeceptjs dry-run
208
+ ```
209
+
210
+ When passed `--steps` or `--debug` option runs tests, disabling all plugins and helpers, so you can get step-by-step report with no tests actually executed.
211
+
212
+ ```
213
+ npx codeceptjs dry-run --steps
214
+ ```
215
+
216
+ If a plugin needs to be enabled in `dry-run` mode, pass its name in `-p` option:
217
+
218
+ ```
219
+ npx codeceptjs dry-run --steps -p allure
220
+ ```
221
+
222
+ If some plugins need to be enabled in `dry-run` mode, pass its name in `-p` option:
223
+
224
+ ```
225
+ npx codeceptjs dry-run --steps -p allure,customLocator
226
+ ```
227
+
228
+ If all plugins need to be enabled in `dry-run` mode, pass its name in `-p` option:
229
+
230
+ ```
231
+ npx codeceptjs dry-run --steps -p all
232
+ ```
233
+
234
+ To enable bootstrap script in dry-run mode, pass in `--bootstrap` option when running with `--steps` or `--debug`
235
+
236
+ ```
237
+ npx codeceptjs dry-run --steps --bootstrap
238
+ ```
239
+
240
+ ## Run Multiple
241
+
242
+ > ⚠️ prefer using run-workers instead
243
+
244
+ Run multiple suites. Unlike `run-workers` spawns processes to execute tests.
245
+ [Requires additional configuration](/advanced#multiple-browsers-execution) and can be used to execute tests in multiple browsers.
246
+
247
+ ```sh
248
+ npx codeceptjs run-multiple smoke:chrome regression:firefox
249
+ ```
250
+
251
+ ## Init
252
+
253
+ Creates `codecept.conf.js` file in current directory:
254
+
255
+ ```sh
256
+ npx codeceptjs init
257
+ ```
258
+
259
+ Or in provided path
260
+
261
+ ```sh
262
+ npx codecept init test
263
+ ```
264
+
265
+ ## Migrate
266
+
267
+ Migrate your current `codecept.json` to `codecept.conf.js`
268
+
269
+ ```sh
270
+ npx codeceptjs migrate
271
+ ```
272
+
273
+ ## Shell
274
+
275
+ Interactive shell. Allows to try `I.` commands in runtime
276
+
277
+ ```sh
278
+ npx codeceptjs shell
279
+ ```
280
+
281
+ ## Generators
282
+
283
+ Create new test
284
+
285
+ ```sh
286
+ npx codeceptjs generate:test
287
+ ```
288
+
289
+ Create new pageobject
290
+
291
+ ```sh
292
+ npx codeceptjs generate:pageobject
293
+ ```
294
+
295
+ Create new helper
296
+
297
+ ```sh
298
+ npx codeceptjs generate:helper
299
+ ```
300
+
301
+ ## TypeScript Definitions
302
+
303
+ TypeScript Definitions allows IDEs to provide autocompletion when writing tests.
304
+
305
+ ```sh
306
+ npx codeceptjs def
307
+ npx codeceptjs def --config path/to/codecept.conf.js
308
+ ```
309
+
310
+ After doing that IDE should provide autocompletion for `I` object inside `Scenario` and `within` blocks.
311
+
312
+ Add optional parameter `output` (or shortcut `-o`), if you want to place your definition file in specific folder:
313
+
314
+ ```sh
315
+ npx codeceptjs def --output ./tests/typings
316
+ npx codeceptjs def -o ./tests/typings
317
+ ```
318
+
319
+ ## List Commands
320
+
321
+ Prints all available methods of `I` to console.
322
+
323
+ ```sh
324
+ npx codeceptjs list
325
+ ```
326
+
327
+ Use `-c` to point at a specific config (same as `run`):
328
+
329
+ ```sh
330
+ npx codeceptjs list -c ./test/acceptance/codecept.Playwright.js
331
+ ```
332
+
333
+ Add `--docs` to print full documentation (description, examples, `@param` annotations) below each action — pulled from helper JSDoc and `docs/webapi/*` snippets:
334
+
335
+ ```sh
336
+ npx codeceptjs list --docs
337
+ ```
338
+
339
+ Use `--action` to show docs for a single action. The `I.` prefix is optional and `--docs` is implied:
340
+
341
+ ```sh
342
+ npx codeceptjs list --action amOnPage
343
+ npx codeceptjs list --action I.click -c ./test/acceptance/codecept.Playwright.js
344
+ ```
345
+
346
+ ## Local Environment Information
347
+
348
+ Prints debugging information concerning the local environment
349
+
350
+ ```sh
351
+ npx codeceptjs info
352
+ ```
@@ -0,0 +1,63 @@
1
+ ---
2
+ permalink: /community-helpers
3
+ title: Community Helpers
4
+ editLink: false
5
+ ---
6
+
7
+ # Community Helpers
8
+ > Share your helpers at our [Wiki Page](https://github.com/codeceptjs/CodeceptJS/wiki/Community-Helpers)
9
+
10
+ Here is the list of helpers created by our community.
11
+ Please **add your own** by editing this page.
12
+ ## Webhooks
13
+
14
+ * [codeceptjs-webhook-helper](https://github.com/onemolegames/codeceptjs-webhook-helper) - to check webhook calls during the tests.
15
+
16
+ ## Email Checking
17
+
18
+ * [MailCatcher](https://gist.github.com/schmkr/026732dfa1627b927ff3a08dc31ee884) - to check emails via Mailcatcher locally.
19
+ * [codeceptjs-mailhog-helper](https://github.com/tsuemura/codeceptjs-mailhog-helper) - to check emails via Mailhog locally.
20
+ * [codeceptjs-testmailapp-helper](https://github.com/pavkam/codeceptjs-testmailapp-helper) - to check emails via Testmail.app service.
21
+ * [codeceptjs-mailosaurhelper](https://github.com/yurkovychv/codeceptjs-mailosaur) - to check emails via [Mailosaur](https://mailosaur.com/) service.
22
+
23
+ ## Data Sources
24
+
25
+ * [codeceptjs-httpmock](https://github.com/testphony/codeceptjs-httpMock) - a helper which wraps mockttp library to manage http mock in tests.
26
+ * [codeceptjs-http](https://github.com/testphony/codeceptjs-http) - a helper which wraps then-request library to process HTTP requests. It's alternative helper that provides more flexible request management.
27
+ * [codeceptjs-dbhelper](https://github.com/thiagodp/codeceptjs-dbhelper) - allows you to execute queries or commands to databases using database-js.
28
+
29
+ ## Cloud Providers
30
+ * [codeceptjs-saucehelper](https://github.com/puneet0191/codeceptjs-saucehelper/) - a helper which updates `Test Names` & `Test Results` on Saucelabs
31
+ * [codeceptjs-bshelper](https://github.com/PeterNgTr/codeceptjs-bshelper) - a helper which updates `Test Names` & `Test Results` on Browserstack
32
+ * [codeceptjs-tbhelper](https://github.com/testingbot/codeceptjs-tbhelper) - a helper which updates `Test Names` & `Test Results` on TestingBot
33
+
34
+ ## Visual-Testing
35
+ * [codeceptjs-resemblehelper](https://github.com/puneet0191/codeceptjs-resemblehelper) - a helper which helps with visual testing using resemble.js.
36
+ * [codeceptjs-applitoolshelper](https://www.npmjs.com/package/codeceptjs-applitoolshelper) - a helper which helps interaction with [Applitools](https://applitools.com)
37
+ * [codeceptjs-pixelmatchhelper](https://github.com/stracker-phil/codeceptjs-pixelmatchhelper) - a helper that integrates pixelmatch for visual testing.
38
+
39
+ ## Reporters
40
+ * [codeceptjs-rphelper](https://github.com/reportportal/agent-js-codecept) is a CodeceptJS helper which can publish tests results on ReportPortal after execution.
41
+ * [codeceptjs-xray-helper](https://www.npmjs.com/package/codeceptjs-xray-helper) is a CodeceptJS helper which can publish tests results on [XRAY](https://confluence.xpand-it.com/display/XRAYCLOUD/Import+Execution+Results+-+REST).
42
+ * [codeceptjs-xray-cloud-helper](https://www.npmjs.com/package/codeceptjs-xray-cloud-helper) is a helper that automatically retrieves the result of CodeceptJS tests and sends them to XRAY/JIRA(cloud version) via [XRAY Cloud API](https://docs.getxray.app/display/XRAYCLOUD/Import+Execution+Results+-+REST+v2#ImportExecutionResultsRESTv2-XrayJSONresults).
43
+ * [codeceptjs-slack-reporter](https://www.npmjs.com/package/codeceptjs-slack-reporter) Get a Slack notification when one or more scenarios fail.
44
+ * [codeceptjs-browserlogs-plugin](https://github.com/pavkam/codeceptjs-browserlogs-plugin) Record the browser logs for failed tests.
45
+ * [codeceptjs-testrail](https://github.com/PeterNgTr/codeceptjs-testrail) - a plugin to integrate with [Testrail](https://www.gurock.com/testrail)
46
+ * [codeceptjs-monocart-coverage](https://github.com/cenfun/codeceptjs-monocart-coverage) - a plugin to generate coverage reports, it integrate with [monocart coverage reports](https://github.com/cenfun/monocart-coverage-reports)
47
+
48
+ ## Browser request control
49
+ * [codeceptjs-resources-check](https://github.com/luarmr/codeceptjs-resources-check) Load a URL with Puppeteer and listen to the requests while the page is loading. Enabling count the number or check the sizes of the requests.
50
+
51
+ ## Assertion & Validations
52
+ * [codeceptjs-chai](https://www.npmjs.com/package/codeceptjs-chai) is a CodeceptJS helper which wraps
53
+ [chai](https://www.chaijs.com/) library to complete chai assertion steps with CodeceptJS logging.
54
+
55
+ ## Other
56
+
57
+ * [codeceptjs-cmdhelper](https://github.com/thiagodp/codeceptjs-cmdhelper) allows you to run commands in the terminal/console
58
+ * [eslint-plugin-codeceptjs](https://www.npmjs.com/package/eslint-plugin-codeceptjs) Eslint rules for CodeceptJS.
59
+ * [codeceptjs-datalayer-helper](https://github.com/kobenguyent/codeceptjs-datalayer-helper) CodeceptJS DataLayer helper helps you to get the datalayer JavaScript array that is used to store information and send this data to the tag manager.
60
+ * [codeceptjs-a11y-helper](https://github.com/kobenguyent/codeceptjs-a11y-helper) accessibility tests integrated with CodeceptJS - Playwright-axe
61
+ * [codeceptjs-lighthouse-helper](https://github.com/kobenguyent/codeceptjs-lighthouse-helper) lighthouse audit integrated with CodeceptJS - Playwright
62
+ * [Snowplow Data analytics](https://www.npmjs.com/package/@viasat/codeceptjs-snowplow-helper) - Test your Snowplow events implementations with CodeceptJS and Snowplow Micro.
63
+ * [codeceptjs-failure-logger](https://github.com/kobenguyent/codeceptjs-failure-logger) - Log failed CodeceptJS tests to file
@@ -0,0 +1,185 @@
1
+ ---
2
+ permalink: /configuration
3
+ title: Configuration
4
+ ---
5
+
6
+ # Configuration
7
+
8
+ `codeceptjs init` creates a `codecept.conf.js` (or `codecept.conf.ts`) in your test root. It exports a `config` object:
9
+
10
+ ```js
11
+ export const config = {
12
+ tests: './**/*_test.js',
13
+ output: './output',
14
+ helpers: {
15
+ Playwright: { url: 'http://localhost', browser: 'chromium' },
16
+ },
17
+ include: {
18
+ I: './steps_file.js',
19
+ },
20
+ }
21
+ ```
22
+
23
+ ## Options
24
+
25
+ **Tests and files**
26
+
27
+ - `tests` — glob pattern (or array of patterns) locating your test files, e.g. `'tests/**/*_test.js'` (or `*_test.ts` for TypeScript).
28
+ - `output` — directory for failure screenshots, artifacts, and temporary files. Default `./output`.
29
+ - `include` — page objects and support objects exposed via dependency injection: `{ I: './steps_file.js', loginPage: './pages/Login.js' }`. They can then be injected by name — `Scenario('test', ({ I, loginPage }) => …)`.
30
+ - `require` — extra modules to load before tests run: assertion libraries, TypeScript loaders, setup files. See [Require](#require).
31
+ - `grep` — run only tests whose name matches this pattern, e.g. `grep: '@firefox'`. Handy when you keep separate configs per environment.
32
+
33
+ **Helpers and plugins**
34
+
35
+ - `helpers` — enable and configure [helpers](/helpers): `{ Playwright: { url: 'https://mysite.com', browser: 'firefox' } }`.
36
+ - `plugins` — enable [plugins](/plugins): `{ autoDelay: { enabled: true } }`.
37
+
38
+ **Hooks**
39
+
40
+ - `bootstrap` / `teardown` — run code before / after the whole run; an async function or a path to a JS module. See [Bootstrap](/bootstrap).
41
+ - `bootstrapAll` / `teardownAll` — run once around a parallel run (before any worker starts / after all finish). See [bootstrapAll / teardownAll](/bootstrap#bootstrapall-teardownall).
42
+
43
+ **Test runner**
44
+
45
+ - `timeout` — default per-test timeout in seconds; a test is killed if it stops responding.
46
+ - `mocha` — [Mocha options](https://mochajs.org/#configuring-mocha-nodejs), including extra reporters. See [Reporters](/reports).
47
+
48
+ **BDD**
49
+
50
+ - `gherkin` — enable [BDD features](/bdd#configuration): `{ features: './features/*.feature', steps: ['./step_definitions/steps.js'] }`.
51
+ - `gherkin.features` — feature file glob, or an array of globs.
52
+ - `gherkin.steps` — JS files with step definitions.
53
+
54
+ **TypeScript**
55
+
56
+ - `fullPromiseBased` — generate typings where `I.*` methods return promises, so you can `await` each command. See [TypeScript](/typescript#promise-based-typings).
57
+
58
+ **Other**
59
+
60
+ - `translation` — enable [localized commands](/translation).
61
+ - `maskSensitiveData` — mask secrets in console output.
62
+ - `noGlobals` — don't register the global functions (`Feature`, `Scenario`, `Before`, …). Not recommended.
63
+
64
+ ## Require
65
+
66
+ `require` loads modules before tests run — assertion libraries (`'should'`), setup files (`'./lib/setup'`), and TypeScript loaders. Modules load in the order listed.
67
+
68
+ For TypeScript test files in CodeceptJS 4.x, use the [`tsx`](https://tsx.is) loader:
69
+
70
+ ```ts
71
+ // codecept.conf.ts
72
+ export const config = {
73
+ tests: './**/*_test.ts',
74
+ require: ['tsx/cjs'],
75
+ helpers: {},
76
+ include: {},
77
+ }
78
+ ```
79
+
80
+ Combine several modules:
81
+
82
+ ```ts
83
+ require: ['tsx/cjs', 'should', './lib/testSetup']
84
+ ```
85
+
86
+ The config file itself (`codecept.conf.ts`) and helpers are transpiled automatically — only test files need the loader. See [TypeScript](/typescript) for the full setup.
87
+
88
+ ## Dynamic configuration
89
+
90
+ A JS/TS config file is plain code, so you can read environment variables and build the config at runtime:
91
+
92
+ ```js
93
+ export const config = {
94
+ helpers: {
95
+ WebDriver: {
96
+ url: process.env.CODECEPT_URL || 'http://localhost:3000',
97
+ user: process.env.CLOUDSERVICE_USER,
98
+ key: process.env.CLOUDSERVICE_KEY,
99
+ waitForTimeout: 10000,
100
+ },
101
+ },
102
+ include: {
103
+ I: './src/steps_file.js',
104
+ loginPage: './src/pages/login_page.js',
105
+ },
106
+ }
107
+ ```
108
+
109
+ Override config values at runtime with `--override` / `-o`, passing JSON:
110
+
111
+ ```sh
112
+ npx codeceptjs run -o '{ "helpers": { "WebDriver": { "browser": "firefox" } } }'
113
+ ```
114
+
115
+ Point at a non-default config file with `--config` / `-c`:
116
+
117
+ ```sh
118
+ npx codeceptjs run --config ./path/to/config.js
119
+ ```
120
+
121
+ ## Common configuration patterns
122
+
123
+ [`@codeceptjs/configure`](https://github.com/codeceptjs/configure) ships with CodeceptJS as a dependency. It holds shared recipes for config that's independent of the active helper.
124
+
125
+ Toggle headless mode, set window size, and so on:
126
+
127
+ ```js
128
+ import { setHeadlessWhen, setWindowSize } from '@codeceptjs/configure'
129
+
130
+ setHeadlessWhen(process.env.HEADLESS || process.env.CI)
131
+ setWindowSize(1600, 1200)
132
+
133
+ export const config = {
134
+ // ...
135
+ }
136
+ ```
137
+
138
+ For one-shot bundles use `setBrowserConfig` — pass any subset of `{ browser, show, windowSize, url }` and the right per-helper translation happens automatically (Puppeteer gets `product`, WebDriver gets `--headless` injected, …). Keys whose value is `undefined` are skipped, so an unset env var won't clobber existing config:
139
+
140
+ ```js
141
+ import { setBrowserConfig } from '@codeceptjs/configure'
142
+
143
+ setBrowserConfig({
144
+ browser: process.env.BROWSER, // optional engine override
145
+ show: !process.env.HEADLESS, // headed unless HEADLESS is set
146
+ windowSize: '1280x720',
147
+ url: process.env.URL, // overrides helper.url when set
148
+ })
149
+ ```
150
+
151
+ `setCommonPlugins()` enables a curated set of plugins and registers a few more as discoverable, so they can be switched on ad-hoc with [`-p` plugin arguments](/commands#plugin-arguments) without editing the config:
152
+
153
+ ```js
154
+ import { setCommonPlugins } from '@codeceptjs/configure'
155
+
156
+ setCommonPlugins()
157
+ ```
158
+
159
+ - `retryFailedStep` — *enabled*. Retries steps that fail with transient errors.
160
+ - `screenshot` — *enabled*. Screenshot on `fail` (default), or `test` / `step` / `file` / `url`.
161
+ - `pause` — *registered*. Pause on failure / step / file / URL: `-p pause:on=fail`, `-p pause:on=step`, `-p pause:on=file:path=tests/login_test.js`, `-p pause:on=url:pattern=/checkout/*`.
162
+ - `browser` — *registered*. CLI overrides for browser helpers: `-p browser:show`, `-p browser:browser=firefox`. See [browser control](/commands#browser-control).
163
+ - `aiTrace` — *registered*. Capture AI traces: `-p aiTrace`, narrow with `on=fail|test|step|file|url`.
164
+ - `heal` — *registered*. Self-heal failing steps: `-p heal`, narrow with `on=file|url`.
165
+
166
+ > `eachElement`, `tryTo`, and `retryTo` are no longer plugins in 4.x — import them from `codeceptjs/effects`.
167
+
168
+ ## Profile
169
+
170
+ `process.env.profile` carries the value of the `--profile` CLI option, so you can branch the config on it:
171
+
172
+ ```sh
173
+ npx codeceptjs run --profile firefox
174
+ ```
175
+
176
+ ```js
177
+ export const config = {
178
+ helpers: {
179
+ WebDriver: {
180
+ url: 'http://localhost:3000',
181
+ browser: process.env.profile || 'chrome',
182
+ },
183
+ },
184
+ }
185
+ ```