开发服务器是 Cypress 组件测试基础设施的关键部分。它们通过提供服务组件到 Cypress 的运行时环境,从而支持 React、Vue、Angular 和 Svelte 等框架的组件渲染和测试。本文档解释了 Cypress 如何使用开发服务器来支持组件测试。
有关与这些开发服务器配合使用的框架适配器信息,请参阅 框架适配器。
Cypress 组件测试依赖开发服务器在测试执行期间编译和提供组件。目前,Cypress 支持两种主要的开发服务器:
@cypress/webpack-dev-server):适用于使用 Webpack 的项目@cypress/vite-dev-server):适用于使用 Vite 的项目这些服务器与 Cypress 集成,提供:
来源:npm/webpack-dev-server/CHANGELOG.md、npm/vite-dev-server/CHANGELOG.md、npm/react/CHANGELOG.md、npm/vue/CHANGELOG.md、npm/angular/CHANGELOG.md、npm/mount-utils/README.md
在设置组件测试时,Cypress 需要知道要使用哪个开发服务器。这是通过组件测试向导或在 Cypress 配置文件中手动配置来确定的。
来源:packages/frontend-shared/cypress/support/mock-graphql/stubgql-Wizard.ts、packages/graphql/src/schemaTypes/objectTypes/gql-Wizard.ts、packages/graphql/src/schemaTypes/enumTypes/gql-WizardEnums.ts
WizardDataSource 根据所选框架和打包器帮助确定所需的依赖。它会生成相应的安装命令。
来源:packages/data-context/src/sources/WizardDataSource.ts
Vite 开发服务器 (@cypress/vite-dev-server) 是 Vite 的一个包装器,它与 Cypress 集成以进行组件测试。
来源:npm/vite-dev-server/src/index.ts、npm/vite-dev-server/src/resolveConfig.ts、npm/vite-dev-server/src/plugins/cypress.ts、npm/vite-dev-server/client/initCypressTests.js
Vite 开发服务器使用以下流程来查找和解析配置:
来源:npm/vite-dev-server/src/constants.ts、npm/vite-dev-server/src/resolveConfig.ts
Cypress Vite 插件 (plugins/cypress.ts) 负责将 Cypress 与 Vite 集成。
来源:npm/vite-dev-server/src/plugins/cypress.ts、npm/vite-dev-server/src/plugins/index.ts
initCypressTests.js 脚本
来源:npm/vite-dev-server/client/initCypressTests.js
与 Vite 开发服务器类似,Webpack 开发服务器 (@cypress/webpack-dev-server) 将 Webpack 与 Cypress 集成以进行组件测试。
Webpack 开发服务器遵循与 Vite 开发服务器类似的架构,但利用 Webpack 的配置系统和中间件。
来源:npm/webpack-dev-server/CHANGELOG.md
开发服务器通过特定框架的适配器与各种前端框架协同工作。下表显示了哪些开发服务器与哪些框架兼容:
| 框架 | Webpack 开发服务器 | Vite 开发服务器 | 备注 |
|---|---|---|---|
| React | ✓ | ✓ | Cypress 14+ 的 React 18+ |
| Vue | ✓ | ✓ | Vue 3.x |
| Angular | ✓ | ✓ (有限) | Cypress 14+ 的 Angular 17.2+ |
| Svelte | ✓ | ✓ | 于 2022 年年中添加 |
来源:npm/react/CHANGELOG.md、npm/vue/CHANGELOG.md、npm/angular/CHANGELOG.md
@cypress/mount-utils 包提供了所有框架适配器使用的通用工具。
来源:npm/mount-utils/README.md、npm/mount-utils/CHANGELOG.md
开发服务器提供详细的错误消息,以帮助诊断配置和运行时问题。
来源:packages/launchpad/cypress/e2e/config-files-error-handling.cy.ts、packages/launchpad/cypress/e2e/error-handling.cy.ts
随着时间推移,这两个开发服务器都经历了重大版本更新,以支持新的打包器版本和框架。
来源:npm/webpack-dev-server/CHANGELOG.md、npm/vite-dev-server/CHANGELOG.md
Cypress 为 Angular 项目提供了一个特殊的原理图,该原理图使用适当的开发服务器来配置组件测试。
Angular 原理图
来源:npm/cypress-schematic/CHANGELOG.md、npm/cypress-schematic/src/schematics/ng-add/files-ct/component.ts.template、npm/cypress-schematic/src/schematics/ng-add/files-ct/component-index.html.template
开发服务器是 Cypress 组件测试的关键部分,它们提供了编译、提供和测试各种前端框架组件所需的必要基础设施。通过了解这些服务器的工作原理以及如何配置它们,您可以有效地设置和优化组件测试工作流程。
有关特定框架配置和高级用法,请参阅您所选框架适配器和开发服务器的文档。