

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为你的 Amplify 应用程序设置 end-to-end赛普拉斯测试
<a name="running-tests"></a>

你可以在 Amplify 应用的测试阶段运行 end-to-end (E2E) 测试，以便在将代码推送到生产环境之前捕捉回归情况。可以在构建规范 YAML 中配置测试阶段。目前，您只能在构建期间运行 Cypress 测试框架。

Cypress 是一个 JavaScript基于测试框架，允许您在浏览器上运行 E2E 测试。有关演示如何设置 E2E 测试的教程，请参阅博客文章使用 Amplify [为全栈部署 CI/CD 运行 end-to-end Cypress 测试](https://aws.amazon.com/blogs/mobile/run-end-to-end-cypress-tests-for-your-fullstack-ci-cd-deployment-with-amplify-console/)。

## 为现有 Amplify 应用程序添加 Cypress 测试
<a name="add-tests-to-your-existing-amplify-app"></a>

您可以在 Amplify 控制台中更新应用程序的构建设置，从而向现有应用程序添加 Cypress 测试。构建规范 YAML 包含一系列构建命令和相关设置，Amplify 会使用这些命令和设置来运行构建。使用 `test` 步骤在构建时运行任何测试命令。对于 E2E 测试，Amplify Hosting 提供了与 Cypress 的更深层次集成，允许您为测试生成用户界面报告。

下面的列表介绍了测试设置及其使用方式。

**预测试**  
安装运行 Cypress 测试所需的依赖项。Amplify Hosting 使用 [mochawesome](https://github.com/adamgruber/mochawesome) 生成报告来查看您的测试结果，然后[等待](https://github.com/jeffbski/wait-on)在构建期间设置本地服务器。

**测试**  
运行 cypress 命令，使用 mochawesome 执行测试。

**测试后**  
mochawesome 报告是根据输出 JSON 生成的。请注意，如果您使用的是 Yarn，则必须在静默模式下运行此命令才能生成 mochawesome 报告。对于 Yarn，您可使用以下命令。  

```
yarn run --silent mochawesome-merge cypress/report/mochawesome-report/mochawesome*.json > cypress/report/mochawesome.json
```

**构件>baseDirectory**  
运行测试的目录。

**文物> configFilePath**  
生成的测试报告数据。

**artifacts>files**  
可供下载的生成构件（屏幕截图和视频）。

以下示例摘自构建规范 `amplify.yml` 文件，其中展示了如何向您的应用程序添加 Cypress 测试。

```
test:
  phases:
    preTest:
      commands:
        - npm ci
        - npm install -g pm2
        - npm install -g wait-on
        - npm install mocha mochawesome mochawesome-merge mochawesome-report-generator
        - pm2 start npm -- start
        - wait-on http://localhost:3000
    test:
      commands:
        - 'npx cypress run --reporter mochawesome --reporter-options "reportDir=cypress/report/mochawesome-report,overwrite=false,html=false,json=true,timestamp=mmddyyyy_HHMMss"'
    postTest:
      commands:
        - npx mochawesome-merge cypress/report/mochawesome-report/mochawesome*.json > cypress/report/mochawesome.json
        - pm2 kill
  artifacts:
    baseDirectory: cypress
    configFilePath: '**/mochawesome.json'
    files:
      - '**/*.png'
      - '**/*.mp4'
```

## 为 Amplify 应用程序或分支关闭测试
<a name="disabling-tests"></a>

将测试配置添加到您的 `amplify.yml` 构建设置后，在每个分支上为每个构建运行 `test` 步骤。如果您想全局禁止测试的运行，或者只对特定分支运行测试，则可以使用 USER\$1DISABLE\$1TESTS 环境变量而不修改构建设置。

要**全局**禁用所有分支的测试，请为所有分支添加值为 `true` 的环境变量 USER\$1DISABLE\$1TESTS。以下屏幕截图显示了 Amplify 控制台中的**环境变量**部分，其中所有分支都禁用了测试。

![\[Amplify 控制台中的环境变量部分。\]](http://docs.aws.amazon.com/zh_cn/amplify/latest/userguide/images/amplify-disable-test-global.png)


要禁用特定分支的测试，请为所有分支添加值为 `false` 的环境变量 USER\$1DISABLE\$1TESTS，然后为要禁用的每个分支添加一个值为 `true` 分支覆盖。在以下屏幕截图中，*主*分支上禁用了测试，而其他所有分支启用了测试。

![\[Amplify 控制台中的环境变量部分。\]](http://docs.aws.amazon.com/zh_cn/amplify/latest/userguide/images/amplify-disable-test-branch.png)


使用此变量禁用测试将导致在构建期间完全跳过测试步骤。要重新启用测试，请将此值设置为 `false` 或删除环境变量。