设置 CI(持续集成)

介绍

Playwright 测试可以在任何 CI 提供商上运行。本指南介绍了一种在 GitHub 上运行测试的方法,使用 GitHub Actions。如果您想了解更多内容,或如何配置其他 CI 提供商,请查看我们 【持续集成的详细文档】。

您将学习:

  • 如何设置 GitHub Actions

  • 如何查看测试日志

  • 如何查看 HTML 报告

  • 如何查看跟踪

  • 如何在网上发布报告

设置 GitHub Actions

在通过 【VS Code 插件】 或 npm init playwright@latest 【安装 Playwright】 时,您可以选择添加一个 【GitHub Actions】 工作流。这样会在 .github/workflows 文件夹中创建一个 playwright.yml 文件,包含所有必要的配置,以便您的测试在每次推送和拉取请求合并到 main 或 master 分支时自动运行。以下是该文件的内容:

.github/workflows/playwright.yml
name: Playwright Tests
on:
  push:
    branches: [ main, master ]
  pull_request:
    branches: [ main, master ]
jobs:
  test:
    timeout-minutes: 60
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-node@v4
      with:
        node-version: lts/*
    - name: Install dependencies
      run: npm ci
    - name: Install Playwright Browsers
      run: npx playwright install --with-deps
    - name: Run Playwright tests
      run: npx playwright test
    - uses: actions/upload-artifact@v4
      if: ${{ !cancelled() }}
      with:
        name: playwright-report
        path: playwright-report/
        retention-days: 30

该工作流执行以下步骤:

  1. 克隆您的代码仓库

  2. 安装 Node.js

  3. 安装 NPM 依赖

  4. 安装 Playwright 浏览器

  5. 运行 Playwright 测试

  6. 上传 HTML 报告到 GitHub UI

要了解更多,请查看 【理解 GitHub Actions】。

创建 Repo 并推送到 GitHub

设置 【GitHub Actions 工作流】 后,您只需要在 【GitHub 上创建一个仓库】或将代码推送到现有仓库。按照 GitHub 上的指示操作,并记得使用 git init 命令 【初始化一个 Git 仓库】,以便可以添加、提交和推送代码。

image 2024 12 15 21 54 51 959

打开工作流

点击 "Actions" 标签,查看工作流状态。在这里您可以看到测试是通过还是失败。

image 2024 12 15 21 55 19 142

查看测试日志

点击工作流运行记录,您将看到 GitHub 执行的所有操作。点击 "Run Playwright tests" 可以查看错误信息、预期结果和实际结果,以及调用日志。

image 2024 12 15 21 55 44 301

HTML 报告

HTML 报告展示了您所有测试的完整报告。您可以按浏览器、通过的测试、失败的测试、跳过的测试或不稳定的测试进行筛选。

下载 HTML 报告

在 "Artifacts" 部分,点击 playwright-report 下载报告,文件格式为 zip

image 2024 12 15 21 56 28 772

查看 HTML 报告

在本地打开报告时可能无法按预期显示,因为需要一个 Web 服务器来正确显示。首先解压 zip 文件,最好将其解压到一个已经安装了 Playwright 的文件夹中。然后使用命令行进入报告所在的目录,并运行 npx playwright show-report,后跟解压后的文件夹名称。这将启动报告并允许您在浏览器中查看。

npx playwright show-report name-of-my-extracted-playwright-report
image 2024 12 15 21 57 34 431

要了解更多关于报告的信息,请查看我们关于 【HTML Reporter】 的详细指南。

查看跟踪

在通过 npx playwright show-report 启动报告后,点击测试文件名旁边的跟踪图标,即可查看测试的跟踪并检查每个动作,以帮助找出测试失败的原因。

image 2024 12 15 21 59 54 544

在网上发布报告

下载 HTML 报告为 zip 文件并不方便。不过,您可以利用 Azure Storage 的静态网站托管功能,将 HTML 报告轻松高效地发布到互联网,所需配置非常少。

  1. 创建一个 【Azure Storage 帐号】。

  2. 为存储帐户启用 【静态网站托管】。

  3. 在 Azure 中创建一个服务主体,并授予其访问 Azure Blob 存储的权限。成功执行后,命令将显示凭据,这些凭据将在下一步中使用。

    az ad sp create-for-rbac --name "github-actions" --role "Storage Blob Data Contributor" --scopes /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT_NAME>
  4. 使用上一步获得的凭证,在 GitHub 仓库中设置加密的 secrets。转到仓库设置中的 【GitHub Actions secrets】,添加以下 secrets:

    • AZCOPY_SPA_APPLICATION_ID

    • AZCOPY_SPA_CLIENT_SECRET

    • AZCOPY_TENANT_ID

    有关如何使用客户端密钥授权服务主体的详细指南,请参阅此 Microsoft 文档。

  5. 添加一个步骤,将 HTML 报告上传到 Azure 存储。

...
    - name: Upload HTML report to Azure
      shell: bash
      run: |
        REPORT_DIR='run-${{ github.run_id }}-${{ github.run_attempt }}'
        azcopy cp --recursive "./playwright-report/*" "https://<STORAGE_ACCOUNT_NAME>.blob.core.windows.net/\$web/$REPORT_DIR"
        echo "::notice title=HTML report url::https://<STORAGE_ACCOUNT_NAME>.z1.web.core.windows.net/$REPORT_DIR/index.html"
      env:
        AZCOPY_AUTO_LOGIN_TYPE: SPN
        AZCOPY_SPA_APPLICATION_ID: '${{ secrets.AZCOPY_SPA_APPLICATION_ID }}'
        AZCOPY_SPA_CLIENT_SECRET: '${{ secrets.AZCOPY_SPA_CLIENT_SECRET }}'
        AZCOPY_TENANT_ID: '${{ secrets.AZCOPY_TENANT_ID }}'

$web 存储容器的内容可以通过使用网站的 【公共 URL】 从浏览器访问。

此步骤不适用于从 forked 仓库创建的拉取请求,因为此类工作流 【无法访问机密信息】。

下一步

  • 学习如何使用 Locators

  • 学习如何执行 Actions

  • 学习如何编写 Assertions

  • 了解更多关于 Trace Viewer 的内容

  • 学习更多在 GitHub Actions 上运行测试的方法

  • 学习如何在其他 CI 提供商上运行测试