Amazon CloudWatch Syntheticsにビジュアルモニタリング機能が追加されました

2021.08.06

いわさです。

Amazon CloudWatch Syntheticsにビジュアルモニタリング機能が追加されました。 これによってベースラインスクリーンショットに基づく視覚的な変化を検出することが出来ます。

本日は、早速使い勝手などを見てみました。

CloudWatch Syntheticsについては以下を参照ください。

ビジュアルモニタリングとは

監視中にスクリーンショットを取得する機能は以前からありましたが、今回のアップデートで継続的な監視を行った際にスクリーンショットがこれまでのベースラインからどれだけ差異が発生したかに基づいて成功・失敗の判定を行えるようになりました。
これによってスクリプト化が難しい、UI上の変化を監視することが出来るようになります。

この機能を使うためにはCanaryスクリプトコードに以下を追加する必要があります。

syntheticsConfiguration.withVisualCompareWithBaseRun(true);

syn-puppeteer-node-3.2以降を実行しているCanaryで利用可能です。
実はブループリントも追加されているのでそれを使って試しに動かしてみましょう。  

動かしてみる

CodeStarでサンプルサイトを作成し、Canaryの設定を行います。
ブループリント選択時にVisual Monitalingが選べますのでそれを選択してそのまま作成までいきましょう。

スクリプトはこのあたりがビジュアルモニタリングに必要な追加の設定箇所ですね。

Canaryをデプロイし、実行結果を確認します。
まずは、従来どおりCanaryが動いているか先に確認しましょう。

1分ごとに実行出来てますね。

さて、ここでサイトを変更してみましょう。

何故か触ったことの無いLaravelでCodeStarを作ってしまいましたが、MVCなWebアプリはルーターかコントローラーから掘り下げればどうにかなります。
reousrces/views/welcome.blade.phpってのがありました。これな気がしますね。
中身を見てみましょう。

複雑な背景が表示されていたと思いますが、パスで描画していたのですね。
このあたりを変更するのは難しそうなので、今回は文字を変えてみましょうか。

CodeCommitリポジトリにプッシュするとパイプラインが動きます。

いいですね。CodeStarは本当に検証用Webサイト用意するのに便利ですね。

デプロイされました、Canaryを確認してみましょう。

失敗になりましたね!
スクリーンショットタブを見てみましょう。
エラーメッセージに、ベースラインスクリーンショットから0.04%変わったからエラーにしたぞ、と表示されていますね。

すごい。

SynthesissConfiguration.withVisualVarianceThresholdPercentage(desiredPercentage)

で0%を指定していたので、少しの差分も見逃さないって感じですね。
このパラメータを調整することで軽微な範囲であれば許容し、大きく崩れた場合のみ検出するなど出来そうです。

ベースラインの更新

さて、エラーを確認出来ましたが想定していたデプロイなのでエラーが出続けるのは困ります。
ベースラインスクリーンショットを更新する機能がありますので、更新しましょう。

Canaryの編集からVisual Monitoringの項目でSet next run as new baselineにチェックを入れて、Canaryを更新します。

更新後、成功になりましたね。

まとめ

CloudWatch Syntheticsはサクッと始められて便利な監視機能だと思っていましたが、スクリプトでの判定が難しい部分もビジュアルモニタリングによってより視覚的な画像比較が出来るようになりました。
また、ブループリントも追加されており始めやすいと思いますので、是非使ってみてください。