CodeceptJS 测试框架安装指南

CodeceptJS 测试框架安装指南

概述

CodeceptJS 是一个现代化的端到端(End-to-End)测试框架,采用特殊的 BDD(行为驱动开发)风格语法。它通过统一的 API 抽象了不同测试后端的复杂性,支持 Playwright、Puppeteer、WebDriver、TestCafe 等多种测试引擎。

本文将为您提供完整的 CodeceptJS 安装和配置指南,涵盖从环境准备到第一个测试用例运行的全过程。

环境要求

在开始安装之前,请确保您的系统满足以下基本要求:

组件最低版本推荐版本
Node.js16.0+18.0+
npm5.6.0+8.0+
操作系统Windows 7+ / macOS 10.12+ / Linux最新稳定版

安装方式对比

CodeceptJS 提供多种安装方式,您可以根据项目需求选择最适合的方案:

mermaid

方法一:使用快速安装器(推荐新手)

这是最简单快捷的安装方式,特别适合初学者:

安装 Playwright 版本

npx create-codeceptjs .

安装 Puppeteer 版本

npx create-codeceptjs . --puppeteer

安装 WebDriver 版本

npx create-codeceptjs . --webdriverio

安装到指定目录

npx create-codeceptjs e2e-tests --webdriverio

快速安装器会自动完成以下操作:

  • 创建 package.json(如不存在)
  • 安装 CodeceptJS 核心包
  • 安装对应的测试引擎(Playwright/Puppeteer/WebDriver)
  • 创建基础配置文件
  • 生成示例测试文件

方法二:标准安装流程

对于现有项目或需要更多控制权的用户,推荐使用标准安装流程:

步骤 1:初始化项目

# 如果目录中没有 package.json,先初始化
npm init -y

步骤 2:安装 CodeceptJS

npm install codeceptjs --save-dev

步骤 3:初始化配置

npx codeceptjs init

初始化过程会交互式地询问以下配置信息:

