パイプラインでテストを実行する

コマンドライン実行ツール、CI ツールが読む結果、すぐ使えるサンプル。

1 つのテストをどのパイプラインでも

コマンドラインランナーの gtr-cli は、「テストを実行」ボタンとまったく同じようにテストを実行します: 同じアサーション、同じレポート、同じ履歴です。そこにパイプラインに必要なものが加わります: 終了コード、CI ツールが理解する結果ファイル、そして失敗のすべてのエビデンスが 1 つのフォルダーにまとまります。

パイプライン

そしてコマンドを実行できるあらゆるツール

.github/workflows/gui-tests.yml
jobs:  gui-tests:    runs-on: [self-hosted, windows]    steps:      - run: gtr-cli run tests --format github --junit results.xml

ビルドエージェントの画面で 12 件のテストを実行中...

PASSED 12 件中 12 件のテスト · 終了コード 0

  • 終了コードすべてのテストが合格なら 0、1 件でも不合格なら 1: ビルドが緑か赤になります。
  • JUnit、JSON、Markdownパイプラインがテスト結果として表示する結果。すべてのステップに名前付き。
  • すべての失敗のエビデンス期待画像と実際の画像、画面、レポート、動画を 1 つのフォルダーに。

ビルドマシンを準備する

GUI テストは実際の画面上で再生されるので、実行するマシンには画面が必要です。

必要なもの理由
GUI Test Studio をインストールした Windowsインストーラーが gtr-cli を PATH に追加します。
サインイン済みでロックされていないデスクトップセッションテストは実際の画面上でクリックと入力を行います。ビルドエージェントは、バックグラウンドサービスではなく、そのセッション内の通常のプログラムとして実行してください。
テストの画面解像度と拡大縮小要素は記録されたときのサイズで比較されます。
テスト対象のアプリインストール済みか、テスト自身が「アプリを実行」ステップで起動します。
プランのシートエージェントは、アカウントページのマシンキーで 1 回だけサインインします。

アカウントページのマシンキーでキーを作成し、エージェント上で、パイプラインが使う Windows アカウントとして、これを 1 回実行します:

コマンド
gtr-cli login --key GTS-XXXX-XXXX-XXXX-XXXX

gtr-cli whoamiは、エージェントがサインインしているか、いつまでかを伝えます。サインインがないと実行は始まりません: COULD NOT RUN で始まる行を出力し、終了コード 3 で終わります。

ビルドエージェント: マシンキー

最初のコマンド

ビルドマシンのターミナルで、フォルダー内のすべてのテストを実行します:

コマンド
gtr-cli run tests --countdown 0 --junit results\junit.xml --artifacts results\artifacts

--countdown 0はすぐに開始し (画面の前には誰もいません)、--junitは CI ツールが読む結果ファイルを書き、--artifactsは動画、レポート、失敗の画像を 1 つのフォルダーに集めます。

このマシンは準備できていますか? すべてのテストを実行せずに確認します
gtr-cli check tests

パイプラインが受け取るもの

終了コード意味
0すべてのテストが合格しました。ビルドは緑になります。
1少なくとも 1 件のテストが不合格でした。
2コマンドが間違っていました: 不明なオプション、存在しないファイルなど。
3たとえば画面が記録と異なるなどの理由で、テストを実行できませんでした。
4実行が中止されました。
ファイル用途
JUnit (--junit)GitLab、Jenkins、Azure DevOps、TeamCity、GitHub のテスト結果タブ
Markdown の要約 (--summary)マージリクエストのコメントやビルドの要約ページ
JSON (--json)自前のダッシュボードやスクリプト
アーティファクトフォルダー (--artifacts)すべてのテストの動画、信頼度レポート、失敗の画像
バグレポート (--bug-report pdf)不合格のテストごとに記入済みのバグレポート

実行は各テストの結果フォルダーにも保存されるので、GUI Test Runner-Recorder の履歴には、パイプラインの実行が自分の実行と並んで表示されます。

