azure-resource-manager-playwright-dotnet について
Azure Resource Manager を通じて Microsoft Playwright Testing のワークスペースを管理する .NET スキルです。テスト実行ではなく、リソースの作成と管理を扱います。
主な機能
- 01ワークスペースの作成と更新
- 02ワークスペースの取得と一覧表示
- 03ワークスペース名の利用可否確認
- 04サブスクリプションとワークスペースのクォータ確認
- 05ワークスペースの削除
活用シーン
- 01Playwright Testing ワークスペースの作成
- 02ワークスペースの状態とデータプレーン URI の確認
- 03作成前のクォータ確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill azure-resource-manager-playwright-dotnetインストール後、Claude Code で/azure-resource-manager-playwright-dotnetを入力して読み込まれたか確認します。
詳細
Azure.ResourceManager.Playwright(.NET)
Azure Resource Manager を介して Microsoft Playwright Testing ワークスペースをプロビジョニングおよび管理するための管理プレーン SDK です。
⚠️ 管理とテスト実行の違い
- この SDK(Azure.ResourceManager.Playwright):ワークスペースの作成、クォータの管理、名前の使用可否の確認
- テスト実行 SDK(Azure.Developer.MicrosoftPlaywrightTesting.NUnit):クラウドブラウザーで Playwright テストを大規模に実行
バージョンとプロビジョニングの境界
これらは過去の SDK の断片であり、現在のパッケージやサービスのバージョンを確認したものではありません。プロビジョニングの前に、現在の Microsoft サービスのライフサイクル、パッケージの移行ガイダンス、対象のリソースプロバイダーを確認してください。記載されたサービスが廃止されているか利用できない場合は、作業を中止してください。すべての DefaultAzureCredential ソースが意図したものであると決めつけず、デプロイ環境に適した本番用の認証情報を慎重に選択してください。サブスクリプション、リソースグループ、リージョン、予算、削除対象の範囲を確認してください。リソースの作成には料金が発生し、リモートでのテスト実行や非公開のテスト成果物のアップロードが許可されるわけではありません。
インストール
dotnet add package Azure.ResourceManager.Playwright
dotnet add package Azure.Identity
バージョンの例:v1.0.0 / v1.0.0-beta.1 は過去の参照情報です。使用前に、サポート対象のパッケージを確認してください。
環境変数
AZURE_SUBSCRIPTION_ID=<your-subscription-id>
# For service principal auth (optional)
AZURE_TENANT_ID=<tenant-id>
AZURE_CLIENT_ID=<client-id>
AZURE_CLIENT_SECRET=<client-secret>
認証
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Playwright;
// Always use DefaultAzureCredential
var credential = new DefaultAzureCredential();
var armClient = new ArmClient(credential);
// Get subscription
var subscriptionId = Environment.GetEnvironmentVariable("AZURE_SUBSCRIPTION_ID");
var subscription = armClient.GetSubscriptionResource(
new ResourceIdentifier($"/subscriptions/{subscriptionId}"));
リソース階層
ArmClient
└── SubscriptionResource
├── PlaywrightQuotaResource (subscription-level quotas)
└── ResourceGroupResource
└── PlaywrightWorkspaceResource
└── PlaywrightWorkspaceQuotaResource (workspace-level quotas)
基本的なワークフロー
1. Playwright ワークスペースを作成する
using Azure.ResourceManager.Playwright;
using Azure.ResourceManager.Playwright.Models;
// Get resource group
var resourceGroup = await subscription
.GetResourceGroupAsync("my-resource-group");
// Define workspace
var workspaceData = new PlaywrightWorkspaceData(AzureLocation.WestUS3)
{
// Optional: Configure regional affinity and local auth
RegionalAffinity = PlaywrightRegionalAffinity.Enabled,
LocalAuth = PlaywrightLocalAuth.Enabled,
Tags =
{
["Team"] = "Dev Exp",
["Environment"] = "Production"
}
};
// Create workspace (long-running operation)
var workspaceCollection = resourceGroup.Value.GetPlaywrightWorkspaces();
var operation = await workspaceCollection.CreateOrUpdateAsync(
WaitUntil.Completed,
"my-playwright-workspace",
workspaceData);
PlaywrightWorkspaceResource workspace = operation.Value;
// Get the data plane URI for running tests
Console.WriteLine($"Data Plane URI: {workspace.Data.DataplaneUri}");
Console.WriteLine($"Workspace ID: {workspace.Data.WorkspaceId}");
2. 既存のワークスペースを取得する
// Get by name
var workspace = await workspaceCollection.GetAsync("my-playwright-workspace");
// Or check if exists first
bool exists = await workspaceCollection.ExistsAsync("my-playwright-workspace");
if (exists)
{
var existingWorkspace = await workspaceCollection.GetAsync("my-playwright-workspace");
Console.WriteLine($"Workspace found: {existingWorkspace.Value.Data.Name}");
}
3. ワークスペースを一覧表示する
// List in resource group
await foreach (var workspace in workspaceCollection.GetAllAsync())
{
Console.WriteLine($"Workspace: {workspace.Data.Name}");
Console.WriteLine($" Location: {workspace.Data.Location}");
Console.WriteLine($" State: {workspace.Data.ProvisioningState}");
Console.WriteLine($" Data Plane URI: {workspace.Data.DataplaneUri}");
}
// List across subscription
await foreach (var workspace in subscription.GetPlaywrightWorkspacesAsync())
{
Console.WriteLine($"Workspace: {workspace.Data.Name}");
}
4. ワークスペースを更新する
var patch = new PlaywrightWorkspacePatch
{
Tags =
{
["Team"] = "Dev Exp",
["Environment"] = "Staging",
["UpdatedAt"] = DateTime.UtcNow.ToString("o")
}
};
var updatedWorkspace = await workspace.Value.UpdateAsync(patch);
5. 名前の使用可否を確認する
using Azure.ResourceManager.Playwright.Models;
var checkRequest = new PlaywrightCheckNameAvailabilityContent
{
Name = "my-new-workspace",
ResourceType = "Microsoft.LoadTestService/playwrightWorkspaces"
};
var result = await subscription.CheckPlaywrightNameAvailabilityAsync(checkRequest);
if (result.Value.IsNameAvailable == true)
{
Console.WriteLine("Name is available!");
}
else
{
Console.WriteLine($"Name unavailable: {result.Value.Message}");
Console.WriteLine($"Reason: {result.Value.Reason}");
}
6. クォータ情報を取得する
// Subscription-level quotas
await foreach (var quota in subscription.GetPlaywrightQuotasAsync(AzureLocation.WestUS3))
{
Console.WriteLine($"Quota: {quota.Data.Name}");
Console.WriteLine($" Limit: {quota.Data.Limit}");
Console.WriteLine($" Used: {quota.Data.Used}");
}
// Workspace-level quotas
var workspaceQuotas = workspace.Value.GetAllPlaywrightWorkspaceQuota();
await foreach (var quota in workspaceQuotas.GetAllAsync())
{
Console.WriteLine($"Workspace Quota: {quota.Data.Name}");
}
7. ワークスペースを削除する
// Delete (long-running operation)
await workspace.Value.DeleteAsync(WaitUntil.Completed);
主要な型のリファレンス
| 型 | 用途 |
|---|---|
ArmClient | すべての ARM 操作のエントリーポイント |
PlaywrightWorkspaceResource | Playwright Testing ワークスペースを表します |
PlaywrightWorkspaceCollection | ワークスペースの CRUD 操作用のコレクション |
PlaywrightWorkspaceData | ワークスペースの作成/応答ペイロード |
PlaywrightWorkspacePatch | ワークスペースの更新ペイロード |
PlaywrightQuotaResource | サブスクリプションレベルのクォータ情報 |
PlaywrightWorkspaceQuotaResource | ワークスペースレベルのクォータ情報 |
PlaywrightExtensions | ARM リソース用の拡張メソッド |
PlaywrightCheckNameAvailabilityContent | 名前の使用可否確認リクエスト |
ワークスペースのプロパティ
| プロパティ | 説明 |
|---|---|
DataplaneUri | テスト実行用の URI(例:https://api.dataplane.{guid}.domain.com) |
WorkspaceId | ワークスペースの一意の識別子(GUID) |
RegionalAffinity | テスト実行におけるリージョンアフィニティの有効/無効 |
LocalAuth | ローカル認証(アクセストークン)の有効/無効 |
ProvisioningState | 現在のプロビジョニング状態(Succeeded、Failed など) |
ベストプラクティス
- 処理を続行する前に完了させる必要がある操作には、
WaitUntil.Completedを使用します - 手動でポーリングする場合や、操作を並行して実行する場合は、
WaitUntil.Startedを使用します - 常に
DefaultAzureCredentialを使用し、キーをハードコードしないでください - ARM API エラーを処理するには、
RequestFailedExceptionを処理します - 冪等な操作には、
CreateOrUpdateAsyncを使用します Get*メソッド(例:resourceGroup.GetPlaywrightWorkspaces())を使って階層をたどります- ワークスペースの作成後、テスト実行の構成に備えて DataplaneUri を保存します
エラー処理
using Azure;
try
{
var operation = await workspaceCollection.CreateOrUpdateAsync(
WaitUntil.Completed, workspaceName, workspaceData);
}
catch (RequestFailedException ex) when (ex.Status == 409)
{
Console.WriteLine("Workspace already exists");
}
catch (RequestFailedException ex) when (ex.Status == 400)
{
Console.WriteLine($"Bad request: {ex.Message}");
}
catch (RequestFailedException ex)
{
Console.WriteLine($"ARM Error: {ex.Status} - {ex.ErrorCode}: {ex.Message}");
}
テスト実行との統合
ワークスペースの作成後、DataplaneUri を使用して Playwright テストを構成します。
// 1. Create workspace (this SDK)
var workspace = await workspaceCollection.CreateOrUpdateAsync(
WaitUntil.Completed, "my-workspace", workspaceData);
// 2. Get the service URL
var serviceUrl = workspace.Value.Data.DataplaneUri;
// 3. Set environment variable for test execution
Environment.SetEnvironmentVariable("PLAYWRIGHT_SERVICE_URL", serviceUrl.ToString());
// 4. Run tests using Azure.Developer.MicrosoftPlaywrightTesting.NUnit
// (separate package for test execution)
関連 SDK
| SDK | 用途 | インストール |
|---|---|---|
Azure.ResourceManager.Playwright | 管理プレーン(この SDK) | dotnet add package Azure.ResourceManager.Playwright |
Azure.Developer.MicrosoftPlaywrightTesting.NUnit | NUnit の Playwright テストを大規模に実行 | dotnet add package Azure.Developer.MicrosoftPlaywrightTesting.NUnit --prerelease |
Azure.Developer.Playwright | Playwright クライアントライブラリ | dotnet add package Azure.Developer.Playwright |
API 情報
- リソース プロバイダー:
Microsoft.LoadTestService - 既定の API バージョン:
2025-09-01 - リソースの種類:
Microsoft.LoadTestService/playwrightWorkspaces
ドキュメントへのリンク
- Azure.ResourceManager.Playwright API リファレンス
- Microsoft Playwright Testing の概要
- クイックスタート:Playwright テストを大規模に実行する
使用する場面
このスキルは、概要に記載されているワークフローまたは操作を実行する場合に適用できます。
制限事項
- タスクが上記の説明の範囲に明確に該当する場合にのみ、このスキルを使用してください。
- 環境固有の検証、テスト、専門家によるレビューの代わりとして、出力を扱わないでください。
- 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中断して確認してください。