{"full_name":"microsoft/playwright","owner":"microsoft","name":"playwright","url":"https://github.com/microsoft/playwright","description":"Playwright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API. ","homepage":"https://playwright.dev","topics":[],"language":"TypeScript","license":"Apache-2.0","avatar":"https://avatars.githubusercontent.com/u/6154722?v=4","created_at":"2019-11-15T18:32:42Z","pushed_at":"2026-11-10T05:40:00Z","metrics":{"stars":99731,"forks":6833,"watchers":616,"issues":18489,"prs":21853,"releases":169,"issues_open":null,"issues_closed":null,"prs_open":null,"prs_closed":null,"prs_merged":null,"discussions":0},"growth":{"day":{"stars":82,"forks":6,"base_day":"2026-11-09"}},"history":{"dates":["2026-11-09","2026-11-10"],"stars":[99649,99731],"forks":[6827,6833],"watchers":[616,616],"issues_open":[null,null],"prs_open":[null,null]},"boards":{"total":144},"same_owner":[{"full_name":"microsoft/vscode","name":"vscode","boards":{"daily_rate":199,"total":36}},{"full_name":"microsoft/markitdown","name":"markitdown","boards":{"weekly":111,"monthly":105,"daily_rate":200,"total":38}},{"full_name":"microsoft/PowerToys","name":"PowerToys","boards":{"total":81}},{"full_name":"microsoft/generative-ai-for-beginners","name":"generative-ai-for-beginners","boards":{"total":97}},{"full_name":"microsoft/TypeScript","name":"TypeScript","boards":{"total":118}},{"full_name":"microsoft/terminal","name":"terminal","boards":{"total":132}},{"full_name":"microsoft/Web-Dev-For-Beginners","name":"Web-Dev-For-Beginners","boards":{"total":155}},{"full_name":"microsoft/ML-For-Beginners","name":"ML-For-Beginners","boards":{"total":172}},{"full_name":"microsoft/AI-For-Beginners","name":"AI-For-Beginners","boards":{}},{"full_name":"microsoft/AirSim","name":"AirSim","boards":{}},{"full_name":"microsoft/BitNet","name":"BitNet","boards":{}},{"full_name":"microsoft/Bringing-Old-Photos-Back-to-Life","name":"Bringing-Old-Photos-Back-to-Life","boards":{}},{"full_name":"microsoft/CNTK","name":"CNTK","boards":{}},{"full_name":"microsoft/Data-Science-For-Beginners","name":"Data-Science-For-Beginners","boards":{}},{"full_name":"microsoft/FluidFramework","name":"FluidFramework","boards":{}},{"full_name":"microsoft/IoT-For-Beginners","name":"IoT-For-Beginners","boards":{}},{"full_name":"microsoft/MMdnn","name":"MMdnn","boards":{}},{"full_name":"microsoft/Ontology-Playground","name":"Ontology-Playground","boards":{}},{"full_name":"microsoft/RD-Agent","name":"RD-Agent","boards":{}},{"full_name":"microsoft/SandDance","name":"SandDance","boards":{}}],"issues":[{"number":1086,"title":"[Feature] create context in fullscreen mode","comments":40,"created_at":"2020-02-24T09:18:55Z"},{"number":37277,"title":"[Feature]: Allow to configure the protocol (`juggler` or `webDriverBiDi`) when launching the browser","comments":32,"created_at":"2025-09-03T10:18:42Z"},{"number":32577,"title":"Current limitations blocking Playwright's WebDriver BiDi adoption","comments":29,"created_at":"2024-09-12T00:55:40Z"},{"number":42687,"title":"[Bug]: headersArray() splits single header values on commas on Firefox and WebKit, corrupting every HTTP-date header","comments":8,"created_at":"2026-09-12T00:19:03Z"},{"number":43966,"title":"[Feature]: Resolve Node.js subpath imports (package.json \"imports\") to TypeScript sources","comments":7,"created_at":"2026-11-06T11:29:54Z"},{"number":43921,"title":"[Feature]:  Expose Advanced WebAuthn Virtual Authenticator Options in Cross-Browser Credentials API","comments":6,"created_at":"2026-11-05T15:27:18Z"},{"number":43967,"title":"[Regression]: Firefox page crashes on getByRole with a name when aria-labelledby is also read in the main world","comments":5,"created_at":"2026-11-06T12:55:31Z"},{"number":43067,"title":"[BUG] WebKit (Linux): Assertion error in WKPage._onTargetCreated on a cross-site redirect chain","comments":5,"created_at":"2026-10-02T14:02:34Z"}],"discussions":[],"latest_release":{"name":"v1.65.0","tag":"v1.65.0","published_at":"2026-11-05T18:25:45Z","body":"## 🥟 Run tests with Bun\r\n\r\nThe test runner now runs under [Bun](https://bun.com). Bun transpiles your TypeScript test files itself, so Playwright does not use Babel or its compilation cache. Pass the `--bun` flag, because without it `bunx playwright test` runs on Node.js:\r\n\r\n```bash\r\nbunx --bun playwright test\r\n```\r\n\r\nOur CI runs the test runner tests under Bun 1.4.3 on Linux. Some features work differently under Bun:\r\n\r\n- There is no watch mode. UI mode does not run tests again when files change, and `--only-changed` does not follow imports.\r\n- Bun loads modules itself, so `--tsconfig` and the JSX options in `tsconfig.json` have no effect, and custom ESM loaders are not supported.\r\n- Stack traces do not include async frames, and API names do not include the class name: `click` instead of `locator.click`. This changes some step locations, step titles and error messages.\r\n- Console output of a test does not get into the trace and UI mode.\r\n\r\n## 🚨 Reports with only failures\r\n\r\nNew [`failures`](https://playwright.dev/docs/test-reporters#failures-reporter) reporter prints failures and successful retries as they occur, followed by a summary, without progress output.\r\n\r\nNew `onlyFailures` option of the HTML, JSON and JUnit reporters [keeps only](https://playwright.dev/docs/test-reporters#report-only-failures) tests with unexpected outcomes, flaky tests and interrupted tests:\r\n\r\n```js\r\n// playwright.config.ts\r\nimport { defineConfig } from '@playwright/test';\r\n\r\nexport default defineConfig({\r\n  reporter: [\r\n    ['failures'],\r\n    ['html', { onlyFailures: true }],\r\n  ],\r\n});\r\n```\r\n\r\n## 🎯 Test runner\r\n\r\n- New built-in `-exclusive-` [test lock](https://playwright.dev/docs/test-parallel#test-locks) runs a test only when no other tests are running. All other tests continue to run in parallel with each other:\r\n\r\n  ```js\r\n  test('restart the server', { lock: '-exclusive-' }, async () => {\r\n    // No other test runs while this one is running.\r\n  });\r\n  ```\r\n\r\n- [test.skip()](https://playwright.dev/docs/api/class-test#test-skip), [test.fixme()](https://playwright.dev/docs/api/class-test#test-fixme), [test.fail()](https://playwright.dev/docs/api/class-test#test-fail) and [test.slow()](https://playwright.dev/docs/api/class-test#test-slow) now accept only a description. It is recorded in the test annotation:\r\n\r\n  ```js\r\n  test('upload a file', async ({ page }) => {\r\n    test.skip('Not implemented yet');\r\n  });\r\n  ```\r\n\r\n- New `PLAYWRIGHT_TRANSFORM_CACHE_DIR` environment variable sets the directory for transpiled test files, for example on a Linux machine shared with other users.\r\n\r\n## New APIs\r\n\r\n- New options [`timeout`](https://playwright.dev/docs/api/class-cdpsession#cdp-session-send-option-timeout) and [`signal`](https://playwright.dev/docs/api/class-cdpsession#cdp-session-send-option-signal) in [cdpSession.send()](https://playwright.dev/docs/api/class-cdpsession#cdp-session-send).\r\n- New [testRun.mode()](https://playwright.dev/docs/api/class-testrun#test-run-mode) returns the execution mode of a suite during [reporter.preprocess()](https://playwright.dev/docs/api/class-reporter#reporter-preprocess).\r\n\r\n## Breaking Changes ⚠️\r\n\r\n- TypeScript class fields now follow [`useDefineForClassFields`](https://playwright.dev/docs/test-typescript#tsconfig-class-fields) from your `tsconfig.json`, the same as `tsc`. It is enabled for `ES2022` and later targets, and when `target` is not specified. A field initializer that reads a constructor parameter property now fails, because the initializer runs first:\r\n\r\n  ```js\r\n  class LoginPage {\r\n    // TypeError: Cannot read properties of undefined (reading 'getByRole')\r\n    readonly submit = this.page.getByRole('button', { name: 'Submit' });\r\n\r\n    constructor(private readonly page: Page) {}\r\n  }\r\n  ```\r\n\r\n  Move the initialization to the constructor, or set `\"useDefineForClassFields\": false` in your `tsconfig.json`.\r\n\r\n- Actions such as [locator.click()](https://playwright.dev/docs/api/class-locator#locator-cli"},"readme":true,"readme_zh":false,"news":[{"title":"Playwright: Automate Chromium, WebKit and Firefox","url":"https://github.com/microsoft/playwright","hn":"https://news.ycombinator.com/item?id=30083042","source":"Hacker News","lang":"en","date":"2022-01-26","points":383,"comments":140},{"title":"Playwright Tools for MCP","url":"https://github.com/microsoft/playwright-mcp","hn":"https://news.ycombinator.com/item?id=43485740","source":"Hacker News","lang":"en","date":"2025-03-26","points":181,"comments":34},{"title":"Playwright for .NET is now stable","url":"https://github.com/microsoft/playwright-dotnet/releases/tag/v1.12.1","hn":"https://news.ycombinator.com/item?id=27458735","source":"Hacker News","lang":"en","date":"2021-06-10","points":155,"comments":64},{"title":"Playwright CLI – Open/inspect/emulate pages, generate screenshots, record users","url":"https://github.com/microsoft/playwright-cli","hn":"https://news.ycombinator.com/item?id=24514271","source":"Hacker News","lang":"en","date":"2020-09-18","points":134,"comments":21},{"title":"Playwright-test – cross-browser end-to-end test suite with Playwright","url":"https://github.com/microsoft/playwright-test","hn":"https://news.ycombinator.com/item?id=26696363","source":"Hacker News","lang":"en","date":"2021-04-05","points":101,"comments":26},{"title":"Microsoft Playwright: Automate Chromium, WebKit and Firefox","url":"https://github.com/microsoft/playwright","hn":"https://news.ycombinator.com/item?id=22125530","source":"Hacker News","lang":"en","date":"2020-01-23","points":43,"comments":3},{"title":"Validating APIs During Playwright Tests with Postman","url":"https://note.com/postman_japan/n/n53114d2c6e88?hl=en","source":"note","lang":"en","date":"2026-10-27"},{"title":"Best AI Testing Platform, Amikoo, Launches Workers to Automate End-to-End Playwright Tests for Every Pull Request","url":"https://www.streetinsider.com/GetNews/Best+AI+Testing+Platform%2C+Amikoo%2C+Launches+Workers+to+Automate+End-to-End+Playwright+Tests+for+Every+Pull+Request/27243144.html","source":"StreetInsider.com","lang":"en","date":"2026-10-27"},{"title":"テスト自動化を任された文系40代ITおじさん、Playwrightを入れて、お試しのテストを動かしてみた。……が、知らないうちに全部 ...","url":"https://note.com/it_hatsu_ojisan/n/ne7c07f7e0325","source":"note","lang":"zh","date":"2026-10-16"},{"title":"Playwright MCP server for Power Platform testing","url":"https://learn.microsoft.com/en-us/power-platform/developer/playwright-samples/ai-mcp","source":"learn","lang":"en","date":"2026-04-17"},{"title":"Quickstart: Set up continuous end-to-end testing with Playwright Workspaces","url":"https://learn.microsoft.com/en-us/azure/app-testing/playwright-workspaces/quickstart-automate-end-to-end-testing","source":"learn","lang":"en","date":"2025-08-06"},{"title":"Mastering Playwright: A Comprehensive Guide to Modern Automation Testing","url":"https://www.onrec.com/news/news-archive/mastering-playwright-a-comprehensive-guide-to-modern-automation-testing","source":"Online Recruitment","lang":"en","date":"2024-11-11"},{"title":"Extending AWS Transform custom with MCP Servers for End-to-End Code Modernization","url":"https://news.google.com/rss/articles/CBMiugFBVV95cUxOSTN1LUFBb3RicW9JRkhwSkNUOE1qd0xfUGRzWURHVzRyamQ2REFFZXY5bnQxczE2TXVVcU5TNXU1TE1zaUpTUGJLZVcyUzc1N1dRSHhhVUFHWjhJOG13OXhwYV9yOXdLd0wxb0hqY0E4bzdIZ2pXQl9FMkp4T0J6MXlVdVN5bWd4Qkx5cElFRGl6U2pQa3pyeFJrR29RT1RQV2p1QTEzTk9KQ1UxTGlNTlhUaGV4MkRoZ1E?oc=5","source":"Amazon Web Services (AWS)","lang":"en","date":"2026-08-12"},{"title":"Copilot code review: Agent skills and MCP now generally available","url":"https://news.google.com/rss/articles/CBMiqgFBVV95cUxPUk5Hc0xPMmdNTjFFM0NfNkFvd0sxNVZaLVYzS2RqZGVpSHNpVW00bGFOZmFhNjlYMWhpeUZYWGRlZUVPUk1CVnY5Q2lscVVaeDZnYnR1X3Q5QnFyeVpnWGtGaHZyTXJZNDdjNUo0MUE2dDBTV3B0SjEtUkQ0N1pnbkEyMllreEo0dmtNU1lsZ3Fta3hDWGtVZzJFc0ltR3BpaUJyU2NRSkZidw?oc=5","source":"The GitHub Blog","lang":"en","date":"2026-07-29"},{"title":"2026 年抓取互联网的 10 个 GitHub 仓库 (附真实星标)","url":"https://news.google.com/rss/articles/CBMihAFBVV95cUxORGZEaDBndmMzUDdFYUdOTnRmeG9QQUw0RHRIZUFCTlNTMncyTjJIUWRWOVpLejNMa011VU5XeXNaZzQ1R0dEWk1IMWQweUFNZ2hyQjJMdlE3cy0xSDYxYTB0QllyOFh0QU1nNWxXVjRTazVzdDd1MTJ5R2VnbXdVRFpVenA?oc=5","source":"Pasquale Pillitteri","lang":"zh","date":"2026-06-30"},{"title":"OpenClaw 背后核心框架 Pi：好的 Coding Agent 应该让用户来决定需要什么","url":"https://news.google.com/rss/articles/CBMiSEFVX3lxTE5GU3drS0JRWjYwSm91aDBTaUhQYmFyRlV3MlBRdE91R2JhSTBpM19CWVVERkcyMldGM2FVNVFYYk5PUVF3Z2NPRA?oc=5","source":"智源社区","lang":"zh","date":"2026-03-18"},{"title":"以我的亲身体验，谈谈如何正确理解“养虾”","url":"https://news.google.com/rss/articles/CBMiZkFVX3lxTE4xa09ETzVjZVZuNlBycDZUS1l0SEZiZC1NMXlGdGRDekNINHFIX0dOYTFHcGlrQTZGeVlyNDRHX2pzdWRxa3hSQjY4V0Vva2NJcEQ2ZkFXeWw3Q3pFZzJzaGYyenRjUQ?oc=5","source":"观察者网","lang":"zh","date":"2026-03-17"},{"title":"网易有道 LobsterAI 推出技能商店并支持 MCP 协议，打造更开放的智能体生态","url":"https://news.google.com/rss/articles/CBMiWkFVX3lxTE9IcFJBRm1SSm9hN05id2pmZjlYVzZNTDFyemN6cGJqM0tHb1Z6c3R0czgxZ2lIVUUxdUVJNEhUa3JRLW9TWnZDMnh6UUFFMksyNVdFVVdBNmFXUQ?oc=5","source":"InfoQ.cn","lang":"zh","date":"2026-03-06"},{"title":"给OpenClaw开天眼！解决了10个跨境电商网站爬虫难题","url":"https://news.google.com/rss/articles/CBMiVkFVX3lxTE9ESS1TZmdRZE9iN0NEdU1QY2NtREc0M2Q0QWRCYjRLajYzQU01M3ZHVTNaZTluZllHTHpYdjkyMHhTYS02QTVhR1JRS2F5Z2lTSVprQktn?oc=5","source":"腾讯新闻","lang":"zh","date":"2026-03-03"},{"title":"How to debug a web app with Playwright MCP and GitHub Copilot","url":"https://news.google.com/rss/articles/CBMiqwFBVV95cUxNTzBVd2hLY0JXVUR6S2RhdkE5enpVZm1uZnVBa3FUdUZOZkdlOFZqUWxBTVdKVmZVbUFLaHVBQk1COUFCNFpMVzFyTkVtLXVfbWdXbkxUaXhJNWNsRU85NERFYldJdFVGTWVLMzRIYXBxLW55eGVZeWJJQzltVG04cUpIQ0VPMmJEUjg1U0pQV25JM2wzYWZmcU5QbVVuZklKNjBTbl9Vb1pLUkU?oc=5","source":"The GitHub Blog","lang":"en","date":"2025-09-05"},{"title":"Copilot coding agent now has its own web browser","url":"https://news.google.com/rss/articles/CBMilAFBVV95cUxPaG9xOUF4T1VEcHBwWTRwZkpyR2lHZEtjM3F5ZmZ6bE1MR2lLci1wTGNsMTk4Mm1nU3VmYURkNW42UGVfQUd4aVpBeHNmQlR5Y0RELWFzbE1XeHJUU3hfaG5Scl9JYkFfS242TllkdGwtTnM5VGktLUVHUmdXQkE5OVRRTkdzcHhoU2VpQnhTN2J1eFRZ?oc=5","source":"The GitHub Blog","lang":"en","date":"2025-07-02"},{"title":"How to add Playwright tests to your pull request CI with GitHub Actions","url":"https://news.google.com/rss/articles/CBMiekFVX3lxTE5OVm9YelNxYzFGSUJZVmN5WmxjSzhUVk0zaTVIR2VpUGt6UzlObFVsZzRaaWpnUEFZR010Yk9zSGRnSGJRY1BJaE9pT1JtYlRFb3B1SkJJcTJOV0xzQ2RCaFJMem1oRDdscnEwMklCV1lJQmZFQlRaNWln?oc=5","source":"Snyk","lang":"en","date":"2022-10-14"}],"stale":false,"snapshot_at":"2026-11-10T09:35:25Z","history_start":"2026-09-06"}