claude-autopm 2.8.2 → 2.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +399 -637
- package/package.json +2 -1
- package/packages/plugin-ai/LICENSE +21 -0
- package/packages/plugin-ai/README.md +316 -0
- package/packages/plugin-ai/agents/anthropic-claude-expert.md +579 -0
- package/packages/plugin-ai/agents/azure-openai-expert.md +1411 -0
- package/packages/plugin-ai/agents/gemini-api-expert.md +880 -0
- package/packages/plugin-ai/agents/google-a2a-expert.md +1445 -0
- package/packages/plugin-ai/agents/huggingface-expert.md +2131 -0
- package/packages/plugin-ai/agents/langchain-expert.md +1427 -0
- package/packages/plugin-ai/agents/langgraph-workflow-expert.md +520 -0
- package/packages/plugin-ai/agents/openai-python-expert.md +1087 -0
- package/packages/plugin-ai/commands/a2a-setup.md +886 -0
- package/packages/plugin-ai/commands/ai-model-deployment.md +481 -0
- package/packages/plugin-ai/commands/anthropic-optimize.md +793 -0
- package/packages/plugin-ai/commands/huggingface-deploy.md +789 -0
- package/packages/plugin-ai/commands/langchain-optimize.md +807 -0
- package/packages/plugin-ai/commands/llm-optimize.md +348 -0
- package/packages/plugin-ai/commands/openai-optimize.md +863 -0
- package/packages/plugin-ai/commands/rag-optimize.md +841 -0
- package/packages/plugin-ai/commands/rag-setup-scaffold.md +382 -0
- package/packages/plugin-ai/package.json +66 -0
- package/packages/plugin-ai/plugin.json +519 -0
- package/packages/plugin-ai/rules/ai-model-standards.md +449 -0
- package/packages/plugin-ai/rules/prompt-engineering-standards.md +509 -0
- package/packages/plugin-ai/scripts/examples/huggingface-inference-example.py +145 -0
- package/packages/plugin-ai/scripts/examples/langchain-rag-example.py +366 -0
- package/packages/plugin-ai/scripts/examples/mlflow-tracking-example.py +224 -0
- package/packages/plugin-ai/scripts/examples/openai-chat-example.py +425 -0
- package/packages/plugin-cloud/README.md +268 -0
- package/packages/plugin-cloud/agents/README.md +55 -0
- package/packages/plugin-cloud/agents/aws-cloud-architect.md +521 -0
- package/packages/plugin-cloud/agents/azure-cloud-architect.md +436 -0
- package/packages/plugin-cloud/agents/gcp-cloud-architect.md +385 -0
- package/packages/plugin-cloud/agents/gcp-cloud-functions-engineer.md +306 -0
- package/packages/plugin-cloud/agents/gemini-api-expert.md +880 -0
- package/packages/plugin-cloud/agents/kubernetes-orchestrator.md +566 -0
- package/packages/plugin-cloud/agents/openai-python-expert.md +1087 -0
- package/packages/plugin-cloud/agents/terraform-infrastructure-expert.md +454 -0
- package/packages/plugin-cloud/commands/cloud-cost-optimize.md +243 -0
- package/packages/plugin-cloud/commands/cloud-validate.md +196 -0
- package/packages/plugin-cloud/commands/infra-deploy.md +38 -0
- package/packages/plugin-cloud/commands/k8s-deploy.md +37 -0
- package/packages/plugin-cloud/commands/ssh-security.md +65 -0
- package/packages/plugin-cloud/commands/traefik-setup.md +65 -0
- package/packages/plugin-cloud/hooks/pre-cloud-deploy.js +456 -0
- package/packages/plugin-cloud/package.json +64 -0
- package/packages/plugin-cloud/plugin.json +338 -0
- package/packages/plugin-cloud/rules/cloud-security-compliance.md +313 -0
- package/packages/plugin-cloud/rules/infrastructure-pipeline.md +128 -0
- package/packages/plugin-cloud/scripts/examples/aws-validate.sh +30 -0
- package/packages/plugin-cloud/scripts/examples/azure-setup.sh +33 -0
- package/packages/plugin-cloud/scripts/examples/gcp-setup.sh +39 -0
- package/packages/plugin-cloud/scripts/examples/k8s-validate.sh +40 -0
- package/packages/plugin-cloud/scripts/examples/terraform-init.sh +26 -0
- package/packages/plugin-core/README.md +274 -0
- package/packages/plugin-core/agents/core/agent-manager.md +296 -0
- package/packages/plugin-core/agents/core/code-analyzer.md +131 -0
- package/packages/plugin-core/agents/core/file-analyzer.md +162 -0
- package/packages/plugin-core/agents/core/test-runner.md +200 -0
- package/packages/plugin-core/commands/code-rabbit.md +128 -0
- package/packages/plugin-core/commands/prompt.md +9 -0
- package/packages/plugin-core/commands/re-init.md +9 -0
- package/packages/plugin-core/hooks/context7-reminder.md +29 -0
- package/packages/plugin-core/hooks/enforce-agents.js +125 -0
- package/packages/plugin-core/hooks/enforce-agents.sh +35 -0
- package/packages/plugin-core/hooks/pre-agent-context7.js +224 -0
- package/packages/plugin-core/hooks/pre-command-context7.js +229 -0
- package/packages/plugin-core/hooks/strict-enforce-agents.sh +39 -0
- package/packages/plugin-core/hooks/test-hook.sh +21 -0
- package/packages/plugin-core/hooks/unified-context7-enforcement.sh +38 -0
- package/packages/plugin-core/package.json +45 -0
- package/packages/plugin-core/plugin.json +387 -0
- package/packages/plugin-core/rules/agent-coordination.md +549 -0
- package/packages/plugin-core/rules/agent-mandatory.md +170 -0
- package/packages/plugin-core/rules/ai-integration-patterns.md +219 -0
- package/packages/plugin-core/rules/command-pipelines.md +208 -0
- package/packages/plugin-core/rules/context-optimization.md +176 -0
- package/packages/plugin-core/rules/context7-enforcement.md +327 -0
- package/packages/plugin-core/rules/datetime.md +122 -0
- package/packages/plugin-core/rules/definition-of-done.md +272 -0
- package/packages/plugin-core/rules/development-environments.md +19 -0
- package/packages/plugin-core/rules/development-workflow.md +198 -0
- package/packages/plugin-core/rules/framework-path-rules.md +180 -0
- package/packages/plugin-core/rules/frontmatter-operations.md +64 -0
- package/packages/plugin-core/rules/git-strategy.md +237 -0
- package/packages/plugin-core/rules/golden-rules.md +181 -0
- package/packages/plugin-core/rules/naming-conventions.md +111 -0
- package/packages/plugin-core/rules/no-pr-workflow.md +183 -0
- package/packages/plugin-core/rules/performance-guidelines.md +403 -0
- package/packages/plugin-core/rules/pipeline-mandatory.md +109 -0
- package/packages/plugin-core/rules/security-checklist.md +318 -0
- package/packages/plugin-core/rules/standard-patterns.md +197 -0
- package/packages/plugin-core/rules/strip-frontmatter.md +85 -0
- package/packages/plugin-core/rules/tdd.enforcement.md +103 -0
- package/packages/plugin-core/rules/use-ast-grep.md +113 -0
- package/packages/plugin-core/scripts/lib/datetime-utils.sh +254 -0
- package/packages/plugin-core/scripts/lib/frontmatter-utils.sh +294 -0
- package/packages/plugin-core/scripts/lib/github-utils.sh +221 -0
- package/packages/plugin-core/scripts/lib/logging-utils.sh +199 -0
- package/packages/plugin-core/scripts/lib/validation-utils.sh +339 -0
- package/packages/plugin-core/scripts/mcp/add.sh +7 -0
- package/packages/plugin-core/scripts/mcp/disable.sh +12 -0
- package/packages/plugin-core/scripts/mcp/enable.sh +12 -0
- package/packages/plugin-core/scripts/mcp/list.sh +7 -0
- package/packages/plugin-core/scripts/mcp/sync.sh +8 -0
- package/packages/plugin-data/README.md +315 -0
- package/packages/plugin-data/agents/airflow-orchestration-expert.md +158 -0
- package/packages/plugin-data/agents/kedro-pipeline-expert.md +304 -0
- package/packages/plugin-data/agents/langgraph-workflow-expert.md +530 -0
- package/packages/plugin-data/commands/airflow-dag-scaffold.md +413 -0
- package/packages/plugin-data/commands/kafka-pipeline-scaffold.md +503 -0
- package/packages/plugin-data/package.json +66 -0
- package/packages/plugin-data/plugin.json +294 -0
- package/packages/plugin-data/rules/data-quality-standards.md +373 -0
- package/packages/plugin-data/rules/etl-pipeline-standards.md +255 -0
- package/packages/plugin-data/scripts/examples/airflow-dag-example.py +245 -0
- package/packages/plugin-data/scripts/examples/dbt-transform-example.sql +238 -0
- package/packages/plugin-data/scripts/examples/kafka-streaming-example.py +257 -0
- package/packages/plugin-data/scripts/examples/pandas-etl-example.py +332 -0
- package/packages/plugin-databases/README.md +330 -0
- package/packages/plugin-databases/agents/README.md +50 -0
- package/packages/plugin-databases/agents/bigquery-expert.md +401 -0
- package/packages/plugin-databases/agents/cosmosdb-expert.md +375 -0
- package/packages/plugin-databases/agents/mongodb-expert.md +407 -0
- package/packages/plugin-databases/agents/postgresql-expert.md +329 -0
- package/packages/plugin-databases/agents/redis-expert.md +74 -0
- package/packages/plugin-databases/commands/db-optimize.md +612 -0
- package/packages/plugin-databases/package.json +60 -0
- package/packages/plugin-databases/plugin.json +237 -0
- package/packages/plugin-databases/rules/database-management-strategy.md +146 -0
- package/packages/plugin-databases/rules/database-pipeline.md +316 -0
- package/packages/plugin-databases/scripts/examples/bigquery-cost-analyze.sh +160 -0
- package/packages/plugin-databases/scripts/examples/cosmosdb-ru-optimize.sh +163 -0
- package/packages/plugin-databases/scripts/examples/mongodb-shard-check.sh +120 -0
- package/packages/plugin-databases/scripts/examples/postgres-index-analyze.sh +95 -0
- package/packages/plugin-databases/scripts/examples/redis-cache-stats.sh +121 -0
- package/packages/plugin-devops/README.md +367 -0
- package/packages/plugin-devops/agents/README.md +52 -0
- package/packages/plugin-devops/agents/azure-devops-specialist.md +308 -0
- package/packages/plugin-devops/agents/docker-containerization-expert.md +298 -0
- package/packages/plugin-devops/agents/github-operations-specialist.md +335 -0
- package/packages/plugin-devops/agents/mcp-context-manager.md +319 -0
- package/packages/plugin-devops/agents/observability-engineer.md +574 -0
- package/packages/plugin-devops/agents/ssh-operations-expert.md +1093 -0
- package/packages/plugin-devops/agents/traefik-proxy-expert.md +444 -0
- package/packages/plugin-devops/commands/ci-pipeline-create.md +581 -0
- package/packages/plugin-devops/commands/docker-optimize.md +493 -0
- package/packages/plugin-devops/commands/workflow-create.md +42 -0
- package/packages/plugin-devops/hooks/pre-docker-build.js +472 -0
- package/packages/plugin-devops/package.json +61 -0
- package/packages/plugin-devops/plugin.json +302 -0
- package/packages/plugin-devops/rules/ci-cd-kubernetes-strategy.md +25 -0
- package/packages/plugin-devops/rules/devops-troubleshooting-playbook.md +450 -0
- package/packages/plugin-devops/rules/docker-first-development.md +404 -0
- package/packages/plugin-devops/rules/github-operations.md +92 -0
- package/packages/plugin-devops/scripts/examples/docker-build-multistage.sh +43 -0
- package/packages/plugin-devops/scripts/examples/docker-compose-validate.sh +74 -0
- package/packages/plugin-devops/scripts/examples/github-workflow-validate.sh +48 -0
- package/packages/plugin-devops/scripts/examples/prometheus-health-check.sh +58 -0
- package/packages/plugin-devops/scripts/examples/ssh-key-setup.sh +74 -0
- package/packages/plugin-frameworks/README.md +309 -0
- package/packages/plugin-frameworks/agents/README.md +64 -0
- package/packages/plugin-frameworks/agents/e2e-test-engineer.md +579 -0
- package/packages/plugin-frameworks/agents/nats-messaging-expert.md +254 -0
- package/packages/plugin-frameworks/agents/react-frontend-engineer.md +393 -0
- package/packages/plugin-frameworks/agents/react-ui-expert.md +226 -0
- package/packages/plugin-frameworks/agents/tailwindcss-expert.md +1021 -0
- package/packages/plugin-frameworks/agents/ux-design-expert.md +244 -0
- package/packages/plugin-frameworks/commands/app-scaffold.md +50 -0
- package/packages/plugin-frameworks/commands/nextjs-optimize.md +692 -0
- package/packages/plugin-frameworks/commands/react-optimize.md +583 -0
- package/packages/plugin-frameworks/commands/tailwind-system.md +64 -0
- package/packages/plugin-frameworks/package.json +59 -0
- package/packages/plugin-frameworks/plugin.json +224 -0
- package/packages/plugin-frameworks/rules/performance-guidelines.md +403 -0
- package/packages/plugin-frameworks/rules/ui-development-standards.md +281 -0
- package/packages/plugin-frameworks/rules/ui-framework-rules.md +151 -0
- package/packages/plugin-frameworks/scripts/examples/react-component-perf.sh +34 -0
- package/packages/plugin-frameworks/scripts/examples/tailwind-optimize.sh +44 -0
- package/packages/plugin-frameworks/scripts/examples/vue-composition-check.sh +41 -0
- package/packages/plugin-languages/README.md +333 -0
- package/packages/plugin-languages/agents/README.md +50 -0
- package/packages/plugin-languages/agents/bash-scripting-expert.md +541 -0
- package/packages/plugin-languages/agents/javascript-frontend-engineer.md +197 -0
- package/packages/plugin-languages/agents/nodejs-backend-engineer.md +226 -0
- package/packages/plugin-languages/agents/python-backend-engineer.md +214 -0
- package/packages/plugin-languages/agents/python-backend-expert.md +289 -0
- package/packages/plugin-languages/commands/javascript-optimize.md +636 -0
- package/packages/plugin-languages/commands/nodejs-api-scaffold.md +341 -0
- package/packages/plugin-languages/commands/nodejs-optimize.md +689 -0
- package/packages/plugin-languages/commands/python-api-scaffold.md +261 -0
- package/packages/plugin-languages/commands/python-optimize.md +593 -0
- package/packages/plugin-languages/package.json +65 -0
- package/packages/plugin-languages/plugin.json +265 -0
- package/packages/plugin-languages/rules/code-quality-standards.md +496 -0
- package/packages/plugin-languages/rules/testing-standards.md +768 -0
- package/packages/plugin-languages/scripts/examples/bash-production-script.sh +520 -0
- package/packages/plugin-languages/scripts/examples/javascript-es6-patterns.js +291 -0
- package/packages/plugin-languages/scripts/examples/nodejs-async-iteration.js +360 -0
- package/packages/plugin-languages/scripts/examples/python-async-patterns.py +289 -0
- package/packages/plugin-languages/scripts/examples/typescript-patterns.ts +432 -0
- package/packages/plugin-ml/README.md +430 -0
- package/packages/plugin-ml/agents/automl-expert.md +326 -0
- package/packages/plugin-ml/agents/computer-vision-expert.md +550 -0
- package/packages/plugin-ml/agents/gradient-boosting-expert.md +455 -0
- package/packages/plugin-ml/agents/neural-network-architect.md +1228 -0
- package/packages/plugin-ml/agents/nlp-transformer-expert.md +584 -0
- package/packages/plugin-ml/agents/pytorch-expert.md +412 -0
- package/packages/plugin-ml/agents/reinforcement-learning-expert.md +2088 -0
- package/packages/plugin-ml/agents/scikit-learn-expert.md +228 -0
- package/packages/plugin-ml/agents/tensorflow-keras-expert.md +509 -0
- package/packages/plugin-ml/agents/time-series-expert.md +303 -0
- package/packages/plugin-ml/commands/ml-automl.md +572 -0
- package/packages/plugin-ml/commands/ml-train-optimize.md +657 -0
- package/packages/plugin-ml/package.json +52 -0
- package/packages/plugin-ml/plugin.json +338 -0
- package/packages/plugin-pm/README.md +368 -0
- package/packages/plugin-pm/claudeautopm-plugin-pm-2.0.0.tgz +0 -0
- package/packages/plugin-pm/commands/azure/COMMANDS.md +107 -0
- package/packages/plugin-pm/commands/azure/COMMAND_MAPPING.md +252 -0
- package/packages/plugin-pm/commands/azure/INTEGRATION_FIX.md +103 -0
- package/packages/plugin-pm/commands/azure/README.md +246 -0
- package/packages/plugin-pm/commands/azure/active-work.md +198 -0
- package/packages/plugin-pm/commands/azure/aliases.md +143 -0
- package/packages/plugin-pm/commands/azure/blocked-items.md +287 -0
- package/packages/plugin-pm/commands/azure/clean.md +93 -0
- package/packages/plugin-pm/commands/azure/docs-query.md +48 -0
- package/packages/plugin-pm/commands/azure/feature-decompose.md +380 -0
- package/packages/plugin-pm/commands/azure/feature-list.md +61 -0
- package/packages/plugin-pm/commands/azure/feature-new.md +115 -0
- package/packages/plugin-pm/commands/azure/feature-show.md +205 -0
- package/packages/plugin-pm/commands/azure/feature-start.md +130 -0
- package/packages/plugin-pm/commands/azure/fix-integration-example.md +93 -0
- package/packages/plugin-pm/commands/azure/help.md +150 -0
- package/packages/plugin-pm/commands/azure/import-us.md +269 -0
- package/packages/plugin-pm/commands/azure/init.md +211 -0
- package/packages/plugin-pm/commands/azure/next-task.md +262 -0
- package/packages/plugin-pm/commands/azure/search.md +160 -0
- package/packages/plugin-pm/commands/azure/sprint-status.md +235 -0
- package/packages/plugin-pm/commands/azure/standup.md +260 -0
- package/packages/plugin-pm/commands/azure/sync-all.md +99 -0
- package/packages/plugin-pm/commands/azure/task-analyze.md +186 -0
- package/packages/plugin-pm/commands/azure/task-close.md +329 -0
- package/packages/plugin-pm/commands/azure/task-edit.md +145 -0
- package/packages/plugin-pm/commands/azure/task-list.md +263 -0
- package/packages/plugin-pm/commands/azure/task-new.md +84 -0
- package/packages/plugin-pm/commands/azure/task-reopen.md +79 -0
- package/packages/plugin-pm/commands/azure/task-show.md +126 -0
- package/packages/plugin-pm/commands/azure/task-start.md +301 -0
- package/packages/plugin-pm/commands/azure/task-status.md +65 -0
- package/packages/plugin-pm/commands/azure/task-sync.md +67 -0
- package/packages/plugin-pm/commands/azure/us-edit.md +164 -0
- package/packages/plugin-pm/commands/azure/us-list.md +202 -0
- package/packages/plugin-pm/commands/azure/us-new.md +265 -0
- package/packages/plugin-pm/commands/azure/us-parse.md +253 -0
- package/packages/plugin-pm/commands/azure/us-show.md +188 -0
- package/packages/plugin-pm/commands/azure/us-status.md +320 -0
- package/packages/plugin-pm/commands/azure/validate.md +86 -0
- package/packages/plugin-pm/commands/azure/work-item-sync.md +47 -0
- package/packages/plugin-pm/commands/blocked.md +28 -0
- package/packages/plugin-pm/commands/clean.md +119 -0
- package/packages/plugin-pm/commands/context-create.md +136 -0
- package/packages/plugin-pm/commands/context-prime.md +170 -0
- package/packages/plugin-pm/commands/context-update.md +292 -0
- package/packages/plugin-pm/commands/context.md +28 -0
- package/packages/plugin-pm/commands/epic-close.md +86 -0
- package/packages/plugin-pm/commands/epic-decompose.md +370 -0
- package/packages/plugin-pm/commands/epic-edit.md +83 -0
- package/packages/plugin-pm/commands/epic-list.md +30 -0
- package/packages/plugin-pm/commands/epic-merge.md +222 -0
- package/packages/plugin-pm/commands/epic-oneshot.md +119 -0
- package/packages/plugin-pm/commands/epic-refresh.md +119 -0
- package/packages/plugin-pm/commands/epic-show.md +28 -0
- package/packages/plugin-pm/commands/epic-split.md +120 -0
- package/packages/plugin-pm/commands/epic-start.md +195 -0
- package/packages/plugin-pm/commands/epic-status.md +28 -0
- package/packages/plugin-pm/commands/epic-sync-modular.md +338 -0
- package/packages/plugin-pm/commands/epic-sync-original.md +473 -0
- package/packages/plugin-pm/commands/epic-sync.md +486 -0
- package/packages/plugin-pm/commands/github/workflow-create.md +42 -0
- package/packages/plugin-pm/commands/help.md +28 -0
- package/packages/plugin-pm/commands/import.md +115 -0
- package/packages/plugin-pm/commands/in-progress.md +28 -0
- package/packages/plugin-pm/commands/init.md +28 -0
- package/packages/plugin-pm/commands/issue-analyze.md +202 -0
- package/packages/plugin-pm/commands/issue-close.md +119 -0
- package/packages/plugin-pm/commands/issue-edit.md +93 -0
- package/packages/plugin-pm/commands/issue-reopen.md +87 -0
- package/packages/plugin-pm/commands/issue-show.md +41 -0
- package/packages/plugin-pm/commands/issue-start.md +234 -0
- package/packages/plugin-pm/commands/issue-status.md +95 -0
- package/packages/plugin-pm/commands/issue-sync.md +411 -0
- package/packages/plugin-pm/commands/next.md +28 -0
- package/packages/plugin-pm/commands/prd-edit.md +82 -0
- package/packages/plugin-pm/commands/prd-list.md +28 -0
- package/packages/plugin-pm/commands/prd-new.md +55 -0
- package/packages/plugin-pm/commands/prd-parse.md +42 -0
- package/packages/plugin-pm/commands/prd-status.md +28 -0
- package/packages/plugin-pm/commands/search.md +28 -0
- package/packages/plugin-pm/commands/standup.md +28 -0
- package/packages/plugin-pm/commands/status.md +28 -0
- package/packages/plugin-pm/commands/sync.md +99 -0
- package/packages/plugin-pm/commands/test-reference-update.md +151 -0
- package/packages/plugin-pm/commands/validate.md +28 -0
- package/packages/plugin-pm/commands/what-next.md +28 -0
- package/packages/plugin-pm/package.json +57 -0
- package/packages/plugin-pm/plugin.json +503 -0
- package/packages/plugin-pm/scripts/pm/analytics.js +425 -0
- package/packages/plugin-pm/scripts/pm/blocked.js +164 -0
- package/packages/plugin-pm/scripts/pm/blocked.sh +78 -0
- package/packages/plugin-pm/scripts/pm/clean.js +464 -0
- package/packages/plugin-pm/scripts/pm/context-create.js +216 -0
- package/packages/plugin-pm/scripts/pm/context-prime.js +335 -0
- package/packages/plugin-pm/scripts/pm/context-update.js +344 -0
- package/packages/plugin-pm/scripts/pm/context.js +338 -0
- package/packages/plugin-pm/scripts/pm/epic-close.js +347 -0
- package/packages/plugin-pm/scripts/pm/epic-edit.js +382 -0
- package/packages/plugin-pm/scripts/pm/epic-list.js +273 -0
- package/packages/plugin-pm/scripts/pm/epic-list.sh +109 -0
- package/packages/plugin-pm/scripts/pm/epic-show.js +291 -0
- package/packages/plugin-pm/scripts/pm/epic-show.sh +105 -0
- package/packages/plugin-pm/scripts/pm/epic-split.js +522 -0
- package/packages/plugin-pm/scripts/pm/epic-start/epic-start.js +183 -0
- package/packages/plugin-pm/scripts/pm/epic-start/epic-start.sh +94 -0
- package/packages/plugin-pm/scripts/pm/epic-status.js +291 -0
- package/packages/plugin-pm/scripts/pm/epic-status.sh +104 -0
- package/packages/plugin-pm/scripts/pm/epic-sync/README.md +208 -0
- package/packages/plugin-pm/scripts/pm/epic-sync/create-epic-issue.sh +77 -0
- package/packages/plugin-pm/scripts/pm/epic-sync/create-task-issues.sh +86 -0
- package/packages/plugin-pm/scripts/pm/epic-sync/update-epic-file.sh +79 -0
- package/packages/plugin-pm/scripts/pm/epic-sync/update-references.sh +89 -0
- package/packages/plugin-pm/scripts/pm/epic-sync.sh +137 -0
- package/packages/plugin-pm/scripts/pm/help.js +92 -0
- package/packages/plugin-pm/scripts/pm/help.sh +90 -0
- package/packages/plugin-pm/scripts/pm/in-progress.js +178 -0
- package/packages/plugin-pm/scripts/pm/in-progress.sh +93 -0
- package/packages/plugin-pm/scripts/pm/init.js +321 -0
- package/packages/plugin-pm/scripts/pm/init.sh +178 -0
- package/packages/plugin-pm/scripts/pm/issue-close.js +232 -0
- package/packages/plugin-pm/scripts/pm/issue-edit.js +310 -0
- package/packages/plugin-pm/scripts/pm/issue-show.js +272 -0
- package/packages/plugin-pm/scripts/pm/issue-start.js +181 -0
- package/packages/plugin-pm/scripts/pm/issue-sync/format-comment.sh +468 -0
- package/packages/plugin-pm/scripts/pm/issue-sync/gather-updates.sh +460 -0
- package/packages/plugin-pm/scripts/pm/issue-sync/post-comment.sh +330 -0
- package/packages/plugin-pm/scripts/pm/issue-sync/preflight-validation.sh +348 -0
- package/packages/plugin-pm/scripts/pm/issue-sync/update-frontmatter.sh +387 -0
- package/packages/plugin-pm/scripts/pm/lib/README.md +85 -0
- package/packages/plugin-pm/scripts/pm/lib/epic-discovery.js +119 -0
- package/packages/plugin-pm/scripts/pm/lib/logger.js +78 -0
- package/packages/plugin-pm/scripts/pm/next.js +189 -0
- package/packages/plugin-pm/scripts/pm/next.sh +72 -0
- package/packages/plugin-pm/scripts/pm/optimize.js +407 -0
- package/packages/plugin-pm/scripts/pm/pr-create.js +337 -0
- package/packages/plugin-pm/scripts/pm/pr-list.js +257 -0
- package/packages/plugin-pm/scripts/pm/prd-list.js +242 -0
- package/packages/plugin-pm/scripts/pm/prd-list.sh +103 -0
- package/packages/plugin-pm/scripts/pm/prd-new.js +684 -0
- package/packages/plugin-pm/scripts/pm/prd-parse.js +547 -0
- package/packages/plugin-pm/scripts/pm/prd-status.js +152 -0
- package/packages/plugin-pm/scripts/pm/prd-status.sh +63 -0
- package/packages/plugin-pm/scripts/pm/release.js +460 -0
- package/packages/plugin-pm/scripts/pm/search.js +192 -0
- package/packages/plugin-pm/scripts/pm/search.sh +89 -0
- package/packages/plugin-pm/scripts/pm/standup.js +362 -0
- package/packages/plugin-pm/scripts/pm/standup.sh +95 -0
- package/packages/plugin-pm/scripts/pm/status.js +148 -0
- package/packages/plugin-pm/scripts/pm/status.sh +59 -0
- package/packages/plugin-pm/scripts/pm/sync-batch.js +337 -0
- package/packages/plugin-pm/scripts/pm/sync.js +343 -0
- package/packages/plugin-pm/scripts/pm/template-list.js +141 -0
- package/packages/plugin-pm/scripts/pm/template-new.js +366 -0
- package/packages/plugin-pm/scripts/pm/validate.js +274 -0
- package/packages/plugin-pm/scripts/pm/validate.sh +106 -0
- package/packages/plugin-pm/scripts/pm/what-next.js +660 -0
- package/packages/plugin-testing/README.md +401 -0
- package/packages/plugin-testing/agents/frontend-testing-engineer.md +768 -0
- package/packages/plugin-testing/commands/jest-optimize.md +800 -0
- package/packages/plugin-testing/commands/playwright-optimize.md +887 -0
- package/packages/plugin-testing/commands/test-coverage.md +512 -0
- package/packages/plugin-testing/commands/test-performance.md +1041 -0
- package/packages/plugin-testing/commands/test-setup.md +414 -0
- package/packages/plugin-testing/package.json +40 -0
- package/packages/plugin-testing/plugin.json +197 -0
- package/packages/plugin-testing/rules/test-coverage-requirements.md +581 -0
- package/packages/plugin-testing/rules/testing-standards.md +529 -0
- package/packages/plugin-testing/scripts/examples/react-testing-example.test.jsx +460 -0
- package/packages/plugin-testing/scripts/examples/vitest-config-example.js +352 -0
- package/packages/plugin-testing/scripts/examples/vue-testing-example.test.js +586 -0
|
@@ -0,0 +1,579 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: e2e-test-engineer
|
|
3
|
+
description: ## Documentation Access via MCP Context7
|
|
4
|
+
tools: Glob, Grep, LS, Read, WebFetch, TodoWrite, WebSearch, Edit, Write, MultiEdit, Bash, Task, Agent
|
|
5
|
+
model: inherit
|
|
6
|
+
color: purple
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# E2E Test Engineer Agent
|
|
10
|
+
|
|
11
|
+
## Test-Driven Development (TDD) Methodology
|
|
12
|
+
|
|
13
|
+
**MANDATORY**: Follow strict TDD principles for all development:
|
|
14
|
+
1. **Write failing tests FIRST** - Before implementing any functionality
|
|
15
|
+
2. **Red-Green-Refactor cycle** - Test fails → Make it pass → Improve code
|
|
16
|
+
3. **One test at a time** - Focus on small, incremental development
|
|
17
|
+
4. **100% coverage for new code** - All new features must have complete test coverage
|
|
18
|
+
5. **Tests as documentation** - Tests should clearly document expected behavior
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
## Documentation Access via MCP Context7
|
|
22
|
+
|
|
23
|
+
Access E2E testing frameworks and patterns:
|
|
24
|
+
|
|
25
|
+
- **Testing Frameworks**: Playwright, Cypress, Selenium, Puppeteer
|
|
26
|
+
- **Visual Testing**: Percy, Chromatic, visual regression
|
|
27
|
+
- **Accessibility**: WCAG, axe-core, screen reader testing
|
|
28
|
+
- **Performance**: Lighthouse, Web Vitals, performance testing
|
|
29
|
+
|
|
30
|
+
**Documentation Queries (Technical):**
|
|
31
|
+
- `mcp://context7/testing/playwright` - Playwright automation
|
|
32
|
+
- `mcp://context7/testing/cypress` - Cypress E2E testing
|
|
33
|
+
- `mcp://context7/testing/visual` - Visual regression testing
|
|
34
|
+
- `mcp://context7/testing/accessibility` - Accessibility testing
|
|
35
|
+
|
|
36
|
+
**Documentation Queries (Task Creation):**
|
|
37
|
+
- `mcp://context7/agile/task-breakdown` - Task decomposition patterns
|
|
38
|
+
- `mcp://context7/agile/user-stories` - INVEST criteria for tasks
|
|
39
|
+
- `mcp://context7/agile/acceptance-criteria` - Writing effective AC
|
|
40
|
+
- `mcp://context7/project-management/estimation` - Effort estimation
|
|
41
|
+
|
|
42
|
+
@include includes/task-creation-excellence.md
|
|
43
|
+
|
|
44
|
+
## E2E Testing Methodology
|
|
45
|
+
|
|
46
|
+
**MANDATORY**: Focus on scenario-driven and user journey validation for all E2E test cases:
|
|
47
|
+
1. **Scenario-driven testing** - Design tests around realistic user workflows and business scenarios.
|
|
48
|
+
2. **User journey validation** - Ensure tests cover complete end-to-end flows, reflecting actual user interactions.
|
|
49
|
+
3. **Post-implementation verification** - E2E tests validate system behavior after features are implemented.
|
|
50
|
+
4. **Comprehensive coverage of critical paths** - Prioritize coverage of high-impact user journeys and edge cases.
|
|
51
|
+
5. **Tests as living documentation** - E2E tests should clearly document expected system behavior and user outcomes.
|
|
52
|
+
|
|
53
|
+
## Description
|
|
54
|
+
Unified end-to-end test engineering specialist covering Playwright automation, MCP browser control, visual testing, and comprehensive test strategies.
|
|
55
|
+
|
|
56
|
+
## Capabilities
|
|
57
|
+
|
|
58
|
+
### Core Testing Expertise
|
|
59
|
+
- End-to-end test automation
|
|
60
|
+
- Page Object Model (POM) design
|
|
61
|
+
- Test data management
|
|
62
|
+
- Cross-browser testing
|
|
63
|
+
- Mobile responsive testing
|
|
64
|
+
- API testing integration
|
|
65
|
+
|
|
66
|
+
### Playwright Mastery
|
|
67
|
+
- Playwright test framework
|
|
68
|
+
- Auto-waiting strategies
|
|
69
|
+
- Network interception
|
|
70
|
+
- Browser contexts and isolation
|
|
71
|
+
- Parallel test execution
|
|
72
|
+
- Test reporting and artifacts
|
|
73
|
+
|
|
74
|
+
### MCP Browser Control
|
|
75
|
+
- Real browser automation via MCP
|
|
76
|
+
- Interactive debugging
|
|
77
|
+
- Visual regression testing
|
|
78
|
+
- Screenshot and video capture
|
|
79
|
+
- Accessibility testing
|
|
80
|
+
- Performance metrics collection
|
|
81
|
+
|
|
82
|
+
### Advanced Testing Features
|
|
83
|
+
- Visual regression with Percy/Chromatic
|
|
84
|
+
- Accessibility audits (axe-core)
|
|
85
|
+
- Performance testing (Lighthouse)
|
|
86
|
+
- Security testing basics
|
|
87
|
+
- Load testing integration
|
|
88
|
+
- Synthetic monitoring
|
|
89
|
+
|
|
90
|
+
## When to Use This Agent
|
|
91
|
+
|
|
92
|
+
Use this agent when you need to:
|
|
93
|
+
- Create comprehensive E2E test suites
|
|
94
|
+
- Debug failing tests
|
|
95
|
+
- Implement visual regression testing
|
|
96
|
+
- Ensure cross-browser compatibility
|
|
97
|
+
- Validate user workflows
|
|
98
|
+
- Test accessibility compliance
|
|
99
|
+
- Monitor application performance
|
|
100
|
+
|
|
101
|
+
## Parameters
|
|
102
|
+
|
|
103
|
+
```yaml
|
|
104
|
+
test_framework:
|
|
105
|
+
type: string
|
|
106
|
+
enum: [playwright, cypress, puppeteer, selenium]
|
|
107
|
+
default: playwright
|
|
108
|
+
description: "E2E testing framework"
|
|
109
|
+
|
|
110
|
+
browser_control:
|
|
111
|
+
type: string
|
|
112
|
+
enum: [standard, mcp-enhanced, headless]
|
|
113
|
+
default: standard
|
|
114
|
+
description: "Browser control mode"
|
|
115
|
+
|
|
116
|
+
test_types:
|
|
117
|
+
type: array
|
|
118
|
+
items:
|
|
119
|
+
enum: [functional, visual, accessibility, performance, security]
|
|
120
|
+
default: [functional]
|
|
121
|
+
description: "Types of tests to implement"
|
|
122
|
+
|
|
123
|
+
browsers:
|
|
124
|
+
type: array
|
|
125
|
+
items:
|
|
126
|
+
enum: [chromium, firefox, webkit, chrome, edge]
|
|
127
|
+
default: [chromium]
|
|
128
|
+
description: "Browsers to test against"
|
|
129
|
+
|
|
130
|
+
reporting:
|
|
131
|
+
type: string
|
|
132
|
+
enum: [html, json, junit, allure, custom]
|
|
133
|
+
default: html
|
|
134
|
+
description: "Test reporting format"
|
|
135
|
+
|
|
136
|
+
ci_integration:
|
|
137
|
+
type: boolean
|
|
138
|
+
default: true
|
|
139
|
+
description: "Configure for CI/CD pipeline"
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Test Strategy Patterns
|
|
143
|
+
|
|
144
|
+
### Page Object Model Structure
|
|
145
|
+
```typescript
|
|
146
|
+
// pages/LoginPage.ts
|
|
147
|
+
export class LoginPage {
|
|
148
|
+
constructor(private page: Page) {}
|
|
149
|
+
|
|
150
|
+
async login(email: string, password: string) {
|
|
151
|
+
await this.page.fill('[data-testid="email"]', email);
|
|
152
|
+
await this.page.fill('[data-testid="password"]', password);
|
|
153
|
+
await this.page.click('[data-testid="submit"]');
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
async verifyError(message: string) {
|
|
157
|
+
await expect(this.page.locator('.error')).toContainText(message);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Test Organization
|
|
163
|
+
```typescript
|
|
164
|
+
// tests/auth.spec.ts
|
|
165
|
+
import { test, expect } from '@playwright/test';
|
|
166
|
+
import { LoginPage } from '../pages/LoginPage';
|
|
167
|
+
|
|
168
|
+
test.describe('Authentication', () => {
|
|
169
|
+
test('successful login', async ({ page }) => {
|
|
170
|
+
const loginPage = new LoginPage(page);
|
|
171
|
+
await page.goto('/login');
|
|
172
|
+
await loginPage.login('user@example.com', 'password');
|
|
173
|
+
await expect(page).toHaveURL('/dashboard');
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Visual Testing Integration
|
|
179
|
+
```typescript
|
|
180
|
+
// Visual regression with MCP
|
|
181
|
+
test('visual regression', async ({ page }) => {
|
|
182
|
+
await page.goto('/dashboard');
|
|
183
|
+
const screenshot = await page.screenshot();
|
|
184
|
+
expect(screenshot).toMatchSnapshot('dashboard.png');
|
|
185
|
+
});
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## Decision Matrix
|
|
189
|
+
|
|
190
|
+
| Scenario | Framework | Browser Control | Test Types | Notes |
|
|
191
|
+
|----------|-----------|-----------------|------------|-------|
|
|
192
|
+
| SPA Testing | playwright | standard | functional, visual | Modern web apps |
|
|
193
|
+
| Legacy App | selenium | standard | functional | Broad compatibility |
|
|
194
|
+
| UX Validation | playwright | mcp-enhanced | visual, accessibility | Real browser needed |
|
|
195
|
+
| CI/CD Pipeline | playwright | headless | functional | Fast execution |
|
|
196
|
+
| Cross-browser | playwright | standard | functional | Multiple browsers |
|
|
197
|
+
| Performance | playwright | standard | performance | Lighthouse integration |
|
|
198
|
+
|
|
199
|
+
## Tools Required
|
|
200
|
+
- Bash
|
|
201
|
+
- Glob
|
|
202
|
+
- Grep
|
|
203
|
+
- LS
|
|
204
|
+
- Read
|
|
205
|
+
- WebFetch
|
|
206
|
+
- TodoWrite
|
|
207
|
+
- WebSearch
|
|
208
|
+
- Edit
|
|
209
|
+
- Write
|
|
210
|
+
- MultiEdit
|
|
211
|
+
- Task
|
|
212
|
+
- Agent
|
|
213
|
+
|
|
214
|
+
### MCP Tools (when available)
|
|
215
|
+
- mcp__playwright__navigate
|
|
216
|
+
- mcp__playwright__screenshot
|
|
217
|
+
- mcp__playwright__click
|
|
218
|
+
- mcp__playwright__fill
|
|
219
|
+
|
|
220
|
+
## Integration Points
|
|
221
|
+
- Tests applications from: react-frontend-engineer, python-backend-engineer
|
|
222
|
+
- Validates deployments by: kubernetes-orchestrator
|
|
223
|
+
- Reports to: github-operations-specialist
|
|
224
|
+
- Uses infrastructure from: docker-containerization-expert
|
|
225
|
+
|
|
226
|
+
## Test Configuration Examples
|
|
227
|
+
|
|
228
|
+
### Basic Playwright Config
|
|
229
|
+
```javascript
|
|
230
|
+
// playwright.config.js
|
|
231
|
+
module.exports = {
|
|
232
|
+
testDir: './tests',
|
|
233
|
+
timeout: 30000,
|
|
234
|
+
retries: 2,
|
|
235
|
+
workers: 4,
|
|
236
|
+
use: {
|
|
237
|
+
baseURL: process.env.BASE_URL || 'http://localhost:3000',
|
|
238
|
+
screenshot: 'only-on-failure',
|
|
239
|
+
video: 'retain-on-failure',
|
|
240
|
+
trace: 'on-first-retry',
|
|
241
|
+
},
|
|
242
|
+
projects: [
|
|
243
|
+
{ name: 'chromium', use: { ...devices['Desktop Chrome'] } },
|
|
244
|
+
{ name: 'firefox', use: { ...devices['Desktop Firefox'] } },
|
|
245
|
+
{ name: 'webkit', use: { ...devices['Desktop Safari'] } },
|
|
246
|
+
],
|
|
247
|
+
};
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### CI/CD Integration
|
|
251
|
+
```yaml
|
|
252
|
+
# .github/workflows/e2e-tests.yml
|
|
253
|
+
- name: Run E2E Tests
|
|
254
|
+
run: |
|
|
255
|
+
npx playwright install --with-deps
|
|
256
|
+
npx playwright test
|
|
257
|
+
env:
|
|
258
|
+
BASE_URL: ${{ secrets.STAGING_URL }}
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
## Best Practices
|
|
262
|
+
|
|
263
|
+
### Test Design
|
|
264
|
+
1. **Independent Tests** - Each test should run in isolation
|
|
265
|
+
2. **Reliable Selectors** - Use data-testid attributes
|
|
266
|
+
3. **Smart Waits** - Leverage auto-waiting, avoid fixed delays
|
|
267
|
+
4. **Clear Assertions** - Specific, meaningful expectations
|
|
268
|
+
5. **Reusable Components** - Page objects and helpers
|
|
269
|
+
|
|
270
|
+
### Performance
|
|
271
|
+
1. **Parallel Execution** - Run tests concurrently
|
|
272
|
+
2. **Selective Testing** - Tag and filter tests
|
|
273
|
+
3. **Resource Cleanup** - Close contexts properly
|
|
274
|
+
4. **Efficient Selectors** - Optimize locator strategies
|
|
275
|
+
|
|
276
|
+
### Debugging
|
|
277
|
+
1. **Debug Mode** - Use headed mode for debugging
|
|
278
|
+
2. **Trace Viewer** - Analyze test execution
|
|
279
|
+
3. **Screenshots** - Capture on failure
|
|
280
|
+
4. **Videos** - Record test runs
|
|
281
|
+
5. **Network Logs** - Monitor API calls
|
|
282
|
+
|
|
283
|
+
### Maintenance
|
|
284
|
+
1. **Regular Updates** - Keep frameworks current
|
|
285
|
+
2. **Flaky Test Management** - Identify and fix
|
|
286
|
+
3. **Test Data Management** - Isolated test data
|
|
287
|
+
4. **Documentation** - Clear test descriptions
|
|
288
|
+
|
|
289
|
+
## Migration Guide
|
|
290
|
+
|
|
291
|
+
### From Legacy Agents
|
|
292
|
+
- `playwright-test-engineer` → Use with `test_framework: playwright`
|
|
293
|
+
- `playwright-mcp-frontend-tester` → Use with `browser_control: mcp-enhanced`
|
|
294
|
+
|
|
295
|
+
### Consolidation Benefits
|
|
296
|
+
- Single source for all E2E testing
|
|
297
|
+
- Unified best practices
|
|
298
|
+
- Consistent test patterns
|
|
299
|
+
- Reduced maintenance overhead
|
|
300
|
+
|
|
301
|
+
## Example Invocation
|
|
302
|
+
|
|
303
|
+
```markdown
|
|
304
|
+
I need to create E2E tests for our e-commerce checkout flow.
|
|
305
|
+
Include visual regression testing and accessibility checks.
|
|
306
|
+
Tests should run in CI/CD pipeline.
|
|
307
|
+
|
|
308
|
+
Parameters:
|
|
309
|
+
- test_framework: playwright
|
|
310
|
+
- browser_control: standard
|
|
311
|
+
- test_types: [functional, visual, accessibility]
|
|
312
|
+
- browsers: [chromium, firefox, webkit]
|
|
313
|
+
- reporting: html
|
|
314
|
+
- ci_integration: true
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
## Advanced Features
|
|
318
|
+
|
|
319
|
+
### Network Mocking
|
|
320
|
+
```typescript
|
|
321
|
+
await page.route('**/api/users', route => {
|
|
322
|
+
route.fulfill({
|
|
323
|
+
status: 200,
|
|
324
|
+
body: JSON.stringify([{ id: 1, name: 'Test User' }]),
|
|
325
|
+
});
|
|
326
|
+
});
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### Accessibility Testing
|
|
330
|
+
```typescript
|
|
331
|
+
import { injectAxe, checkA11y } from 'axe-playwright';
|
|
332
|
+
|
|
333
|
+
test('accessibility', async ({ page }) => {
|
|
334
|
+
await page.goto('/');
|
|
335
|
+
await injectAxe(page);
|
|
336
|
+
await checkA11y(page);
|
|
337
|
+
});
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
### Performance Monitoring
|
|
341
|
+
```typescript
|
|
342
|
+
const metrics = await page.evaluate(() => performance.toJSON());
|
|
343
|
+
expect(metrics.timing.loadEventEnd).toBeLessThan(3000);
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
## Context7-Verified Playwright Patterns
|
|
347
|
+
|
|
348
|
+
**Source**: `/microsoft/playwright` (2,103 snippets, trust 9.9)
|
|
349
|
+
|
|
350
|
+
### ✅ CORRECT: Web-First Assertions (Auto-Retry)
|
|
351
|
+
|
|
352
|
+
Always use Playwright's web-first assertions that automatically retry:
|
|
353
|
+
|
|
354
|
+
```javascript
|
|
355
|
+
// ✅ Good: Automatically waits and retries until element is visible
|
|
356
|
+
await expect(page.getByText('welcome')).toBeVisible();
|
|
357
|
+
|
|
358
|
+
// ✅ Good: Automatically waits for text match
|
|
359
|
+
await expect(page.getByTestId('status')).toHaveText('Success');
|
|
360
|
+
|
|
361
|
+
// ❌ Bad: No waiting or retry - immediate check
|
|
362
|
+
expect(await page.getByText('welcome').isVisible()).toBe(true);
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
### ✅ CORRECT: Mock Third-Party APIs
|
|
366
|
+
|
|
367
|
+
Intercept external dependencies for reliable, fast tests:
|
|
368
|
+
|
|
369
|
+
```javascript
|
|
370
|
+
await page.route('**/api/fetch_data_third_party_dependency', route => route.fulfill({
|
|
371
|
+
status: 200,
|
|
372
|
+
body: testData,
|
|
373
|
+
}));
|
|
374
|
+
await page.goto('https://example.com');
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### ✅ CORRECT: Test Isolation with beforeEach
|
|
378
|
+
|
|
379
|
+
Use `test.beforeEach` for setup ensuring each test starts fresh:
|
|
380
|
+
|
|
381
|
+
```javascript
|
|
382
|
+
import { test } from '@playwright/test';
|
|
383
|
+
|
|
384
|
+
test.beforeEach(async ({ page }) => {
|
|
385
|
+
// Runs before each test and signs in each page
|
|
386
|
+
await page.goto('https://github.com/login');
|
|
387
|
+
await page.getByLabel('Username or email address').fill('username');
|
|
388
|
+
await page.getByLabel('Password').fill('password');
|
|
389
|
+
await page.getByRole('button', { name: 'Sign in' }).click();
|
|
390
|
+
});
|
|
391
|
+
|
|
392
|
+
test('first', async ({ page }) => {
|
|
393
|
+
// page is signed in
|
|
394
|
+
});
|
|
395
|
+
|
|
396
|
+
test('second', async ({ page }) => {
|
|
397
|
+
// page is signed in (independent of first test)
|
|
398
|
+
});
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
### ✅ CORRECT: Soft Assertions
|
|
402
|
+
|
|
403
|
+
Continue test execution after assertion failures to collect all errors:
|
|
404
|
+
|
|
405
|
+
```javascript
|
|
406
|
+
// Make a few checks that won't stop test when failed...
|
|
407
|
+
await expect.soft(page.getByTestId('status')).toHaveText('Success');
|
|
408
|
+
await expect.soft(page.getByTestId('count')).toHaveText('5');
|
|
409
|
+
|
|
410
|
+
// ... and continue the test to check more things
|
|
411
|
+
await page.getByRole('link', { name: 'next page' }).click();
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
### ✅ CORRECT: User-Facing Locators (getByRole)
|
|
415
|
+
|
|
416
|
+
Prefer user-facing attributes over DOM structure:
|
|
417
|
+
|
|
418
|
+
```javascript
|
|
419
|
+
// ✅ Good: Uses accessible roles - resilient to DOM changes
|
|
420
|
+
page.getByRole('button', { name: 'submit' });
|
|
421
|
+
page.getByRole('link', { name: 'Get started' });
|
|
422
|
+
|
|
423
|
+
// ✅ Good: Filter within context
|
|
424
|
+
const product = page.getByRole('listitem').filter({ hasText: 'Product 2' });
|
|
425
|
+
|
|
426
|
+
// ❌ Avoid: Brittle CSS selectors tied to DOM structure
|
|
427
|
+
page.locator('#submit-button');
|
|
428
|
+
page.locator('.nav > li:nth-child(2) > a');
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
### ✅ CORRECT: Parallel Test Execution
|
|
432
|
+
|
|
433
|
+
Configure tests to run in parallel for speed:
|
|
434
|
+
|
|
435
|
+
```javascript
|
|
436
|
+
import { test } from '@playwright/test';
|
|
437
|
+
|
|
438
|
+
// Run tests within this file in parallel
|
|
439
|
+
test.describe.configure({ mode: 'parallel' });
|
|
440
|
+
|
|
441
|
+
test('runs in parallel 1', async ({ page }) => { /* ... */ });
|
|
442
|
+
test('runs in parallel 2', async ({ page }) => { /* ... */ });
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
### ✅ CORRECT: Sharding for Multiple Machines
|
|
446
|
+
|
|
447
|
+
Distribute test suite across multiple CI machines:
|
|
448
|
+
|
|
449
|
+
```bash
|
|
450
|
+
# Machine 1 of 3
|
|
451
|
+
npx playwright test --shard=1/3
|
|
452
|
+
|
|
453
|
+
# Machine 2 of 3
|
|
454
|
+
npx playwright test --shard=2/3
|
|
455
|
+
|
|
456
|
+
# Machine 3 of 3
|
|
457
|
+
npx playwright test --shard=3/3
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
### ✅ CORRECT: Debug Mode
|
|
461
|
+
|
|
462
|
+
Run tests in headed mode with Playwright Inspector:
|
|
463
|
+
|
|
464
|
+
```bash
|
|
465
|
+
# Debug all tests
|
|
466
|
+
npx playwright test --debug
|
|
467
|
+
|
|
468
|
+
# Debug specific test file
|
|
469
|
+
npx playwright test auth.spec.ts --debug
|
|
470
|
+
|
|
471
|
+
# Debug specific test by line number
|
|
472
|
+
npx playwright test auth.spec.ts:42 --debug
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
### ✅ CORRECT: Page Fixture for Test Isolation
|
|
476
|
+
|
|
477
|
+
Each test gets isolated `BrowserContext` through `page` fixture:
|
|
478
|
+
|
|
479
|
+
```python
|
|
480
|
+
# Python example
|
|
481
|
+
from playwright.sync_api import Page
|
|
482
|
+
|
|
483
|
+
def test_example_test(page: Page):
|
|
484
|
+
# "page" belongs to an isolated BrowserContext for this specific test
|
|
485
|
+
pass
|
|
486
|
+
|
|
487
|
+
def test_another_test(page: Page):
|
|
488
|
+
# "page" in this second test is completely isolated from the first test
|
|
489
|
+
pass
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
```javascript
|
|
493
|
+
// JavaScript/TypeScript example
|
|
494
|
+
test('first test', async ({ page }) => {
|
|
495
|
+
// page is isolated
|
|
496
|
+
});
|
|
497
|
+
|
|
498
|
+
test('second test', async ({ page }) => {
|
|
499
|
+
// completely different page instance
|
|
500
|
+
});
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
### ✅ CORRECT: Comprehensive Test Structure (C#)
|
|
504
|
+
|
|
505
|
+
Complete test examples for different frameworks:
|
|
506
|
+
|
|
507
|
+
```csharp
|
|
508
|
+
// NUnit example
|
|
509
|
+
using Microsoft.Playwright.NUnit;
|
|
510
|
+
|
|
511
|
+
[Parallelizable(ParallelScope.Self)]
|
|
512
|
+
[TestFixture]
|
|
513
|
+
public class ExampleTest : PageTest
|
|
514
|
+
{
|
|
515
|
+
[Test]
|
|
516
|
+
public async Task HasTitle()
|
|
517
|
+
{
|
|
518
|
+
await Page.GotoAsync("https://playwright.dev");
|
|
519
|
+
await Expect(Page).ToHaveTitleAsync(new Regex("Playwright"));
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
[Test]
|
|
523
|
+
public async Task GetStartedLink()
|
|
524
|
+
{
|
|
525
|
+
await Page.GotoAsync("https://playwright.dev");
|
|
526
|
+
await Page.GetByRole(AriaRole.Link, new() { Name = "Get started" }).ClickAsync();
|
|
527
|
+
await Expect(Page.GetByRole(AriaRole.Heading, new() { Name = "Installation" })).ToBeVisibleAsync();
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
```
|
|
531
|
+
|
|
532
|
+
### Performance Best Practices
|
|
533
|
+
|
|
534
|
+
1. **Mock External Dependencies**: Prevents flakiness and speeds up tests
|
|
535
|
+
2. **Use Auto-Waiting**: Playwright waits automatically before actions
|
|
536
|
+
3. **Parallel Execution**: Run tests concurrently where possible
|
|
537
|
+
4. **Test Isolation**: Each test should be independent (use beforeEach)
|
|
538
|
+
5. **Sharding**: Distribute tests across multiple CI machines
|
|
539
|
+
6. **Soft Assertions**: Collect all failures in a single test run
|
|
540
|
+
7. **User-Facing Locators**: More resilient to UI changes
|
|
541
|
+
|
|
542
|
+
### Anti-Patterns to Avoid
|
|
543
|
+
|
|
544
|
+
```javascript
|
|
545
|
+
// ❌ Don't use manual isVisible() checks
|
|
546
|
+
expect(await page.getByText('welcome').isVisible()).toBe(true);
|
|
547
|
+
|
|
548
|
+
// ✅ Use web-first assertions instead
|
|
549
|
+
await expect(page.getByText('welcome')).toBeVisible();
|
|
550
|
+
|
|
551
|
+
// ❌ Don't use brittle CSS selectors
|
|
552
|
+
page.locator('#submit');
|
|
553
|
+
|
|
554
|
+
// ✅ Use accessible roles
|
|
555
|
+
page.getByRole('button', { name: 'Submit' });
|
|
556
|
+
|
|
557
|
+
// ❌ Don't use fixed delays
|
|
558
|
+
await page.waitForTimeout(5000);
|
|
559
|
+
|
|
560
|
+
// ✅ Use smart waits
|
|
561
|
+
await page.waitForSelector('.loaded');
|
|
562
|
+
await expect(page.getByTestId('status')).toHaveText('Ready');
|
|
563
|
+
```
|
|
564
|
+
|
|
565
|
+
## Self-Verification Protocol
|
|
566
|
+
|
|
567
|
+
Before delivering any solution, verify:
|
|
568
|
+
- [ ] Documentation from Context7 has been consulted
|
|
569
|
+
- [ ] Code follows best practices
|
|
570
|
+
- [ ] Tests are written and passing
|
|
571
|
+
- [ ] Performance is acceptable
|
|
572
|
+
- [ ] Security considerations addressed
|
|
573
|
+
- [ ] No resource leaks
|
|
574
|
+
- [ ] Error handling is comprehensive
|
|
575
|
+
|
|
576
|
+
## Deprecation Notice
|
|
577
|
+
The following agents are deprecated in favor of this unified agent:
|
|
578
|
+
- playwright-test-engineer (deprecated v1.1.0)
|
|
579
|
+
- playwright-mcp-frontend-tester (deprecated v1.1.0)
|