ページオブジェクトモデル
はじめに
大規模なテストスイートは、作成と保守の容易さを最適化するために構造化できます。ページオブジェクトモデルは、テストスイートを構造化するアプローチの一つです。
ページオブジェクトは、Webアプリケーションの一部を表します。eコマースのWebアプリケーションには、ホームページ、リストページ、チェックアウトページがある場合があります。それぞれのページは、ページオブジェクトモデルで表現できます。
ページオブジェクトは、アプリケーションに適した高レベルAPIを作成することで作成を簡素化し、要素セレクターを1箇所に集約し、再利用可能なコードを作成することで保守を簡素化します。
実装
ページオブジェクトモデルは、PlaywrightのPageをラップします。
using System.Threading.Tasks;
using Microsoft.Playwright;
namespace BigEcommerceApp.Tests.Models;
public class SearchPage
{
private readonly IPage _page;
private readonly ILocator _searchTermInput;
public SearchPage(IPage page)
{
_page = page;
_searchTermInput = page.Locator("[aria-label='Enter your search term']");
}
public async Task GotoAsync()
{
await _page.GotoAsync("https://bing.com");
}
public async Task SearchAsync(string text)
{
await _searchTermInput.FillAsync(text);
await _searchTermInput.PressAsync("Enter");
}
}
ページオブジェクトは、テスト内で使用できます。
using BigEcommerceApp.Tests.Models;
// in the test
var page = new SearchPage(await browser.NewPageAsync());
await page.GotoAsync();
await page.SearchAsync("search query");