

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 為您的 Amplify 應用程式設定end-to-end Cypress 測試
<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/)。

## 將 Cypress 測試新增至現有的 Amplify 應用程式
<a name="add-tests-to-your-existing-amplify-app"></a>

您可以在 Amplify 主控台中更新應用程式的建置設定，將 Cypress 測試新增至現有應用程式。建置規格 YAML 包含組建命令的集合，以及 Amplify 用來執行組建的相關設定。使用 `test` 步驟在建置時執行任何測試命令。對於 E2E 測試，Amplify Hosting 提供與 Cypress 的深度整合，可讓您為測試產生 UI 報告。

下列清單說明測試設定及其使用方式。

**preTest**  
安裝執行 Cypress 測試所需的相依性。Amplify Hosting 使用 [mochawesome](https://github.com/adamgruber/mochawesome) 來產生報告，以檢視您的測試結果，並[等待](https://github.com/jeffbski/wait-on)在建置期間設定 localhost 伺服器。

**test**  
執行 cypress 命令，以使用 mochawesome 執行測試。

**postTest**  
mochawesome 報告是從輸出 JSON 產生。請注意，如果您使用的是 Yarn，您必須以無提示模式執行此命令，以產生mochawesome 報告。對於 Yarn，您可以使用下列命令。  

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

**artifacts>baseDirectory**  
執行測試的目錄。

**artifacts>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_tw/amplify/latest/userguide/images/amplify-disable-test-global.png)


若要停用特定分支的測試，請`false`為所有分支新增值為 USER\$1DISABLE\$1TESTS的環境變數，然後為您要停用的每個分支新增值為 的覆寫`true`。在下列螢幕擷取畫面中，會停用*主*分支上的測試，並針對其他每個分支啟用測試。

![\[Amplify 主控台中的環境變數區段。\]](http://docs.aws.amazon.com/zh_tw/amplify/latest/userguide/images/amplify-disable-test-branch.png)


使用此變數停用測試會導致在建置期間完全略過測試步驟。若要重新啟用測試，請將此值設定為 `false`，或刪除環境變數。