К основному содержанию
скилл

azure-microsoft-playwright-testing-ts — скилл для Claude Code

Скилл для запуска тестов Playwright на облачных браузерах Azure Playwright Workspaces и публикации результатов в портале Azure.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add microsoft/skills --skill azure-microsoft-playwright-testing-ts -a claude-code
Открыть на GitHub

Что делает azure-microsoft-playwright-testing-ts

Скилл описывает, как подключить @azure/playwright к проекту на TypeScript и гонять браузерные тесты на облачных браузерах Azure Playwright Workspaces. Он пригодится, когда локального прогона уже мало: тестов много, нужен параллельный запуск и отчёт в портале Azure.

Внутри — готовые куски конфигурации. Отдельный файл playwright.service.config.ts оборачивает ваш playwright.config через createAzurePlaywrightConfig, туда передаются ОС (ServiceOS.LINUX или ServiceOS.WINDOWS), connectTimeout и exposeNetwork. Для ручного подключения есть getConnectOptions. Аутентификация идёт через Microsoft Entra: локально хватает az login и DefaultAzureCredential, в продакшене нужен AZURE_TOKEN_CREDENTIALS=prod или отдельный credential вроде ManagedIdentityCredential. Есть и вариант с ServiceAuth.ACCESS_TOKEN через переменную PLAYWRIGHT_SERVICE_ACCESS_TOKEN.

Перед установкой проверьте версии: базовому режиму нужен Playwright 1.47+, а функции Azure-репортёра работают только с 1.57+. Ещё важный момент — пакет @azure/microsoft-playwright-testing выводится из эксплуатации 8 марта 2026 года, так что новый проект сразу стоит ставить на @azure/playwright. В конфиге обязательна переменная PLAYWRIGHT_SERVICE_URL с адресом вида wss://eastus.api.playwright.microsoft.com/playwrightworkspaces/{workspace-id}/browsers.

Какие задачи решает

  • разогнать большой набор браузерных тестов на облачных браузерах
  • сложить конфиг Playwright для запуска в Azure Playwright Workspaces
  • подключить аутентификацию через Microsoft Entra без хранения секретов в коде
  • встроить прогон тестов в GitHub Actions или Azure Pipelines
  • отправлять результаты тестов в портал Azure

Примеры запросов агенту

  • Настрой запуск тестов Playwright через Azure Playwright Workspaces, добавь playwright.service.config.ts
  • Подключи Azure-репортёр к моему playwright.config.ts
  • Сделай workflow GitHub Actions, который логинится в Azure и гоняет npx playwright test -c playwright.service.config.ts

Как установить azure-microsoft-playwright-testing-ts

1Через Skills CLI (Vercel)

npx skills add microsoft/skills --skill azure-microsoft-playwright-testing-ts -a claude-code

2Вручную: положить файлы

~/.claude/skills/azure-microsoft-playwright-testing-ts/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/azure-microsoft-playwright-testing-ts/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о azure-microsoft-playwright-testing-ts

Как установить azure-microsoft-playwright-testing-ts в Claude Code?

Выполните npx skills add microsoft/skills --skill azure-microsoft-playwright-testing-ts -a claude-code. Файл скилла появится по пути ~/.claude/skills/azure-microsoft-playwright-testing-ts/SKILL.md.

Что делает этот скилл?

Показывает, как запускать тесты Playwright на облачных браузерах Azure Playwright Workspaces: конфигурация сервиса, аутентификация через Entra, интеграция с CI и публикация отчётов в портале Azure.

Какие версии Playwright нужны?

Для базового использования хватит 1.47+, а для Azure-репортёра потребуется 1.57+. Пакет @azure/microsoft-playwright-testing при этом выводится из эксплуатации 8 марта 2026 года.

Исходный текст

SKILL.md · MIT
---
name: azure-microsoft-playwright-testing-ts
description: Run Playwright tests at scale using Azure Playwright Workspaces (formerly Microsoft Playwright Testing). Use when scaling browser tests across cloud-hosted browsers, integrating with CI/CD pipelines, or publishing test results to the Azure portal.
license: MIT
metadata:
  author: Microsoft
  version: "1.0.0"
  package: '@azure/playwright'
---

# Azure Playwright Workspaces SDK for TypeScript

Run Playwright tests at scale with cloud-hosted browsers and integrated Azure portal reporting.

