codeceptjs 4.0.0-rc.2 → 4.0.0-rc.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -27
- package/bin/codecept.js +15 -2
- package/bin/codeceptq.js +49 -0
- package/bin/mcp-server.js +1187 -0
- package/docs/advanced.md +201 -0
- package/docs/agents.md +159 -0
- package/docs/ai.md +537 -0
- package/docs/aitrace.md +266 -0
- package/docs/api.md +332 -0
- package/docs/assertions.md +415 -0
- package/docs/auth.md +318 -0
- package/docs/basics.md +424 -0
- package/docs/bdd.md +539 -0
- package/docs/best.md +240 -0
- package/docs/bootstrap.md +132 -0
- package/docs/commands.md +352 -0
- package/docs/community-helpers.md +63 -0
- package/docs/configuration.md +230 -0
- package/docs/continuous-integration.md +497 -0
- package/docs/custom-helpers.md +297 -0
- package/docs/data.md +448 -0
- package/docs/debugging.md +332 -0
- package/docs/detox.md +235 -0
- package/docs/docker.md +136 -0
- package/docs/effects.md +179 -0
- package/docs/element-based-testing.md +295 -0
- package/docs/element-selection.md +125 -0
- package/docs/els.md +328 -0
- package/docs/examples.md +161 -0
- package/docs/heal.md +213 -0
- package/docs/helpers/ApiDataFactory.md +267 -0
- package/docs/helpers/Appium.md +1405 -0
- package/docs/helpers/Detox.md +665 -0
- package/docs/helpers/ExpectHelper.md +275 -0
- package/docs/helpers/FileSystem.md +152 -0
- package/docs/helpers/GraphQL.md +152 -0
- package/docs/helpers/GraphQLDataFactory.md +226 -0
- package/docs/helpers/JSONResponse.md +255 -0
- package/docs/helpers/Mochawesome.md +8 -0
- package/docs/helpers/MockRequest.md +377 -0
- package/docs/helpers/MockServer.md +212 -0
- package/docs/helpers/Playwright.md +2969 -0
- package/docs/helpers/Polly.md +44 -0
- package/docs/helpers/Protractor.md +1769 -0
- package/docs/helpers/Puppeteer-firefox.md +86 -0
- package/docs/helpers/Puppeteer.md +2690 -0
- package/docs/helpers/REST.md +289 -0
- package/docs/helpers/SoftExpectHelper.md +352 -0
- package/docs/helpers/WebDriver.md +2682 -0
- package/docs/hooks.md +339 -0
- package/docs/index.md +111 -0
- package/docs/installation.md +83 -0
- package/docs/internal-api.md +265 -0
- package/docs/internal-test-server.md +89 -0
- package/docs/locators.md +355 -0
- package/docs/mcp.md +485 -0
- package/docs/migration-4.md +556 -0
- package/docs/mobile.md +338 -0
- package/docs/pageobjects.md +399 -0
- package/docs/parallel.md +585 -0
- package/docs/playwright.md +714 -0
- package/docs/plugins.md +866 -0
- package/docs/puppeteer.md +314 -0
- package/docs/quickstart.md +120 -0
- package/docs/react.md +70 -0
- package/docs/reports.md +483 -0
- package/docs/retry.md +274 -0
- package/docs/secrets.md +150 -0
- package/docs/sessions.md +80 -0
- package/docs/shadow.md +68 -0
- package/docs/test-structure.md +275 -0
- package/docs/timeouts.md +183 -0
- package/docs/translation.md +247 -0
- package/docs/tutorial.md +271 -0
- package/docs/typescript.md +374 -0
- package/docs/web-element.md +251 -0
- package/docs/webdriver.md +708 -0
- package/docs/within.md +55 -0
- package/lib/ai.js +3 -2
- package/lib/aria.js +260 -0
- package/lib/assertions.js +18 -0
- package/lib/codecept.js +26 -23
- package/lib/command/check.js +2 -1
- package/lib/command/dryRun.js +24 -5
- package/lib/command/generate.js +2 -0
- package/lib/command/gherkin/snippets.js +5 -4
- package/lib/command/init.js +248 -269
- package/lib/command/list.js +150 -10
- package/lib/command/query.js +218 -0
- package/lib/command/run-multiple.js +2 -0
- package/lib/command/run-workers.js +2 -0
- package/lib/command/run.js +1 -1
- package/lib/command/workers/runTests.js +10 -10
- package/lib/config.js +77 -4
- package/lib/container.js +114 -17
- package/lib/effects.js +17 -0
- package/lib/element/WebElement.js +246 -2
- package/lib/els.js +12 -6
- package/lib/globals.js +32 -19
- package/lib/heal.js +4 -3
- package/lib/helper/ApiDataFactory.js +2 -1
- package/lib/helper/Appium.js +8 -8
- package/lib/helper/FileSystem.js +3 -2
- package/lib/helper/GraphQLDataFactory.js +2 -1
- package/lib/helper/Playwright.js +228 -162
- package/lib/helper/Puppeteer.js +208 -76
- package/lib/helper/WebDriver.js +173 -68
- package/lib/helper/errors/MultipleElementsFound.js +27 -110
- package/lib/helper/errors/NonFocusedType.js +8 -0
- package/lib/helper/extras/Download.js +45 -0
- package/lib/helper/extras/PlaywrightReactVueLocator.js +45 -36
- package/lib/helper/extras/elementSelection.js +58 -0
- package/lib/helper/extras/focusCheck.js +43 -0
- package/lib/helper/extras/richTextEditor.js +178 -0
- package/lib/helper/scripts/dropFile.js +11 -0
- package/lib/history.js +3 -2
- package/lib/html.js +103 -16
- package/lib/index.js +9 -1
- package/lib/listener/config.js +6 -4
- package/lib/listener/emptyRun.js +2 -1
- package/lib/listener/globalRetry.js +32 -6
- package/lib/listener/helpers.js +4 -1
- package/lib/listener/mocha.js +2 -1
- package/lib/listener/pageobjects.js +43 -0
- package/lib/listener/result.js +3 -2
- package/lib/locator.js +126 -3
- package/lib/mocha/cli.js +14 -2
- package/lib/mocha/factory.js +7 -2
- package/lib/mocha/inject.js +1 -1
- package/lib/mocha/scenarioConfig.js +2 -1
- package/lib/mocha/ui.js +5 -6
- package/lib/parser.js +2 -2
- package/lib/pause.js +38 -4
- package/lib/plugin/aiTrace.js +453 -0
- package/lib/plugin/analyze.js +1 -1
- package/lib/plugin/auth.js +3 -3
- package/lib/plugin/browser.js +77 -0
- package/lib/plugin/expose.js +159 -0
- package/lib/plugin/heal.js +44 -1
- package/lib/plugin/pageInfo.js +53 -49
- package/lib/plugin/pause.js +131 -0
- package/lib/plugin/pauseOnFail.js +10 -34
- package/lib/plugin/retryFailedStep.js +28 -19
- package/lib/plugin/screencast.js +287 -0
- package/lib/plugin/screenshot.js +563 -0
- package/lib/plugin/screenshotOnFail.js +8 -171
- package/lib/rerun.js +2 -1
- package/lib/result.js +2 -1
- package/lib/step/base.js +3 -2
- package/lib/step/config.js +15 -2
- package/lib/step/record.js +2 -2
- package/lib/store.js +72 -3
- package/lib/translation.js +2 -1
- package/lib/utils/mask_data.js +2 -1
- package/lib/utils/pluginParser.js +151 -0
- package/lib/utils/trace.js +297 -0
- package/lib/utils.js +77 -3
- package/lib/workers.js +52 -22
- package/package.json +19 -13
- package/typings/index.d.ts +19 -5
- package/docs/webapi/amOnPage.mustache +0 -11
- package/docs/webapi/appendField.mustache +0 -11
- package/docs/webapi/attachFile.mustache +0 -12
- package/docs/webapi/blur.mustache +0 -18
- package/docs/webapi/checkOption.mustache +0 -13
- package/docs/webapi/clearCookie.mustache +0 -9
- package/docs/webapi/clearField.mustache +0 -9
- package/docs/webapi/click.mustache +0 -29
- package/docs/webapi/clickLink.mustache +0 -8
- package/docs/webapi/closeCurrentTab.mustache +0 -7
- package/docs/webapi/closeOtherTabs.mustache +0 -8
- package/docs/webapi/dontSee.mustache +0 -11
- package/docs/webapi/dontSeeCheckboxIsChecked.mustache +0 -10
- package/docs/webapi/dontSeeCookie.mustache +0 -8
- package/docs/webapi/dontSeeCurrentPathEquals.mustache +0 -10
- package/docs/webapi/dontSeeCurrentUrlEquals.mustache +0 -10
- package/docs/webapi/dontSeeElement.mustache +0 -8
- package/docs/webapi/dontSeeElementInDOM.mustache +0 -8
- package/docs/webapi/dontSeeInCurrentUrl.mustache +0 -4
- package/docs/webapi/dontSeeInField.mustache +0 -11
- package/docs/webapi/dontSeeInSource.mustache +0 -8
- package/docs/webapi/dontSeeInTitle.mustache +0 -8
- package/docs/webapi/dontSeeTraffic.mustache +0 -13
- package/docs/webapi/doubleClick.mustache +0 -13
- package/docs/webapi/downloadFile.mustache +0 -12
- package/docs/webapi/dragAndDrop.mustache +0 -9
- package/docs/webapi/dragSlider.mustache +0 -11
- package/docs/webapi/executeAsyncScript.mustache +0 -24
- package/docs/webapi/executeScript.mustache +0 -26
- package/docs/webapi/fillField.mustache +0 -16
- package/docs/webapi/flushNetworkTraffics.mustache +0 -5
- package/docs/webapi/focus.mustache +0 -13
- package/docs/webapi/forceClick.mustache +0 -28
- package/docs/webapi/forceRightClick.mustache +0 -18
- package/docs/webapi/grabAllWindowHandles.mustache +0 -7
- package/docs/webapi/grabAttributeFrom.mustache +0 -10
- package/docs/webapi/grabAttributeFromAll.mustache +0 -9
- package/docs/webapi/grabBrowserLogs.mustache +0 -9
- package/docs/webapi/grabCookie.mustache +0 -11
- package/docs/webapi/grabCssPropertyFrom.mustache +0 -11
- package/docs/webapi/grabCssPropertyFromAll.mustache +0 -10
- package/docs/webapi/grabCurrentUrl.mustache +0 -9
- package/docs/webapi/grabCurrentWindowHandle.mustache +0 -6
- package/docs/webapi/grabDataFromPerformanceTiming.mustache +0 -20
- package/docs/webapi/grabElementBoundingRect.mustache +0 -20
- package/docs/webapi/grabGeoLocation.mustache +0 -8
- package/docs/webapi/grabHTMLFrom.mustache +0 -10
- package/docs/webapi/grabHTMLFromAll.mustache +0 -9
- package/docs/webapi/grabNumberOfOpenTabs.mustache +0 -8
- package/docs/webapi/grabNumberOfVisibleElements.mustache +0 -9
- package/docs/webapi/grabPageScrollPosition.mustache +0 -8
- package/docs/webapi/grabPopupText.mustache +0 -5
- package/docs/webapi/grabRecordedNetworkTraffics.mustache +0 -10
- package/docs/webapi/grabSource.mustache +0 -8
- package/docs/webapi/grabTextFrom.mustache +0 -10
- package/docs/webapi/grabTextFromAll.mustache +0 -9
- package/docs/webapi/grabTitle.mustache +0 -8
- package/docs/webapi/grabValueFrom.mustache +0 -9
- package/docs/webapi/grabValueFromAll.mustache +0 -8
- package/docs/webapi/grabWebElement.mustache +0 -9
- package/docs/webapi/grabWebElements.mustache +0 -9
- package/docs/webapi/moveCursorTo.mustache +0 -12
- package/docs/webapi/openNewTab.mustache +0 -7
- package/docs/webapi/pressKey.mustache +0 -12
- package/docs/webapi/pressKeyDown.mustache +0 -12
- package/docs/webapi/pressKeyUp.mustache +0 -12
- package/docs/webapi/pressKeyWithKeyNormalization.mustache +0 -60
- package/docs/webapi/refreshPage.mustache +0 -6
- package/docs/webapi/resizeWindow.mustache +0 -6
- package/docs/webapi/rightClick.mustache +0 -14
- package/docs/webapi/saveElementScreenshot.mustache +0 -10
- package/docs/webapi/saveScreenshot.mustache +0 -12
- package/docs/webapi/say.mustache +0 -10
- package/docs/webapi/scrollIntoView.mustache +0 -11
- package/docs/webapi/scrollPageToBottom.mustache +0 -6
- package/docs/webapi/scrollPageToTop.mustache +0 -6
- package/docs/webapi/scrollTo.mustache +0 -12
- package/docs/webapi/see.mustache +0 -11
- package/docs/webapi/seeAttributesOnElements.mustache +0 -9
- package/docs/webapi/seeCheckboxIsChecked.mustache +0 -10
- package/docs/webapi/seeCookie.mustache +0 -8
- package/docs/webapi/seeCssPropertiesOnElements.mustache +0 -9
- package/docs/webapi/seeCurrentPathEquals.mustache +0 -10
- package/docs/webapi/seeCurrentUrlEquals.mustache +0 -11
- package/docs/webapi/seeElement.mustache +0 -8
- package/docs/webapi/seeElementInDOM.mustache +0 -8
- package/docs/webapi/seeInCurrentUrl.mustache +0 -8
- package/docs/webapi/seeInField.mustache +0 -12
- package/docs/webapi/seeInPopup.mustache +0 -8
- package/docs/webapi/seeInSource.mustache +0 -7
- package/docs/webapi/seeInTitle.mustache +0 -8
- package/docs/webapi/seeNumberOfElements.mustache +0 -11
- package/docs/webapi/seeNumberOfVisibleElements.mustache +0 -10
- package/docs/webapi/seeTextEquals.mustache +0 -9
- package/docs/webapi/seeTitleEquals.mustache +0 -8
- package/docs/webapi/seeTraffic.mustache +0 -36
- package/docs/webapi/selectOption.mustache +0 -21
- package/docs/webapi/setCookie.mustache +0 -16
- package/docs/webapi/setGeoLocation.mustache +0 -12
- package/docs/webapi/startRecordingTraffic.mustache +0 -8
- package/docs/webapi/startRecordingWebSocketMessages.mustache +0 -8
- package/docs/webapi/stopRecordingTraffic.mustache +0 -5
- package/docs/webapi/stopRecordingWebSocketMessages.mustache +0 -7
- package/docs/webapi/switchTo.mustache +0 -9
- package/docs/webapi/switchToNextTab.mustache +0 -10
- package/docs/webapi/switchToPreviousTab.mustache +0 -10
- package/docs/webapi/type.mustache +0 -21
- package/docs/webapi/uncheckOption.mustache +0 -13
- package/docs/webapi/wait.mustache +0 -8
- package/docs/webapi/waitForClickable.mustache +0 -11
- package/docs/webapi/waitForCookie.mustache +0 -9
- package/docs/webapi/waitForDetached.mustache +0 -10
- package/docs/webapi/waitForDisabled.mustache +0 -6
- package/docs/webapi/waitForElement.mustache +0 -11
- package/docs/webapi/waitForEnabled.mustache +0 -6
- package/docs/webapi/waitForFunction.mustache +0 -17
- package/docs/webapi/waitForInvisible.mustache +0 -10
- package/docs/webapi/waitForNumberOfTabs.mustache +0 -9
- package/docs/webapi/waitForText.mustache +0 -13
- package/docs/webapi/waitForValue.mustache +0 -10
- package/docs/webapi/waitForVisible.mustache +0 -10
- package/docs/webapi/waitInUrl.mustache +0 -9
- package/docs/webapi/waitNumberOfVisibleElements.mustache +0 -10
- package/docs/webapi/waitToHide.mustache +0 -10
- package/docs/webapi/waitUrlEquals.mustache +0 -10
- package/lib/helper/AI.js +0 -214
- package/lib/listener/enhancedGlobalRetry.js +0 -110
- package/lib/plugin/enhancedRetryFailedStep.js +0 -99
- package/lib/plugin/htmlReporter.js +0 -3648
- package/lib/plugin/stepByStepReport.js +0 -427
- package/lib/plugin/subtitles.js +0 -89
- package/lib/retryCoordinator.js +0 -207
- package/typings/promiseBasedTypes.d.ts +0 -9469
- package/typings/types.d.ts +0 -11402
package/docs/commands.md
ADDED
|
@@ -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,230 @@
|
|
|
1
|
+
---
|
|
2
|
+
permalink: /configuration
|
|
3
|
+
title: Configuration
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Configuration
|
|
7
|
+
|
|
8
|
+
CodeceptJS configuration is set in `codecept.conf.js` file.
|
|
9
|
+
|
|
10
|
+
After running `codeceptjs init` it should be saved in test root.
|
|
11
|
+
|
|
12
|
+
| Name | Type | Description |
|
|
13
|
+
| :------------------- | :----------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
14
|
+
| `bootstrap?` | (() => `Promise`<`void`\>) \| `boolean` \| `string` | [Execute code before](https://codecept.io/bootstrap/) tests are run. Can be either JS module file or async function: `bootstrap: async () => server.launch(), ` or `bootstrap: 'bootstrap.js', ` |
|
|
15
|
+
| `bootstrapAll?` | (() => `Promise`<`void`\>) \| `boolean` \| `string` | [Execute code before launching tests in parallel mode](https://codecept.io/bootstrap/#bootstrapall-teardownall) |
|
|
16
|
+
| `gherkin?` | { `features`: `string` \| `string`[] ; `steps`: `string`[] } | Enable [BDD features](https://codecept.io/bdd/#configuration). Sample configuration: `gherkin: { features: "./features/*.feature", steps: ["./step_definitions/steps.js"] } ` |
|
|
17
|
+
| `gherkin.features` | `string` \| `string`[] | load feature files by pattern. Multiple patterns can be specified as array |
|
|
18
|
+
| `gherkin.steps` | `string`[] | load step definitions from JS files |
|
|
19
|
+
| `grep?` | `string` | Pattern to filter tests by name. This option is useful if you plan to use multiple configs for different environments. To execute only tests with @firefox tag use `grep: '@firefox' ` |
|
|
20
|
+
| `helpers?` | {} | Enable and configure helpers: `helpers: { Playwright: { url: 'https://mysite.com', browser: 'firefox' } } ` |
|
|
21
|
+
| `include?` | `any` | Include page objects to access them via dependency injection `I: "./custom_steps.js", loginPage: "./pages/Login.js", User: "./pages/User.js", ` Configured modules can be injected by name in a Scenario: `Scenario('test', { I, loginPage, User }) ` |
|
|
22
|
+
| `mocha?` | `any` | [Mocha test runner options](https://mochajs.org/#configuring-mocha-nodejs), additional [reporters](https://codecept.io/reports/#xml) can be configured here. Example: `mocha: { "mocha-junit-reporter": { stdout: "./output/console.log", options: { mochaFile: "./output/result.xml", attachments: true //add screenshot for a failed test } } } ` |
|
|
23
|
+
| `noGlobals?` | `boolean` | Disable registering global functions (Before, Scenario, etc). Not recommended |
|
|
24
|
+
| `output` | `string` | Where to store failure screenshots, artifacts, etc `output: './output' ` |
|
|
25
|
+
| `plugins?` | `any` | Enable CodeceptJS plugins. Example: `plugins: { autoDelay: { enabled: true } } ` |
|
|
26
|
+
| `require?` | `string`[] | [Require additional JS modules](https://codecept.io/configuration/#require) Example: `require: ["should"]` |
|
|
27
|
+
| `teardown?` | (() => `Promise`<`void`\>) \| `boolean` \| `string` | [Execute code after tests](https://codecept.io/bootstrap/) finished. Can be either JS module file or async function: `teardown: async () => server.stop(), ` or `teardown: 'teardown.js', ` |
|
|
28
|
+
| `teardownAll?` | (() => `Promise`<`void`\>) \| `boolean` \| `string` | [Execute JS code after finishing tests in parallel mode](https://codecept.io/bootstrap/#bootstrapall-teardownall) |
|
|
29
|
+
| `tests` | `string` | Pattern to locate CodeceptJS tests. Allows to enter glob pattern or an Array<string> of patterns to match tests / test file names. For tests in JavaScript: `tests: 'tests/**.test.js' ` For tests in TypeScript: `tests: 'tests/**.test.ts' ` |
|
|
30
|
+
| `timeout?` | `number` | Set default tests timeout in seconds. Tests will be killed on no response after timeout. `timeout: 20, ` |
|
|
31
|
+
| `translation?` | `string` | Enable [localized test commands](https://codecept.io/translation/) |
|
|
32
|
+
| `maskSensitiveData?` | `boolean` | Enable to mask Sensitive Data in console. |
|
|
33
|
+
|
|
34
|
+
## Require
|
|
35
|
+
|
|
36
|
+
Requires modules before running tests. This is useful for:
|
|
37
|
+
- **Assertion libraries:** e.g., `'should'` instead of manually requiring it in each test
|
|
38
|
+
- **TypeScript loaders:** Enable TypeScript test files in ESM or CommonJS projects
|
|
39
|
+
- **Setup modules:** Initialize testing environment
|
|
40
|
+
- **Custom modules:** With relative paths like `"require": ["./lib/setup"]`
|
|
41
|
+
|
|
42
|
+
### TypeScript Support
|
|
43
|
+
|
|
44
|
+
#### For ESM Projects (CodeceptJS 4.x)
|
|
45
|
+
|
|
46
|
+
Use modern loaders that support ES Modules:
|
|
47
|
+
|
|
48
|
+
**Using tsx (recommended - fast, zero config):**
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
// codecept.conf.ts
|
|
52
|
+
export const config = {
|
|
53
|
+
tests: './**/*_test.ts',
|
|
54
|
+
require: ['tsx/cjs'], // ← Modern TypeScript loader
|
|
55
|
+
helpers: {},
|
|
56
|
+
include: {},
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**Using ts-node/esm:**
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
// codecept.conf.ts
|
|
64
|
+
export const config = {
|
|
65
|
+
tests: './**/*_test.ts',
|
|
66
|
+
require: ['ts-node/esm'], // ← Established TypeScript loader
|
|
67
|
+
helpers: {},
|
|
68
|
+
include: {},
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
> **Note:** For ts-node/esm, you need a tsconfig.json with ESM configuration. See [TypeScript documentation](/typescript) for details.
|
|
73
|
+
|
|
74
|
+
#### For CommonJS Projects (CodeceptJS 3.x)
|
|
75
|
+
|
|
76
|
+
Use the CommonJS loader:
|
|
77
|
+
|
|
78
|
+
```javascript
|
|
79
|
+
// codecept.conf.js
|
|
80
|
+
exports.config = {
|
|
81
|
+
tests: './*_test.ts',
|
|
82
|
+
require: ['ts-node/register'], // ← CommonJS TypeScript loader
|
|
83
|
+
helpers: {},
|
|
84
|
+
include: {},
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Multiple Requires
|
|
89
|
+
|
|
90
|
+
You can combine multiple modules:
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
// codecept.conf.ts
|
|
94
|
+
export const config = {
|
|
95
|
+
tests: ['./**/*_test.ts', './smoke_test.ts'],
|
|
96
|
+
require: [
|
|
97
|
+
'tsx/cjs', // TypeScript loader
|
|
98
|
+
'should', // Assertion library
|
|
99
|
+
'./lib/testSetup' // Custom setup
|
|
100
|
+
],
|
|
101
|
+
helpers: {},
|
|
102
|
+
include: {},
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Modules are loaded in the order specified, before any tests run.
|
|
107
|
+
|
|
108
|
+
## Dynamic Configuration
|
|
109
|
+
|
|
110
|
+
By default `codecept.json` is used for configuration. You can override its values in runtime by using `--override` or `-o` option in command line, passing valid JSON as a value:
|
|
111
|
+
|
|
112
|
+
```sh
|
|
113
|
+
codeceptjs run -o '{ "helpers": {"WebDriver": {"browser": "firefox"}}}'
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
You can also switch to JS configuration format for more dynamic options.
|
|
117
|
+
Create `codecept.conf.js` file and make it export `config` property.
|
|
118
|
+
|
|
119
|
+
See the config example:
|
|
120
|
+
|
|
121
|
+
```js
|
|
122
|
+
export const config = {
|
|
123
|
+
helpers: {
|
|
124
|
+
WebDriver: {
|
|
125
|
+
// load variables from the environment and provide defaults
|
|
126
|
+
url: process.env.CODECEPT_URL || 'http://localhost:3000',
|
|
127
|
+
|
|
128
|
+
user: process.env.CLOUDSERVICE_USER,
|
|
129
|
+
key: process.env.CLOUDSERVICE_KEY,
|
|
130
|
+
|
|
131
|
+
coloredLogs: true,
|
|
132
|
+
waitForTimeout: 10000,
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
|
|
136
|
+
// don't build monolithic configs
|
|
137
|
+
mocha: require('./mocha.conf.js') || {},
|
|
138
|
+
include: {
|
|
139
|
+
I: './src/steps_file.js',
|
|
140
|
+
loginPage: './src/pages/login_page',
|
|
141
|
+
dashboardPage: new DashboardPage(),
|
|
142
|
+
},
|
|
143
|
+
|
|
144
|
+
// here goes config as it was in codecept.conf.ts
|
|
145
|
+
// ....
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
(Don't copy-paste this config, it's just demo)
|
|
150
|
+
|
|
151
|
+
If you prefer to store your configuration files in a different location, or with a different name, you can do that with `--config` or `-c:
|
|
152
|
+
|
|
153
|
+
```sh
|
|
154
|
+
codeceptjs run --config=./path/to/my/config.js
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Common Configuration Patterns
|
|
158
|
+
|
|
159
|
+
> 📺 [Watch this material](https://www.youtube.com/watch?v=onBnfo_rJa4&t=4s) on YouTube
|
|
160
|
+
|
|
161
|
+
[`@codeceptjs/configure`](https://github.com/codeceptjs/configure) ships with CodeceptJS as a dependency and contains shared recipes for common configuration patterns. It lets you set meta-configuration that's independent of the active helper.
|
|
162
|
+
|
|
163
|
+
Toggle headless/headed mode, change window size, etc.:
|
|
164
|
+
|
|
165
|
+
```js
|
|
166
|
+
import { setHeadlessWhen, setWindowSize } from '@codeceptjs/configure'
|
|
167
|
+
|
|
168
|
+
setHeadlessWhen(process.env.CI)
|
|
169
|
+
setWindowSize(1600, 1200)
|
|
170
|
+
|
|
171
|
+
export const config = {
|
|
172
|
+
// ...
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
For one-shot bundles use `setBrowserConfig` — pass any subset of `{ browser, show, windowSize, url, ... }` and the right per-helper translation happens automatically (Puppeteer receives `product` for `browser`, WebDriver gets `--headless` injected, etc.). Keys whose value is `undefined` are skipped, so unset env vars don't clobber existing config:
|
|
177
|
+
|
|
178
|
+
```js
|
|
179
|
+
import { setBrowserConfig } from '@codeceptjs/configure'
|
|
180
|
+
|
|
181
|
+
setBrowserConfig({
|
|
182
|
+
browser: process.env.BROWSER, // optional engine override
|
|
183
|
+
show: !process.env.HEADLESS, // headed unless HEADLESS is set
|
|
184
|
+
windowSize: '1280x720',
|
|
185
|
+
url: process.env.URL, // overrides helper.url when set
|
|
186
|
+
})
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
`setCommonPlugins()` enables a curated set of plugins and registers a few more as discoverable (so they can be activated ad-hoc via [`-p` plugin arguments](/commands#plugin-arguments) without editing config):
|
|
190
|
+
|
|
191
|
+
```js
|
|
192
|
+
import { setCommonPlugins } from '@codeceptjs/configure'
|
|
193
|
+
|
|
194
|
+
setCommonPlugins()
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
| Plugin | Default | Notes |
|
|
198
|
+
| :---------------- | :------------- | :----------------------------------------------------------------------------- |
|
|
199
|
+
| `retryFailedStep` | enabled | Retry steps that fail with transient errors |
|
|
200
|
+
| `screenshot` | enabled | Screenshot on `fail` (default) / `test` / `step` / `file` / `url` |
|
|
201
|
+
| `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/*` |
|
|
202
|
+
| `browser` | registered | CLI overrides for browser helpers — `-p browser:show`, `-p browser:browser=firefox`, see [commands](/commands#browser-control) |
|
|
203
|
+
| `aiTrace` | registered | Capture AI traces — `-p aiTrace`, narrow with `on=fail|test|step|file|url` |
|
|
204
|
+
| `heal` | registered | Self-heal failing steps — `-p heal`, narrow with `on=file|url` |
|
|
205
|
+
|
|
206
|
+
> `eachElement`, `tryTo`, and `retryTo` are no longer plugins in 4.x — import them from `codeceptjs/effects`.
|
|
207
|
+
|
|
208
|
+
## Profile
|
|
209
|
+
|
|
210
|
+
Using `process.env.profile` you can change the config dynamically.
|
|
211
|
+
It provides value of `--profile` option passed to runner.
|
|
212
|
+
Use its value to change config value on the fly.
|
|
213
|
+
|
|
214
|
+
For instance, with the config above we can change browser value using `profile` option
|
|
215
|
+
|
|
216
|
+
```sh
|
|
217
|
+
codeceptjs run --profile firefox
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
```js
|
|
221
|
+
export const config = {
|
|
222
|
+
helpers: {
|
|
223
|
+
WebDriver: {
|
|
224
|
+
url: 'http://localhost:3000',
|
|
225
|
+
// load value from `profile`
|
|
226
|
+
browser: process.env.profile || 'firefox',
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
}
|
|
230
|
+
```
|