
关于
使用云托管浏览器和集成 Azure 门户报告大规模运行 Playwright 测试。
name: azure-microsoft-playwright-testing-ts description: "使用云托管浏览器和集成的 Azure 门户报告大规模运行 Playwright 测试。" risk: unknown source: community date_added: "2026-02-27"
Azure Playwright Workspaces SDK for TypeScript
使用云托管浏览器和集成的 Azure 门户报告大规模运行 Playwright 测试。
迁移通知:
@azure/microsoft-playwright-testing将于 2026年3月8日停用。请改用@azure/playwright。参见迁移指南。
安装
# 推荐:自动生成配置
npm init @azure/playwright@latest
# 手动安装
npm install @azure/playwright --save-dev
npm install @playwright/test@^1.47 --save-dev
npm install @azure/identity --save-dev
要求:
- Playwright 版本 1.47+(基本用法)
- Playwright 版本 1.57+(Azure 报告器功能)
环境变量
PLAYWRIGHT_SERVICE_URL=wss://eastus.api.playwright.microsoft.com/playwrightworkspaces/{workspace-id}/browsers
认证
Microsoft Entra ID(推荐)
# 使用 Azure CLI 登录
az login
// playwright.service.config.ts
import { defineConfig } from "@playwright/test";
import { createAzurePlaywrightConfig, ServiceOS } from "@azure/playwright";
import { DefaultAzureCredential } from "@azure/identity";
import config from "./playwright.config";
export default defineConfig(
config,
createAzurePlaywrightConfig(config, {
os: ServiceOS.LINUX,
credential: new DefaultAzureCredential(),
})
);
自定义凭据
import { ManagedIdentityCredential } from "@azure/identity";
import { createAzurePlaywrightConfig } from "@azure/playwright";
export default defineConfig(
config,
createAzurePlaywrightConfig(config, {
credential: new ManagedIdentityCredential(),
})
);
核心工作流
服务配置
// playwright.service.config.ts
import { defineConfig } from "@playwright/test";
import { createAzurePlaywrightConfig, ServiceOS } from "@azure/playwright";
import { DefaultAzureCredential } from "@azure/identity";
import config from "./playwright.config";
export default defineConfig(
config,
createAzurePlaywrightConfig(config, {
os: ServiceOS.LINUX,
connectTimeout: 30000,
exposeNetwork: "<loopback>",
credential: new DefaultAzureCredential(),
})
);
运行测试
npx playwright test --config=playwright.service.config.ts --workers=20
使用 Azure 报告器
import { defineConfig } from "@playwright/test";
import { createAzurePlaywrightConfig, ServiceOS } from "@azure/playwright";
import { DefaultAzureCredential } from "@azure/identity";
import config from "./playwright.config";
export default defineConfig(
config,
createAzurePlaywrightConfig(config, {
os: ServiceOS.LINUX,
credential: new DefaultAzureCredential(),
}),
{
reporter: [
["html", { open: "never" }],
["@azure/playwright/reporter"],
],
}
);
手动浏览器连接
import playwright, { test, expect, BrowserType } from "@playwright/test";
import { getConnectOptions } from "@azure/playwright";
test("manual connection", async ({ browserName }) => {
const { wsEndpoint, options } = await getConnectOptions();
const browser = await (playwright[browserName] as BrowserType).connect(wsEndpoint, options);
const context = await browser.newContext();
const page = await context.newPage();
await page.goto("https://example.com");
await expect(page).toHaveTitle(/Example/);
await browser.close();
});
配置选项
type PlaywrightServiceAdditionalOptions = {
serviceAuthType?: "ENTRA_ID" | "ACCESS_TOKEN"; // 默认: ENTRA_ID
os?: "linux" | "windows"; // 默认: linux
runName?: string; // 门户中的自定义运行名称
connectTimeout?: number; // 默认: 30000ms
exposeNetwork?: string; // 默认: <loopback>
credential?: TokenCredential; // Entra ID 必需
};
ServiceOS 枚举
import { ServiceOS } from "@azure/playwright";
// 可用值
ServiceOS.LINUX // "linux" - 默认
ServiceOS.WINDOWS // "windows"
ServiceAuth 枚举
import { ServiceAuth } from "@azure/playwright";
// 可用值
ServiceAuth.ENTRA_ID // 推荐 - 使用 credential
ServiceAuth.ACCESS_TOKEN // 使用 PLAYWRIGHT_SERVICE_ACCESS_TOKEN 环境变量
CI/CD 集成
GitHub Actions
name: playwright-ts
on: [push, pull_request]
permissions:
id-token: write
contents: read
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Azure Login
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
兼容工具
Claude CodeCursor
标签
测试

