SideeX Runner

SideeX Runner是一個命令列介面(Command Line Interface)工具,支援在命令列模式下播放由SideeX Recorder錄製出的測試案例。

快速入門

預備工具:

步驟1:啟動Selenium Server

  1. 下載Selenium Server (已測版本:3.141.59)
  2. 下載WebDriver,並將其放置於與selenium-server-standalone-{version}.jar相同目錄下
  3. 開啟命令列模式並且切換路徑至selenium-server-standalone-{version}.jar的目錄
  4. 執行java -jar selenium-server-standalone-{version}.jar

步驟2:執行SideeX Runner

  1. 開啟命令列模式並執行npm i -g @sideex/runner
  2. 執行sideex-runner --config {CONFIG_FILE_PATH}。如下範例,當執行以下設定檔時,所有指定的測試套件中之測試案例都將會透過WebDriver於Chrome上播放。設定檔格式請參閱附錄 A
    ​​​​{ ​​​​ "input": { ​​​​ "testSuites": ["YOUR_TESTSUITE_FILE_PATH"] ​​​​ }, ​​​​ "webdriver": { ​​​​ "configs": [ ​​​​ { ​​​​ "serverUrl": "http://localhost:4444", ​​​​ "type": "selenium", ​​​​ "browsers":[ ​​​​ { ​​​​ "active": true, ​​​​ "capability": { ​​​​ "browserName": "chrome" ​​​​ } ​​​​ } ​​​​ ] ​​​​ } ​​​​ ] ​​​​ } ​​​​}

步驟3:觀看、推送與解析測試報告

  • 觀看測試報告:測試報告檔案將會於設定檔中指定的目錄下被產生,格式可為HTML或JSON,HTML檔案可以瀏覽器開啟觀看,JSON檔案可被其他程式解析與再處理。
  • 推送測試報告:測試報告可自動推送至Email、Slack與Line,可參閱設定檔格式
  • 輸出資料:測試報告中將包含測試案例中區域變數與全域變數最後執行的值,有時候這些資料有助於除錯並且可供其他程式解析與再處理,請參閱測試報告格式

附錄 A - SideeX Runner設定檔格式

config.json範例

{ "input": { "testSuites": ["./testsuite1.html", "./testsuite2.html", "./testsuite3.html"], "variables": ["./globalvar.json"] }, "play": { "mode": 2, "entry": "", "noLog": false, "speed": 5, "autoWaitTimeout":30, "period": { "time": -1, "maxNum": -1 } }, "report": { "path": "./", "type":"html", "snapshot": 2, "snapshotQuality": 20 }, "webdriver": { "configs": [ { "serverUrl": "http://localhost:4444", "type": "selenium", "browsers":[ { "active": true, "capability": { "browserName": "chrome", "goog:chromeOptions": { "args": [ "headless", "disable-gpu", "window-size=1080,720", "no-sandbox" ] } } }, { "active": true, "capability": { "browserName": "firefox", "moz:firefoxOptions": { "args": [ "-headless", "-disable-gpu", "-window-size=1080,720" ] } } } ] } ], "i18n": { "ja": "./ja.json" } }, "mail": { "active": 2, "configs": { "transport": { "host": "smtp.gmail.com", "port": 465, "secure": true, "auth": { "user": "xxxx@gmail.com", "pass": "your_password" } }, "mailer": { "from": "\"your_title\" <xxxx@gmail.com>", "to": "xxxx1@gmail.com, xxxx2@gmail.com", "subject": "The test reports generated by SideeX Runner", "html": "<p>Type your own mail body here</p>" } } }, "slack": { "active": 2, "configs": { "token": "your_slack_token", "channel": "your_channel", "text": "Here comes the test reports generated by SideeX Runner" } }, "line": { "active": 2, "configs": { "token": "your_line_notify_token", "text": "Here comes the test reports generated by SideeX Runner" } } }

注意:上述config檔中的webdriverplay屬性可由SideeX Record的設定頁面匯出後轉貼。WebDriver設定請參閱透過WebDriver進行跨瀏覽器測試

