Autify APIとRetoolで自分用の「今すぐ実行」ボタンを作る
この記事はAutifyアドベントカレンダー2022の6日目の記事です。
こんにちは!AutifyでカスタマーサポートサポートエンジニアをしているHirokiです。
今回は業務で使おうとしたものの結局断念し放置していたRetoolというツールを使って、Autifyに関連したちょっとだけ便利なツールを作成してみようと思います。
Autifyにはシナリオをサクッと実行できる「今すぐ実行」というボタンが存在します。
「今すぐ実行」は Chrome/Linux と iPhoneX(Emulator) に対応しており、その他の環境で実行したい場合はテストプランを作成する必要があります。
現在はテストプランを作成せずにシナリオを実行できる便利なAPIやCLIが用意されているのですが、今回はこのAPIとRetoolを使って、Chrome/Linux と iPhoneX(Emulator) 以外の環境の「今すぐ実行」ボタンを作ってみたいと思います。
Retoolとは
RetoolのWEBサイトに行ってみると、「Build internal tools, remarkably fast」とあります。主に社内ツールの構築を得意としたローコードツールのようです。実際に使ってみたところ、UIの構築をドラッグアンドドロップで行うことができ、非常に直感的に画面を作成できました。
また、RetoolはデータベースやAPIなどのさまざまな外部システムとの連携にも対応しています。そのため、今回私が作成しようとしている「今すぐ実行」ボタンのように、ボタンをクリックしたらAPIを実行するといった画面を作成することも可能です。
早速実装してみよう
Retoolの説明はこれくらいにしておいて、早速実装してみましょう。ちなみにFreeプランで問題なく実装が可能でした。
Appを作成する
Retoolにログインが完了したら、まずは「App」を作成します。
するとAppの編集画面に遷移します。
右側には画面を構成するための入力欄やボタンの部品がありますね。この部品を真ん中の「Main」欄にドラッグアンドドロップし、画面を組み立てていきます。
下側にはResourceといってデータベースやAPIなどの外部システムとの設定をする箇所があります。ここでAutify APIを実行するための設定をします。
Autify API用のResourceを作成する
画面を作成する前にAutify APIを実行するためのResourceを作成しましょう。
画面下部にあるResourceのプルダウンを開き、「Create a new resource」をクリックします。
「Select a resourece type」が表示されるので、REST APIを選択します。
以下の画面が表示されるので、Base URLにproject id
を含んだAPIのURLとHeadersにAPIのパーソナルアクセストークンを設定します(パーソナルアクセストークンは個人設定画面より作成してください)。この記事では execute_scenarios
APIしか使用しませんが、今後他のAPIをRetoolで使用する場合はこのResourceを流用できます。
設定後「Create resource」が成功すると、App編集画面の下部で、作成したAutify APIのResourceが選択できるようになっています。
画面を作成する
APIのResourceが作成できたので、次はいよいよ画面を作っていきましょう!
ここでは「Edge / Windows Server」環境で実行できるボタンを作っていこうと思います。
画面に必要な部品として以下のものがあります。
- シナリオIDの入力欄
- テスト実行時の名前
- 「今すぐ実行」ボタン
- 実行したテスト結果のURLの表示欄
1はシナリオIDなので、「Number Input」Componentを使います。2は名前なので「Text Input」、3は「Button」、4は「Text」を使います。とりあえずドラッグアンドドロップでざっと組み立てると以下のようになります。
ラベルとテキストを編集する
ラベルとボタンのテキストがデフォルトのままで寂しいので編集しましょう。ComponentをクリックするとInspectが開くので編集します。
まだ何も動きませんが、ちょっとだけ様になりましたね😎
バリデーション
Retoolではバリデーションが可能です。バリデーションをしなくても動くものは作れますが、せっかくなので追加しましょう。
シナリオIDを「Number Input」にしましたが、マイナスの値はあり得ないので、一応minimum
を0にしておきます。また、シナリオを実行するにはシナリオIDとテスト実行名が必須なので、required
にしておきましょう。
さらに言えば、この2つが入力されるまでボタンは非活性にしておきたいところです。RetoolではDisabledの条件を設定することが可能です。
numberInput1.value
というのはシナリオID、textInput1.value
というのはテスト実行名に設定された値を指しています(numberInput1
やtextInput1
はデフォルトの値なので任意の値に変更可能です)。
シナリオIDはデフォルトが0なので0以外が設定されていればOK、テスト実行名は何かしらが設定されていればOKというざっくりなバリデーションを設定しました。
ここでもう一度ボタンを見ると、非活性になっていることがわかります。
これでシナリオIDとテスト実行名が正しく入力されない限りはボタンをクリックすることができなくなりました👍
ボタンにResourceを紐づける
次にボタンにResourceを紐づけましょう。現在ボタンはクリックしても何も起きない状態です。そこでボタンに作成したAPI Resourceを紐づけて、クリックしたらAPIが呼び出されるようにしましょう。
ボタンComponentをクリックしInspectを開き、Event Handlersの隣の「+Add」をクリックします。するとEdit click handlerが開きQueryが選択状態になります。これでAutify APIのResourceが選択されている状態になり、クリックをした時にAutify APIが呼び出されるようになります。
ちなみにOnly run whenという項目があり、この設定でもシナリオIDとテスト実行名が設定されている時だけ実行するようなバリデーションをかけることが可能ですが、ここでは割愛します。
Resourceにbodyを設定する
あと少しです!
これでボタンをクリックしたらAPIを呼び出す準備が整いましたが、このままだとAPIのエンドポイントが不十分です。また、設定したシナリオIDとテスト実行名がAPI実行時に使われていない状態です。再び、ページ下部のResourceを編集しましょう。
編集点は以下です。
- Action typeをPOSTにする
- Autify APIのResourceでBase URLは設定されている状態なので、
execute_scenarios
を追加する - Headersに'Content-Type: application/json'を設定する
- BodyをRawにし、以下を設定する
{
"name": {{ textInput1.value }},
"execution_type": "sequential",
"capabilities": [
{
"os": "Windows Server",
"os_version": "2019",
"browser": "Edge",
"browser_version": "107.0",
"device": null,
"device_type": null
}
],
"scenarios": [
{
"id": {{ numberInput1.value }}
}
]
}
name
にはテスト実行名に入力された値、scenarios
のid
にはシナリオIDに入力された値を設定します。直列/並列(execution_type
)と実行環境(capabilities
)は今回は直列と Edge/Windows Server を設定します。編集が終わったら「保存」しましょう。
「今すぐ実行 Edge/Windows Server」ボタンを押してみよう!!!
これで準備は整いました!
早速「今すぐ実行 Edge/Windows Server」ボタンを押してみましょう!
エラーが発生せず、Responseにresult_id
が返ってきていますね。
これでボタンクリックでテスト実行ができるようになりました。
テスト結果URLを作成する
テスト実行をすることはできましたが、テスト結果を確認するにはAutifyに戻ってテスト結果を開く必要があります。これは手間なので、Responseで返ってきたresult_id
を元にテスト結果URLを生成・画面上に表示し、クリックで画面遷移できるようにしましょう!
実行したテスト結果のURLの表示欄ように作成しておいた「Text」ComponentをクリックしてInspectを開きます。
TextのvalueにどのようにAPIのResponseで返ってきたresult_id
を設定すれば良いでしょうか?試しにquery1と打ってみます(query1はAutify API Resourceに付けられているデフォルトの名前です)。
するとサジェストでquery1.data
と出てきました。もしかして、この後にresult_id
と打てる?と予想して打ってみるとサジェストされました!
ここまで来たらあとはテスト結果のURLと結合するだけです。
https://app.autify.com/projects/xxx/results/{{ query1.data.result_id }}
これで全てのパーツが揃いました!
Preview
完成したので右上のPreviewをクリックしてみましょう。
編集画面が消えて、アプリっぽくなりました。
もちろんこの画面からも実行可能です。
今回は自分一人用に作成していますが、他のユーザとも共有が可能です。
最後に
今回はRetoolを使って、自分用の「今すぐ実行」ボタンを作成してみました。思いついてから実際に作成して形になるまで1時間程度で作成することができました。あまりRetoolのドキュメントは読まずに勘で作ったのですが、そこまで躓かずに作成できたのがすごいなと思いました。
ボタンは複製できるので、UI的には難ありですが、よく使うであろう環境の「今すぐ実行」ボタンをいくつか作っておくのも良さそうです!
Discussion