はじめに
この記事では「この前リリースされた機能って実際に動かすとどんな感じなんだろう」とか
「もしかしたら内容次第では使えるかも??」などAWSサービスの中でも特定の機能にフォーカスして検証していく記事です。
主な内容としては実践したときのメモを中心に書きます。(忘れやすいことなど)
誤りなどがあれば書き直していく予定です。
今回はAgentCore BrowserでテストフレームワークのPlaywrightによるテストを検証してみます。
おいおいおいおい、AgentCore BrowserでChromeベースのブラジングができるだって??
これはもうやるかない。やらないって選択肢ある?もう片足をBedrockしてるだろ?やるしかねぇんだこれ。
ということでやってみることにしますが、Amazon Bedrockしかり、AgentCoreでテストができることの素晴らしさについて
まずはみていこうと思います。
そもそもクラウド上でE2Eテストを実施する時代
もう答えを書いちゃいますが、今はクラウド上でE2Eテストを実行する時代です。
お隣のAzureを見てみるともうApp Testingに統合されちゃいましたが、Microsoft Playwright Testingというサービスでクラウドベースのブラウザテストができるようになっています。
AWSでもそういうことがやれたらなぁと思った人は多いんじゃあないんでしょうか。
※実際、AWSではこういったことがネイティブにできませんでした。
余談:Playwrightって何よ?
簡単に説明するとMicrosoftが開発したテスト自動化フレームワークです。
このQiitaの筆者も過去に何度かお世話になっており、好きすぎてこのテーマでN+1回登壇しています。
ハンズオン
Playwright熱がこもりすぎて爆熱ゴッドフィンガーしちゃうのでそろぼち検証します。
おおまかな手順としては以下のとおりです。
- 環境構築
- Playwrightでテストを書く
- pytestで実行
初めての方もいると思うので準備体操から始めていきます。なお、認証についてはIAM Identity Centerを使ってアドミンアクセスしていますが
慣れた認証方法でアドミン相当の権限を使っていただければと思います。
GitHubリポジトリのクローン
まずは以下のGitHubリポジトリをクローンします。
git clone https://github.com/ymd65536/AgentCoreBrowserPlaywrightTesting.git
cd AgentCoreBrowserPlaywrightTesting
環境構築
今回はuvを使います。
curl -LsSf https://astral.sh/uv/install.sh | sh
インストールできたらバージョンを確認します。
uv --version
# uv 0.9.16
仮想環境を作成します。
uv venv .venv
仮想環境をアクティベートします。
source .venv/bin/activate
バージョンを確認します。
python --version
# Python 3.12.1
必要なパッケージをインストールします。
uv pip install bedrock-agentcore playwright boto3 nest-asyncio
インストールが完了したら、以下のスクリプトを実行します。今回はライブView機能を使うので実行できたら以下のURLにアクセスしてライブViewを確認してください。
python playwright_sample/main.py
スクリプトの内容は以下のとおりです。
pytestのインストール
動作確認ができたところで今回はpytestを使ってテストするため、追加で必要なパッケージをインストールします。
uv pip install pytest pytest-asyncio
Playwrightでテストを書く
テストを実行します。今回はtestsというディレクトリにすでにテストコードがあるのでpytestで実行します。
以下のコマンドでテストを実行します。
pytest
実行結果
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
========================== short test summary info ==========================
FAILED tests/test_page_title.py::test_page_title_exact_match - AssertionError: Page title 'Overview - Amazon Bedrock AgentCore' does no...
================== 1 failed, 1 passed, 1 warning in 19.64s ==================
Playwrightでのテストが実行できました。1件失敗していますが、これはタイトルの完全一致を確認しているためです。
全てpassしなかったですが、AgentCore Browser上でPlaywrightのテストが実行できました。
AgentCoreBrowser上でテストが実行できることの凄さ
AgentCoreBrowser上でPlaywrightのテストが実行できることの凄さについて考えてみます。
簡単に3つくらい挙げてみると以下のとおりです。
- インフラの管理が不要である点
- Playwrightのセットアップが不要である点
- Amazon Bedrockとの連携が容易である点
順番に説明します。
インフラの管理が不要である点
従来、E2Eテストを実行するためには、テスト用のインフラを構築・管理する必要がありました。
これには、仮想マシンやコンテナのセットアップ、ブラウザのインストール、ネットワーク設定などが含まれます。
AgentCoreBrowserを使用することで、これらのインフラ管理の負担が大幅に軽減され、テストに集中できます。
さらに言うと、これがAWSのマネージドサービスで提供されることで、スケーラビリティや可用性も自動的に確保されます。これは革命的なことです。
サーバサイドでPlaywrightのセットアップが不要である点
Playwrightを使用するためには、通常、ローカル環境やCI/CDパイプラインでのセットアップが必要です。ブラウザのインストールも必要であり、環境ごとに異なる設定が必要になることもあります。AgentCoreBrowserを使用することで、これらのセットアップ作業が不要になります。
なお、AgentCoreBrowserにはChromeが組み込まれていることがドキュメントから確認できます。
AgentCore Browser enables your agents to interact with web pages through a managed Chrome browser. The agent can navigate websites, search for information, extract content, and interact with web elements in a secure, managed environment.
引用:Get started with AgentCore Browser
ただ、他のブラウザが必要な場合は別の方法で対応する必要があります。
Amazon Bedrockとの連携が容易である点
AgentCoreBrowserはAmazon Bedrockとシームレスに連携できるため、LLMを活用した高度なテストシナリオの実装が容易になります。例えば、LLMを使用して動的にテストケースを生成したり、テスト結果の解析を自動化したりすることが可能です。
また、AWSの他のサービスとも連携しやすいため、テストデータの管理やレポートの生成なども効率的に行えます。AWSのエコシステム内で完結するため、セキュリティやコンプライアンスの要件も満たしやすくなります。
まとめ
AgentCoreBrowser上でPlaywrightのテストが実行できることが確認できました。
Playwrightのセットアップが不要であり、インフラ管理の負担が軽減される点、Amazon Bedrockとの連携が容易である点など、多くの利点があります。
個人的にはPlaywrightのセットアップが不要になる点が非常に大きいと感じています。
今後も色々と検証していきたいと思います。