格式說明:

  • input

    • testSuites
      • Description: 測試套件檔案路徑
      • Value: A string array
      • Default: []
    • variables
      • Description: 變數檔案路徑,檔案格式須為jsoncsv
      • Value: A string array
      • Default: []
  • play

    • mode
      • Description: 播放模式
      • Value: 0, 1, or 20為播放此測試案例,1為播放此測試套件,2為播放所有測試套件
      • Default: 2
    • entry
      • Description: 指定欲播放的測試案例或套件
        • mode=0,此屬性須設定為一個測試案例的全名,例如testsuite1.testcase1
        • mode=1,此屬性須設定為一個測試套件的全名,例如testsuite2
        • mode=2,此屬性可免設定並將會被忽略
      • Value: A string
      • Default: ""
    • noLog
      • Description:
        • 此屬性設定為true代表關閉Log
      • Value: boolean
      • Default: false
    • speed
      • Description: 播放速度。1為最慢速,5為最快速
      • Value: 1, 2, 3, 4, or 5.
      • Default: 5
    • autoWaitTimeout
      • Description: 執行下個指令前的自動等待時間上限。
      • Value: A number (單位: 秒)
      • Default: 30
    • period
      • time
        • Description: 週期性播放模式之週期。-1代表關閉週期性播放
        • Value: A number (單位:秒)
        • Default: -1
      • maxNum
        • Description: 最多播放次數。設定為-1代表無限次播放
        • Value: A number
        • Default: -1
  • report

    • type
      • Description: 測案報告檔案格式
      • Value: "html", "json""all"
      • Default: "html"
    • path
      • Description: 測試報告儲存路徑。如果此路徑不存在,在執行時將會自動產生
      • Value: A string
      • Default: ""
    • snapshot
      • Description: 設定是否播放每個指令時擷取網頁快照
        • 0 : 不擷圖
        • 1 : 指令失敗時才擷圖
        • 2 : 不論執行狀態一律擷圖
      • Value: 0, 1, or 2
      • Default: 2
    • snapshotQuality
      • Description: 網頁快照品質,其值由1至100,100為最高畫面品質。注意:品質設定越高,測試報告檔案大小越大
      • Value: 1 to 100.
      • Default: 20
  • webdriver

    • configs
      • serverUrl
        • Description: WebDriver伺服器URL (Selenium Server或Appium Server)
        • Value: A URL string
        • Default: ""
      • type
        • Description: WebDriver伺服器型態
        • Value: "selenium""appium"
        • Default: "selenium"
      • browsers
        • Description: 瀏覽器清單(Browser Capabilities)
        • Value: An array
        • Default: []
        • active
          • Description: 啟用或停用此劉覽器
          • Value: boolean
          • Default: true
        • capability
          • browserName
            • Description: 瀏覽器名稱
            • Value:
              • For desktop browsers: "chrome", "firefox", "MicrosoftEdge", "safari" or "opera".
              • For mobile browsers: 請參閱這裡
          • platformName
            • Description: The platform
            • Value:
              • 針對桌面瀏覽器: "WINDOWS", "LINUX", or "MAC"
              • 針對行動裝置瀏覽器: 請參閱這裡
          • browserVersion
            • Description: 瀏覽器版本
            • Value: A string
          • (更多capability設定)
            可自行加入更多符合W3C WebDriver Capability規範的capability設定。例如,可加入啟動瀏覽器無頭(Headless)模式的設定:
            ​​​​​​​​​​​​​​​​​​​​​// For Chrome
            ​​​​​​​​​​​​​​​​​​​​​"goog:chromeOptions": {
            ​​​​​​​​​​​​​​​​​​​​​    "args": [
            ​​​​​​​​​​​​​​​​​​​​​        "headless",
            ​​​​​​​​​​​​​​​​​​​​​        "disable-gpu",
            ​​​​​​​​​​​​​​​​​​​​​        "window-size=1080,720",
            ​​​​​​​​​​​​​​​​​​​​​        "no-sandbox"
            ​​​​​​​​​​​​​​​​​​​​​    ]
            ​​​​​​​​​​​​​​​​​​​​​}
            ​​​​​​​​​​​​​​​​​​​​​// For Firefox
            ​​​​​​​​​​​​​​​​​​​​​"moz:firefoxOptions": {
            ​​​​​​​​​​​​​​​​​​​​​   "args":   [
            ​​​​​​​​​​​​​​​​​​​​​       "-headless",
            ​​​​​​​​​​​​​​​​​​​​​       "-disable-gpu",
            ​​​​​​​​​​​​​​​​​​​​​       "-window-size=1080,720"
            ​​​​​​​​​​​​​​​​​​​​​   ]
            ​​​​​​​​​​​​​​​​​​​​​}
            
    • i18n
      • Description:
        • 各國語言代碼與語言檔路徑。所有的語言代碼可參考SideeX Recorder的設定頁面。更多說明請參閱多國語言測試
      • Value: 語言代碼與語言檔清單,播放時將依清單上語言順序執行
        ​​​​​​​​​​​​{
        ​​​​​​​​​​​​    "ja": "./ja.json",
        ​​​​​​​​​​​​    "ZH-tw": "./tw.json"
        ​​​​​​​​​​​​}
        
      • Default: undefined
  • mail
    將測試報告以Email寄出。注意:若使用Gmail SMTP伺服器寄信時,須事先建立Application Password

    • active
      • Description
        • 0 : 不寄送信件
        • 1 : 當測試失敗時才寄送信件
        • 2 : 不論測試結果一律寄送信件
      • Value: 0, 1 or 2
      • Default: 0
    • configs
      • transport
        • Description: Mail伺服器設定。可參考SMTP Transport
        • Value: 如以下格式
          ​​​​​​​​​​​​​​​​{
          ​​​​​​​​​​​​​​​​    "host": "smtp.gmail.com",
          ​​​​​​​​​​​​​​​​    "port": 465,
          ​​​​​​​​​​​​​​​​    "secure": true,
          ​​​​​​​​​​​​​​​​    "auth": {
          ​​​​​​​​​​​​​​​​      "user": "xxxx@gmail.com",
          ​​​​​​​​​​​​​​​​      "pass": "your_password"
          ​​​​​​​​​​​​​​​​    }
          ​​​​​​​​​​​​​​​​}
          
        • Default: undefined
      • mailer
        • Description: 信件設定。可參考Message
        • Value: 如以下格式
          ​​​​​​​​​​​​​​​​{
          ​​​​​​​​​​​​​​​​    "from": "\"your_title\" <xxxx@gmail.com>",
          ​​​​​​​​​​​​​​​​    "to": "xxxx1@gmail.com, xxxx2@gmail.com",
          ​​​​​​​​​​​​​​​​    "subject": "The test reports generated by SideeX Runner",
          ​​​​​​​​​​​​​​​​    "html": "<p>Type your own mail body here</p>"
          ​​​​​​​​​​​​​​​​}
          
        • Default: undefined
  • slack
    推送測試報告至Slack。事先須準備Slack Token與Channel

    • active
      • Description
        • 0 : 不推送至Slack
        • 1 : 當測試失敗時才推送至Slack
        • 2 : 不論測試結果一律推送至Slack
      • Value: 0, 1 or 2
      • Default: 0
    • configs
      • token
        • Description: Slack APP之Token
        • Value: A string
        • Default: ""
      • channel
        • Description: Slack Workspace Channels
        • Value: A string
        • Default: ""
      • text
        • Description: 推送文字訊息。將顯示於Test Report Summary前
        • Value: A string
        • Default: ""
  • line
    推送測試報告至Line。事先須準備Line Notify Token

    • active
      • Description
        • 0 : 不推送至Line
        • 1 : 當測試失敗時才推送至Line
        • 2 : 不論測試結果一律推送至Line
      • Value: 0, 1 or 2
      • Default: 2
    • configs
      • token
        • Description: Line Notify Token
        • Value: A string
        • Default: ""
      • text
        • Description: 推送文字訊息。將顯示於Test Report Summary前
        • Value: A string
        • Default: ""