codeceptjs
Version:
Supercharged End 2 End Testing Framework for NodeJS
353 lines (234 loc) • 9 kB
Markdown
---
permalink: /commands
title: Commands
---
# Commands
## Run
Executes tests. Requires `codecept.conf.js` config to be present in provided path.
---
Run all tests from current dir
```sh
npx codeceptjs run
```
Load config and run tests from `test` dir
```sh
npx codeceptjs run -c test
```
Run only tests with "signin" word in name
```sh
npx codeceptjs run --grep "signin"
```
Run all tests without "@IEOnly" word in name
```sh
npx codeceptjs run --grep "@IEOnly" --invert
```
Run single test [path to codecept.js] [test filename]
```sh
npx codeceptjs run github_test.js
```
Run single test with steps printed
```sh
npx codeceptjs run github_test.js --steps
```
Run test files in shuffled order
```sh
npx codeceptjs run --shuffle
```
Run single test in debug mode (see more in [debugging](#Debugging) section)
```sh
npx codeceptjs run github_test.js --debug
```
Select config file manually (`-c` or `--config` option)
```sh
npx codeceptjs run -c my.codecept.conf.js
npx codeceptjs run --config path/to/codecept.conf.js
```
Override config on the fly. Provide valid JSON which will be merged into current config:
```sh
npx codeceptjs run --override '{ "helpers": {"WebDriver": {"browser": "chrome"}}}'
```
Run tests and produce xunit report:
```sh
npx codeceptjs run --reporter xunit
```
Use any of [Mocha reporters](https://github.com/mochajs/mocha/tree/master/lib/reporters) used.
#### Debugging
Run single test in debug mode
```sh
npx codeceptjs run --debug
```
Run test with internal logs printed.
```sh
npx codeceptjs run --verbose
```
Display complete debug output including scheduled promises
```
DEBUG=codeceptjs:* npx codeceptjs run
```
## Plugin Arguments
`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:
```sh
npx codeceptjs run -p <name> # enable plugin
npx codeceptjs run -p <name>:<arg1>:<arg2> # enable + pass args
npx codeceptjs run -p <plugin1>,<plugin2>:<arg> # multiple plugins
```
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`.
A few examples:
```sh
npx codeceptjs run -p pause # pause on first failure (default on=fail)
npx codeceptjs run -p pause:on=step # pause before every step
npx codeceptjs run -p pause:on=url:pattern=/checkout/* # pause on URL match
npx codeceptjs run -p "screenshot:on=step;slides=true" # produce a step-by-step HTML report
```
### Browser Control
The built-in `browser` plugin overrides browser-helper config from the CLI — works for Playwright, Puppeteer, WebDriver and Appium without editing `codecept.conf`.
```sh
npx codeceptjs run -p browser:show # force visible browser
npx codeceptjs run -p browser:hide # force headless
npx codeceptjs run -p browser:browser=firefox # switch engine
npx codeceptjs run -p browser:windowSize=1024x768 # set viewport
npx codeceptjs run -p browser:hide:browser=webkit:windowSize=800x600
```
Tokens after `browser:` are either flags (`show`, `hide`) or `key=value` pairs. Three keys get per-helper translation:
- `browser=<name>` — Puppeteer receives `product`, Playwright/WebDriver receive `browser`. Validated per helper (`chromium`/`webkit`/`firefox` for Playwright, `chrome`/`firefox` for Puppeteer).
- `show=true|false` (or the `show`/`hide` flag) — sets `show` on Playwright/Puppeteer; injects/strips `--headless` in WebDriver chrome/firefox capability args.
- `windowSize=WxH` — sets `windowSize` on every helper; also adds `--window-size=W,H` to chromium/chrome args for Playwright/Puppeteer.
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).
## Run Workers
Run tests in parallel threads. CodeceptJS supports different distribution strategies for optimal performance.
```bash
# Run with 3 workers using default strategy (pre-assign tests)
npx codeceptjs run-workers 3
# Run with pool mode for dynamic test distribution (recommended)
npx codeceptjs run-workers 3 --by pool
# Run with suite distribution
npx codeceptjs run-workers 3 --by suite
# Pool mode with filtering
npx codeceptjs run-workers 4 --by pool --grep "@smoke"
```
**Test Distribution Strategies:**
- `--by test` (default): Pre-assigns individual tests to workers
- `--by suite`: Pre-assigns entire test suites to workers
- `--by pool`: Dynamic distribution for optimal load balancing (recommended for best performance)
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.
See [Parallel Execution](/parallel) documentation for more details.
## Run Rerun <Badge text="Since 3.3.6" type="warning"/>
Run tests multiple times to detect and fix flaky tests.
```
npx codeceptjs run-rerun
```
For this command configuration is required:
```js
{
// inside codecept.conf.js
rerun: {
// how many times all tests should pass
minSuccess: 2,
// how many times to try to rerun all tests
maxReruns: 4,
}
}
```
Use Cases:
* `minSuccess: 1, maxReruns: 5` - run all tests no more than 5 times, until first successful run.
* `minSuccess: 3, maxReruns: 5` - run all tests no more than 5 times, until reaching 3 successfull runs.
* `minSuccess: 10, maxReruns: 10` - run all tests exactly 10 times, to check their stability.
## Dry Run
Prints test scenarios without executing them
```
npx codeceptjs dry-run
```
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.
```
npx codeceptjs dry-run --steps
```
If a plugin needs to be enabled in `dry-run` mode, pass its name in `-p` option:
```
npx codeceptjs dry-run --steps -p allure
```
If some plugins need to be enabled in `dry-run` mode, pass its name in `-p` option:
```
npx codeceptjs dry-run --steps -p allure,customLocator
```
If all plugins need to be enabled in `dry-run` mode, pass its name in `-p` option:
```
npx codeceptjs dry-run --steps -p all
```
To enable bootstrap script in dry-run mode, pass in `--bootstrap` option when running with `--steps` or `--debug`
```
npx codeceptjs dry-run --steps --bootstrap
```
## Run Multiple
> ⚠️ prefer using run-workers instead
Run multiple suites. Unlike `run-workers` spawns processes to execute tests.
[Requires additional configuration](/advanced#multiple-browsers-execution) and can be used to execute tests in multiple browsers.
```sh
npx codeceptjs run-multiple smoke:chrome regression:firefox
```
## Init
Creates `codecept.conf.js` file in current directory:
```sh
npx codeceptjs init
```
Or in provided path
```sh
npx codecept init test
```
## Migrate
Migrate your current `codecept.json` to `codecept.conf.js`
```sh
npx codeceptjs migrate
```
## Shell
Interactive shell. Allows to try `I.` commands in runtime
```sh
npx codeceptjs shell
```
## Generators
Create new test
```sh
npx codeceptjs generate:test
```
Create new pageobject
```sh
npx codeceptjs generate:pageobject
```
Create new helper
```sh
npx codeceptjs generate:helper
```
## TypeScript Definitions
TypeScript Definitions allows IDEs to provide autocompletion when writing tests.
```sh
npx codeceptjs def
npx codeceptjs def --config path/to/codecept.conf.js
```
After doing that IDE should provide autocompletion for `I` object inside `Scenario` and `within` blocks.
Add optional parameter `output` (or shortcut `-o`), if you want to place your definition file in specific folder:
```sh
npx codeceptjs def --output ./tests/typings
npx codeceptjs def -o ./tests/typings
```
## List Commands
Prints all available methods of `I` to console.
```sh
npx codeceptjs list
```
Use `-c` to point at a specific config (same as `run`):
```sh
npx codeceptjs list -c ./test/acceptance/codecept.Playwright.js
```
Add `--docs` to print full documentation (description, examples, `@param` annotations) below each action — pulled from helper JSDoc and `docs/webapi/*` snippets:
```sh
npx codeceptjs list --docs
```
Use `--action` to show docs for a single action. The `I.` prefix is optional and `--docs` is implied:
```sh
npx codeceptjs list --action amOnPage
npx codeceptjs list --action I.click -c ./test/acceptance/codecept.Playwright.js
```
## Local Environment Information
Prints debugging information concerning the local environment
```sh
npx codeceptjs info
```