[T-DASH] Jenkinsでテスト自動化を定期実行させる

# Outline

テスト自動化は、手動で実行するのはもったいない。
テスト自動化も自動で定期的に実行させるのが、自動化の最大の有効活用である。

T-DASHはコマンドラインでも実行可能である

JenkinsなどのCI toolを利用して、自動実行させるとよい。

本記事では、windows環境でT-DASH + Jenkinsでテスト自動化を定期実行させるための構築に関して示したものである。

https://service.valtes.co.jp/t-dash/

# Jenkins setup

## Java

 まず、jenkinsを起動するにはjavaが必要である。


https://www.oracle.com/jp/java/technologies/downloads/#jdk21-windows


install後、pathを設定する

| 環境変数 | 設定値 | 
|:-----------|:------------|
| JAVA_HOME       | C:\Program Files\Java\jdk-21        |
| Path | %JAVA_HOME%\bin |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/42f6089e-7220-c4ae-b627-284569c73fff.png)

pathの確認をする

```
java --version
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/39883fa3-a79d-3c07-6012-516ea96a7051.png)
 

## Jenkins

Jenkinsをダウンロードしてインストールする

https://www.jenkins.io/download/

## Jenkins 起動設定

default の Jenkins はサービスで自動で立ち上がるようになっている。
この場合、ブラウザを立ち上げて操作する権限をjenkinsは持っていません。
ブラウザを実際に立ち上げてテストさせるには（バックグラウンド実行の場合は問題なし）、ログインユーザーの権限でjenkinsを立ち上げる必要がある。

このため、まずサービス (services) でjenkinsの設定を無効にする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/382e479f-4020-b53c-3db4-38991f38bed7.png)

次に、command consoleを管理者権限で起動し、以下コマンドを実行し、手動でjenkinsを起動する

```
set JENKINS_HOME=C:\ProgramData\Jenkins\.jenkins
cd C:\Jenkins
java -jar jenkins.war --httpPort=9500 
```

※ JENKINS_HOME は jenkinsのデータが保存される場所。
適時変更のこと。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/0c5e4ecc-2611-333b-58f1-32b8143c93db.png)

最後に、jenkinsをブラウザでアクセスする

http://localhost:9500/

# T-DASH 事前準備

## testrun

T-DASHのコマンド実行は、testrun単位で実行される。
そのため、jenkinsのjobで実行させたいテストのtestrunを作成する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/f8890102-1b0a-8ce9-09fc-720b7fd2a29d.png)

## エクスポート & sync file

T-DASHのコマンド実行は、sync fileをもとに実行される。
※T-DASHの現在のprojectではありません
そのため、プロジェクトファイルのエクスポートを行う。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/51c65a02-87c0-cc8e-cc77-dbe3f66c1823.png)

## setup

T-DASHをコマンド実行できるためのセットアップである

```
tdash.exe setup
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/36b43ca2-003c-0170-472b-7110d7a5a1b2.png)



# Jenkins run

## システムの環境変数

T-DASHのprojectのpathはよく使う共通値になるため、変数にしておくと便利である。
「Jenkinsの管理」→「システム」→「環境変数」で、以下変数を定義する

| 環境変数 | 設定値 | 意味 |
|:-----------|:------------|:------------|
| TDASH_PROJECT_PATH       | C:\Users\xxxxx\AppData\Local\Programs\T-DASH\projects        | プロジェクト保存先 |



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/56f2662d-1e44-73e8-9f77-b34a2e320654.png)


## job作成

「新規アイテムの作成」で「フリースタイル・プロジェクトのビルド」を選ぶ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/72c61423-77e7-ac11-5746-a9d309d516d2.png)


「Build Steps」で「windowsバッチコマンドの実行」を選ぶ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/394e7046-3c55-64f3-3a11-ad38968462a0.png)


実行内容として、以下のようなコマンドを入力する
```
chcp 65001
set PYTHONUTF8=1
cd %TDASH_PROJECT_PATH%
tdash.exe testrun --silent --sync HOTELPLANISPHERE\sync --output_report_dir_path %WORKSPACE%\%BUILD_NUMBER% login_all
```

<B>意味 --sync HOTELPLANISPHERE\sync</B>

実行対象のsyncのpathになります。
TDASH_PROJECT_PATHのパスからの相対パスで、対象のプロジェクトのsyncフォルダを指定します。

<B>意味 --output_report_dir_path %WORKSPACE%\\%BUILD_NUMBER% </B>

%WORKSPACE% はjenkinsのworkspaceを指します
%BUILD_NUMBER% はjob実行時のbuild numberになります
レポートの保存先を、build numberの下に作成させます

<B>意味 login_all</B>

testrunの名前になります。


その他、t-dashのコマンドラインのオプションに関しては、こちらを参照のこと

https://service.valtes.co.jp/t-dash/function/tutorial/commandline_vol_006

## job実行

「ビルド実行」をクリックすることで実行されます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/038fd3c7-aa0b-a23e-807e-223aa4009852.png)


もし、jobが失敗した場合、「コンソール出力」で原因を特定します。
考えられる失敗要因として、以下が考えられます
- パスが間違っている
- ライセンスが二重起動
- コマンドが間違っている
- setupを実行していない

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267085/79c0bbd8-62cb-dc70-2c89-980a837eba97.png)