在前幾個章節中,我們針對了 Github Actions 做了些分享,同時也分享了該如何透過 Robot Framework 結合 Playwright 進行 Web 自動化測試,然而只會寫測試是不夠的,因為在自動化測試則是CI/CD流程中不可或缺的一環,它不僅能夠在串接我們寫好的自動化測試,讓每次需求變更時快速檢測出問題,還能減少人工測試的工作量,因此本章節將要介紹如何將 Robot Framework 結合 Playwright 的 web 自動化測試整合到 GitHub Actions 中,實現自動化測試的全流程自動化。
首先,需要在專案目錄中建立一個 .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 因此在這邊也指定 Python12Install dependencies
步驟負責安裝必要的依賴,包括 Robot Framework 和 Playwright 等Run Robot Framework tests
在這邊我們透過 Robot Framework 指令觸發測試Upload test results
當測試結束後,我們會判斷這整個 workflow 是不是 cancelled,如果不是的話則會將報告上傳在完成 YAML 得撰寫後便可以將程式碼推到 code 上囉!下一步我們一起來看看我們剛剛設定的 workflow_dispatch
手動觸發該如何在 Gtihub 上觸發,並且欣賞一下觸發後執行的狀況吧。
如同前面幾個章節所提到的,今天 Demo 的成果也是有公開放在 Github 上的,大家如果有興趣的話也可以一起到 Github 上觀看成果!附上連結:rf-playwright-example
首先進到 Repository 我們可以在專案的 tab 中看到 Actions 的 Tab,在這裡面會有所有我們邊寫過的 YAML 及觸發過了 workflow,這時我們需要點擊他進入到 Actions 頁面中。
進到 Actions 後,我們可以看到頁面分為左右兩邊,左邊的話預設是 All workflows,還記得前面我們提到過一個 Repository 可以有多個 workflow 嗎?這邊就會顯示出當前有哪些 workflow 以及在右側會顯示這些 workflows 觸發的 runs,在左邊也可以發現我們剛剛新增的那個 workflow YAML 中 name 定義為 Run Robot Framework Tests 已經已經出現在畫面上了,點擊該 workflow 後,右邊的列表也就會過濾出該 workflow 所產生的 runs。
我們在撰寫 YAML 時,有賦予這個 workflow 手動觸發的條件,而觸發的按鈕則是在這下面畫面的位置,我們需要先點擊 Run workflow 按鈕後,會跳出一個彈窗,如果我們有在 YAML 設定需要輸入些參數的話,會在這邊出現欄位,之後點擊綠色的 Run workflow 便可以觸發測試。
觸發測試後我們便可以在列表上看到新增了新的一列,並且有一個正在執行中的 workflow
點擊進去後我們可以看到執行中的 Jobs,如果今天有多個 Jobs 的話,可以看到每個 Job 的執行狀況。
當然如果在點擊進去的話,可以細到看到每個 Step 吐出來的 Log 是什麼,也可以透過右上方的 Cancel Workflow 來取消執行當前的 Workflow。
當今天測試失敗時,我們可以在最外層的列表中看到紅色的 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 的強大功能來優化開發流程。如果大家在實踐過程中遇到任何問題,歡迎隨時一起討論!