问题默认值说明
是否使用 TypeScript?No选择是否启用 TypeScript 支持
测试文件位置./*_test.js测试文件的匹配模式
使用的 HelperPlaywright选择测试引擎
输出目录./output日志、截图、报告的存储位置
是否启用本地化?English测试脚本的语言本地化

步骤 4:安装对应 Helper 的依赖

根据选择的 Helper,可能需要额外安装依赖:

# Playwright
npm install @playwright/test --save-dev

# Puppeteer  
npm install puppeteer --save-dev

# WebDriver
npm install webdriverio --save-dev

# TestCafe
npm install testcafe --save-dev

不同 Helper 的额外配置

Playwright 配置

Playwright 是默认推荐的选择,安装简单且功能强大:

// codecept.conf.js
exports.config = {
  helpers: {
    Playwright: {
      url: 'http://localhost',
      show: true, // 显示浏览器窗口
      browser: 'chromium', // chromium, firefox, webkit
      restart: false,
      keepBrowserState: true,
      keepCookies: true
    }
  }
}

WebDriver 配置

WebDriver 需要额外的 Selenium 服务:

# 安装 Selenium Standalone
npm install selenium-standalone --save-dev
npx selenium-standalone install
npx selenium-standalone start

或者使用 Docker:

docker run -d -p 4444:4444 selenium/standalone-chrome

Puppeteer 配置

exports.config = {
  helpers: {
    Puppeteer: {
      url: 'http://localhost',
      show: true,
      chrome: {
        args: ['--no-sandbox', '--disable-setuid-sandbox']
      }
    }
  }
}

项目结构

成功安装后,您的项目结构应该如下所示:

project-root/
├── codecept.conf.js      # 主配置文件
├── jsconfig.json         # JS 配置(如使用 TypeScript)
├── package.json          # 项目依赖
├── steps.d.ts            # TypeScript 定义文件
├── output/               # 测试输出目录
│   ├── logs/            # 日志文件
│   ├── screenshots/     # 失败截图
│   └── reports/         # 测试报告
└── tests/               # 测试文件目录
    ├── *_test.js        # 测试文件
    └── pages/           # 页面对象目录

创建第一个测试

生成测试模板

npx codeceptjs generate:test

编写简单测试

// tests/demo_test.js
Feature('CodeceptJS 演示测试');

Scenario('检查首页欢迎信息', ({ I }) => {
  I.amOnPage('/');
  I.see('欢迎');
  I.seeElement('.header');
  I.click('登录');
  I.seeInCurrentUrl('/login');
});

运行测试

# 运行所有测试
npx codeceptjs run

# 运行特定测试文件
npx codeceptjs run tests/demo_test.js

# 显示详细步骤
npx codeceptjs run --steps

# 调试模式
npx codeceptjs run --debug

常用命令速查表

命令功能描述示例
npx codeceptjs init初始化配置npx codeceptjs init
npx codeceptjs run运行所有测试npx codeceptjs run
npx codeceptjs run-workers并行运行测试npx codeceptjs run-workers 3
npx codeceptjs generate:test生成测试文件npx codeceptjs generate:test
npx codeceptjs generate:pageobject生成页面对象npx codeceptjs generate:pageobject
npx codeceptjs shell交互式命令行npx codeceptjs shell
npx codeceptjs list查看可用命令npx codeceptjs list
npx codeceptjs def生成类型定义npx codeceptjs def

配置示例

基础配置文件

// codecept.conf.js
exports.config = {
  tests: './tests/*_test.js',
  output: './output',
  helpers: {
    Playwright: {
      url: 'http://localhost:3000',
      show: true,
      browser: 'chromium',
      waitForTimeout: 5000,
      waitForNavigation: 'load',
      waitForAction: 100
    }
  },
  include: {
    I: './steps_file.js'
  },
  bootstrap: null,
  mocha: {},
  name: 'my-test-project'
}

多环境配置

// codecept.ci.conf.js
const { setHeadlessWhen } = require('@codeceptjs/configure');

setHeadlessWhen(process.env.CI);

exports.config = {
  helpers: {
    Playwright: {
      url: process.env.BASE_URL || 'http://localhost:3000',
      show: !process.env.CI,
      browser: 'chromium'
    }
  }
}

常见问题解决

1. 安装失败

问题: npm 安装过程中出现权限错误 解决方案:

# 使用 nvm 管理 Node.js 版本
nvm install 18
nvm use 18

# 或者使用 sudo(不推荐)
sudo npm install -g codeceptjs

2. WebDriver 连接失败

问题: Selenium 服务器无法连接 解决方案:

# 检查 Selenium 状态
npx selenium-standalone status

# 启动 Selenium
npx selenium-standalone start

# 或者使用 Docker
docker run -d -p 4444:4444 selenium/standalone-chrome

3. 浏览器无法启动

问题: Playwright/Puppeteer 浏览器无法启动 解决方案:

# 安装浏览器依赖
npx playwright install
# 或
npx puppeteer browsers install chrome

最佳实践

1. 使用 TypeScript(可选)

npm install typescript ts-node --save-dev
npx codeceptjs init # 选择 TypeScript

2. 配置 Git 忽略

# .gitignore
output/
node_modules/
*.log
.DS_Store

3. 添加 npm 脚本

{
  "scripts": {
    "test": "codeceptjs run",
    "test:headless": "HEADLESS=true codeceptjs run",
    "test:ui": "codeceptjs ui",
    "test:workers": "codeceptjs run-workers 2"
  }
}

总结

CodeceptJS 提供了一个强大而简单的端到端测试解决方案。通过本指南,您应该能够:

  1. ✅ 正确安装和配置 CodeceptJS
  2. ✅ 选择适合项目的测试引擎(Helper)
  3. ✅ 创建并运行第一个测试用例
  4. ✅ 理解基本的项目结构和配置
  5. ✅ 解决常见的安装问题

无论您是选择快速的 create-codeceptjs 安装器还是标准的手动安装流程,CodeceptJS 都能为您提供一致的、开发者友好的测试体验。开始编写您的第一个测试,体验 CodeceptJS 带来的测试便利吧!

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值