目录
[设置 GitHub Actions](#设置 GitHub Actions)
介绍
Playwright 测试可以在任何持续集成(CI)提供商上运行。在本节中,我们将介绍如何在 GitHub 上使用 GitHub Actions 运行测试。如果您想了解如何配置其他 CI 提供商,请查看我们关于持续集成的详细文档。
要添加 GitHub Actions 文件,请首先创建 .github/workflows
文件夹,并在其中添加一个 playwright.yml
文件,包含下面的示例代码,以便在每次向主/主分支推送或发起拉取请求时运行您的测试。
您将学习:
-
如何在推送/拉取请求上运行测试:了解如何配置 GitHub Actions 工作流,以便在代码被推送到指定分支或发起拉取请求时自动运行 Playwright 测试。
-
如何查看测试日志:学习如何访问 GitHub Actions 的输出,以查看 Playwright 测试的详细日志。这有助于诊断测试失败的原因。
-
如何查看跟踪(Trace):了解如何捕获 Playwright 测试的运行跟踪,并在 GitHub Actions 中查看这些跟踪文件。跟踪文件包含了测试运行期间页面的状态变化、网络请求等信息,对于深入分析测试行为非常有用。
设置 GitHub Actions
在推送/拉取请求时运行
测试将在向主/主分支推送或发起拉取请求时运行。工作流 workflow将安装所有依赖项、安装 Playwright,然后运行测试。
.github/workflows/playwright.yml
name: Playwright Tests
on:
push:
branches: [ main, master ] # 当向 main 或 master 分支推送时触发
pull_request:
branches: [ main, master ] # 当向 main 或 master 分支发起拉取请求时触发
jobs:
test:
timeout-minutes: 60 # 设置作业超时时间为 60 分钟
runs-on: ubuntu-latest # 指定作业在最新的 Ubuntu 系统上运行
steps:
- uses: actions/checkout@v4 # 检出仓库代码
- name: Set up Python
uses: actions/setup-python@v4 # 设置 Python 环境
with:
python-version: '3.11' # 指定 Python 版本为 3.11
- name: Install dependencies
run: | # 安装依赖项
python -m pip install --upgrade pip # 升级 pip
pip install -r requirements.txt # 安装 requirements.txt 文件中列出的依赖项
- name: Ensure browsers are installed
run: python -m playwright install --with-deps # 安装 Playwright 及其依赖的浏览器
- name: Run your tests
run: pytest --tracing=retain-on-failure # 使用 pytest 运行测试,并在测试失败时保留跟踪信息
- uses: actions/upload-artifact@v4 # 如果作业未取消,则上传工件
if: ${{ !cancelled() }}
with:
name: playwright-traces # 工件名称
path: test-results/ # 要上传的工件路径
通过容器运行
GitHub Actions 支持通过 jobs.<job_id>.container 选项在容器中运行作业 running jobs in a container。这很有用,因为它可以防止将依赖项污染到宿主环境中,并为不同操作系统上的屏幕截图/视觉回归测试等提供一个一致的环境。
.github/workflows/playwright.yml
name: Playwright Tests
on:
push:
branches: [ main, master ] # 当向 main 或 master 分支推送时触发
pull_request:
branches: [ main, master ] # 当向 main 或 master 分支发起拉取请求时触发
jobs:
playwright:
name: 'Playwright Tests' # 作业名称
runs-on: ubuntu-latest # 指定作业在最新的 Ubuntu 系统上运行
container:
image: mcr.microsoft.com/playwright/python:v1.45.0-jammy # 使用 Microsoft 提供的 Playwright 容器镜像
steps:
- uses: actions/checkout@v4 # 检出仓库代码
- name: Set up Python
uses: actions/setup-python@v4 # 设置 Python 环境
with:
python-version: '3.11' # 指定 Python 版本为 3.11
- name: Install dependencies
run: | # 安装依赖项
python -m pip install --upgrade pip # 升级 pip
pip install -r local-requirements.txt # 安装本地 requirements.txt 文件中列出的依赖项(这里假设是 local-requirements.txt)
pip install -e . # 安装当前目录为可编辑模式,假设当前目录是一个 Python 包
- name: Run your tests
run: pytest # 使用 pytest 运行测试
env:
HOME: /root # 设置环境变量 HOME 为 /root,这是容器中的根目录
在部署时
这将在 GitHub 部署 GitHub Deployment进入成功状态后启动测试。服务如 Vercel 使用这种模式,以便您可以在其部署的环境中运行端到端测试。
.github/workflows/playwright.yml
name: Playwright Tests
on:
deployment_status: # 监听部署状态事件
jobs:
test:
timeout-minutes: 60 # 设置作业超时时间为 60 分钟
runs-on: ubuntu-latest # 指定作业在最新的 Ubuntu 系统上运行
if: github.event.deployment_status.state == 'success' # 仅当部署状态为成功时运行
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4 # 设置 Python 环境
with:
python-version: '3.11' # 指定 Python 版本为 3.11
- name: Install dependencies
run: | # 安装依赖项
python -m pip install --upgrade pip # 升级 pip
pip install -r requirements.txt # 安装 requirements.txt 文件中列出的依赖项
- name: Ensure browsers are installed
run: python -m playwright install --with-deps # 确保安装了 Playwright 浏览器及其依赖项
- name: Run tests
run: pytest # 运行测试
env:
# 设置环境变量,这取决于您的测试运行器
PLAYWRIGHT_TEST_BASE_URL: ${{ github.event.deployment_status.target_url }} # 设置基础 URL 为部署状态的目标 URL,这通常是您的应用部署后的 URL
创建仓库并推送到GitHub
一旦您设置了GitHub Actions工作流程,接下来您需要做的就是在GitHub上创建一个仓库,或者将您的代码推送到现有的仓库中。请按照GitHub上的说明操作,并且不要忘记使用git init
命令初始化一个git仓库,这样您就可以添加、提交和推送您的代码了。
打开工作流程
点击"Actions"标签页以查看工作流程。在这里,您将看到您的测试是否通过或失败。
查看测试日志
点击工作流程运行将显示GitHub执行的所有操作,点击"运行Playwright测试"将显示错误消息、预期结果和实际接收到的结果,以及调用日志。这将帮助您诊断测试失败的原因。
查看跟踪
trace.playwright.dev
是 Trace Viewer 的一个静态托管版本。您可以使用拖放方式上传跟踪文件。这个工具允许您查看 Playwright 测试运行期间浏览器和 Playwright API 之间的交互细节,从而帮助您诊断问题或了解测试的执行流程。