@jhl8041/dooray-mcp 0.1.4 → 0.1.6

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.
Files changed (396) hide show
  1. package/.claude/commands/bmad_agent_bmad-master.md +14 -0
  2. package/.claude/commands/bmad_bmm_agent_analyst.md +14 -0
  3. package/.claude/commands/bmad_bmm_agent_architect.md +14 -0
  4. package/.claude/commands/bmad_bmm_agent_dev.md +14 -0
  5. package/.claude/commands/bmad_bmm_agent_pm.md +14 -0
  6. package/.claude/commands/bmad_bmm_agent_quick-flow-solo-dev.md +14 -0
  7. package/.claude/commands/bmad_bmm_agent_sm.md +14 -0
  8. package/.claude/commands/bmad_bmm_agent_tea.md +14 -0
  9. package/.claude/commands/bmad_bmm_agent_tech-writer_tech-writer.md +14 -0
  10. package/.claude/commands/bmad_bmm_agent_ux-designer.md +14 -0
  11. package/.claude/commands/bmad_bmm_check-implementation-readiness.md +5 -0
  12. package/.claude/commands/bmad_bmm_code-review.md +13 -0
  13. package/.claude/commands/bmad_bmm_correct-course.md +13 -0
  14. package/.claude/commands/bmad_bmm_create-architecture.md +5 -0
  15. package/.claude/commands/bmad_bmm_create-epics-and-stories.md +5 -0
  16. package/.claude/commands/bmad_bmm_create-excalidraw-dataflow.md +13 -0
  17. package/.claude/commands/bmad_bmm_create-excalidraw-diagram.md +13 -0
  18. package/.claude/commands/bmad_bmm_create-excalidraw-flowchart.md +13 -0
  19. package/.claude/commands/bmad_bmm_create-excalidraw-wireframe.md +13 -0
  20. package/.claude/commands/bmad_bmm_create-prd.md +5 -0
  21. package/.claude/commands/bmad_bmm_create-product-brief.md +5 -0
  22. package/.claude/commands/bmad_bmm_create-story.md +13 -0
  23. package/.claude/commands/bmad_bmm_create-ux-design.md +5 -0
  24. package/.claude/commands/bmad_bmm_dev-story.md +13 -0
  25. package/.claude/commands/bmad_bmm_document-project.md +13 -0
  26. package/.claude/commands/bmad_bmm_quick-dev.md +5 -0
  27. package/.claude/commands/bmad_bmm_quick-spec.md +5 -0
  28. package/.claude/commands/bmad_bmm_research.md +5 -0
  29. package/.claude/commands/bmad_bmm_retrospective.md +13 -0
  30. package/.claude/commands/bmad_bmm_sprint-planning.md +13 -0
  31. package/.claude/commands/bmad_bmm_sprint-status.md +13 -0
  32. package/.claude/commands/bmad_bmm_testarch-atdd.md +13 -0
  33. package/.claude/commands/bmad_bmm_testarch-automate.md +13 -0
  34. package/.claude/commands/bmad_bmm_testarch-ci.md +13 -0
  35. package/.claude/commands/bmad_bmm_testarch-framework.md +13 -0
  36. package/.claude/commands/bmad_bmm_testarch-nfr.md +13 -0
  37. package/.claude/commands/bmad_bmm_testarch-test-design.md +13 -0
  38. package/.claude/commands/bmad_bmm_testarch-test-review.md +13 -0
  39. package/.claude/commands/bmad_bmm_testarch-trace.md +13 -0
  40. package/.claude/commands/bmad_brainstorming.md +5 -0
  41. package/.claude/commands/bmad_editorial-review-prose.md +9 -0
  42. package/.claude/commands/bmad_editorial-review-structure.md +10 -0
  43. package/.claude/commands/bmad_help.md +9 -0
  44. package/.claude/commands/bmad_index-docs.md +9 -0
  45. package/.claude/commands/bmad_party-mode.md +5 -0
  46. package/.claude/commands/bmad_review-adversarial-general.md +9 -0
  47. package/.claude/commands/bmad_shard-doc.md +9 -0
  48. package/_bmad/_config/agent-manifest.csv +11 -0
  49. package/_bmad/_config/agents/bmm-analyst.customize.yaml +41 -0
  50. package/_bmad/_config/agents/bmm-architect.customize.yaml +41 -0
  51. package/_bmad/_config/agents/bmm-dev.customize.yaml +41 -0
  52. package/_bmad/_config/agents/bmm-pm.customize.yaml +41 -0
  53. package/_bmad/_config/agents/bmm-quick-flow-solo-dev.customize.yaml +41 -0
  54. package/_bmad/_config/agents/bmm-sm.customize.yaml +41 -0
  55. package/_bmad/_config/agents/bmm-tea.customize.yaml +41 -0
  56. package/_bmad/_config/agents/bmm-tech-writer.customize.yaml +41 -0
  57. package/_bmad/_config/agents/bmm-ux-designer.customize.yaml +41 -0
  58. package/_bmad/_config/agents/core-bmad-master.customize.yaml +41 -0
  59. package/_bmad/_config/bmad-help.csv +40 -0
  60. package/_bmad/_config/files-manifest.csv +281 -0
  61. package/_bmad/_config/manifest.yaml +21 -0
  62. package/_bmad/_config/task-manifest.csv +9 -0
  63. package/_bmad/_config/tool-manifest.csv +1 -0
  64. package/_bmad/_config/workflow-manifest.csv +32 -0
  65. package/_bmad/bmm/agents/analyst.md +76 -0
  66. package/_bmad/bmm/agents/architect.md +58 -0
  67. package/_bmad/bmm/agents/dev.md +69 -0
  68. package/_bmad/bmm/agents/pm.md +72 -0
  69. package/_bmad/bmm/agents/quick-flow-solo-dev.md +69 -0
  70. package/_bmad/bmm/agents/sm.md +70 -0
  71. package/_bmad/bmm/agents/tea.md +70 -0
  72. package/_bmad/bmm/agents/tech-writer/tech-writer.md +70 -0
  73. package/_bmad/bmm/agents/ux-designer.md +57 -0
  74. package/_bmad/bmm/config.yaml +16 -0
  75. package/_bmad/bmm/data/project-context-template.md +26 -0
  76. package/_bmad/bmm/module-help.csv +32 -0
  77. package/_bmad/bmm/teams/default-party.csv +21 -0
  78. package/_bmad/bmm/teams/team-fullstack.yaml +12 -0
  79. package/_bmad/bmm/testarch/knowledge/adr-quality-readiness-checklist.md +350 -0
  80. package/_bmad/bmm/testarch/knowledge/api-request.md +442 -0
  81. package/_bmad/bmm/testarch/knowledge/api-testing-patterns.md +843 -0
  82. package/_bmad/bmm/testarch/knowledge/auth-session.md +552 -0
  83. package/_bmad/bmm/testarch/knowledge/burn-in.md +273 -0
  84. package/_bmad/bmm/testarch/knowledge/ci-burn-in.md +675 -0
  85. package/_bmad/bmm/testarch/knowledge/component-tdd.md +486 -0
  86. package/_bmad/bmm/testarch/knowledge/contract-testing.md +957 -0
  87. package/_bmad/bmm/testarch/knowledge/data-factories.md +500 -0
  88. package/_bmad/bmm/testarch/knowledge/email-auth.md +721 -0
  89. package/_bmad/bmm/testarch/knowledge/error-handling.md +725 -0
  90. package/_bmad/bmm/testarch/knowledge/feature-flags.md +750 -0
  91. package/_bmad/bmm/testarch/knowledge/file-utils.md +463 -0
  92. package/_bmad/bmm/testarch/knowledge/fixture-architecture.md +401 -0
  93. package/_bmad/bmm/testarch/knowledge/fixtures-composition.md +382 -0
  94. package/_bmad/bmm/testarch/knowledge/intercept-network-call.md +430 -0
  95. package/_bmad/bmm/testarch/knowledge/log.md +429 -0
  96. package/_bmad/bmm/testarch/knowledge/network-error-monitor.md +405 -0
  97. package/_bmad/bmm/testarch/knowledge/network-first.md +486 -0
  98. package/_bmad/bmm/testarch/knowledge/network-recorder.md +527 -0
  99. package/_bmad/bmm/testarch/knowledge/nfr-criteria.md +670 -0
  100. package/_bmad/bmm/testarch/knowledge/overview.md +286 -0
  101. package/_bmad/bmm/testarch/knowledge/playwright-config.md +730 -0
  102. package/_bmad/bmm/testarch/knowledge/probability-impact.md +601 -0
  103. package/_bmad/bmm/testarch/knowledge/recurse.md +421 -0
  104. package/_bmad/bmm/testarch/knowledge/risk-governance.md +615 -0
  105. package/_bmad/bmm/testarch/knowledge/selective-testing.md +732 -0
  106. package/_bmad/bmm/testarch/knowledge/selector-resilience.md +527 -0
  107. package/_bmad/bmm/testarch/knowledge/test-healing-patterns.md +644 -0
  108. package/_bmad/bmm/testarch/knowledge/test-levels-framework.md +473 -0
  109. package/_bmad/bmm/testarch/knowledge/test-priorities-matrix.md +373 -0
  110. package/_bmad/bmm/testarch/knowledge/test-quality.md +664 -0
  111. package/_bmad/bmm/testarch/knowledge/timing-debugging.md +372 -0
  112. package/_bmad/bmm/testarch/knowledge/visual-debugging.md +524 -0
  113. package/_bmad/bmm/testarch/tea-index.csv +35 -0
  114. package/_bmad/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
  115. package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +177 -0
  116. package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +161 -0
  117. package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +199 -0
  118. package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +202 -0
  119. package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +205 -0
  120. package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +219 -0
  121. package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +162 -0
  122. package/_bmad/bmm/workflows/1-analysis/create-product-brief/workflow.md +58 -0
  123. package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +137 -0
  124. package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +229 -0
  125. package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +238 -0
  126. package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +206 -0
  127. package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +234 -0
  128. package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +443 -0
  129. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
  130. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -0
  131. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +200 -0
  132. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -0
  133. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -0
  134. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -0
  135. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +475 -0
  136. package/_bmad/bmm/workflows/1-analysis/research/research.template.md +29 -0
  137. package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +137 -0
  138. package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +239 -0
  139. package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +248 -0
  140. package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +202 -0
  141. package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +239 -0
  142. package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +486 -0
  143. package/_bmad/bmm/workflows/1-analysis/research/workflow.md +173 -0
  144. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv +13 -0
  145. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md +197 -0
  146. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/project-types.csv +11 -0
  147. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01-init.md +191 -0
  148. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01b-continue.md +153 -0
  149. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md +224 -0
  150. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md +226 -0
  151. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md +213 -0
  152. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md +207 -0
  153. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md +226 -0
  154. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md +237 -0
  155. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md +228 -0
  156. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md +231 -0
  157. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md +242 -0
  158. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md +217 -0
  159. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md +124 -0
  160. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md +247 -0
  161. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01b-legacy-conversion.md +208 -0
  162. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md +249 -0
  163. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-03-edit.md +253 -0
  164. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-04-complete.md +168 -0
  165. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +218 -0
  166. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +191 -0
  167. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +209 -0
  168. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +174 -0
  169. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
  170. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +228 -0
  171. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +217 -0
  172. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
  173. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
  174. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +263 -0
  175. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +209 -0
  176. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
  177. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +242 -0
  178. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +231 -0
  179. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/templates/prd-template.md +10 -0
  180. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/validation-report-prd-workflow.md +433 -0
  181. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/workflow.md +150 -0
  182. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +135 -0
  183. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +127 -0
  184. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +190 -0
  185. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +216 -0
  186. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +219 -0
  187. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +234 -0
  188. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +252 -0
  189. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +254 -0
  190. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +224 -0
  191. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +224 -0
  192. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +241 -0
  193. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +248 -0
  194. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +237 -0
  195. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +264 -0
  196. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +171 -0
  197. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -0
  198. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +43 -0
  199. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +190 -0
  200. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +178 -0
  201. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +179 -0
  202. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +139 -0
  203. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +252 -0
  204. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +135 -0
  205. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
  206. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +55 -0
  207. package/_bmad/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
  208. package/_bmad/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +11 -0
  209. package/_bmad/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
  210. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +153 -0
  211. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +164 -0
  212. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +224 -0
  213. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +331 -0
  214. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +318 -0
  215. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +359 -0
  216. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +379 -0
  217. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +359 -0
  218. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +76 -0
  219. package/_bmad/bmm/workflows/3-solutioning/create-architecture/workflow.md +50 -0
  220. package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +259 -0
  221. package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +233 -0
  222. package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +272 -0
  223. package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +149 -0
  224. package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
  225. package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +59 -0
  226. package/_bmad/bmm/workflows/4-implementation/code-review/checklist.md +23 -0
  227. package/_bmad/bmm/workflows/4-implementation/code-review/instructions.xml +227 -0
  228. package/_bmad/bmm/workflows/4-implementation/code-review/workflow.yaml +50 -0
  229. package/_bmad/bmm/workflows/4-implementation/correct-course/checklist.md +288 -0
  230. package/_bmad/bmm/workflows/4-implementation/correct-course/instructions.md +206 -0
  231. package/_bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +58 -0
  232. package/_bmad/bmm/workflows/4-implementation/create-story/checklist.md +358 -0
  233. package/_bmad/bmm/workflows/4-implementation/create-story/instructions.xml +345 -0
  234. package/_bmad/bmm/workflows/4-implementation/create-story/template.md +49 -0
  235. package/_bmad/bmm/workflows/4-implementation/create-story/workflow.yaml +59 -0
  236. package/_bmad/bmm/workflows/4-implementation/dev-story/checklist.md +80 -0
  237. package/_bmad/bmm/workflows/4-implementation/dev-story/instructions.xml +410 -0
  238. package/_bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml +25 -0
  239. package/_bmad/bmm/workflows/4-implementation/retrospective/instructions.md +1443 -0
  240. package/_bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +57 -0
  241. package/_bmad/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
  242. package/_bmad/bmm/workflows/4-implementation/sprint-planning/instructions.md +225 -0
  243. package/_bmad/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
  244. package/_bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +52 -0
  245. package/_bmad/bmm/workflows/4-implementation/sprint-status/instructions.md +229 -0
  246. package/_bmad/bmm/workflows/4-implementation/sprint-status/workflow.yaml +35 -0
  247. package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +176 -0
  248. package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +120 -0
  249. package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +113 -0
  250. package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +113 -0
  251. package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +106 -0
  252. package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +149 -0
  253. package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +50 -0
  254. package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md +192 -0
  255. package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md +145 -0
  256. package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md +128 -0
  257. package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +201 -0
  258. package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/tech-spec-template.md +74 -0
  259. package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +79 -0
  260. package/_bmad/bmm/workflows/document-project/checklist.md +245 -0
  261. package/_bmad/bmm/workflows/document-project/documentation-requirements.csv +12 -0
  262. package/_bmad/bmm/workflows/document-project/instructions.md +221 -0
  263. package/_bmad/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
  264. package/_bmad/bmm/workflows/document-project/templates/index-template.md +169 -0
  265. package/_bmad/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
  266. package/_bmad/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
  267. package/_bmad/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
  268. package/_bmad/bmm/workflows/document-project/workflow.yaml +28 -0
  269. package/_bmad/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
  270. package/_bmad/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
  271. package/_bmad/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
  272. package/_bmad/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
  273. package/_bmad/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +90 -0
  274. package/_bmad/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +127 -0
  275. package/_bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +39 -0
  276. package/_bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +130 -0
  277. package/_bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +26 -0
  278. package/_bmad/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +43 -0
  279. package/_bmad/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +141 -0
  280. package/_bmad/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +26 -0
  281. package/_bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +49 -0
  282. package/_bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +241 -0
  283. package/_bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +26 -0
  284. package/_bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +38 -0
  285. package/_bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +133 -0
  286. package/_bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +26 -0
  287. package/_bmad/bmm/workflows/testarch/atdd/atdd-checklist-template.md +363 -0
  288. package/_bmad/bmm/workflows/testarch/atdd/checklist.md +374 -0
  289. package/_bmad/bmm/workflows/testarch/atdd/instructions.md +806 -0
  290. package/_bmad/bmm/workflows/testarch/atdd/workflow.yaml +45 -0
  291. package/_bmad/bmm/workflows/testarch/automate/checklist.md +582 -0
  292. package/_bmad/bmm/workflows/testarch/automate/instructions.md +1324 -0
  293. package/_bmad/bmm/workflows/testarch/automate/workflow.yaml +52 -0
  294. package/_bmad/bmm/workflows/testarch/ci/checklist.md +247 -0
  295. package/_bmad/bmm/workflows/testarch/ci/github-actions-template.yaml +198 -0
  296. package/_bmad/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +149 -0
  297. package/_bmad/bmm/workflows/testarch/ci/instructions.md +536 -0
  298. package/_bmad/bmm/workflows/testarch/ci/workflow.yaml +45 -0
  299. package/_bmad/bmm/workflows/testarch/framework/checklist.md +320 -0
  300. package/_bmad/bmm/workflows/testarch/framework/instructions.md +481 -0
  301. package/_bmad/bmm/workflows/testarch/framework/workflow.yaml +47 -0
  302. package/_bmad/bmm/workflows/testarch/nfr-assess/checklist.md +407 -0
  303. package/_bmad/bmm/workflows/testarch/nfr-assess/instructions.md +726 -0
  304. package/_bmad/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +461 -0
  305. package/_bmad/bmm/workflows/testarch/nfr-assess/workflow.yaml +47 -0
  306. package/_bmad/bmm/workflows/testarch/test-design/checklist.md +407 -0
  307. package/_bmad/bmm/workflows/testarch/test-design/instructions.md +1158 -0
  308. package/_bmad/bmm/workflows/testarch/test-design/test-design-architecture-template.md +213 -0
  309. package/_bmad/bmm/workflows/testarch/test-design/test-design-qa-template.md +286 -0
  310. package/_bmad/bmm/workflows/testarch/test-design/test-design-template.md +294 -0
  311. package/_bmad/bmm/workflows/testarch/test-design/workflow.yaml +69 -0
  312. package/_bmad/bmm/workflows/testarch/test-review/checklist.md +472 -0
  313. package/_bmad/bmm/workflows/testarch/test-review/instructions.md +628 -0
  314. package/_bmad/bmm/workflows/testarch/test-review/test-review-template.md +390 -0
  315. package/_bmad/bmm/workflows/testarch/test-review/workflow.yaml +46 -0
  316. package/_bmad/bmm/workflows/testarch/trace/checklist.md +642 -0
  317. package/_bmad/bmm/workflows/testarch/trace/instructions.md +1030 -0
  318. package/_bmad/bmm/workflows/testarch/trace/trace-template.md +675 -0
  319. package/_bmad/bmm/workflows/testarch/trace/workflow.yaml +55 -0
  320. package/_bmad/core/agents/bmad-master.md +56 -0
  321. package/_bmad/core/config.yaml +9 -0
  322. package/_bmad/core/module-help.csv +9 -0
  323. package/_bmad/core/resources/excalidraw/README.md +160 -0
  324. package/_bmad/core/resources/excalidraw/excalidraw-helpers.md +127 -0
  325. package/_bmad/core/resources/excalidraw/library-loader.md +50 -0
  326. package/_bmad/core/resources/excalidraw/validate-json-instructions.md +79 -0
  327. package/_bmad/core/tasks/editorial-review-prose.xml +100 -0
  328. package/_bmad/core/tasks/editorial-review-structure.xml +209 -0
  329. package/_bmad/core/tasks/help.md +62 -0
  330. package/_bmad/core/tasks/index-docs.xml +65 -0
  331. package/_bmad/core/tasks/review-adversarial-general.xml +48 -0
  332. package/_bmad/core/tasks/shard-doc.xml +109 -0
  333. package/_bmad/core/tasks/workflow.xml +235 -0
  334. package/_bmad/core/workflows/advanced-elicitation/methods.csv +51 -0
  335. package/_bmad/core/workflows/advanced-elicitation/workflow.xml +117 -0
  336. package/_bmad/core/workflows/brainstorming/brain-methods.csv +62 -0
  337. package/_bmad/core/workflows/brainstorming/steps/step-01-session-setup.md +197 -0
  338. package/_bmad/core/workflows/brainstorming/steps/step-01b-continue.md +122 -0
  339. package/_bmad/core/workflows/brainstorming/steps/step-02a-user-selected.md +225 -0
  340. package/_bmad/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +237 -0
  341. package/_bmad/core/workflows/brainstorming/steps/step-02c-random-selection.md +209 -0
  342. package/_bmad/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +264 -0
  343. package/_bmad/core/workflows/brainstorming/steps/step-03-technique-execution.md +399 -0
  344. package/_bmad/core/workflows/brainstorming/steps/step-04-idea-organization.md +303 -0
  345. package/_bmad/core/workflows/brainstorming/template.md +15 -0
  346. package/_bmad/core/workflows/brainstorming/workflow.md +58 -0
  347. package/_bmad/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
  348. package/_bmad/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +187 -0
  349. package/_bmad/core/workflows/party-mode/steps/step-03-graceful-exit.md +157 -0
  350. package/_bmad/core/workflows/party-mode/workflow.md +194 -0
  351. package/dist/api/client.d.ts +16 -1
  352. package/dist/api/client.d.ts.map +1 -1
  353. package/dist/api/client.js +91 -5
  354. package/dist/api/client.js.map +1 -1
  355. package/dist/api/projects.d.ts +23 -2
  356. package/dist/api/projects.d.ts.map +1 -1
  357. package/dist/api/projects.js +32 -0
  358. package/dist/api/projects.js.map +1 -1
  359. package/dist/index.js +15 -0
  360. package/dist/index.js.map +1 -1
  361. package/dist/tools/projects/delete-attachment-from-task.d.ts.map +1 -0
  362. package/dist/tools/projects/delete-attachment-from-task.js.map +1 -0
  363. package/dist/tools/projects/delete-attachment.d.ts +55 -0
  364. package/dist/tools/projects/delete-attachment.d.ts.map +1 -0
  365. package/dist/tools/projects/delete-attachment.js +115 -0
  366. package/dist/tools/projects/delete-attachment.js.map +1 -0
  367. package/dist/tools/projects/download-attachment.d.ts +55 -0
  368. package/dist/tools/projects/download-attachment.d.ts.map +1 -0
  369. package/dist/tools/projects/download-attachment.js +153 -0
  370. package/dist/tools/projects/download-attachment.js.map +1 -0
  371. package/dist/tools/projects/get-attachment-list.d.ts +48 -0
  372. package/dist/tools/projects/get-attachment-list.d.ts.map +1 -0
  373. package/dist/tools/projects/get-attachment-list.js +118 -0
  374. package/dist/tools/projects/get-attachment-list.js.map +1 -0
  375. package/dist/tools/projects/get-attachment-metadata.d.ts +55 -0
  376. package/dist/tools/projects/get-attachment-metadata.d.ts.map +1 -0
  377. package/dist/tools/projects/get-attachment-metadata.js +120 -0
  378. package/dist/tools/projects/get-attachment-metadata.js.map +1 -0
  379. package/dist/tools/projects/register-attachment-to-task.d.ts.map +1 -0
  380. package/dist/tools/projects/register-attachment-to-task.js.map +1 -0
  381. package/dist/tools/projects/update-task.d.ts +4 -4
  382. package/dist/tools/projects/update-task.js +12 -12
  383. package/dist/tools/projects/update-task.js.map +1 -1
  384. package/dist/tools/projects/upload-attachment.d.ts +69 -0
  385. package/dist/tools/projects/upload-attachment.d.ts.map +1 -0
  386. package/dist/tools/projects/upload-attachment.js +109 -0
  387. package/dist/tools/projects/upload-attachment.js.map +1 -0
  388. package/dist/types/dooray-api.d.ts +15 -0
  389. package/dist/types/dooray-api.d.ts.map +1 -1
  390. package/docs/architecture.md +227 -0
  391. package/docs/development-guide.md +336 -0
  392. package/docs/index.md +115 -0
  393. package/docs/project-overview.md +105 -0
  394. package/docs/project-scan-report.json +120 -0
  395. package/docs/source-tree-analysis.md +240 -0
  396. package/package.json +1 -1