すぐに使える例

.github/workflows/gui-tests.yml
jobs:
  gui-tests:
    runs-on: [self-hosted, windows]
    steps:
      - uses: actions/checkout@v4
      - run: gtr-cli run tests --countdown 0 --format github --junit results\junit.xml --summary results\summary.md --artifacts results\artifacts
      - uses: actions/upload-artifact@v4
        if: always()
        with:
          name: gui-test-results
          path: results

入力せずにコマンドを組み立てる

どちらのアプリでも、コマンドラインと CI/CD (GUI Test Studio の「ファイル」メニュー、GUI Test Runner-Recorder の「テスト」メニュー) がコマンドを組み立ててくれます: 欲しいオプションにチェックを入れて結果をコピーするか、実際のパスが入った CI ツール向けのスニペットをコピーします。その「リファレンス」タブにすべてのオプションの説明があります。

よく使うオプション

オプション動作
--countdown 0すぐに開始します。ターミナルでは、既定のカウントダウンがマウスから手を離す時間をくれます。
--retries 1不合格と判定する前に、不合格のテストをもう 1 回実行します。
--fail-fast最初の不合格のテストの後で停止します。
--timeout 60010 分経ってもまだ実行中のテストを中止します。
--baseline-profile "Dark mode"ベースラインプロファイルの 1 つに対して実行します。
--start-at 12.5この時点 (秒) からテストを開始します。
--branch all複数のブラウザーとデバイス向けに作った Web テストで、記録したテストを含むすべてを実行します。代わりに 1 つまたは複数を名前で指定すると、それらだけを実行します。
--headless onテストが許す所では、ブラウザーウィンドウなしで Web テストを実行します。
--parallel offテストのブラウザーとデバイスを、同時にではなく順番に実行します。
--screen allモニターが複数あるビルドマシンで、すべてのモニター、メインのモニター、番号で指定したモニター、ターミナルのディスプレイ、またはテストが記録された場所で実行します。既定では、テストのプロジェクト設定が指定するディスプレイ、指定がなければターミナルのディスプレイです。
--run-banner off実行中に画面上部に出る細い「テスト実行中」バナーを隠します。
--ai-verification on不合格のビジュアルアサーションとテキストアサーションの最終判定を AI に任せます。テストの判定と終了コードはそれに従い、何が変わったかがコンソールと結果ファイルに書かれます。
--ai-provider builtinビルドマシン自体のモデルを使います: インストールするものはなく、モデルがなければ 1 回だけダウンロードされます。
--ai-minor-differences failAI が軽微な違いしか見つけなかったアサーションを不合格にします。既定では合格です。
--ai-wait 6001 件のテストが AI の判定を待つ最長時間 (秒) です。既定ではツールが自分で決めます。
すべてのオプションの説明
gtr-cli help

失敗を Jira に報告する

不合格のテストは自動で Jira の課題になります: 再現手順、変化した所を囲んだ期待画像と実際の画像、PDF のバグレポート、そしてエビデンス付きです。同じ欠陥が別のビルド、ブラウザー、デバイスで再び見つかると、2 件目を作る代わりに、開いている課題にコメントが追加されます。

コマンド
gtr-cli run tests --countdown 0 --jira on-failure --jira-project SCRUM --jira-labels ui-regression
オプション動作
--jira on-failure不合格のテストごとに Jira の課題を作成します。実行できなかったテストが課題になることはありません。
--jira-project SCRUM課題を登録するプロジェクトを、そのキーで指定します。
--jira-issue-type Bug課題タイプです。プロジェクトにその名前のタイプがないときは、最も近いものが使われます。
--jira-assignee "James"課題の担当者です: プロジェクトのメンバーのメールアドレスまたは名前。
--jira-labels a,b独自のラベルを、コンマ区切りで指定します。
--jira-repeat new常に新しい課題を作り、開いている課題へのコメントにはしません。

