Skip to main content Skills Marketplace Discover and explore AI skills built by the community.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Copy promptShow prompt details A direct command skips the review prompt. Inspect the source before running it.
npx skills add https://github.com/BEKO2210/Firstbrain --skill playwright-tsThe command stays on one line. Scroll horizontally to inspect it before copying.
Prefer a local copy? Download the files currently available to SkillsMP.
Download Zip Downloading... More from this repository Related occupations SOC
Based on SOC occupation classification
name azure-microsoft-playwright-testing-ts description Run Playwright tests at scale with cloud-hosted browsers and integrated Azure portal reporting. type skill created 2026-02-27T00:00:00.000Z domain software-development category testing risk unknown source community tags ["skill","software-development","testing","azure","microsoft","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 .
Installation
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
Requirements:
Playwright version 1.47+ (basic usage)
Playwright version 1.57+ (Azure reporter features)
Environment Variables
PLAYWRIGHT_SERVICE_URL=wss://eastus.api.playwright.microsoft.com/playwrightworkspaces/{workspace-id}/browsers
Authentication
Microsoft Entra ID (Recommended)
az login
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
Custom Credential import { ManagedIdentityCredential } from "@azure/identity" ;
import { createAzurePlaywrightConfig } from "@azure/playwright" ;
export default defineConfig (
config,
createAzurePlaywrightConfig (config, {
credential : new ManagedIdentityCredential (),
})
);
Core Workflow
Service Configuration
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 (),
})
);
Run Tests npx playwright test --config=playwright.service.config.ts --workers=20
With Azure Reporter 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" ],
],
}
);
Manual Browser Connection 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 type PlaywrightServiceAdditionalOptions = {
serviceAuthType ?: "ENTRA_ID" | "ACCESS_TOKEN" ;
os ?: "linux" | "windows" ;
runName ?: string ;
connectTimeout ?: number ;
exposeNetwork ?: string ;
credential ?: TokenCredential ;
};
ServiceOS Enum import { ServiceOS } from "@azure/playwright" ;
ServiceOS .LINUX
ServiceOS .WINDOWS
ServiceAuth Enum import { ServiceAuth } from "@azure/playwright" ;
ServiceAuth .ENTRA_ID
ServiceAuth .ACCESS_TOKEN
CI/CD Integration
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 }}
- 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 - 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 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 optionconnectTimeout optionrunId optionrunName optionuseCloudHostedBrowsers optionRemoved (always enabled) @azure/microsoft-playwright-testing/reporter@azure/playwright/reporterImplicit credential Explicit credential parameter
Before (Old) 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) 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 (),
}),
{
reporter : [
["html" , { open : "never" }],
["@azure/playwright/reporter" ],
],
}
);
Best Practices
Use Entra ID auth — More secure than access tokens
Provide explicit credential — Always pass credential: new DefaultAzureCredential()
Enable artifacts — Set trace: "on-first-retry", video: "retain-on-failure" in config
Scale workers — Use --workers=20 or higher for parallel execution
Region selection — Choose region closest to your test targets
HTML reporter first — When using Azure reporter, list HTML reporter before Azure reporter
When to Use This skill is applicable to execute the workflow or actions described in the overview.
Connections
Domain: [[Software Entwicklung]]
Kategorie: [[Testing & Qualitaet]]
Navigation: [[Skills Uebersicht]], [[Home]]