GraphQL API 是 Cypress 用户界面组件(App 和 Launchpad)与核心测试基础设施之间的中心通信层。它提供了一种类型安全、结构化的方式来查询和操作与项目、测试配置、浏览器和云集成相关的数据。
此页面介绍了为 Cypress 的 Launchpad 和 App 界面提供支持的内部 GraphQL API 架构。此 API 不同于测试文件中使用的 Cypress 测试 API(有关测试 API 的信息,请参阅命令执行)。
GraphQL API 支持
来源:packages/graphql/src/schemaTypes/objectTypes/gql-Mutation.ts packages/data-context/src/DataContext.ts
GraphQL schema 定义了 API 的类型系统和可用的操作。它包含项目、浏览器、specs、云数据等的类型。
来源:packages/graphql/schemas/schema.graphql5-200 packages/graphql/schemas/schema.graphql200-500
DataContext 类是所有数据操作的中心枢纽,也是 GraphQL 查询和突变的解析器上下文。
来源:packages/data-context/src/DataContext.ts83-290 packages/data-context/src/data/coreDataShape.ts136-180
以下图表说明了 GraphQL 请求如何流经系统
来源:packages/data-context/src/actions/DataEmitterActions.ts packages/server/lib/makeDataContext.ts40-100
来源:packages/graphql/schemas/schema.graphql5-40 packages/graphql/schemas/schema.graphql963-1066
来源:packages/graphql/schemas/schema.graphql24-40 packages/graphql/schemas/schema.graphql42-52
GraphQL API 提供了许多用于在 Cypress 中执行操作的 mutations。以下是按功能组织的最重要的 mutations:
| Mutation | 描述 |
|---|---|
setCurrentProject | 打开指定路径的项目 |
addProject | 将项目添加到最近的项目列表 |
clearCurrentProject | 关闭当前项目 |
launchProject | 在浏览器中启动项目 |
setProjectPreferencesInGlobalCache | 保存项目偏好设置 |
| Mutation | 描述 |
|---|---|
runSpec | 运行指定的测试 spec 文件 |
setAndLoadCurrentTestingType | 设置测试类型(E2E 或 Component) |
generateSpecFromSource | 从源代码生成 spec 文件 |
scaffoldTestingType | 为项目配置测试类型 |
| Mutation | 描述 |
|---|---|
launchpadSetBrowser | 设置活动浏览器 |
focusActiveBrowserWindow | 聚焦活动浏览器窗口 |
| Mutation | 描述 |
|---|---|
login | 登录 Cypress Cloud |
logout | 退出 Cypress Cloud |
resetAuthState | 重置认证状态 |
来源:packages/graphql/src/schemaTypes/objectTypes/gql-Mutation.ts packages/graphql/src/schemaTypes/objectTypes/gql-Mutation.ts359-425
The ProjectLifecycleManager 类是 GraphQL API 操作的核心,因为它管理着完整的项目生命周期。
来源:packages/data-context/src/data/ProjectLifecycleManager.ts packages/data-context/src/actions/ProjectActions.ts91-305
GraphQL API 通过一个复杂的过程管理项目配置的加载
来源:packages/data-context/src/data/ProjectConfigManager.ts packages/data-context/src/data/ProjectConfigIpc.ts1-40
浏览器启动过程是 GraphQL API 功能的关键部分
来源:packages/data-context/src/actions/ProjectActions.ts packages/server/lib/open_project.ts58-98
当用户在 Launchpad 中打开一个项目时
setCurrentProject mutationProjectActions.setCurrentProject()ProjectLifecycleManager 初始化项目ProjectConfigManager 加载并验证配置当用户运行一个 spec 时
launchProject mutationProjectActions.launchProject()openProject.launch() 并传入浏览器和 specGraphQL API 通过 ErrorWrapper 类型包含强大的错误处理机制
来源: packages/graphql/schemas/schema.graphql1268-1297 packages/graphql/schemas/schema.graphql1111-1267
GraphQL API 是 Cypress 交互式 UI 的基础,它在用户界面组件和底层测试基础设施之间提供了强大、类型安全的接口。它在保持关注点清晰分离的同时,实现了 Cypress App 和 Launchpad 的丰富、响应式体验。
通过其明确定义的模式、解析器架构以及与 DataContext 的集成,GraphQL API 能够实现项目配置、测试执行和云集成等复杂操作,同时提供清晰的错误处理和状态管理。
来源: packages/data-context/src/data/ProjectLifecycleManager.ts packages/graphql/src/schemaTypes/objectTypes/gql-Mutation.ts packages/data-context/src/DataContext.ts