More Related Content
Similar to Autify User Meetup LT "Slack通知" (20)
Autify User Meetup LT "Slack通知"
- 2. 2020© DIVA CORPORATION All rights reserved.
Who am I...
Name:船橋 篤史(Funahashi Atsushi)
Company:株式会社 ディーバ
Role:SRE 兼 Scrum Master 兼 周辺チームのQA系に口出したりツールもって来たりする人
- 7. 2020© DIVA CORPORATION All rights reserved.
Slackの通知連携って便利だよね!?
皆さんは、Slackと連携してますか?
テスト結果を教えてくれます。
もし、してない方は...
https://docs.autify.com/ja/integrate-with-slack
ドキュメントを参考に今すぐ連携!
- 9. 2020© DIVA CORPORATION All rights reserved.
Slackの通知連携って...
1つのチャンネルにしか通知できない!
複数のサービスを開発しているから通知もチャンネルを分けたいんだ!
プロジェクト追加の契約をすれば解決するって聞いたけど...
- 10. 2020© DIVA CORPORATION All rights reserved.
よ~し、エンジニアリングで解決だ!
Autify API と Slack API を使おう!
1)Schedule Execute
2)Get Results
3)Post Message
# スケジュールの結果をゲットする
$result = Invoke-RestMethod -Method "GET" "https://app.autify.com/api/v1/projects/${autify_projects}/results/${autify_results}" -
Headers $autify_headers
# スケジュールの結果
$result_status = $result.status
# 各シナリオの結果
foreach ($status in $result.test_plan_capability_results.test_case_results.status) {
if($status -eq "passed"){
$passedcount +=1
}else{
$failedcount +=1
}
}
~~ 送りたいテキスト作って ~~
# SlackへGO
Invoke-RestMethod -Method "POST" "https://slack.com/api/chat.postMessage" -Headers $slack_headers -Body $body_json
- 11. 2020© DIVA CORPORATION All rights reserved.
よ~し、エンジニアリングで解決だ!
□ 複数のチャンネルに通知が送れるようになったよ
□ テスト結果によって通知の方法が変えられるよ
■ Test Passed のときは通知すら不要(チャンネルが白いのすらウザいし気になる)
■ Test Passed のときも通知するけど、Failedがあったら @channel で通知する
□ 絶対に見てほしいときはメンションで気づかせる!
- 14. 2020© DIVA CORPORATION All rights reserved.
そもそもなぜAutifyを利用しているのか?
Selenium IDEやKatalonではなく、他のRecord & PlayBack形式のテストツールでもなく Autifyなのか?
セルフヒーリング!
- 15. 2020© DIVA CORPORATION All rights reserved.
それを踏まえて...
Passed!大満足!?
Need Review が待っているんだよ...
ニコッてないでAutifyさ出してよ
- 16. 2020© DIVA CORPORATION All rights reserved.
どうしよう
Autify APIは Need Reviewまで教えてくれないんだ...
痒いところに手が届かない!!!(ディスってないよ)
- 17. 2020© DIVA CORPORATION All rights reserved.
当然エンジニアリングで解決だ!
サイト見に行けばいいじゃん。簡単だな
1)ログイン
2)スケジュール結果のページに移動
3)Need Review探す
4)Post Message
つまり...
Headless
+
+
= 我に敵なし
- 18. 2020© DIVA CORPORATION All rights reserved.
当然エンジニアリングで解決だ!
Add-Type -Path "C:¥temp¥autify¥WebDriver.dll"
# Webdriver 初期化して...
$URL = "https://app.autify.com/users/sign_in"
$options = [OpenQA.Selenium.Chrome.ChromeOptions]::new()
$options.AddArguments("headless")
$driver = [OpenQA.Selenium.Chrome.ChromeDriver]::new($options)
# ログインして
$driver.Url = $URL
$inputID = $driver.FindElementById("user_email")
$inputID.SendKeys("My E-mail Address")
$inputPWD = $driver.FindElementById("user_password")
$inputPWD.SendKeys("My Password")
$driver.FindElementByXPath("//*[@id=""new_user""]/input[3]").Click()
# 結果のページに遷移して...
$driver.Url = $result_url
# Need Reviewを探すよ
if ($driver.FindElementsByClassName("test-result-list-warning").Count -gt 0){
$needReview = "Need Review"
}
# 本当は Curl(Invoke-WebRequest)だけで解決したかった...
# Autifyの認証がよくわからん、私の技術力じゃ解決できなかった!!!
$app = Invoke-WebRequest -Method "GET" "https://app.autify.com/users/sign_in" -SessionVariable autify
# Form に突っ込んだり...
$form = $app.Forms[0]
$form.Fields["user_email"] = "My E-mail Address"
$form.Fields["user_password"] = "My Password"
$body=$form.Fields
# Json Body だったり...
#$body = @{
# "user%5Bemail%5D"="My E-mail Address"
# "user%5Bpassword%5D"= "My Password"
# }
# 色々試したけど...
Invoke-WebRequest -Method "POST" "https://app.autify.com/users/sign_in" -ContentType "application/x-www-
form-urlencoded" -Body $body -WebSession $autify
# Status 400 が帰ってきたよ \(^o^)/
- 20. 2020© DIVA CORPORATION All rights reserved.
まとめ
5分間、単にネタLTしていたわけじゃない!
「〇〇がないと困る」といったテスト活動に必要なものはAutifyに
「△△があるとよりよい」「××がないと物足りない」といった便利なものは自作で
といった選択を取れば、Win-Winな形になるのではないか
っていうか、エンジニアたるもの便利な機能がなければ、エンジニアリングで解決しちゃうし
□ Slack連携がいまいちだったのでAPIを活用
□ Slack連携とAPIがAutifyさを出していなかったので、Webも活用