Files
happy-life-star/web-new/cypress.config.ts
T

127 lines
2.7 KiB
TypeScript

/**
* Cypress E2E 测试配置
*/
import { defineConfig } from 'cypress'
export default defineConfig({
e2e: {
// 基础URL
baseUrl: 'http://localhost:5173',
// 测试文件位置
specPattern: 'tests/e2e/**/*.cy.{js,jsx,ts,tsx}',
// 支持文件位置
supportFile: 'tests/e2e/support/e2e.ts',
// 固件文件位置
fixturesFolder: 'tests/e2e/fixtures',
// 截图和视频配置
screenshotsFolder: 'tests/e2e/screenshots',
videosFolder: 'tests/e2e/videos',
// 视频录制
video: true,
videoCompression: 32,
// 截图配置
screenshotOnRunFailure: true,
// 视口配置
viewportWidth: 1280,
viewportHeight: 720,
// 等待配置
defaultCommandTimeout: 10000,
requestTimeout: 10000,
responseTimeout: 10000,
pageLoadTimeout: 30000,
// 重试配置
retries: {
runMode: 2,
openMode: 0
},
// 浏览器配置
chromeWebSecurity: false,
// 环境变量
env: {
// API基础URL
apiUrl: 'http://localhost:3000/api',
// 测试用户凭据
testUser: {
username: 'testuser',
password: 'password123',
email: 'test@example.com'
},
// 测试管理员凭据
adminUser: {
username: 'admin',
password: 'admin123',
email: 'admin@example.com'
}
},
setupNodeEvents(on, config) {
// 任务注册
on('task', {
// 数据库清理任务
clearDatabase() {
// 这里可以添加数据库清理逻辑
return null
},
// 创建测试数据任务
seedTestData() {
// 这里可以添加测试数据创建逻辑
return null
},
// 日志输出任务
log(message) {
console.log(message)
return null
}
})
// 文件处理
on('before:browser:launch', (browser, launchOptions) => {
if (browser.name === 'chrome') {
// Chrome 特定配置
launchOptions.args.push('--disable-dev-shm-usage')
launchOptions.args.push('--no-sandbox')
}
return launchOptions
})
// 配置处理
on('before:spec', (spec) => {
console.log(`Running spec: ${spec.name}`)
})
return config
}
},
component: {
// 组件测试配置
devServer: {
framework: 'vue',
bundler: 'vite'
},
specPattern: 'src/**/*.cy.{js,jsx,ts,tsx,vue}',
supportFile: 'tests/e2e/support/component.ts',
viewportWidth: 1000,
viewportHeight: 660
}
})