Autify CLIをはじめよう


*この記事は [Autify アドベントカレンダー2022](https://qiita.com/advent-calendar/2022/autify) の2日目のエントリです。*

----

こんにちは。Autify カスタマーリライアビリティエンジニアの堀です。

嬉しいことに、今年はAutifyにとって、たくさんのインテグレーション関連の発表が行われた年でした。挙げるだけでも...

- [Autify Command Line Interface (CLI)](https://help.autify.com/docs/ja/autify-command-line-interface)
- [GitHub Actions 連携](https://help.autify.com/docs/ja/github-actions-integration)
- [CircleCI 連携](https://help.autify.com/docs/ja/circleci-integration)
- [Jenkins 連携](https://help.autify.com/docs/ja/jenkins-integration)
- [GitLab CI/CD 連携](https://help.autify.com/docs/ja/gitlab-cicd-integration)
- [Azure Pipelines 連携](https://help.autify.com/docs/ja/azure-pipelines-integration)
- [AWS CodeBuild 連携](https://help.autify.com/docs/ja/aws-codebuild-integration)

と、さまざまなプラットフォームでAutifyのテストをパイプラインに組み込めるインテグレーションが、怒涛の如くリリースされています。

中でも汎用的なCLIの誕生は、多くのAutifyユーザーの皆様のお役に立つことでしょう。
そこで、当記事では **「Autify CLIをはじめよう」** と題しまして、CLIを使ったことのない方にもぜひ試していただけるようなご紹介をできればと思います！

# Autify CLIとは？

Autify CLIは、コマンドラインのインターフェイスからAutifyに対する一連の操作を行えるツールです。

Autify CLIを使うと、Autify for WebおよびAutify for Mobileに対して

- **テスト実行**
- **テスト結果の取得**
- **Autify Connect連携のための操作**
- **APIコマンドの簡単な実行（シナリオ一覧の取得など）**

といった操作を、画面のUIを介することなく、簡潔なコマンドで実行することができます。

Autify CLIは、Autifyをご利用のユーザーの皆様はどなたでもご利用いただけます。Windows/macOS/Linuxのプラットフォームに対応しており、各環境に合わせたインストール方法をご用意しております。

詳しい導入方法は以下の公式ドキュメントをご覧ください。
https://help.autify.com/docs/ja/autify-command-line-interface

# ウォーミングアップ

さて突然ですが、Autifyで以下のことをやろうとした場合には、どんな操作が必要でしょうか？

```
Autify for Webで
とあるシナリオを
Pixel 2 (Emulator) 上で
実行して
テストが終わるまで待ってから
結果を確認し
失敗していた場合には
1回だけテストを再実行する
```

これをAutifyの画面UI上でやるとしたら、きっとこんな感じになるでしょう。

```
Autify for Webにログインして
テストプランを作成し
シナリオと実行環境を指定して
実行ボタンをポチっとし
Slack設定してたらSlack通知から
そうでなければ一覧画面を見て
得られたテスト結果が❌だったら
もう一度実行ボタンをポチっとする
```

なんとまあ、立派なポエムのできあがりです。
ですが、このポエムをCLIでの実行に置き換えると...

```
autify web test run [シナリオのURL] --wait --os "Android" --device "Pixel 2" --device-type "emulator" --max-retry-count 1
```

たったこの1行で一連のプロセスを実行することができるのです！

このようなコマンドでの実行は、CI/CDパイプラインなどで自動化を行うフローに組み込むのはもちろんのこと、お手元のマシンでブラウザを立ち上げることなくサクッとテストを回したいといった場合にも便利です。

# 実行してみよう

では、実際に上記で紹介したコマンドを実行してみましょう。

テストの実行が始まると車が走り出します。かわいいですね。

![Screen Shot 2022-12-02 at 20.32.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2291785/41b6c224-e83d-a6a4-3c4c-935a81e339e7.png)

`--wait` オプションをつけていた場合には、テスト実行が完了し次第、結果が表示されます。

![Screen Shot 2022-12-02 at 20.35.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2291785/6ddd0378-5dbe-3272-275f-0f84063305f0.png)

`✅ Test passed!` 成功です！
結果の詳細を見にいきたい場合には、表示されたURLから見にいくことができます。

![Screen Shot 2022-12-02 at 20.11.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2291785/d59ecd4e-650b-409d-23bb-21b43ff921d9.png)

期待通り、Pixel2のEmulatorで実行されたテスト結果ができていますね！

`autify web test run` の直後に指定するURLは、シナリオのURLやテストプランのURLをそのまま指定すればどちらでも実行できるのが便利です。また、ご紹介したコマンドに含まれていた実行環境や待機のオプションの他にも、URL置換やテスト結果の名称指定（シナリオURL指定時のみ）など、さまざまなオプションが用意されています。

**2022年12月現在の `autify web test run` コマンドオプション：**

```
USAGE
  $ autify web test run [SCENARIO-OR-TEST-PLAN-URL] [-n <value>] [-r <value>] [--autify-connect <value> |
    --autify-connect-client] [--autify-connect-client-verbose ] [--autify-connect-client-file-logging ]
    [--autify-connect-client-debug-server-port <value> ] [--autify-connect-client-extra-arguments <value> ] [--os
    <value>] [--os-version <value>] [--browser <value>] [--device <value>] [--device-type <value>] [-w] [-t <value>]
    [-v] [--max-retry-count <value>]

ARGUMENTS
  SCENARIO-OR-TEST-PLAN-URL  Scenario URL or Test plan URL e.g.
                             https://app.autify.com/projects/<ID>/(scenarios|test_plans)/<ID>

FLAGS
  -n, --name=<value>                                 [Only for test scenario] Name of the test execution.
  -r, --url-replacements=<value>...                  URL replacements. Example: http://example.com=http://example.net
  -t, --timeout=<value>                              [default: 300] Timeout seconds when waiting for the finish of the
                                                     test execution.
  -v, --verbose                                      Verbose output
  -w, --wait                                         Wait until the test finishes.
  --autify-connect=<value>                           Name of the Autify Connect Access Point.
  --autify-connect-client                            Start Autify Connect Client
  --autify-connect-client-debug-server-port=<value>  Port for Autify Connect Client debug server. A random port will be
                                                     used if not specified.
  --autify-connect-client-extra-arguments=<value>    Extra command line arguments you want to pass to Autify Connect
                                                     Client e.g. "--tunnel-proxy http://proxy".
  --autify-connect-client-file-logging               Logging Autify Connect Client log to a file instead of console.
  --autify-connect-client-verbose                    Verbose output for Autify Connect Client.
  --browser=<value>                                  [Only for test scenario] Browser to run the test
  --device=<value>                                   [Only for test scenario] Device to run the test
  --device-type=<value>                              [Only for test scenario] Device type to run the test
  --max-retry-count=<value>                          Maximum retry count while waiting. The command can take up to
                                                     `timeout * (max-retry-count + 1)`. Only effective with `--wait`.
  --os=<value>                                       [Only for test scenario] OS to run the test
  --os-version=<value>                               [Only for test scenario] OS version to run the test

```

数々のオプションにグッときましたか？ ぜひお手元で動かしてみてください！

また、Autify CLIには、`autify web test run` の他にもさまざまな便利なコマンドがあります。詳しくは[GitHub上にあるREADME](https://github.com/autifyhq/autify-cli)、および実際にコマンドを実行して表示されるヘルプをご確認ください。

# おわりに

Autify CLIでは、皆様からの「CLIでこんなことができると嬉しい」といったリクエストも受け付けております。もし何かアイデアがございましたら、チャット、またはGitHub上のissuesまでお気軽にお寄せください！

https://github.com/autifyhq/autify-cli/issues

# おまけ：Autify社内でのナレッジ共有

今回のCLIのように、新しい機能やインテグレーションがリリースされると、AutifyのRevenueチーム（セールス＆マーケティング、カスタマーサクセス＆サポート）では、それらの使い方を共有するセッションを不定期に開催しています。ときにはお隣のテクニカルサポートのチームや実際に機能を開発したエンジニアリングのメンバーを招きながら、あるいはUSのチームのリクエストに応じて英語で、わいわい質問を交えつつ実施することも。実はこの記事の内容も、こういったナレッジ共有セッションで実施したことをベースにしたものです。

**社内セッションの例（サムネもコマンドミスもご愛嬌）**

https://www.youtube.com/watch?v=4h2kz_3BbkA

このような社内セッションにRevenueチームのメンバーが高い熱量で参加してくたり、実際に開発を担当したエンジニアの皆さんともすぐに会話できる距離感があることは、Autifyのすごく好きなところです。

ちょっぴり早いですが、来年もワクワクするような機能やその活用方法をユーザーの皆様へお届けできる年になることを願いながら、記事を締めくくらせていただきます🎄