T-DASH がプロキシ環境では  403 Forbidden で動かなかった件と、その回避策のまとめ


# はじめに
T-DASH は日本語のメニューででテストを自動化できる、非常に便利なツールです。しかし、T-DASH はインターネット上での認証が必要なため、プロキシが必要な環境ではセットアップが大変そうな印象を持っていました。今回改めて最新版を試したところ、驚くほど簡単にプロキシ接続ができました。そこでいろいろ試そうと思ったところ、Error 403 Forbidden に遭遇。試行錯誤の結果、動くパターンと動かないパターン、および回避策を見つけることができたので、その内容のレポートです。

# 結論
まず最初に結論を述べます。ちょうど T-DASH の良い点と悪い点のレビューになったと思います。
- 良い点: プロキシの設定がとても簡単になった！
- 悪い点: プロキシがあると 403 Forbidden で動かないパターンがあった（回避策あり）

:::note info
[回避策](#回避策)は最後に記載しています
:::

下記に詳しく説明します。

# レビュー環境
- Windows 11
- T-DASH 2.0.003 （無料プラン）
- Microsoft Edge

# 良い点: プロキシの設定がとても簡単になった！
インストールに関しては、他の記事をご参照ください。ここではインストール直後、まだ認証が完了していない状態から説明します。プロキシが必要な環境で T-DASH を起動すると、下記のように、認証処理ができなかった旨のエラーがでます。

![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156216/bbe07fd8-2f0f-43f3-d1a8-18b1962ef102.png)


T-DASH は認証のために https://mypage.quintee.io/ へのアクセスを行いますが、それができずにエラーになっています。今回、システム設定ですでにプロキシを登録してありますが、T-DASH はそちらを参照しないようです。よく見ると、認証ボタンの上に「プロキシ設定」というリンクがありました！これをクリックすると、次のようになります。

![003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156216/e81db4c7-b009-3df7-47f3-ba5c5dbb605f.png)

非常にわかりやすい画面で、直感的にプロキシの設定ができます。アドレスとポートなど、必要な値を入力して保存すると、何やら動きそうな雰囲気が。。

![004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156216/34c6e448-5cfd-6f51-95f3-9f8eb013b170.png)

初回起動時はダウンロードに少し時間がかかりましたが、数分して無事に起動できました！

![005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156216/79411044-2f91-9b9c-3967-ac1d0dd0da8f.png)


# 悪い点: プロキシがあると 403 Forbidden で動かないパターンがあった
## まずは日本語のテストケースを作成
今回、Zabbix での作業を自動化できないかと思い、ひとまずログインまでのテストケースを作ってみました。実際のテストケースはこんな感じです。日本語で各ステップを記述でき、ほぼマニュアル不要で操作できるくらい簡単です。

![Screen Shot 2022-12-01 at 22.29.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156216/5f9b97e3-83af-3251-7c33-c4f69e1ed80d.png)


ブラウザでアクセスする場合、どのフィールドにどの値を入力するか、パスを取得するのが非常に大変です。T-DASH では、GUI の画面にカーソルを合わせることで自動で要素を取得し、またパスチェックもしてくれるのでとても簡単です。

![Screen Shot 2022-12-01 at 22.35.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156216/8011c604-00d5-7678-518a-db34e3ac930b.png)

## さて実際に動作開始、と思ったら。。
順調に登録でき、さてシナリオを動かしてみようと思った際に思わぬ事態に遭遇しました。テストケースが実行されません。実行すると、下記のような画面になって終了してしまいました。

![Screen Shot 2022-12-01 at 22.59.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156216/d616ae8c-9337-218f-034c-9ef873b20414.png)


「テスト実行が完了しました」と右上にでていますが、明らかに完了していません。テストレポートを見てみると、どうも localhost をプロキシに投げてしまい、エラーになっているようです。

![Screen Shot 2022-12-02 at 8.31.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156216/07107721-6474-4ef2-e08c-815ab9ecd6f5.png)


通常 localhost をプロキシに投げることはありません。念の為キャプチャをしてみると、間違いなくプロキシに POST しています。

![Screen Shot 2022-12-02 at 8.43.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156216/9d074509-da90-5393-cc3b-3ace1b1614b1.png)


T-DASH 自身のコマンドプロンプトには、403 Forbidden でエラーになっている表示がでていました。

![Screen Shot 2022-12-01 at 22.18.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156216/01e695bb-652b-a4b3-6218-e69f2be55a4a.png)


## 考えられる理由
問題解決のために、考えられる理由を片っ端から試してみました。

### コンピュータのプロキシ設定
まず疑ったのがコンピュータのプロキシ設定。前述の通り、T-DASH はコンピュータの設定を参照していないようですが、もともと設定していたのでこちらを無効にしました。しかし、結果は変わりませんでした。

![Screen Shot 2022-12-01 at 22.46.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156216/8cb9cf18-8fdb-b180-f514-275f20497e72.png)

### Microsoft Edge の制限
Microsft Edge は、デフォルトで localhost へのアクセスができません。これを変更するには、アドレスバーに edge://flags と入力し localhost へのアクセスを許可する必要があります。

![Screen Shot 2022-12-01 at 20.59.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156216/433cd38b-ee81-4ed7-cd67-ab32e8d0c01a.png)


しかし、こちらを有効にしても変わりませんでした。上記設定をよくみると、これは https への制限で、今回問題になっている http では影響ありません。そもそも T-DASH の起動画面自体が http://localhost:8686 なので（下図参照）、もしこれが制限ならそもそも起動していないはずです。

![Screen Shot 2022-12-01 at 22.51.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156216/e0f36fa2-f8d2-10be-5b66-d5cc33751f25.png)


### hosts に localhost を記載する
もしかしたら名前解決ができていないのかもしれないと、C:¥Windows¥System32¥drivers¥etc¥hosts を開いてみました。デフォルトで localhost がコメントアウトされていたので、もしかしたらこれかも！と思いましたが、これも違いました。

![Screen Shot 2022-12-01 at 21.17.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156216/a7239c27-2bba-451f-ec50-cf5d7c7c5720.png)

### T-DASH のプロキシ設定を消す
本記事の冒頭で、簡単にできるようになったと喜んで設定したプロキシですが、どうもこれがおかしそうなので外してみます。しかし変わりませんでした。それどころが、次回起動時に再度認証が必要になり、ライセンスキーをもう一度入力する手間も発生しました。

## 動くパターンと動かないパターンを発見！
全く手がかりがつかめず、途方に暮れていたところ、突然正常に動きました！

![Screen Shot 2022-12-01 at 23.03.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156216/45d2409e-8cf4-a70a-0cd9-2431274e2ab3.png)

テストレポートも問題ありません！

![Screen Shot 2022-12-01 at 23.03.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156216/35a51a5d-69ba-2870-e881-e7fe73741479.png)


何が起こったの？？冷静に手順を見直して、動くパターンと動かないパターンを整理することができました。

:::note info
**動くパターン**
- T-DASH を起動
- 一度プロキシの設定を空にする
- T-DASH 終了
- 再度 T-DASH 起動
- 外部に接続できず認証エラーになるので、プロキシを入力
- シナリオを実行（この時広告は表示されない）
- 問題なく動作
:::

:::note warn
**動かないパターン**
- プロキシの設定がある状態で終了
- 再度 T-DASH を起動（プロキシ設定済みなので問題なく認証され起動）
- シナリオを実行
- 広告が表示されるので「続行する」をクリック
- localhost に接続できずエラー発生
:::

## まとめ
上記のパターンを何度か繰り返し、100% 再現することを確認しました。どうも、認証エラー後にプロキシを登録して起動すると、初回は広告が表示されないようです。その後一度終了して再度起動すると、2 回目からはシナリオ実行時に広告が表示されます。下記のような画面です。

![Screen Shot 2022-12-01 at 22.18.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156216/ac43e5e6-8b88-06f8-db6b-3eb51da30f31.png)

今回、コンピュータでのプロキシは設定していないため、広告を取得できず何も表示されません。ここで「続行する」ボタンを押して進むと、localhost に接続できないエラーになります。何度繰り返しても、同じ動作になりました。

:::note warn
プロキシを設定したままで起動して広告がでると、エラーになってテストが実行できないようです。
:::

今回は無料プランの T-DASH を使っているため、広告がでるとエラーになることがわかりました。有料プランで広告表示がなければ、この問題は発生しないのかもしれません。

## 回避策
以上の内容から、初回起動時は問題なく動作しますが、2 回目以降広告が表示されると動かないことがわかりました。そのため終了時に必ずプロキシの設定を削除し、起動時に毎回ライセンスキーの入力をすることが一つの回避策になります。しかし、その後いろいろと試したところ、no_proxy で localhost を除外することでも問題なく動きましたので、最後にその手順をまとめます。

まずはシステムのプロパティから「環境変数」をクリックします。

![Screen Shot 2022-12-03 at 21.10.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156216/416e8fc7-9d46-4d52-9dc9-2e0544160ea7.png)

すると環境変数の画面になりますので「新規」をクリックします（一部、画像をマスクしています）。


![Screen Shot 2022-12-03 at 21.09.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156216/574bc442-2cb6-1d89-b6f9-bb10e8d16cf2.png)


具体的に追加する内容は、次のようになります。

![Screen Shot 2022-12-03 at 21.41.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156216/5905306b-56a8-a089-d8d8-a8a04179ba13.png)


入力後、OK を押して完了です。念の為、コマンドプロンプトで正常に環境変数が反映されたことを確認します。

![Screen Shot 2022-12-03 at 21.20.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156216/7a03d613-d2bb-502f-da1a-b676a6a68534.png)

上記の設定を行うことで、2 回目以降の起動時にも問題なく動作することが確認できました。


# 終わりに
今回、T-DASH のプロキシ設定が楽になったのでプロキシが必要な環境での活用例を検討してみようと思っていたところ、意外な問題に遭遇してそれだけのレポートとなってしまいました。T-DASH の日本語でのテストケースや、画面キャプチャでの要素取得は非常に使いやすいので、今後改めてそれらを使ったレポートをしてみたいと思います。最後までお読みいただき、ありがとうございました。