Skip to content

了解如何使用 GitHub Actions 配置持续集成、查看测试日志、HTML 报告和跟踪。

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

你将学习

  • 如何设置 GitHub Actions
  • 如何查看测试日志
  • 如何查看 HTML 报告
  • 如何查看跟踪
  • 如何在 Web 上发布报告

在使用 VS Code 扩展安装 Playwright,或使用 npm init playwright@latest 时,系统会为你提供添加 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@v5
- uses: actions/setup-node@v5
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

要了解更多信息,请参阅 “Understanding GitHub Actions”。

一旦你设置好了 GitHub Actions 工作流,你只需要在 GitHub 上创建一个仓库,或者将代码推送到一个已有仓库中。按照 GitHub 上的说明进行操作,不要忘记使用 git init 命令初始化一个 Git 仓库,这样你就可以 addcommitpush 你的代码。

(图略)

点击 Actions 标签页即可查看工作流。在这里,你可以看到测试是通过还是失败。

(图略)

点击某次工作流运行后,你会看到 GitHub 执行的所有操作。点击 Run Playwright tests,即可查看错误消息、预期结果与实际结果,以及调用日志。

(图略)

HTML 报告会展示你测试的完整报告。你可以按浏览器、通过的测试、失败的测试、跳过的测试以及不稳定的测试来筛选报告。

Artifacts 部分,点击 playwright-report,即可将报告下载为一个 zip 文件。

(图略)

直接在本地打开报告并不会按预期工作,因为你需要一个 Web 服务器才能让所有内容正常运行。请先解压 zip 文件,最好解压到一个已经安装了 Playwright 的文件夹中。然后在命令行中切换到报告所在目录,并使用 npx playwright show-report,后跟解压后的文件夹名称。这样会启动一个服务,并允许你在浏览器中查看报告。

Terminal window
npx playwright show-report name-of-my-extracted-playwright-report

(图略)

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

在你使用 npx playwright show-report 启动报告服务后,点击测试文件名旁边的跟踪图标,就可以打开该测试的跟踪。然后你可以查看测试的跟踪,并检查每一个操作,尝试找出测试失败的原因。

(图略)

将 HTML 报告下载为 zip 文件并不是非常方便。不过,我们可以利用 Azure Storage 的静态网站托管能力,以简单高效的方式在互联网上提供 HTML 报告,所需配置也很少。

  1. 创建一个 Azure Storage 账户。
  2. 为该存储账户启用静态网站托管。
  3. 在 Azure 中创建一个 Service Principal,并授予其对 Azure Blob Storage 的访问权限。命令执行成功后,会显示下一步要用到的凭据。
Terminal window
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>
  1. 使用上一步得到的凭据,在你的 GitHub 仓库中设置加密的 secrets。进入仓库的设置,在 GitHub Actions secrets 中添加以下 secrets:
  • AZCOPY_SPA_APPLICATION_ID
  • AZCOPY_SPA_CLIENT_SECRET
  • AZCOPY_TENANT_ID

关于如何使用客户端密钥对 service principal 进行授权的详细指南,请参阅 Microsoft 文档。

  1. 添加一个步骤,将 HTML 报告上传到 Azure Storage。
.github/workflows/playwright.yml
...
- 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 在浏览器中访问。

诸如跟踪文件、HTML 报告,甚至控制台日志等构件都包含你的测试执行信息。它们可能包含敏感数据,例如测试用户的凭据、指向预发布后端的访问令牌、测试源码,有时甚至还包括你的应用源码。请像对待这些敏感数据一样谨慎对待这些文件。

如果你在 CI 工作流中上传报告和跟踪,请确保只上传到可信的构件存储中,或者在上传前对文件进行加密。与团队成员共享构件时也是一样:请使用可信的文件共享方式,或者在共享前先对文件进行加密。

  • 学习如何使用 Locators
  • 学习如何执行 Actions
  • 学习如何编写 Assertions
  • 进一步了解 Trace Viewer
  • 了解更多在 GitHub Actions 上运行测试的方法
  • 了解更多在其他 CI 提供商上运行测试的方法
-
0:000:00