[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F2QNYCSBWR2V0FE6EQSWZX":3,"skill-same:01M6F2QNYCSBWR2V0FE6EQSWZX":75},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":26,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":55,"repositoryHtmlUrl":56,"repositoryHomepageUrl":57,"ownerHtmlUrl":58,"ownerBlogUrl":6,"ownerDescription":59,"updatedAt":60,"install":61,"resources":74},"01M6F2QNYCSBWR2V0FE6EQSWZX","playwright-pro",null,"Production-grade Playwright testing toolkit. Use when the user mentions Playwright tests, end-to-end testing, browser automation, fixing flaky tests, test migration, CI\u002FCD testing, or test suites. Generate tests, fix flaky failures, migrate from Cypress\u002FSelenium, sync with TestRail, run on BrowserStack. 55 templates, 3 agents, smart reporting.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Falirezarezvani\u002Fclaude-skills\u002Fplaywright-pro\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"pro","playwright","playwright pro","migrate","CI\u002FCD","cypress","end","tests","playwright testing","use","fix","testing","reporting","ci","selenium","browser","run","generate","sync","browser automation","2026-11-10 10:12:30",false,"---\nname: \"playwright-pro\"\ndescription: \"Production-grade Playwright testing toolkit. Use when the user mentions Playwright tests, end-to-end testing, browser automation, fixing flaky tests, test migration, CI\u002FCD testing, or test suites. Generate tests, fix flaky failures, migrate from Cypress\u002FSelenium, sync with TestRail, run on BrowserStack. 55 templates, 3 agents, smart reporting.\"\n---\n\n# Playwright Pro\n\nProduction-grade Playwright testing toolkit for AI coding agents.\n\n## Available Commands\n\nWhen installed as a Claude Code plugin, these are available as `\u002Fpw:` commands:\n\n| Command | What it does |\n|---|---|\n| `\u002Fpw:init` | Set up Playwright — detects framework, generates config, CI, first test |\n| `\u002Fpw:generate \u003Cspec>` | Generate tests from user story, URL, or component |\n| `\u002Fpw:review` | Review tests for anti-patterns and coverage gaps |\n| `\u002Fpw:fix \u003Ctest>` | Diagnose and fix failing or flaky tests |\n| `\u002Fpw:migrate` | Migrate from Cypress or Selenium to Playwright |\n| `\u002Fpw:coverage` | Analyze what's tested vs. what's missing |\n| `\u002Fpw:testrail` | Sync with TestRail — read cases, push results |\n| `\u002Fpw:browserstack` | Run on BrowserStack, pull cross-browser reports |\n| `\u002Fpw:report` | Generate test report in your preferred format |\n\n## Quick Start Workflow\n\nThe recommended sequence for most projects:\n\n```\n1. \u002Fpw:init          → scaffolds config, CI pipeline, and a first smoke test\n2. \u002Fpw:generate      → generates tests from your spec or URL\n3. \u002Fpw:review        → validates quality and flags anti-patterns      ← always run after generate\n4. \u002Fpw:fix \u003Ctest>    → diagnoses and repairs any failing\u002Fflaky tests  ← run when CI turns red\n```\n\n**Validation checkpoints:**\n- After `\u002Fpw:generate` — always run `\u002Fpw:review` before committing; it catches locator anti-patterns and missing assertions automatically.\n- After `\u002Fpw:fix` — re-run the full suite locally (`npx playwright test`) to confirm the fix doesn't introduce regressions.\n- After `\u002Fpw:migrate` — run `\u002Fpw:coverage` to confirm parity with the old suite before decommissioning Cypress\u002FSelenium tests.\n\n### Example: Generate → Review → Fix\n\n```bash\n# 1. Generate tests from a user story\n\u002Fpw:generate \"As a user I can log in with email and password\"\n\n# Generated: tests\u002Fauth\u002Flogin.spec.ts\n# → Playwright Pro creates the file using the auth template.\n\n# 2. Review the generated tests\n\u002Fpw:review tests\u002Fauth\u002Flogin.spec.ts\n\n# → Flags: one test used page.locator('input[type=password]') — suggests getByLabel('Password')\n# → Fix applied automatically.\n\n# 3. Run locally to confirm\nnpx playwright test tests\u002Fauth\u002Flogin.spec.ts --headed\n\n# 4. If a test is flaky in CI, diagnose it\n\u002Fpw:fix tests\u002Fauth\u002Flogin.spec.ts\n# → Identifies missing web-first assertion; replaces waitForTimeout(2000) with expect(locator).toBeVisible()\n```\n\n## Golden Rules\n\n1. `getByRole()` over CSS\u002FXPath — resilient to markup changes\n2. Never `page.waitForTimeout()` — use web-first assertions\n3. `expect(locator)` auto-retries; `expect(await locator.textContent())` does not\n4. Isolate every test — no shared state between tests\n5. `baseURL` in config — zero hardcoded URLs\n6. Retries: `2` in CI, `0` locally\n7. Traces: `'on-first-retry'` — rich debugging without slowdown\n8. Fixtures over globals — `test.extend()` for shared state\n9. One behavior per test — multiple related assertions are fine\n10. Mock external services only — never mock your own app\n\n## Locator Priority\n\n```\n1. getByRole()        — buttons, links, headings, form elements\n2. getByLabel()       — form fields with labels\n3. getByText()        — non-interactive text\n4. getByPlaceholder() — inputs with placeholder\n5. getByTestId()      — when no semantic option exists\n6. page.locator()     — CSS\u002FXPath as last resort\n```\n\n## What's Included\n\n- **9 skills** with detailed step-by-step instructions\n- **3 specialized agents**: test-architect, test-debugger, migration-planner\n- **55 test templates**: auth, CRUD, checkout, search, forms, dashboard, settings, onboarding, notifications, API, accessibility\n- **2 MCP servers** (TypeScript): TestRail and BrowserStack integrations\n- **Smart hooks**: auto-validate test quality, auto-detect Playwright projects\n- **6 reference docs**: golden rules, locators, assertions, fixtures, pitfalls, flaky tests\n- **Migration guides**: Cypress and Selenium mapping tables\n\n## Integration Setup\n\n### TestRail (Optional)\n```bash\nexport TESTRAIL_URL=\"https:\u002F\u002Fyour-instance.testrail.io\"\nexport TESTRAIL_USER=\"your@email.com\"\nexport TESTRAIL_API_KEY=\"your-api-key\"\n```\n\n### BrowserStack (Optional)\n```bash\nexport BROWSERSTACK_USERNAME=\"your-username\"\nexport BROWSERSTACK_ACCESS_KEY=\"your-access-key\"\n```\n\n## Quick Reference\n\nSee `reference\u002F` directory for:\n- `golden-rules.md` — The 10 non-negotiable rules\n- `locators.md` — Complete locator priority with cheat sheet\n- `assertions.md` — Web-first assertions reference\n- `fixtures.md` — Custom fixtures and storageState patterns\n- `common-pitfalls.md` — Top 10 mistakes and fixes\n- `flaky-tests.md` — Diagnosis commands and quick fixes\n\nSee `templates\u002FREADME.md` for the full template index.\n\n","# Playwright Pro\n\nProduction-grade Playwright testing toolkit for AI coding agents.\n\n## Available Commands\n\nWhen installed as a Claude Code plugin, these are available as `\u002Fpw:` commands:\n\n| Command | What it does |\n|---|---|\n| `\u002Fpw:init` | Set up Playwright — detects framework, generates config, CI, first test |\n| `\u002Fpw:generate \u003Cspec>` | Generate tests from user story, URL, or component |\n| `\u002Fpw:review` | Review tests for anti-patterns and coverage gaps |\n| `\u002Fpw:fix \u003Ctest>` | Diagnose and fix failing or flaky tests |\n| `\u002Fpw:migrate` | Migrate from Cypress or Selenium to Playwright |\n| `\u002Fpw:coverage` | Analyze what's tested vs. what's missing |\n| `\u002Fpw:testrail` | Sync with TestRail — read cases, push results |\n| `\u002Fpw:browserstack` | Run on BrowserStack, pull cross-browser reports |\n| `\u002Fpw:report` | Generate test report in your preferred format |\n\n## Quick Start Workflow\n\nThe recommended sequence for most projects:\n\n```\n1. \u002Fpw:init          → scaffolds config, CI pipeline, and a first smoke test\n2. \u002Fpw:generate      → generates tests from your spec or URL\n3. \u002Fpw:review        → validates quality and flags anti-patterns      ← always run after generate\n4. \u002Fpw:fix \u003Ctest>    → diagnoses and repairs any failing\u002Fflaky tests  ← run when CI turns red\n```\n\n**Validation checkpoints:**\n- After `\u002Fpw:generate` — always run `\u002Fpw:review` before committing; it catches locator anti-patterns and missing assertions automatically.\n- After `\u002Fpw:fix` — re-run the full suite locally (`npx playwright test`) to confirm the fix doesn't introduce regressions.\n- After `\u002Fpw:migrate` — run `\u002Fpw:coverage` to confirm parity with the old suite before decommissioning Cypress\u002FSelenium tests.\n\n### Example: Generate → Review → Fix\n\n```bash\n# 1. Generate tests from a user story\n\u002Fpw:generate \"As a user I can log in with email and password\"\n\n# Generated: tests\u002Fauth\u002Flogin.spec.ts\n# → Playwright Pro creates the file using the auth template.\n\n# 2. Review the generated tests\n\u002Fpw:review tests\u002Fauth\u002Flogin.spec.ts\n\n# → Flags: one test used page.locator('input[type=password]') — suggests getByLabel('Password')\n# → Fix applied automatically.\n\n# 3. Run locally to confirm\nnpx playwright test tests\u002Fauth\u002Flogin.spec.ts --headed\n\n# 4. If a test is flaky in CI, diagnose it\n\u002Fpw:fix tests\u002Fauth\u002Flogin.spec.ts\n# → Identifies missing web-first assertion; replaces waitForTimeout(2000) with expect(locator).toBeVisible()\n```\n\n## Golden Rules\n\n1. `getByRole()` over CSS\u002FXPath — resilient to markup changes\n2. Never `page.waitForTimeout()` — use web-first assertions\n3. `expect(locator)` auto-retries; `expect(await locator.textContent())` does not\n4. Isolate every test — no shared state between tests\n5. `baseURL` in config — zero hardcoded URLs\n6. Retries: `2` in CI, `0` locally\n7. Traces: `'on-first-retry'` — rich debugging without slowdown\n8. Fixtures over globals — `test.extend()` for shared state\n9. One behavior per test — multiple related assertions are fine\n10. Mock external services only — never mock your own app\n\n## Locator Priority\n\n```\n1. getByRole()        — buttons, links, headings, form elements\n2. getByLabel()       — form fields with labels\n3. getByText()        — non-interactive text\n4. getByPlaceholder() — inputs with placeholder\n5. getByTestId()      — when no semantic option exists\n6. page.locator()     — CSS\u002FXPath as last resort\n```\n\n## What's Included\n\n- **9 skills** with detailed step-by-step instructions\n- **3 specialized agents**: test-architect, test-debugger, migration-planner\n- **55 test templates**: auth, CRUD, checkout, search, forms, dashboard, settings, onboarding, notifications, API, accessibility\n- **2 MCP servers** (TypeScript): TestRail and BrowserStack integrations\n- **Smart hooks**: auto-validate test quality, auto-detect Playwright projects\n- **6 reference docs**: golden rules, locators, assertions, fixtures, pitfalls, flaky tests\n- **Migration guides**: Cypress and Selenium mapping tables\n\n## Integration Setup\n\n### TestRail (Optional)\n```bash\nexport TESTRAIL_URL=\"https:\u002F\u002Fyour-instance.testrail.io\"\nexport TESTRAIL_USER=\"your@email.com\"\nexport TESTRAIL_API_KEY=\"your-api-key\"\n```\n\n### BrowserStack (Optional)\n```bash\nexport BROWSERSTACK_USERNAME=\"your-username\"\nexport BROWSERSTACK_ACCESS_KEY=\"your-access-key\"\n```\n\n## Quick Reference\n\nSee `reference\u002F` directory for:\n- `golden-rules.md` — The 10 non-negotiable rules\n- `locators.md` — Complete locator priority with cheat sheet\n- `assertions.md` — Web-first assertions reference\n- `fixtures.md` — Custom fixtures and storageState patterns\n- `common-pitfalls.md` — Top 10 mistakes and fixes\n- `flaky-tests.md` — Diagnosis commands and quick fixes\n\nSee `templates\u002FREADME.md` for the full template index.\n\n",{"name":5,"description":7},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Falirezarezvani\u002Fclaude-skills\u002Fplaywright-pro",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill playwright-pro",{"tool":67,"command":68},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill playwright-pro",{"tool":70,"command":71},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill playwright-pro","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Falirezarezvani\u002Fclaude-skills\u002Fplaywright-pro\u002FSKILL.md",true,[],[76,86,96,105,111,118],{"skillNo":77,"name":78,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":82,"publishedAt":47},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[81],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[83,84,85],"model","model hierarchy","model hierarchy skill",{"skillNo":87,"name":88,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":92,"publishedAt":47},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[91],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[93,94,95],"MCP","zoom","zoom mcp",{"skillNo":97,"name":98,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":101,"publishedAt":47},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[102,103,104,94],"sdk","zoom apps sdk","apps",{"skillNo":106,"name":107,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":47},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[107],{"skillNo":112,"name":113,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":117,"publishedAt":47},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[116],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[113],{"skillNo":119,"name":120,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":123,"publishedAt":47},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[120]]