> **Migration Notice:** `@azure/microsoft-playwright-testing` is retired on **March 8, 2026**. Use `@azure/playwright` instead. See [migration guide](https://aka.ms/mpt/migration-guidance).

## Installation

```bash
# Recommended: Auto-generates config
npm init @azure/playwright@latest

# Manual installation
npm install @azure/playwright --save-dev
npm install @playwright/test@^1.47 --save-dev
npm install @azure/identity --save-dev
```

**Requirements:**
- Playwright version 1.47+ (basic usage)
- Playwright version 1.57+ (Azure reporter features)

## Environment Variables

```bash
PLAYWRIGHT_SERVICE_URL=wss://eastus.api.playwright.microsoft.com/playwrightworkspaces/{workspace-id}/browsers
AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production
```

## Authentication

### Microsoft Entra Token Credential (Recommended)

```bash
# Sign in with Azure CLI
az login
```

```typescript
// playwright.service.config.ts
import { defineConfig } from "@playwright/test";
import { createAzurePlaywrightConfig, ServiceOS } from "@azure/playwright";
import { DefaultAzureCredential, ManagedIdentityCredential } from "@azure/identity";
import config from "./playwright.config";

// Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>
const credential = new DefaultAzureCredential({requiredEnvVars: ["AZURE_TOKEN_CREDENTIALS"]});
// Or use a specific credential directly in production:
// See https://learn.microsoft.com/javascript/api/overview/azure/identity-readme?view=azure-node-latest#credential-classes
// const credential = new ManagedIdentityCredential();

export default defineConfig(
  config,
  createAzurePlaywrightConfig(config, {
    os: ServiceOS.LINUX,
    credential,
  })
);
```

### Custom Credential

```typescript
import { ManagedIdentityCredential } from "@azure/identity";
import { createAzurePlaywrightConfig } from "@azure/playwright";

export default defineConfig(
  config,
  createAzurePlaywrightConfig(config, {
    credential: new ManagedIdentityCredential(),
  })
);
```

## Core Workflow

### Service Configuration

```typescript
// 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({requiredEnvVars: ["AZURE_TOKEN_CREDENTIALS"]}),
  })
);
```

### Run Tests

```bash
npx playwright test --config=playwright.service.config.ts --workers=20
```

### With Azure Reporter

```typescript
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({requiredEnvVars: ["AZURE_TOKEN_CREDENTIALS"]}),
  }),
  {
    reporter: [
      ["html", { open: "never" }],
      ["@azure/playwright/reporter"],
    ],
  }
);
```

### Manual Browser Connection

```typescript
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();
});
```

## Configuration Options

```typescript
type PlaywrightServiceAdditionalOptions = {
  serviceAuthType?: "ENTRA_ID" | "ACCESS_TOKEN";  // Default: ENTRA_ID
  os?: "linux" | "windows";                        // Default: linux
  runName?: string;                                // Custom run name for portal
  connectTimeout?: number;                         // Default: 30000ms
  exposeNetwork?: string;                          // Default: <loopback>
  credential?: TokenCredential;                    // REQUIRED for Entra ID
};
```

### ServiceOS Enum

```typescript
import { ServiceOS } from "@azure/playwright";

// Available values
ServiceOS.LINUX   // "linux" - default
ServiceOS.WINDOWS // "windows"
```

### ServiceAuth Enum

```typescript
import { ServiceAuth } from "@azure/playwright";

// Available values
ServiceAuth.ENTRA_ID      // Recommended - uses credential
ServiceAuth.ACCESS_TOKEN  // Use PLAYWRIGHT_SERVICE_ACCESS_TOKEN env var
```

## CI/CD Integration

### GitHub Actions

```yaml
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 }}

      - run: npm ci
      
      - name: Run Tests
        env:
          PLAYWRIGHT_SERVICE_URL: ${{ secrets.PLAYWRIGHT_SERVICE_URL }}
        run: npx playwright test -c playwright.service.config.ts --workers=20
```

### Azure Pipelines

```yaml
- task: AzureCLI@2
  displayName: Run Playwright Tests
  env:
    PLAYWRIGHT_SERVICE_URL: $(PLAYWRIGHT_SERVICE_URL)
  inputs:
    azureSubscription: My_Service_Connection
    scriptType: pscore
    inlineScript: |
      npx playwright test -c playwright.service.config.ts --workers=20
    addSpnToEnvironment: true
```

## Key Types

```typescript
import {
  createAzurePlaywrightConfig,
  getConnectOptions,
  ServiceOS,
  ServiceAuth,
  ServiceEnvironmentVariable,
} from "@azure/playwright";

import type {
  OsType,
  AuthenticationType,
  BrowserConnectOptions,
  PlaywrightServiceAdditionalOptions,
} from "@azure/playwright";
```

## Migration from Old Package

| Old (`@azure/microsoft-playwright-testing`) | New (`@azure/playwright`) |
|---------------------------------------------|---------------------------|
| `getServiceConfig()` | `createAzurePlaywrightConfig()` |
| `timeout` option | `connectTimeout` option |
| `runId` option | `runName` option |
| `useCloudHostedBrowsers` option | Removed (always enabled) |
| `@azure/microsoft-playwright-testing/reporter` | `@azure/playwright/reporter` |
| Implicit credential | Explicit `credential` parameter |

### Before (Old)

```typescript
import { getServiceConfig, ServiceOS } from "@azure/microsoft-playwright-testing";

export default defineConfig(
  config,
  getServiceConfig(config, {
    os: ServiceOS.LINUX,
    timeout: 30000,
    useCloudHostedBrowsers: true,
  }),
  {
    reporter: [["@azure/microsoft-playwright-testing/reporter"]],
  }
);
```

### After (New)

```typescript
import { createAzurePlaywrightConfig, ServiceOS } from "@azure/playwright";
import { DefaultAzureCredential } from "@azure/identity";

export default defineConfig(
  config,
  createAzurePlaywrightConfig(config, {
    os: ServiceOS.LINUX,
    connectTimeout: 30000,
    credential: new DefaultAzureCredential({requiredEnvVars: ["AZURE_TOKEN_CREDENTIALS"]}),
  }),
  {
    reporter: [
      ["html", { open: "never" }],
      ["@azure/playwright/reporter"],
    ],
  }
);
```

## Best Practices

1. **Use Microsoft Entra Token Credential** — More secure than access tokens
2. **Use `DefaultAzureCredential` for local development; use `ManagedIdentityCredential` or `WorkloadIdentityCredential` for production**
3. **Enable artifacts** — Set `trace: "on-first-retry"`, `video: "retain-on-failure"` in config
4. **Scale workers** — Use `--workers=20` or higher for parallel execution
5. **Region selection** — Choose region closest to your test targets
6. **HTML reporter first** — When using Azure reporter, list HTML reporter before Azure reporter

© Microsoft · MIT · microsoft/skills

Похожие скиллы

Все скиллы по теме «Тесты и QA» →
playwright-testing alinaqi Скилл для E2E-тестов на Playwright: page objects, порядок локаторов и конфиг с прогоном в chromium, firefox, webkit и мобильных вьюпортах. CX Codex +1 3 300установок playwright-e2e-testing fugazi Скилл для написания и поддержки E2E-тестов на Playwright с TypeScript: пользовательские сценарии, формы, авторизация, моки и визуальные сравнения. CX Codex +1 615установок playwright-e2e-testing-cursorrules-prompt-file PatrickJS Правило превращает Cursor в QA-инженера: по описанию фичи он пишет файл тестов Playwright на 3–5 сценариев. Пригодится, когда нужны E2E-проверки ключевых потоков. ★ 41 024звёзд репо playwright-ci testdino-hq Скилл с готовыми конфигурациями CI/CD для Playwright: GitHub Actions, GitLab CI, CircleCI, Azure DevOps, Jenkins и Docker. Пригодится, когда тесты уже написаны, а пайплайн всё ещё падает. CX Codex +1 372установок e2e-playwright-testing Agent Skills Contributors Скилл для написания и разбора E2E-тестов на Playwright: локаторы, авторизация, формы, ассерты и конфиг для CI. CX Codex +1 803установок

Из того же набора99

Весь набор →
azure-deploy Скилл запускает деплой уже подготовленного приложения в Azure через azd, Terraform или Azure CLI. Перед этим нужны план и пройденная валидация. 4установок fastapi-router-py Скилл создаёт роутеры FastAPI с CRUD-операциями, аутентификацией и моделями ответов. Пригодится для REST API и новых защищённых маршрутов. 4установок azure Подключает Claude Code к Azure для управления ресурсами, деплоя приложений и мониторинга сервисов. Подходит для задач облачной инфраструктуры. ★ 3 149звёзд репо zustand-store-ts Скилл задаёт шаблон стора Zustand на TypeScript: отдельные типы для состояния и действий, middleware subscribeWithSelector, селекторы. 3установок azure-storage-blob-py Скилл учит агента работать с Azure Blob Storage из Python: загрузка и скачивание блобов, контейнеры, SAS-токены. 3установок azure-identity-dotnet Подсказывает агенту, как подключить Azure SDK к Microsoft Entra ID: цепочка DefaultAzureCredential, управляемые удостоверения, сервисные принципалы. 3установок azure-resource-lookup Перечисляет и находит ресурсы Azure по подпискам и группам через Azure Resource Graph. Нужен, когда надо увидеть, что вообще развёрнуто. 2установок azure-prepare Готовит проект к деплою через Azure Developer CLI: пишет azure.yaml, инфраструктуру на Bicep или Terraform и Dockerfile. Нужен, когда вы уже выбрали azd. 2установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой