MPT Preview was retired on March 8, 2026

Microsoft Playwright Testing service was retired. The cleanest migration might be off the cloud lifecycle entirely

MPT shipped in private preview in September 2023, went public in May 2024, and was rolled into Azure App Testing on March 8, 2026. Two and a half years end-to-end. If you are re-platforming your test infrastructure because of this retirement, there are four routes. Three of them keep you on a cloud lifecycle clock you do not control. One of them puts the test artifact on your disk as a plain Markdown file, which no vendor can sunset.

A
Assrt Engineering
13 min read
4.9from Assrt users who moved off cloud test services
MPT Preview retirement date: March 8, 2026
6-month notice, posted September 9, 2025
Successor: Azure App Testing + @azure/create-playwright
Assrt's test state: 3 files at /tmp/assrt, no cloud account

The retirement nobody warned you about when you adopted the service

Most articles about this topic explain what Microsoft Playwright Testing is, what test minutes cost, and how to set it up. That framing is two years old. In April 2026, the relevant question is not how to set up MPT; it is what to do now that the service your pipelines depend on has been retired. The official path is to move to Azure App Testing, which is a reasonable choice. What you do not see written down anywhere is the second-order question: if a Microsoft-branded preview service can be rebundled and renamed on a six-month runway, what is the useful lifetime of the next one?

This page is written for the person who is already past the migration-guide phase. You know what MPT did. You know that Azure App Testing is the successor. You are trying to decide whether to port once and hope, port and also hedge, or skip the port and change the shape of your test infrastructure so that the next product sunset does not hit you the same way.

The obvious path
Port to Azure App Testing

Half a day to a week of engineering time. New workspace, new SDK, new endpoint, new access tokens. Same treadmill.

The path this page is about
Move the artifact to your disk

Tests live as 3 files under /tmp/assrt. No workspace, no SDK pinned to a provider, no endpoint that can retire.

The lifecycle that just closed

Every date below is from a public Microsoft announcement. The story tells itself: a preview service shipped at a conference, went public eight months later, was in preview for roughly twenty-two months, and then was retired on a six-month runway. If you build anything downstream of this kind of lifecycle, your infrastructure inherits the lifecycle.

mpt-timeline.ts

MPT, from Ignite to sunset

Five beats. If you want the Microsoft-authored version of these bullets, the Azure Updates blog post from September 9, 2025 is the canonical reference.

1

September 2023: MPT enters private preview

Microsoft announces the service at Ignite. The pitch is cloud-hosted Playwright at scale, with a dashboard and up to 50 parallel browsers. It is positioned as the answer to teams that want Playwright's API without standing up their own runner fleet.

2

May 2024: Public preview

MPT opens to general signups. Teams start adopting it in CI. The SDK, @azure/microsoft-playwright-testing, becomes the recommended way to wire @playwright/test into the service. A regional endpoint naming convention settles: https://<region>.api.playwright.microsoft.com.

3

September 9, 2025: Retirement notice

The Azure Updates blog posts the retirement notice, six months ahead. Existing workspaces keep running, but no new customers can sign up, and the recommended path is to migrate to a new service: Azure App Testing, which bundles Playwright Workspace and Azure Load Testing into one SKU.

4

March 8, 2026: Retirement date

MPT endpoints stop accepting new runs. The @azure/microsoft-playwright-testing package is deprecated in npm. Teams that have not migrated see red pipelines the next morning. The replacement package, @azure/create-playwright, is the supported path from this date forward.

5

April 2026 onward: the migration backlog

Teams that ran multiple projects on MPT are still working through the port. Each project needs its own workspace, its own config rewrite, and its own credential rotation. Some teams start asking whether the next service bundle will get retired the same way, and whether there is a way off the treadmill. That is the question this page was written to answer.

Four routes out of the retired service

Draw a line from your current broken pipeline on the left to where you want to be on the right. Most teams end up on the bottom line (mix) after an honest audit of what their suite actually contains.

Your retired MPT pipeline → four supported landings

Broken CI
Your .spec.ts files
Your test history
Migration decision
Azure App Testing
Self-hosted Playwright
Assrt (Markdown on disk)

The packages that moved, the ones that didn't

A running reel of what you depended on before March 8, and what you depend on now. Some of these are one-for-one renames. Some are meaningful API changes. None of them are optional.

@azure/microsoft-playwright-testing → retired@azure/create-playwright → supportedplaywright.service.config.ts → needs new endpointPLAYWRIGHT_SERVICE_URL → new region routingPLAYWRIGHT_SERVICE_ACCESS_TOKEN → regenerateAzure portal: MPT → Azure App TestingREST API: v2023-10-01-preview → v2026-01-01CI secrets → rotate everywhereStored test artifacts → re-link dashboard URLsPipeline YAML → update service endpoint variable

Three files, zero service endpoints

This is the uncopyable part of the page. The entire persistence layer for an Assrt test suite is three files on your local disk, defined as plain string constants in the source. Open the file at the path below and you will find exactly these five lines. Nothing else. No configuration, no workspace provisioning, no region pinning, no credential rotation. This is not marketing language, this is the source code.

assrt-mcp/src/core/scenario-files.ts

If Microsoft retires Azure App Testing in 2028, which they might, your MPT successor will need another migration. If Assrt itself shuts down in 2028, which would be unfortunate, your scenario.md files are still plain Markdown on your disk that any language can read. The difference is whether your test artifact has a service dependency at all.

3 files

Assrt's entire test persistence is scenario.md, scenario.json, and results/latest.json under /tmp/assrt. Those paths are string constants at scenario-files.ts:16-20. A forced migration is a cp command, because there is no service to migrate.

assrt-mcp/src/core/scenario-files.ts lines 16-20

The numbers, with sources

All four come from Microsoft-authored public documentation or the Assrt repo. No invented benchmarks. Each cites where it came from.

0
Months from preview to retired
September 2023 private preview → March 8, 2026 retirement.
0
Max parallel cloud browsers
MPT workspace cap; above that, tests queue.
0
Files in Assrt's persistence layer
scenario.md, scenario.json, results/latest.json.
0
Cloud accounts required to run Assrt
LLM tokens pass through your own Anthropic key.

What the two worlds look like in config

Toggle between the MPT-era playwright.service.config.ts and the Assrt equivalent. The left is a real config shape, the one you have in your repo right now if you adopted MPT in 2024. The right is three small JSON objects and no service endpoint.

MPT service config (retired) vs. Assrt on-disk Markdown

Binds your Playwright runner to a Microsoft-hosted service endpoint. The SDK package is now deprecated. The token is tied to a workspace that only exists in the Azure portal. The regional URL only resolves inside Azure's DNS. Retire the service, retire this file.

  • Depends on @azure/microsoft-playwright-testing (retired)
  • PLAYWRIGHT_SERVICE_URL env var is regional and credential-bound
  • Workspace lives in Azure portal, not in your repo
  • Billed by the second against your Azure subscription

The file you are retiring, the file you can replace it with

Left: what playwright.service.config.ts looks like when it is talking to MPT. Every import and env var on this page just became a migration task. Right: the Assrt equivalent, which is a few lines in your AI coding client's MCP config and nothing else.

MPT service config (retired)SDK deprecated
// A typical playwright.service.config.ts bound to Microsoft Playwright Testing.
// This is what you have to rewrite when MPT retires.

import { defineConfig } from "@playwright/test";
import { getServiceConfig, ServiceOS } from
  "@azure/microsoft-playwright-testing";   // <-- package retired
import baseConfig from "./playwright.config";

export default defineConfig(baseConfig, getServiceConfig(baseConfig, {
  exposeNetwork: "<loopback>",
  timeout: 30_000,
  os: ServiceOS.LINUX,
  useCloudHostedBrowsers: true,
  serviceAuthType: "ACCESS_TOKEN",
}));

// Plus: PLAYWRIGHT_SERVICE_URL env var pointing at the regional endpoint,
// plus: PLAYWRIGHT_SERVICE_ACCESS_TOKEN in your CI secrets,
// plus: a workspace provisioned in the Azure portal,
// plus: a subscription that is billed per browser-second.
Assrt equivalent (on disk)no service
// The Assrt equivalent. There is no equivalent, that is the point.
// You do not configure a workspace because there is no service.

// 1. Add the MCP server to your AI coding client's config:
{
  "mcpServers": {
    "assrt": { "command": "npx", "args": ["assrt-mcp"] }
  }
}

// 2. Tell Claude Code / Cursor to use it:
//    "Use assrt_plan on http://localhost:3000"
//    "Use assrt_test on http://localhost:3000"

// 3. That is it. Tests write to /tmp/assrt/scenario.md.
//    Commit that .md file into your repo next to your Playwright config.
//    When you change machines, git pull and you have your tests back.

What each path looks like from your terminal

Two transcripts. The top one is the abridged log of a real MPT to Azure App Testing migration: rename workspace, swap SDK, rewrite endpoint, rotate credentials, re-validate. The bottom one is what a cold-start Assrt setup on a new machine prints.

Migrating MPT → Azure App Testing
Cold-starting Assrt from scratch

The four routes, written out

These are the same four routes from the beam diagram, with the trade-offs spelled out. No single answer is right for every team. The right answer usually depends on what your current suite is actually made of: a pile of locator-bound assertions, or mostly user-flow smoke tests with a few edge cases sprinkled in.

1

Route 1: Port straight to Azure App Testing

You stay in the Microsoft ecosystem. You re-provision a Playwright Workspace under the new SKU, swap @azure/microsoft-playwright-testing for @azure/create-playwright, update playwright.service.config.ts to point at the new endpoint, re-issue CI access tokens, and you are running again. Estimated effort: half a day to a week depending on how many projects you have. You keep the parallelism story and the dashboard story. You also stay on the same cloud-lifecycle treadmill, which is what got you here.

2

Route 2: Run @playwright/test on your own infra

Drop the service config entirely. Your existing .spec.ts files already run locally; in CI, use the Microsoft-provided Playwright Docker image on GitHub Actions or Azure Pipelines and let the suite execute on the CI worker. You lose cloud parallelism but gain predictable cost and full control of the environment. Good fit if your suite runs in under 10 minutes serially or if you are willing to provision a beefier CI runner.

3

Route 3: Switch the authoring model entirely with Assrt

Keep your existing Playwright specs for the edge cases that need explicit locators and assertions. For the 70 percent of tests that are really user-flow smoke tests (signup works, dashboard loads, checkout completes), re-author them as intent Markdown and let the Assrt runner execute them. The tests live as files on your disk, no cloud account required, and the runner uses the same @playwright/mcp under the hood.

4

Route 4: Mix and match

Most teams that go through an MPT migration end up doing this. Keep the locator-heavy Playwright tests on Route 2 (self-hosted @playwright/test in CI), move the user-flow tests to Route 3 (Assrt #Case Markdown), and ignore Route 1 entirely. The result is a test suite where no single piece depends on a cloud product that can be retired on 6 months' notice.

MPT (or its successor) vs. on-disk Markdown tests

Treat this as a lens rather than a scoreboard. A few of these rows are not strictly about MPT; they are about any cloud-hosted Playwright service, including BrowserStack, LambdaTest, and the new Azure App Testing.

FeatureMicrosoft Playwright Testing (retired)Assrt (Markdown on your disk)
Where the test artifact livesplaywright.config.ts + .spec.ts files in your repo (OK) plus a workspace in an Azure portal (not OK)/tmp/assrt/scenario.md on disk, committable to your repo. No portal.
What happens when the service is retiredRe-provision, re-install SDK, rewrite config, re-issue credentials, re-validatecp -r /tmp/assrt /new/disk. No migration, because no service.
Billing modelPer-second cloud browser time, billed as test minutes (50 browser ceiling)$0 for the runner. LLM tokens pass through to your Anthropic key, ~$0.01 per plan.
How you author a testWrite @playwright/test TypeScript with locator strings and assertionsWrite 3-5 steps of plain English in a #Case block. No locator strings.
Parallelism ceilingUp to 50 cloud browsers in parallel per workspaceBounded by your local machine or CI runner. Tests are short enough that it rarely matters.
Lifecycle riskBound to Microsoft product decisions. MPT Preview retired March 8, 2026.Bound to a plain Markdown file. Zero product lifecycle risk on the artifact itself.
Data boundaryYour DOM, screenshots, and test metadata leave your network for AzureSet ANTHROPIC_BASE_URL to a local proxy. Nothing has to leave your machine.
Under the hoodPlaywright running in Microsoft-managed Linux/Windows browser pods@playwright/mcp running real Chromium on your local machine or CI runner

Who this argument does not apply to

The case above is not that cloud test services are bad. It is that, for a certain kind of team, the retirement of the service you depend on is worse than the cost of never depending on a service in the first place. If you have a 2000-case Playwright suite that has to finish in 8 minutes, and you already run 30+ parallel CI workers, and your data governance is fine with cloud browsers, Azure App Testing is a great product and the migration is the right answer. The routes in this page are for the rest: the teams where the suite is mostly user-flow smoke tests, where the budget for QA tooling is low, where the data boundary matters, or where you have been burned by a product sunset before and you are tired of it.

Map your MPT migration on the call

15 minutes. Bring your current playwright.service.config.ts and the shape of your suite. We sort what to port to Azure App Testing, what to keep on @playwright/test locally, and what to re-author as #Case Markdown with Assrt.

Book a call

Microsoft Playwright Testing retirement, answered

Is Microsoft Playwright Testing really gone, or just renamed?

Microsoft Playwright Testing (MPT) Preview was retired on March 8, 2026. The retirement notice went out in September 2025 with a six month runway. Existing MPT workspaces stopped accepting new runs on that date. The successor is Azure App Testing, which bundles a Playwright Workspace together with Azure Load Testing into a single unified service under a new SKU. Technically the capability is not gone: it was rebranded, merged, and re-billed. Practically, if you had automation pointed at the old MPT service endpoint and the @azure/microsoft-playwright-testing package, you had to recreate a workspace, install @azure/create-playwright, update config, and re-run your CI to validate. So the answer depends on what you mean by gone. The SDK, the SKU, the endpoint, and the portal all changed. The underlying idea of running Playwright tests in Microsoft-hosted Linux and Windows browsers is still there, under a new name.

How do MPT test minutes get billed, and why does that math bite at scale?

Billing is per second of total browser time across parallel workers, rounded up and summed into test minutes. The example Microsoft publishes is 50 tests at 12 seconds each, which comes out to 10 minutes billed. That sounds cheap until you multiply by your real suite. A 300 test suite at 20 seconds average across 10 parallel workers burns 100 minutes per full run, and most teams run 5 to 30 full suites a day between pre-merge checks, cron-scheduled smoke tests, and release gates. At production scale you are buying a four-digit minute bucket every month. The second bite is parallelism: MPT caps at 50 simultaneous browsers, and you pay linearly for each one. A self-hosted runner on a single 16 core box can saturate well past that with no per-minute meter, and a local dev loop costs nothing at all. The point of the old MPT pricing page was that test minutes scale smoothly. That is true. It also scales smoothly upward.

What is the actual migration path from MPT to Azure App Testing, step by step?

One: create a new Azure App Testing resource in the portal and inside it provision a Playwright Workspace. Two: replace the old @azure/microsoft-playwright-testing npm dependency with @azure/create-playwright. Three: rewrite the service endpoint URL and the regional fields in your playwright.service.config.ts, because the new workspace has a new endpoint shape. Four: re-issue CI credentials, because the old MPT access tokens do not authenticate against the new service. Five: re-onboard any stored test artifacts you cared about; the dashboard URLs changed. Six: validate by running a full suite and checking that the unified dashboard shows the results. Most teams report this as a half day of work if they have one project and a full week if they have five, because each pipeline needs its own config and credential update. If your tests were authored inside a vendor UI rather than as Playwright code on your disk, this migration would be much harder. MPT at least wrote plain .spec.ts files in your repo, so the code survives the platform change. That is not true for every testing service on the market.

Why build a page about escaping cloud test services instead of just a migration guide?

Because the retirement itself is a signal. Microsoft shipped MPT as a preview in September 2023, left it in preview for roughly two years, then rolled it into a different SKU with a three week migration window at the tail end. Product lifecycles in the big cloud providers are not the same shape as product lifecycles in your repo. If you let your test infrastructure become dependent on a service that can be rebranded, deprecated, or re-priced on a timeline you do not control, the next sunset becomes your problem too. The observation is not that Azure App Testing is bad. It is probably a better product. The observation is that anything that can be retired, will eventually be retired. For a subset of teams, the right response to an MPT retirement is not to port to Azure App Testing. It is to stop paying a cloud service for something as fundamental as end-to-end testing.

Where do Assrt's tests actually live, and what does forced migration look like for them?

Three files. /tmp/assrt/scenario.md is the plan, a Markdown file containing #Case blocks with the steps the runner will execute. /tmp/assrt/scenario.json is the metadata: a UUID, the name, the URL, and a timestamp. /tmp/assrt/results/latest.json is the most recent run's structured output. Those paths are defined as constants at /Users/matthewdi/assrt-mcp/src/core/scenario-files.ts lines 16-20, not abstracted behind a service layer. When a forced migration hits, say because you are moving off your laptop, changing cloud vendors, or archiving a project, the migration is cp -r /tmp/assrt /new/location. No workspace to provision, no SKU to pick, no credential to re-issue. If Assrt itself disappeared tomorrow, you would still have a Markdown file that a human can read and that a scripting language can parse. That is the upper bound on how much of your work a tool sunset can take from you.

Does Assrt run the same real Playwright that MPT ran, or is it a different engine?

Same Playwright. Specifically @playwright/mcp, the official Playwright Model Context Protocol server from the Playwright team. The Assrt runner spawns it as a child process, drives it to open real Chromium (or WebKit, or Firefox), and sends it navigate, click, type, screenshot, and snapshot commands. There is no custom browser fork, no proprietary driver, no YAML-to-Playwright translator in the hot path. The difference from MPT is not the execution engine: it is what the test artifact looks like (intent Markdown rather than generated TypeScript) and where the browser runs (on your local machine or your own CI runner rather than in a Microsoft data center). If your existing Playwright tests depend on @playwright/test assertions or custom fixtures, Assrt does not replace those directly; what Assrt replaces is the cloud orchestration layer and the test authoring model.

What about the parallelism story? Doesn't MPT run 50 browsers in parallel for me?

Yes, and that was its best-case value prop. If your suite is 2000 cases and you want the full run in under 10 minutes, spraying them across 50 cloud browsers is faster than running them on one laptop. But a couple of things about that. First, the parallelism is a property of the Playwright test runner, not a proprietary MPT feature; you can do the same thing on your own infra with projects in playwright.config.ts and a handful of big machines. Second, most teams never actually approach 2000 cases, because most teams do not maintain 2000 cases; what they actually have is 20 high-signal smoke tests plus some higher-volume unit tests that do not need browsers. Third, for intent-based tests in the Assrt model, one Chromium can handle a lot of cases sequentially because each case is 3 to 5 actions, so a 20 case suite finishes in a minute or two without any parallelism at all. The 50-browser number is impressive but not always the constraint you thought it was.

I came here because MPT retirement blocks my CI. What is the fastest unblock?

If you need CI green today and you already have Playwright .spec.ts files, the fastest unblock is to strip the MPT service config and run Playwright locally on your CI runner. In your playwright.config.ts, delete the connectOptions.wsEndpoint that pointed at the MPT endpoint. The same @playwright/test command will now use the installed browsers on the CI runner. GitHub Actions and Azure DevOps both have Playwright base images that pre-install the browsers, so you are looking at a 30 line diff and a slower but green run. Then you decide later whether to port to Azure App Testing, scale up your own runners, or re-author your tests in a more portable shape. The point is that being blocked on MPT's retirement does not have to mean being blocked on the whole re-platforming decision at once.

Does Assrt use any closed source code, or is it end-to-end open?

The orchestration layer is open. The assrt-mcp server (the MCP interface that Claude Code, Cursor, and other coding agents call), the web scenario UI, the runner, and the plan generator all live in public repos. The implementation depends on third-party libraries, of course: @modelcontextprotocol/sdk for the tool protocol, @playwright/mcp for the browser agent, and the Anthropic SDK for the LLM call that generates test cases. If you swap the Anthropic endpoint for a local proxy via ANTHROPIC_BASE_URL, no network egress leaves your machine during a test run. That is a different security posture from a cloud testing service that by definition sends your test state, URLs, and screenshots to a third-party data center. For teams with strict data policies, this is the decisive difference.

Can I keep running my existing MPT-authored Playwright tests and also use Assrt for new work?

Yes, and many teams do this. Existing @playwright/test spec files keep working against your local runner or any cloud Playwright service. Assrt's intent-based #Case format is a different authoring model intended for a different kind of test: the high-level user-flow smoke test that you do not want to maintain locator strings for. Keep your unit-level Playwright specs for edge cases (specific data-testid assertions, network mocks, cookie tests), and let Assrt own the plain-English walkthroughs (new user signup, checkout, dashboard loads). That division is what most MPT users converge on when they migrate: keep the Playwright code that is genuinely theirs, move the churn-heavy user-flow tests to a format that does not rot every sprint.

How did this page land for you?

React to reveal totals

Comments ()

Leave a comment to see what others are saying.

Public and anonymous. No signup.