自动化测试工具playwright中文文档-------5.CI GitHub Actions

目录

介绍

[设置 GitHub Actions](#设置 GitHub Actions)

在推送/拉取请求时运行

通过容器运行

在部署时

创建仓库并推送到GitHub

​编辑打开工作流程

查看测试日志

查看跟踪


介绍

Playwright 测试可以在任何持续集成(CI)提供商上运行。在本节中,我们将介绍如何在 GitHub 上使用 GitHub Actions 运行测试。如果您想了解如何配置其他 CI 提供商,请查看我们关于持续集成的详细文档。

要添加 GitHub Actions 文件,请首先创建 .github/workflows 文件夹,并在其中添加一个 playwright.yml 文件,包含下面的示例代码,以便在每次向主/主分支推送或发起拉取请求时运行您的测试。

您将学习:

  1. 如何在推送/拉取请求上运行测试:了解如何配置 GitHub Actions 工作流,以便在代码被推送到指定分支或发起拉取请求时自动运行 Playwright 测试。

  2. 如何查看测试日志:学习如何访问 GitHub Actions 的输出,以查看 Playwright 测试的详细日志。这有助于诊断测试失败的原因。

  3. 如何查看跟踪(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 之间的交互细节,从而帮助您诊断问题或了解测试的执行流程。

相关推荐
龙哥说跨境8 分钟前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
小白学大数据24 分钟前
正则表达式在Kotlin中的应用:提取图片链接
开发语言·python·selenium·正则表达式·kotlin
flashman91125 分钟前
python在word中插入图片
python·microsoft·自动化·word
菜鸟的人工智能之路29 分钟前
桑基图在医学数据分析中的更复杂应用示例
python·数据分析·健康医疗
懒大王爱吃狼2 小时前
Python教程:python枚举类定义和使用
开发语言·前端·javascript·python·python基础·python编程·python书籍
小牛itbull3 小时前
ReactPress:重塑内容管理的未来
react.js·github·reactpress
秃头佛爷3 小时前
Python学习大纲总结及注意事项
开发语言·python·学习
深度学习lover4 小时前
<项目代码>YOLOv8 苹果腐烂识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·苹果腐烂识别
API快乐传递者5 小时前
淘宝反爬虫机制的主要手段有哪些?
爬虫·python
阡之尘埃7 小时前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)
人工智能·python·机器学习·数据分析·智能风控·信贷风控