iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
DevOps

建立應用程式 UI 自動化測試 - 以 Robot Framework 為例系列 第 19

[19] 使用 Robot Framework 結合 Playwright 進行 Web 自動化測試 - 將測試與 Github Actions 整合

  • 分享至 

  • xImage
  •  

在前幾個章節中,我們針對了 Github Actions 做了些分享,同時也分享了該如何透過 Robot Framework 結合 Playwright 進行 Web 自動化測試,然而只會寫測試是不夠的,因為在自動化測試則是CI/CD流程中不可或缺的一環,它不僅能夠在串接我們寫好的自動化測試,讓每次需求變更時快速檢測出問題,還能減少人工測試的工作量,因此本章節將要介紹如何將 Robot Framework 結合 Playwright 的 web 自動化測試整合到 GitHub Actions 中,實現自動化測試的全流程自動化。

建立 GitHub Actions YAML檔案

首先,需要在專案目錄中建立一個 .github/workflows 文件夾,並在其中創建一個以 .yml 為副檔名的工作流文件。以下是一個範例配置檔案,從下方的 YAML 我們可以看出執行的順序為:

checkout code → 設定 python 環境 → 安裝 requirements 及設定 rfbrowser → 執行測試 → 當測試結果不為 cancelled 時上傳測試報告

name: Run Robot Framework Tests

on:
  workflow_dispatch:

jobs:
  test:
    timeout-minutes: 5
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v5 
        with:
          python-version: '3.12'

      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
          rfbrowser init

      - name: Run Robot Framework tests
        run: |
          robot -v HEADLESS:True test/

      - name: Upload test results
        uses: actions/upload-artifact@v4
        if: ${{ !cancelled() }}
        with:
          name: test-results
          path: ./log.html

透過這一串流程我們便完成測試拉!下面我們先針對這段 code 做些說明:

  • name 定義了這個工作流的名稱為 "Run Robot Framework Tests"
  • on 指定了這個工作流的觸發條件,在這邊由於需要 Demo 的關係,我們設定透過 workflow_dispatch 手動觸發,未來大家在規劃測試流程時,可以與團隊討論該如何在流程中觸發這個測試。這保證了每次部署變更都能自動運行測試,有效阻止修 A 壞 B 的情況發生
  • runs-on 指定測試作業將在 ubuntu-latest 環境中運行,這是 GitHub Actions 提供的最新 Ubuntu 環境
  • actions/checkout@v4 步驟使用 actions/checkout 來在該 runs-on 的裝置上 checkout 程式碼
  • Set up Python 步驟使用 actions/setup-python 來配置 Python 環境,並指定要使用的 Python 版本,在這邊由於筆者 local 開發是使用 Python12 因此在這邊也指定 Python12
  • Install dependencies 步驟負責安裝必要的依賴,包括 Robot Framework 和 Playwright 等
  • Run Robot Framework tests 在這邊我們透過 Robot Framework 指令觸發測試
  • Upload test results 當測試結束後,我們會判斷這整個 workflow 是不是 cancelled,如果不是的話則會將報告上傳

在完成 YAML 得撰寫後便可以將程式碼推到 code 上囉!下一步我們一起來看看我們剛剛設定的 workflow_dispatch 手動觸發該如何在 Gtihub 上觸發,並且欣賞一下觸發後執行的狀況吧。

GitHub 上觸發 Workflow 及結果展示

如同前面幾個章節所提到的,今天 Demo 的成果也是有公開放在 Github 上的,大家如果有興趣的話也可以一起到 Github 上觀看成果!附上連結:rf-playwright-example

進入 Actions 頁面

首先進到 Repository 我們可以在專案的 tab 中看到 Actions 的 Tab,在這裡面會有所有我們邊寫過的 YAML 及觸發過了 workflow,這時我們需要點擊他進入到 Actions 頁面中。
https://ithelp.ithome.com.tw/upload/images/20240928/20168859GjHT7xiWcX.png

Actions 頁面介紹

進到 Actions 後,我們可以看到頁面分為左右兩邊,左邊的話預設是 All workflows,還記得前面我們提到過一個 Repository 可以有多個 workflow 嗎?這邊就會顯示出當前有哪些 workflow 以及在右側會顯示這些 workflows 觸發的 runs,在左邊也可以發現我們剛剛新增的那個 workflow YAML 中 name 定義為 Run Robot Framework Tests 已經已經出現在畫面上了,點擊該 workflow 後,右邊的列表也就會過濾出該 workflow 所產生的 runs。
https://ithelp.ithome.com.tw/upload/images/20240928/20168859Kp9rbHFYDW.png

觸發 workflow

我們在撰寫 YAML 時,有賦予這個 workflow 手動觸發的條件,而觸發的按鈕則是在這下面畫面的位置,我們需要先點擊 Run workflow 按鈕後,會跳出一個彈窗,如果我們有在 YAML 設定需要輸入些參數的話,會在這邊出現欄位,之後點擊綠色的 Run workflow 便可以觸發測試。
https://ithelp.ithome.com.tw/upload/images/20240928/20168859X10zKEDueS.png
觸發測試後我們便可以在列表上看到新增了新的一列,並且有一個正在執行中的 workflow
https://ithelp.ithome.com.tw/upload/images/20240928/20168859DvTQIMKqtj.png

查看 workflow 中的 Jobs

點擊進去後我們可以看到執行中的 Jobs,如果今天有多個 Jobs 的話,可以看到每個 Job 的執行狀況。
https://ithelp.ithome.com.tw/upload/images/20240928/20168859DVmIoaZeIN.png

查看 Job 中的 Step

當然如果在點擊進去的話,可以細到看到每個 Step 吐出來的 Log 是什麼,也可以透過右上方的 Cancel Workflow 來取消執行當前的 Workflow。
https://ithelp.ithome.com.tw/upload/images/20240928/20168859Tl42g3xRRS.png

執行狀態

當今天測試失敗時,我們可以在最外層的列表中看到紅色的 x,也可以在 Jobs、Steps 中看到,到 Step 這層還可以看到測試執行的 Log 幫助我們 debug,在這邊我們可以看到紅色的 x 是歸功於 Robot Framework 的 return codes,當今天測試成功啟動並且沒有測試失敗時,回傳的 codes 為 0, Github Actions 看到這個 return codes 便認定這個 step 執行成功,因此結果為綠色的 pass,關於 Robot Framework 的 return codes 詳細可以參考官方文件,在這邊 return codes 之所有重要是,除了在視覺上可以讓我們知道測試的成果外,當今天這個 workflow 是允許其他 Repository 引用的話,這個狀態會是該 Repository 的 workflow 能不能或是需不需要執行下一個 Jobs 的依據,例如,當今天測試通過時我們就部署,這樣的前提下,如果我們的測試不管成功獲失敗 workflow 都是 pass 這樣會造成直接部署的情況發生。

結語

將 Robot Framework 和 Playwright 測試整合到 GitHub Actions 中,為開發團隊提供了強大的自動化測試工具,期待在閱讀本章節的介紹後,大家都可以輕鬆設定並運行自動化測試,並利用 GitHub Actions 的強大功能來優化開發流程。如果大家在實踐過程中遇到任何問題,歡迎隨時一起討論!


上一篇
[18] GitHub Self-hosted runners 自行架設與 Github Action Secrets
下一篇
[20] Robot Framework 結合 Appium 進行 App 自動化測試 - 認識 Appium
系列文
建立應用程式 UI 自動化測試 - 以 Robot Framework 為例30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言