codeceptjs
Version:
Supercharged End 2 End Testing Framework for NodeJS
122 lines (80 loc) • 4.46 kB
Markdown
---
permalink: /installation
title: Installation
---
# Installation
For the quickest start (CodeceptJS + Playwright) follow the [Quickstart](/quickstart). This page covers every browser, mobile, and API helper and what each one needs installed.
## Set up a project
```sh
npm init -y # if you don't have a package.json yet
npm i codeceptjs --save-dev
```
Install one of the helpers below, then scaffold the config and a sample test:
```sh
npx codeceptjs init
```
`init` runs a short wizard, writes `codecept.conf.js` and a sample test, and installs the helper's driver package if it's missing. The [Quickstart](/quickstart) walks through the questions.
## Playwright
Fast, modern browser automation — the recommended helper for web testing.
```sh
npm i playwright --save-dev
npx playwright install --with-deps
```
`playwright install` downloads the browser binaries; `--with-deps` also installs the Linux system libraries they need (run it with `sudo` if your user can't install packages).
Set `browser` in the helper config to one of:
- `chromium` — default
- `firefox`
- `webkit` — the open-source Safari engine
- `electron` — test an Electron app (set `electron.executablePath`)
To drive branded Chrome or Edge instead of bundled Chromium, install that channel — `npx playwright install chrome` (or `msedge`) — and set `channel` in the config. See the [Playwright helper](/playwright).
## Puppeteer
Chrome/Chromium automation over the DevTools protocol.
```sh
npm i puppeteer --save-dev
```
Puppeteer downloads a matching Chromium when it installs — nothing else to set up. To drive an existing Chrome instead, set `chrome.executablePath` in the helper config (or install `puppeteer-core` and point it at your browser). See the [Puppeteer helper](/puppeteer).
## WebDriver
W3C WebDriver — runs Chrome, Firefox, Edge, Safari, and remote or cloud grids.
```sh
npm i webdriverio --save-dev
```
WebdriverIO 9 downloads and starts the matching driver automatically — no Selenium server, ChromeDriver, or GeckoDriver to install or run. Just set `browser` (`chrome`, `firefox`, `MicrosoftEdge`, `safari`) in `codecept.conf.js` — see the [WebDriver helper](/webdriver).
To run against a cloud grid (Sauce Labs, BrowserStack, LambdaTest, and so on) instead, set the grid's `host`, `port`, `user`, and `key` (or `protocol` / `path`) in the helper config. For running this on CI, see [Continuous Integration](/continuous-integration).
## Appium (mobile)
Native iOS and Android testing. Appium speaks the WebDriver protocol, so CodeceptJS drives it through `webdriverio`:
```sh
npm i webdriverio --save-dev
npm i -g appium
```
Install the platform driver(s) and start the server:
```sh
appium driver install uiautomator2 # Android
appium driver install xcuitest # iOS
appium
```
You'll also need the Android SDK and an emulator or device, or Xcode and a simulator or device (or a device-cloud account). Set `platformName`, `deviceName`, and `app` in the helper config — see [Mobile Testing](/mobile).
## API testing
REST and GraphQL tests need no browser — the helpers are built in (they use `axios`, already a dependency):
```sh
npm i codeceptjs --save-dev
```
Choose `REST` or `GraphQL` when `init` asks, set `endpoint` in the config, and add the `JSONResponse` helper if you want response assertions. See [Testing APIs](/api).
## ESM
CodeceptJS 4.x uses ECMAScript Modules. A project created by `init` is set up for it; an existing project needs `"type": "module"` in `package.json` and `import` syntax in the config and tests. Coming from 3.x — see the [Migration Guide](/migration-4).
## TypeScript
`npx codeceptjs init` scaffolds a TypeScript project when you answer **Yes** to "Do you plan to write tests in TypeScript?" — it writes `codecept.conf.ts` and `*_test.ts` files.
The config file (`codecept.conf.ts`) and helpers are transpiled automatically. Test files need a loader; install [`tsx`](https://tsx.is) and add it to `require`:
```sh
npm i tsx --save-dev
```
```ts
// codecept.conf.ts
export const config = {
tests: './**/*_test.ts',
require: ['tsx/cjs'], // loads the *_test.ts files
helpers: {
Playwright: { url: 'http://localhost', browser: 'chromium' },
},
}
```
Run tests as usual with `npx codeceptjs run`. For promise-based typings, types for page objects and custom helpers, and custom locator types, see the [TypeScript guide](/typescript).