@@ -0,0 +1,442 @@
1
+ # API Request Utility
2
+
3
+ ## Principle
4
+
5
+ Use typed HTTP client with built-in schema validation and automatic retry for server errors. The utility handles URL resolution, header management, response parsing, and single-line response validation with proper TypeScript support. **Works without a browser** - ideal for pure API/service testing.
6
+
7
+ ## Rationale
8
+
9
+ Vanilla Playwright's request API requires boilerplate for common patterns:
10
+
11
+ - Manual JSON parsing (`await response.json()`)
12
+ - Repetitive status code checking
13
+ - No built-in retry logic for transient failures
14
+ - No schema validation
15
+ - Complex URL construction
16
+
17
+ The `apiRequest` utility provides:
18
+
19
+ - **Automatic JSON parsing**: Response body pre-parsed
20
+ - **Built-in retry**: 5xx errors retry with exponential backoff
21
+ - **Schema validation**: Single-line validation (JSON Schema, Zod, OpenAPI)
22
+ - **URL resolution**: Four-tier strategy (explicit > config > Playwright > direct)
23
+ - **TypeScript generics**: Type-safe response bodies
24
+ - **No browser required**: Pure API testing without browser overhead
25
+
26
+ ## Pattern Examples
27
+
28
+ ### Example 1: Basic API Request
29
+
30
+ **Context**: Making authenticated API requests with automatic retry and type safety.
31
+
32
+ **Implementation**:
33
+
34
+ ```typescript
35
+ import { test } from '@seontechnologies/playwright-utils/api-request/fixtures';
36
+
37
+ test('should fetch user data', async ({ apiRequest }) => {
38
+ const { status, body } = await apiRequest<User>({
39
+ method: 'GET',
40
+ path: '/api/users/123',
41
+ headers: { Authorization: 'Bearer token' },
42
+ });
43
+
44
+ expect(status).toBe(200);
45
+ expect(body.name).toBe('John Doe'); // TypeScript knows body is User
46
+ });
47
+ ```
48
+
49
+ **Key Points**:
50
+
51
+ - Generic type `<User>` provides TypeScript autocomplete for `body`
52
+ - Status and body destructured from response
53
+ - Headers passed as object
54
+ - Automatic retry for 5xx errors (configurable)
55
+
56
+ ### Example 2: Schema Validation (Single Line)
57
+
58
+ **Context**: Validate API responses match expected schema with single-line syntax.
59
+
60
+ **Implementation**:
61
+
62
+ ```typescript
63
+ import { test } from '@seontechnologies/playwright-utils/api-request/fixtures';
64
+ import { z } from 'zod';
65
+
66
+ // JSON Schema validation
67
+ test('should validate response schema (JSON Schema)', async ({ apiRequest }) => {
68
+ const { status, body } = await apiRequest({
69
+ method: 'GET',
70
+ path: '/api/users/123',
71
+ validateSchema: {
72
+ type: 'object',
73
+ required: ['id', 'name', 'email'],
74
+ properties: {
75
+ id: { type: 'string' },
76
+ name: { type: 'string' },
77
+ email: { type: 'string', format: 'email' },
78
+ },
79
+ },
80
+ });
81
+ // Throws if schema validation fails
82
+ expect(status).toBe(200);
83
+ });
84
+
85
+ // Zod schema validation
86
+ const UserSchema = z.object({
87
+ id: z.string(),
88
+ name: z.string(),
89
+ email: z.string().email(),
90
+ });
91
+
92
+ test('should validate response schema (Zod)', async ({ apiRequest }) => {
93
+ const { status, body } = await apiRequest({
94
+ method: 'GET',
95
+ path: '/api/users/123',
96
+ validateSchema: UserSchema,
97
+ });
98
+ // Response body is type-safe AND validated
99
+ expect(status).toBe(200);
100
+ expect(body.email).toContain('@');
101
+ });
102
+ ```
103
+
104
+ **Key Points**:
105
+
106
+ - Single `validateSchema` parameter
107
+ - Supports JSON Schema, Zod, YAML files, OpenAPI specs
108
+ - Throws on validation failure with detailed errors
109
+ - Zero boilerplate validation code
110
+
111
+ ### Example 3: POST with Body and Retry Configuration
112
+
113
+ **Context**: Creating resources with custom retry behavior for error testing.
114
+
115
+ **Implementation**:
116
+
117
+ ```typescript
118
+ test('should create user', async ({ apiRequest }) => {
119
+ const newUser = {
120
+ name: 'Jane Doe',
121
+ email: 'jane@example.com',
122
+ };
123
+
124
+ const { status, body } = await apiRequest({
125
+ method: 'POST',
126
+ path: '/api/users',
127
+ body: newUser, // Automatically sent as JSON
128
+ headers: { Authorization: 'Bearer token' },
129
+ });
130
+
131
+ expect(status).toBe(201);
132
+ expect(body.id).toBeDefined();
133
+ });
134
+
135
+ // Disable retry for error testing
136
+ test('should handle 500 errors', async ({ apiRequest }) => {
137
+ await expect(
138
+ apiRequest({
139
+ method: 'GET',
140
+ path: '/api/error',
141
+ retryConfig: { maxRetries: 0 }, // Disable retry
142
+ }),
143
+ ).rejects.toThrow('Request failed with status 500');
144
+ });
145
+ ```
146
+
147
+ **Key Points**:
148
+
149
+ - `body` parameter auto-serializes to JSON
150
+ - Default retry: 5xx errors, 3 retries, exponential backoff
151
+ - Disable retry with `retryConfig: { maxRetries: 0 }`
152
+ - Only 5xx errors retry (4xx errors fail immediately)
153
+
154
+ ### Example 4: URL Resolution Strategy
155
+
156
+ **Context**: Flexible URL handling for different environments and test contexts.
157
+
158
+ **Implementation**:
159
+
160
+ ```typescript
161
+ // Strategy 1: Explicit baseUrl (highest priority)
162
+ await apiRequest({
163
+ method: 'GET',
164
+ path: '/users',
165
+ baseUrl: 'https://api.example.com', // Uses https://api.example.com/users
166
+ });
167
+
168
+ // Strategy 2: Config baseURL (from fixture)
169
+ import { test } from '@seontechnologies/playwright-utils/api-request/fixtures';
170
+
171
+ test.use({ configBaseUrl: 'https://staging-api.example.com' });
172
+
173
+ test('uses config baseURL', async ({ apiRequest }) => {
174
+ await apiRequest({
175
+ method: 'GET',
176
+ path: '/users', // Uses https://staging-api.example.com/users
177
+ });
178
+ });
179
+
180
+ // Strategy 3: Playwright baseURL (from playwright.config.ts)
181
+ // playwright.config.ts
182
+ export default defineConfig({
183
+ use: {
184
+ baseURL: 'https://api.example.com',
185
+ },
186
+ });
187
+
188
+ test('uses Playwright baseURL', async ({ apiRequest }) => {
189
+ await apiRequest({
190
+ method: 'GET',
191
+ path: '/users', // Uses https://api.example.com/users
192
+ });
193
+ });
194
+
195
+ // Strategy 4: Direct path (full URL)
196
+ await apiRequest({
197
+ method: 'GET',
198
+ path: 'https://api.example.com/users', // Full URL works too
199
+ });
200
+ ```
201
+
202
+ **Key Points**:
203
+
204
+ - Four-tier resolution: explicit > config > Playwright > direct
205
+ - Trailing slashes normalized automatically
206
+ - Environment-specific baseUrl easy to configure
207
+
208
+ ### Example 5: Integration with Recurse (Polling)
209
+
210
+ **Context**: Waiting for async operations to complete (background jobs, eventual consistency).
211
+
212
+ **Implementation**:
213
+
214
+ ```typescript
215
+ import { test } from '@seontechnologies/playwright-utils/fixtures';
216
+
217
+ test('should poll until job completes', async ({ apiRequest, recurse }) => {
218
+ // Create job
219
+ const { body } = await apiRequest({
220
+ method: 'POST',
221
+ path: '/api/jobs',
222
+ body: { type: 'export' },
223
+ });
224
+
225
+ const jobId = body.id;
226
+
227
+ // Poll until ready
228
+ const completedJob = await recurse(
229
+ () => apiRequest({ method: 'GET', path: `/api/jobs/${jobId}` }),
230
+ (response) => response.body.status === 'completed',
231
+ { timeout: 60000, interval: 2000 },
232
+ );
233
+
234
+ expect(completedJob.body.result).toBeDefined();
235
+ });
236
+ ```
237
+
238
+ **Key Points**:
239
+
240
+ - `apiRequest` returns full response object
241
+ - `recurse` polls until predicate returns true
242
+ - Composable utilities work together seamlessly
243
+
244
+ ### Example 6: Microservice Testing (Multiple Services)
245
+
246
+ **Context**: Test interactions between microservices without a browser.
247
+
248
+ **Implementation**:
249
+
250
+ ```typescript
251
+ import { test, expect } from '@seontechnologies/playwright-utils/fixtures';
252
+
253
+ const USER_SERVICE = process.env.USER_SERVICE_URL || 'http://localhost:3001';
254
+ const ORDER_SERVICE = process.env.ORDER_SERVICE_URL || 'http://localhost:3002';
255
+
256
+ test.describe('Microservice Integration', () => {
257
+ test('should validate cross-service user lookup', async ({ apiRequest }) => {
258
+ // Create user in user-service
259
+ const { body: user } = await apiRequest({
260
+ method: 'POST',
261
+ path: '/api/users',
262
+ baseUrl: USER_SERVICE,
263
+ body: { name: 'Test User', email: 'test@example.com' },
264
+ });
265
+
266
+ // Create order in order-service (validates user via user-service)
267
+ const { status, body: order } = await apiRequest({
268
+ method: 'POST',
269
+ path: '/api/orders',
270
+ baseUrl: ORDER_SERVICE,
271
+ body: {
272
+ userId: user.id,
273
+ items: [{ productId: 'prod-1', quantity: 2 }],
274
+ },
275
+ });
276
+
277
+ expect(status).toBe(201);
278
+ expect(order.userId).toBe(user.id);
279
+ });
280
+
281
+ test('should reject order for invalid user', async ({ apiRequest }) => {
282
+ const { status, body } = await apiRequest({
283
+ method: 'POST',
284
+ path: '/api/orders',
285
+ baseUrl: ORDER_SERVICE,
286
+ body: {
287
+ userId: 'non-existent-user',
288
+ items: [{ productId: 'prod-1', quantity: 1 }],
289
+ },
290
+ });
291
+
292
+ expect(status).toBe(400);
293
+ expect(body.code).toBe('INVALID_USER');
294
+ });
295
+ });
296
+ ```
297
+
298
+ **Key Points**:
299
+
300
+ - Test multiple services without browser
301
+ - Use `baseUrl` to target different services
302
+ - Validate cross-service communication
303
+ - Pure API testing - fast and reliable
304
+
305
+ ### Example 7: GraphQL API Testing
306
+
307
+ **Context**: Test GraphQL endpoints with queries and mutations.
308
+
309
+ **Implementation**:
310
+
311
+ ```typescript
312
+ test.describe('GraphQL API', () => {
313
+ const GRAPHQL_ENDPOINT = '/graphql';
314
+
315
+ test('should query users via GraphQL', async ({ apiRequest }) => {
316
+ const query = `
317
+ query GetUsers($limit: Int) {
318
+ users(limit: $limit) {
319
+ id
320
+ name
321
+ email
322
+ }
323
+ }
324
+ `;
325
+
326
+ const { status, body } = await apiRequest({
327
+ method: 'POST',
328
+ path: GRAPHQL_ENDPOINT,
329
+ body: {
330
+ query,
331
+ variables: { limit: 10 },
332
+ },
333
+ });
334
+
335
+ expect(status).toBe(200);
336
+ expect(body.errors).toBeUndefined();
337
+ expect(body.data.users).toHaveLength(10);
338
+ });
339
+
340
+ test('should create user via mutation', async ({ apiRequest }) => {
341
+ const mutation = `
342
+ mutation CreateUser($input: CreateUserInput!) {
343
+ createUser(input: $input) {
344
+ id
345
+ name
346
+ }
347
+ }
348
+ `;
349
+
350
+ const { status, body } = await apiRequest({
351
+ method: 'POST',
352
+ path: GRAPHQL_ENDPOINT,
353
+ body: {
354
+ query: mutation,
355
+ variables: {
356
+ input: { name: 'GraphQL User', email: 'gql@example.com' },
357
+ },
358
+ },
359
+ });
360
+
361
+ expect(status).toBe(200);
362
+ expect(body.data.createUser.id).toBeDefined();
363
+ });
364
+ });
365
+ ```
366
+
367
+ **Key Points**:
368
+
369
+ - GraphQL via POST request
370
+ - Variables in request body
371
+ - Check `body.errors` for GraphQL errors (not status code)
372
+ - Works for queries and mutations
373
+
374
+ ## Comparison with Vanilla Playwright
375
+
376
+ | Vanilla Playwright | playwright-utils apiRequest |
377
+ | ---------------------------------------------- | ---------------------------------------------------------------------------------- |
378
+ | `const resp = await request.get('/api/users')` | `const { status, body } = await apiRequest({ method: 'GET', path: '/api/users' })` |
379
+ | `const body = await resp.json()` | Response already parsed |
380
+ | `expect(resp.ok()).toBeTruthy()` | Status code directly accessible |
381
+ | No retry logic | Auto-retry 5xx errors with backoff |
382
+ | No schema validation | Built-in multi-format validation |
383
+ | Manual error handling | Descriptive error messages |
384
+
385
+ ## When to Use
386
+
387
+ **Use apiRequest for:**
388
+
389
+ - ✅ Pure API/service testing (no browser needed)
390
+ - ✅ Microservice integration testing
391
+ - ✅ GraphQL API testing
392
+ - ✅ Schema validation needs
393
+ - ✅ Tests requiring retry logic
394
+ - ✅ Background API calls in UI tests
395
+ - ✅ Contract testing support
396
+
397
+ **Stick with vanilla Playwright for:**
398
+
399
+ - Simple one-off requests where utility overhead isn't worth it
400
+ - Testing Playwright's native features specifically
401
+ - Legacy tests where migration isn't justified
402
+
403
+ ## Related Fragments
404
+
405
+ - `api-testing-patterns.md` - Comprehensive pure API testing patterns
406
+ - `overview.md` - Installation and design principles
407
+ - `auth-session.md` - Authentication token management
408
+ - `recurse.md` - Polling for async operations
409
+ - `fixtures-composition.md` - Combining utilities with mergeTests
410
+ - `log.md` - Logging API requests
411
+ - `contract-testing.md` - Pact contract testing
412
+
413
+ ## Anti-Patterns
414
+
415
+ **❌ Ignoring retry failures:**
416
+
417
+ ```typescript
418
+ try {
419
+ await apiRequest({ method: 'GET', path: '/api/unstable' });
420
+ } catch {
421
+ // Silent failure - loses retry information
422
+ }
423
+ ```
424
+
425
+ **✅ Let retries happen, handle final failure:**
426
+
427
+ ```typescript
428
+ await expect(apiRequest({ method: 'GET', path: '/api/unstable' })).rejects.toThrow(); // Retries happen automatically, then final error caught
429
+ ```
430
+
431
+ **❌ Disabling TypeScript benefits:**
432
+
433
+ ```typescript
434
+ const response: any = await apiRequest({ method: 'GET', path: '/users' });
435
+ ```
436
+
437
+ **✅ Use generic types:**
438
+
439
+ ```typescript
440
+ const { body } = await apiRequest<User[]>({ method: 'GET', path: '/users' });
441
+ // body is typed as User[]
442
+ ```