接続情報は環境変数から取るので、トークンがコマンドラインやビルドログに現れることはありません: JIRA_BASE_URL (Jira サイト)、JIRA_USER_EMAIL、JIRA_API_TOKEN です。CI ツールでは、トークンをシークレットまたはパスワードパラメーターとして保管してください。GUI Test Runner-Recorder が Jira に接続されているコンピューターでは、代わりにその保存された接続が使われます。

実際の課題と実際のビルドによる流れの全体: Jira を信頼度レポートにつなぐ。

ビルドマシン上の Web アプリ

Web アプリで記録したテストは、自分でブラウザーを全画面のキオスクモードで開き、最後に閉じます。ビルドマシンでは、記録時の画面サイズと拡大縮小、サインイン済みでロックされていないデスクトップ、そして自身のタイムアウトで終わる実行が必要です。Web アプリを開くに、そうでないときに何が起こり、どうすればよいかが書かれています。

同じ注意事項はツール自体にもあります:

コマンド
gtr-cli help web-apps

パイプラインですべてのブラウザーとデバイスを

複数のブラウザーとデバイス向けに作った Web テストは、--branch allですべてを実行し、それぞれが JUnit ファイルに自分の項目と自分の履歴を持ちます。スマートフォン、タブレット、その他のウィンドウなしのブランチは同時に実行されるので、専用の画面は必要ありません。gtr-cli infoがそれぞれの名前を一覧表示し、gtr-cli generateがまだないものを作ります。1 回の記録からすべてのブラウザーとデバイスへを参照してください。

コマンド
gtr-cli generate tests --branch missing
gtr-cli run tests --branch all --countdown 0 --junit results\junit.xml

記録なしでテストを共有する

テストファイルには記録が含まれており、編集には必要ですが実行には必要ありません。GUI Test Studio のファイル、軽量な実行専用テスト (.GTR) としてエクスポートが、記録なしの同じテストを書き出します: ビルドマシンや、テストを実行するだけの同僚向けの、ずっと小さなファイルです。gtr-cli と GUI Test Runner-Recorder は、.GTR ファイルを他のテストと同じように実行します。

テスト (.GTS)実行専用テスト (.GTR)
含まれるものステップ、アサーション、ビジュアルリファレンス: 記録、画像、デザインステップとアサーションのみ
用途テストの作成と編集テストの実行
サイズ大きい: 記録とともに大きくなりますずっと小さい
開けるアプリGUI Test Studio と GUI Test Runner-RecorderGUI Test Runner-Recorder と gtr-cli

実行専用テストを使う場面

テストを実行するだけの場所ならどこでも使えます: ビルドマシン、テスターのコンピューター、持ち運ぶ必要があったりコードと一緒に保管したりするテスト一式など。実行専用テストの実行は、元のテストと同じ結果と同じレポートを出します。

テスト自体は残しておく

実行専用テストは編集できません: GUI Test Studio では開けません。.GTS を原本として残し、そこで編集し、変更後にもう一度エクスポートしてください。GUI Test Runner-Recorder も、テストメニューまたはテスト画面のエクスポートボタンからエクスポートできます。

複数のブラウザーとデバイスを持つ Web テスト

エクスポート時に何を含めるかを尋ねられます。すべてのブラウザーとデバイスは、生成済みのすべてのブランチを 1 つのファイルに入れ、--branch allですぐ使えるようにします。記録のみ、または表示中のブランチのみを選ぶと、それだけの実行専用テストになります。実行専用テストは実行しかできません: 新しいブラウザーとデバイスは .GTS から作られます。

テストをコードと一緒に保管する

テストは普通のファイルです: テスト対象のコードの隣のリポジトリに保管すれば、どのブランチにも合ったテストが付いてきます。

まだ解決しませんか?何をしようとしていたかをお知らせください。1 営業日以内に回答します。Ask our team