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.
- package/README.md +39 -28
- package/bin/codecept.js +15 -2
- package/bin/codeceptq.js +49 -0
- package/bin/mcp-server.js +1189 -0
- package/docs/advanced.md +201 -0
- package/docs/agents.md +181 -0
- package/docs/ai.md +489 -0
- package/docs/aitrace.md +266 -0
- package/docs/api.md +332 -0
- package/docs/architecture.md +235 -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 +185 -0
- package/docs/continuous-integration.md +431 -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 +107 -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/environment-variables.md +131 -0
- package/docs/examples.md +160 -0
- package/docs/heal.md +213 -0
- package/docs/helpers/ApiDataFactory.md +267 -0
- package/docs/helpers/Appium.md +1419 -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/MockRequest.md +377 -0
- package/docs/helpers/Playwright.md +2970 -0
- package/docs/helpers/Puppeteer-firefox.md +86 -0
- package/docs/helpers/Puppeteer.md +2583 -0
- package/docs/helpers/REST.md +289 -0
- package/docs/helpers/WebDriver.md +2639 -0
- package/docs/hooks.md +148 -0
- package/docs/index.md +111 -0
- package/docs/installation.md +121 -0
- package/docs/internal-test-server.md +89 -0
- package/docs/locators.md +355 -0
- package/docs/mcp.md +485 -0
- package/docs/migrate-from-cypress.md +98 -0
- package/docs/migrate-from-java.md +108 -0
- package/docs/migrate-from-protractor.md +101 -0
- package/docs/migrate-from-testcafe.md +99 -0
- package/docs/migration-4.md +745 -0
- package/docs/mobile.md +338 -0
- package/docs/pageobjects.md +399 -0
- package/docs/parallel.md +187 -0
- package/docs/playwright.md +714 -0
- package/docs/plugins/aiTrace.md +49 -0
- package/docs/plugins/analyze.md +66 -0
- package/docs/plugins/auth.md +241 -0
- package/docs/plugins/autoDelay.md +48 -0
- package/docs/plugins/browser.md +41 -0
- package/docs/plugins/coverage.md +39 -0
- package/docs/plugins/customLocator.md +119 -0
- package/docs/plugins/customReporter.md +16 -0
- package/docs/plugins/expose.md +75 -0
- package/docs/plugins/heal.md +44 -0
- package/docs/plugins/junitReporter.md +51 -0
- package/docs/plugins/pageInfo.md +34 -0
- package/docs/plugins/pause.md +43 -0
- package/docs/plugins/pauseOnFail.md +18 -0
- package/docs/plugins/retryFailedStep.md +75 -0
- package/docs/plugins/screencast.md +55 -0
- package/docs/plugins/screenshot.md +58 -0
- package/docs/plugins/screenshotOnFail.md +18 -0
- package/docs/plugins/stepTimeout.md +65 -0
- package/docs/plugins.md +87 -0
- package/docs/puppeteer.md +314 -0
- package/docs/quickstart.md +120 -0
- package/docs/reports.md +195 -0
- package/docs/retry.md +311 -0
- package/docs/secrets.md +150 -0
- package/docs/sessions.md +80 -0
- package/docs/shadow.md +68 -0
- package/docs/store.md +94 -0
- package/docs/test-structure.md +275 -0
- package/docs/timeouts.md +183 -0
- package/docs/translation.md +247 -0
- package/docs/tutorial.md +323 -0
- package/docs/typescript.md +159 -0
- package/docs/web-element.md +251 -0
- package/docs/webdriver.md +641 -0
- package/docs/within.md +55 -0
- package/lib/actor.js +1 -36
- package/lib/ai.js +3 -2
- package/lib/aria.js +260 -0
- package/lib/assertions.js +18 -0
- package/lib/codecept.js +34 -25
- package/lib/command/check.js +2 -1
- package/lib/command/definitions.js +6 -7
- package/lib/command/dryRun.js +24 -5
- package/lib/command/generate.js +3 -1
- package/lib/command/gherkin/snippets.js +5 -4
- package/lib/command/init.js +249 -270
- package/lib/command/list.js +150 -10
- package/lib/command/query.js +218 -0
- package/lib/command/run-multiple.js +3 -1
- package/lib/command/run-workers.js +2 -14
- package/lib/command/run.js +3 -17
- package/lib/command/utils.js +14 -0
- package/lib/command/workers/runTests.js +91 -37
- package/lib/config.js +96 -18
- package/lib/container.js +115 -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 +7 -4
- 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 +358 -467
- package/lib/helper/Puppeteer.js +335 -192
- package/lib/helper/WebDriver.js +324 -111
- package/lib/helper/errors/ElementNotFound.js +5 -2
- package/lib/helper/errors/MultipleElementsFound.js +52 -0
- package/lib/helper/errors/NonFocusedType.js +8 -0
- package/lib/helper/extras/Download.js +45 -0
- package/lib/helper/extras/PlaywrightLocator.js +7 -107
- 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 +158 -16
- package/lib/mocha/cli.js +19 -1
- package/lib/mocha/factory.js +11 -1
- 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 +457 -0
- package/lib/plugin/analyze.js +9 -9
- package/lib/plugin/auth.js +5 -4
- package/lib/plugin/browser.js +77 -0
- package/lib/plugin/expose.js +159 -0
- package/lib/plugin/heal.js +47 -3
- package/lib/plugin/junitReporter.js +303 -0
- package/lib/plugin/pageInfo.js +54 -52
- package/lib/plugin/pause.js +131 -0
- package/lib/plugin/pauseOnFail.js +11 -33
- package/lib/plugin/retryFailedStep.js +43 -32
- package/lib/plugin/screencast.js +289 -0
- package/lib/plugin/screenshot.js +558 -0
- package/lib/plugin/screenshotOnFail.js +9 -170
- package/lib/plugin/stepTimeout.js +3 -2
- package/lib/recorder.js +1 -1
- package/lib/rerun.js +2 -1
- package/lib/result.js +2 -1
- package/lib/step/base.js +10 -9
- package/lib/step/comment.js +2 -2
- package/lib/step/config.js +15 -2
- package/lib/step/helper.js +4 -4
- package/lib/step/meta.js +3 -3
- package/lib/step/record.js +5 -5
- package/lib/store.js +72 -3
- package/lib/translation.js +2 -1
- package/lib/utils/loaderCheck.js +28 -0
- 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/typescript.js +188 -23
- package/lib/utils.js +77 -3
- package/lib/workers.js +65 -40
- package/package.json +35 -30
- package/typings/index.d.ts +119 -8
- package/typings/promiseBasedTypes.d.ts +3158 -6065
- package/typings/types.d.ts +3453 -6494
- 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/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/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/helper/Mochawesome.js +0 -96
- package/lib/helper/extras/PlaywrightReactVueLocator.js +0 -52
- package/lib/helper/extras/React.js +0 -65
- 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/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,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
|
+
```
|