specweave 0.1.8 → 0.3.0
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/CLAUDE.md +600 -0
- package/README.md +263 -88
- package/bin/install-all.sh +1 -1
- package/bin/install-commands.sh +3 -3
- package/bin/specweave.js +39 -9
- package/dist/adapters/adapter-base.d.ts +1 -1
- package/dist/adapters/adapter-base.d.ts.map +1 -1
- package/dist/adapters/adapter-base.js +6 -41
- package/dist/adapters/adapter-base.js.map +1 -1
- package/dist/adapters/adapter-interface.js +1 -2
- package/dist/adapters/adapter-interface.js.map +1 -1
- package/dist/adapters/adapter-loader.d.ts +86 -0
- package/dist/adapters/adapter-loader.d.ts.map +1 -0
- package/dist/adapters/adapter-loader.js +216 -0
- package/dist/adapters/adapter-loader.js.map +1 -0
- package/dist/adapters/agents-md-generator.d.ts +48 -0
- package/dist/adapters/agents-md-generator.d.ts.map +1 -0
- package/dist/adapters/agents-md-generator.js +132 -0
- package/dist/adapters/agents-md-generator.js.map +1 -0
- package/dist/adapters/claude/adapter.d.ts +2 -2
- package/dist/adapters/claude/adapter.d.ts.map +1 -1
- package/dist/adapters/claude/adapter.js +5 -42
- package/dist/adapters/claude/adapter.js.map +1 -1
- package/dist/adapters/claude-md-generator.d.ts +78 -0
- package/dist/adapters/claude-md-generator.d.ts.map +1 -0
- package/dist/adapters/claude-md-generator.js +246 -0
- package/dist/adapters/claude-md-generator.js.map +1 -0
- package/dist/adapters/codex/adapter.d.ts +50 -0
- package/dist/adapters/codex/adapter.d.ts.map +1 -0
- package/dist/adapters/codex/adapter.js +316 -0
- package/dist/adapters/codex/adapter.js.map +1 -0
- package/dist/adapters/copilot/adapter.d.ts +10 -9
- package/dist/adapters/copilot/adapter.d.ts.map +1 -1
- package/dist/adapters/copilot/adapter.js +35 -100
- package/dist/adapters/copilot/adapter.js.map +1 -1
- package/dist/adapters/cursor/adapter.d.ts +8 -6
- package/dist/adapters/cursor/adapter.d.ts.map +1 -1
- package/dist/adapters/cursor/adapter.js +47 -130
- package/dist/adapters/cursor/adapter.js.map +1 -1
- package/dist/adapters/doc-generator.d.ts +69 -0
- package/dist/adapters/doc-generator.d.ts.map +1 -0
- package/dist/adapters/doc-generator.js +247 -0
- package/dist/adapters/doc-generator.js.map +1 -0
- package/dist/adapters/gemini/adapter.d.ts +50 -0
- package/dist/adapters/gemini/adapter.d.ts.map +1 -0
- package/dist/adapters/gemini/adapter.js +281 -0
- package/dist/adapters/gemini/adapter.js.map +1 -0
- package/dist/adapters/generic/adapter.d.ts +7 -4
- package/dist/adapters/generic/adapter.d.ts.map +1 -1
- package/dist/adapters/generic/adapter.js +60 -59
- package/dist/adapters/generic/adapter.js.map +1 -1
- package/dist/cli/commands/init.d.ts +3 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +272 -170
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +22 -58
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +27 -64
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/core/credentials-manager.d.ts +90 -0
- package/dist/core/credentials-manager.d.ts.map +1 -0
- package/dist/core/credentials-manager.js +271 -0
- package/dist/core/credentials-manager.js.map +1 -0
- package/dist/core/project-structure-detector.d.ts +92 -0
- package/dist/core/project-structure-detector.d.ts.map +1 -0
- package/dist/core/project-structure-detector.js +289 -0
- package/dist/core/project-structure-detector.js.map +1 -0
- package/dist/core/rfc-generator-v2.d.ts +149 -0
- package/dist/core/rfc-generator-v2.d.ts.map +1 -0
- package/dist/core/rfc-generator-v2.js +399 -0
- package/dist/core/rfc-generator-v2.js.map +1 -0
- package/dist/core/rfc-generator.d.ts +147 -0
- package/dist/core/rfc-generator.d.ts.map +1 -0
- package/dist/core/rfc-generator.js +434 -0
- package/dist/core/rfc-generator.js.map +1 -0
- package/dist/integrations/ado/ado-client.d.ts +123 -0
- package/dist/integrations/ado/ado-client.d.ts.map +1 -0
- package/dist/integrations/ado/ado-client.js +398 -0
- package/dist/integrations/ado/ado-client.js.map +1 -0
- package/dist/integrations/jira/jira-client.d.ts +139 -0
- package/dist/integrations/jira/jira-client.d.ts.map +1 -0
- package/dist/integrations/jira/jira-client.js +386 -0
- package/dist/integrations/jira/jira-client.js.map +1 -0
- package/dist/integrations/jira/jira-incremental-mapper.d.ts +75 -0
- package/dist/integrations/jira/jira-incremental-mapper.d.ts.map +1 -0
- package/dist/integrations/jira/jira-incremental-mapper.js +474 -0
- package/dist/integrations/jira/jira-incremental-mapper.js.map +1 -0
- package/dist/integrations/jira/jira-mapper.d.ts +105 -0
- package/dist/integrations/jira/jira-mapper.d.ts.map +1 -0
- package/dist/integrations/jira/jira-mapper.js +494 -0
- package/dist/integrations/jira/jira-mapper.js.map +1 -0
- package/dist/testing/test-generator.d.ts +117 -0
- package/dist/testing/test-generator.d.ts.map +1 -0
- package/dist/testing/test-generator.js +370 -0
- package/dist/testing/test-generator.js.map +1 -0
- package/dist/utils/auto-install.d.ts +3 -0
- package/dist/utils/auto-install.d.ts.map +1 -1
- package/dist/utils/auto-install.js +16 -82
- package/dist/utils/auto-install.js.map +1 -1
- package/dist/utils/esm-helpers.d.ts +50 -0
- package/dist/utils/esm-helpers.d.ts.map +1 -0
- package/dist/utils/esm-helpers.js +57 -0
- package/dist/utils/esm-helpers.js.map +1 -0
- package/package.json +16 -7
- package/src/adapters/README.md +1 -2
- package/src/adapters/adapter-base.ts +6 -3
- package/src/adapters/adapter-loader.ts +261 -0
- package/src/adapters/agents-md-generator.ts +162 -0
- package/src/adapters/claude/README.md +6 -14
- package/src/adapters/claude/adapter.ts +4 -4
- package/src/adapters/claude-md-generator.ts +311 -0
- package/src/adapters/codex/README.md +105 -0
- package/src/adapters/codex/adapter.ts +333 -0
- package/src/adapters/copilot/adapter.ts +36 -65
- package/src/adapters/cursor/README.md +0 -2
- package/src/adapters/cursor/adapter.ts +46 -92
- package/src/adapters/doc-generator.ts +331 -0
- package/src/adapters/gemini/README.md +97 -0
- package/src/adapters/gemini/adapter.ts +298 -0
- package/src/adapters/generic/adapter.ts +61 -57
- package/src/adapters/registry.yaml +86 -25
- package/src/agents/devops/AGENT.md +16 -18
- package/src/agents/docs-writer/AGENT.md +2 -2
- package/src/agents/pm/AGENT.md +1 -50
- package/src/commands/README.md +134 -111
- package/src/commands/{build.md → specweave.do.md} +185 -72
- package/src/commands/{done.md → specweave.done.md} +3 -3
- package/src/commands/{inc.md → specweave.inc.md} +4 -4
- package/src/commands/specweave.increment.md +383 -0
- package/src/commands/specweave.md +430 -0
- package/src/commands/specweave.next.md +495 -0
- package/src/commands/specweave.progress.md +258 -0
- package/src/commands/specweave.sync-docs.md +665 -0
- package/src/commands/specweave.sync-github.md +269 -0
- package/src/commands/specweave.sync-jira.md +197 -0
- package/src/commands/{validate.md → specweave.validate.md} +4 -4
- package/src/hooks/README.md +19 -29
- package/src/hooks/post-task-completion.sh +25 -30
- package/src/skills/ado-sync/README.md +1 -36
- package/src/skills/bmad-method-expert/SKILL.md +1 -3
- package/src/skills/brownfield-analyzer/SKILL.md +429 -23
- package/src/skills/brownfield-onboarder/SKILL.md +221 -8
- package/src/skills/context-loader/SKILL.md +239 -617
- package/src/skills/context-optimizer/SKILL.md +0 -30
- package/src/skills/github-sync/SKILL.md +1 -19
- package/src/skills/increment-planner/SKILL.md +64 -18
- package/src/skills/increment-quality-judge/SKILL.md +1 -36
- package/src/skills/jira-sync/README.md +1 -38
- package/src/skills/role-orchestrator/README.md +1 -22
- package/src/skills/role-orchestrator/SKILL.md +1 -59
- package/src/skills/skill-router/SKILL.md +0 -18
- package/src/skills/spec-kit-expert/SKILL.md +1 -3
- package/src/skills/specweave-detector/SKILL.md +225 -275
- package/src/skills/task-builder/README.md +1 -7
- package/src/templates/AGENTS.md.template +334 -0
- package/src/templates/CLAUDE.md.template +131 -297
- package/src/templates/README.md.template +115 -23
- package/src/templates/environments/minimal/README.md +0 -1
- package/INSTALL.md +0 -848
- package/SPECWEAVE.md +0 -711
- package/src/adapters/copilot/.github/copilot/instructions.md +0 -376
- package/src/adapters/cursor/.cursorrules +0 -325
- package/src/adapters/generic/SPECWEAVE-MANUAL.md +0 -676
- package/src/commands/create-project.md +0 -528
- package/src/commands/generate-docs.md +0 -623
- package/src/commands/increment.md +0 -223
- package/src/commands/review-docs.md +0 -331
- package/src/commands/sync-github.md +0 -115
- package/src/skills/ado-sync/test-cases/test-1.yaml +0 -9
- package/src/skills/ado-sync/test-cases/test-2.yaml +0 -8
- package/src/skills/ado-sync/test-cases/test-3.yaml +0 -9
- package/src/skills/bmad-method-expert/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/bmad-method-expert/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/bmad-method-expert/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/brownfield-analyzer/test-cases/test-1-basic-analysis.yaml +0 -48
- package/src/skills/brownfield-analyzer/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/brownfield-analyzer/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/brownfield-onboarder/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/brownfield-onboarder/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/brownfield-onboarder/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/calendar-system/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/calendar-system/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/calendar-system/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/context-loader/test-cases/test-1-basic-loading.yaml +0 -39
- package/src/skills/context-loader/test-cases/test-2-token-budget-exceeded.yaml +0 -44
- package/src/skills/context-loader/test-cases/test-3-section-anchors.yaml +0 -45
- package/src/skills/context-optimizer/test-cases/test-1-bug-fix-narrow.yaml +0 -97
- package/src/skills/context-optimizer/test-cases/test-2-feature-focused.yaml +0 -109
- package/src/skills/context-optimizer/test-cases/test-3-architecture-broad.yaml +0 -98
- package/src/skills/cost-optimizer/test-cases/test-1-basic-comparison.yaml +0 -75
- package/src/skills/cost-optimizer/test-cases/test-2-budget-constraint.yaml +0 -52
- package/src/skills/cost-optimizer/test-cases/test-3-scale-requirement.yaml +0 -63
- package/src/skills/cost-optimizer/test-results/README.md +0 -46
- package/src/skills/design-system-architect/test-cases/test-1-token-structure.yaml +0 -23
- package/src/skills/design-system-architect/test-cases/test-2-component-hierarchy.yaml +0 -24
- package/src/skills/design-system-architect/test-cases/test-3-accessibility-checklist.yaml +0 -23
- package/src/skills/diagrams-architect/test-cases/test-1-c4-context.yaml +0 -13
- package/src/skills/diagrams-architect/test-cases/test-2-sequence-diagram.yaml +0 -13
- package/src/skills/diagrams-architect/test-cases/test-3-er-diagram.yaml +0 -13
- package/src/skills/diagrams-generator/test-cases/test-1.yaml +0 -9
- package/src/skills/diagrams-generator/test-cases/test-2.yaml +0 -9
- package/src/skills/diagrams-generator/test-cases/test-3.yaml +0 -8
- package/src/skills/docs-updater/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/docs-updater/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/docs-updater/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/dotnet-backend/test-cases/test-1-rest-api.yaml +0 -14
- package/src/skills/dotnet-backend/test-cases/test-2-authentication.yaml +0 -13
- package/src/skills/dotnet-backend/test-cases/test-3-minimal-api.yaml +0 -13
- package/src/skills/e2e-playwright/test-cases/TC-001-basic-navigation.yaml +0 -54
- package/src/skills/e2e-playwright/test-cases/TC-002-form-interaction.yaml +0 -64
- package/src/skills/e2e-playwright/test-cases/TC-003-specweave-integration.yaml +0 -74
- package/src/skills/e2e-playwright/test-cases/TC-004-accessibility-check.yaml +0 -98
- package/src/skills/figma-designer/test-cases/test-1-design-system.yaml +0 -13
- package/src/skills/figma-designer/test-cases/test-2-component-library.yaml +0 -13
- package/src/skills/figma-designer/test-cases/test-3-responsive-layout.yaml +0 -13
- package/src/skills/figma-implementer/test-cases/test-1-design-to-react.yaml +0 -13
- package/src/skills/figma-implementer/test-cases/test-2-storybook.yaml +0 -13
- package/src/skills/figma-implementer/test-cases/test-3-design-tokens.yaml +0 -13
- package/src/skills/figma-mcp-connector/test-cases/test-1-read-file-desktop.yaml +0 -22
- package/src/skills/figma-mcp-connector/test-cases/test-2-read-file-framelink.yaml +0 -21
- package/src/skills/figma-mcp-connector/test-cases/test-3-error-handling.yaml +0 -18
- package/src/skills/figma-to-code/test-cases/test-1-token-generation.yaml +0 -29
- package/src/skills/figma-to-code/test-cases/test-2-component-generation.yaml +0 -27
- package/src/skills/figma-to-code/test-cases/test-3-typescript-generation.yaml +0 -28
- package/src/skills/frontend/test-cases/test-1-react-component.yaml +0 -13
- package/src/skills/frontend/test-cases/test-2-form-validation.yaml +0 -13
- package/src/skills/frontend/test-cases/test-3-state-management.yaml +0 -13
- package/src/skills/github-sync/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/github-sync/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/github-sync/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/hetzner-provisioner/test-cases/test-1-basic-provision.yaml +0 -71
- package/src/skills/hetzner-provisioner/test-cases/test-2-postgres-provision.yaml +0 -85
- package/src/skills/hetzner-provisioner/test-cases/test-3-ssl-config.yaml +0 -126
- package/src/skills/hetzner-provisioner/test-results/README.md +0 -259
- package/src/skills/increment-planner/test-cases/test-1-basic-feature.yaml +0 -27
- package/src/skills/increment-planner/test-cases/test-2-complex-feature.yaml +0 -30
- package/src/skills/increment-planner/test-cases/test-3-auto-numbering.yaml +0 -24
- package/src/skills/increment-quality-judge/test-cases/test-1-good-spec.yaml +0 -95
- package/src/skills/increment-quality-judge/test-cases/test-2-poor-spec.yaml +0 -108
- package/src/skills/increment-quality-judge/test-cases/test-3-export-suggestions.yaml +0 -87
- package/src/skills/jira-sync/test-cases/test-1.yaml +0 -9
- package/src/skills/jira-sync/test-cases/test-2.yaml +0 -9
- package/src/skills/jira-sync/test-cases/test-3.yaml +0 -10
- package/src/skills/nextjs/test-cases/test-1-app-router.yaml +0 -13
- package/src/skills/nextjs/test-cases/test-2-server-actions.yaml +0 -13
- package/src/skills/nextjs/test-cases/test-3-api-routes.yaml +0 -13
- package/src/skills/nodejs-backend/test-cases/test-1-express-api.yaml +0 -13
- package/src/skills/nodejs-backend/test-cases/test-2-prisma-orm.yaml +0 -13
- package/src/skills/nodejs-backend/test-cases/test-3-authentication.yaml +0 -13
- package/src/skills/notification-system/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/notification-system/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/notification-system/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/python-backend/test-cases/test-1-fastapi-crud.yaml +0 -13
- package/src/skills/python-backend/test-cases/test-2-sqlalchemy.yaml +0 -13
- package/src/skills/python-backend/test-cases/test-3-authentication.yaml +0 -13
- package/src/skills/role-orchestrator/test-cases/test-1-simple-product.yaml +0 -98
- package/src/skills/role-orchestrator/test-cases/test-2-quality-gate-failure.yaml +0 -73
- package/src/skills/role-orchestrator/test-cases/test-3-security-workflow.yaml +0 -121
- package/src/skills/role-orchestrator/test-cases/test-4-parallel-execution.yaml +0 -145
- package/src/skills/role-orchestrator/test-cases/test-5-feedback-loops.yaml +0 -149
- package/src/skills/skill-creator/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/skill-creator/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/skill-creator/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/skill-router/test-cases/test-1-basic-routing.yaml +0 -33
- package/src/skills/skill-router/test-cases/test-2-ambiguous-request.yaml +0 -42
- package/src/skills/skill-router/test-cases/test-3-nested-orchestration.yaml +0 -50
- package/src/skills/spec-driven-brainstorming/test-cases/TC-001-simple-idea-to-design.yaml +0 -148
- package/src/skills/spec-driven-brainstorming/test-cases/TC-002-complex-ultrathink-design.yaml +0 -190
- package/src/skills/spec-driven-brainstorming/test-cases/TC-003-unclear-requirements-socratic.yaml +0 -233
- package/src/skills/spec-driven-debugging/test-cases/TC-001-simple-auth-bug.yaml +0 -212
- package/src/skills/spec-driven-debugging/test-cases/TC-002-race-condition-ultrathink.yaml +0 -461
- package/src/skills/spec-driven-debugging/test-cases/TC-003-brownfield-missing-spec.yaml +0 -366
- package/src/skills/spec-kit-expert/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/spec-kit-expert/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/spec-kit-expert/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/specweave-ado-mapper/test-cases/test-1-export-to-ado.yaml +0 -13
- package/src/skills/specweave-ado-mapper/test-cases/test-2-import-from-ado.yaml +0 -13
- package/src/skills/specweave-ado-mapper/test-cases/test-3-bidirectional-sync.yaml +0 -13
- package/src/skills/specweave-detector/test-cases/test-1-basic-detection.yaml +0 -37
- package/src/skills/specweave-detector/test-cases/test-2-missing-config.yaml +0 -37
- package/src/skills/specweave-detector/test-cases/test-3-non-specweave-project.yaml +0 -34
- package/src/skills/specweave-jira-mapper/test-cases/test-1-export-to-jira.yaml +0 -13
- package/src/skills/specweave-jira-mapper/test-cases/test-2-import-from-jira.yaml +0 -13
- package/src/skills/specweave-jira-mapper/test-cases/test-3-sync-status.yaml +0 -13
- package/src/skills/stripe-integrator/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/stripe-integrator/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/stripe-integrator/test-cases/test-3-placeholder.yaml +0 -12
- package/src/skills/task-builder/test-cases/test-1-placeholder.yaml +0 -12
- package/src/skills/task-builder/test-cases/test-2-placeholder.yaml +0 -12
- package/src/skills/task-builder/test-cases/test-3-placeholder.yaml +0 -12
- package/src/templates/config.yaml +0 -351
- /package/src/commands/{list-increments.md → specweave.list-increments.md} +0 -0
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Basic Platform Cost Comparison"
|
|
3
|
-
description: "Compare platforms for small NextJS SaaS with 1000 users"
|
|
4
|
-
skill: cost-optimizer
|
|
5
|
-
priority: P1
|
|
6
|
-
estimated_time: "2-3 minutes"
|
|
7
|
-
|
|
8
|
-
input:
|
|
9
|
-
prompt: "What's the cheapest way to host my NextJS SaaS with Postgres for 1000 users?"
|
|
10
|
-
requirements:
|
|
11
|
-
app_type: nextjs
|
|
12
|
-
users: 1000
|
|
13
|
-
database: postgres
|
|
14
|
-
database_size: 2GB
|
|
15
|
-
storage: 20GB
|
|
16
|
-
traffic: "10k requests/day"
|
|
17
|
-
|
|
18
|
-
expected_output:
|
|
19
|
-
platforms_compared:
|
|
20
|
-
- hetzner
|
|
21
|
-
- vercel
|
|
22
|
-
- aws
|
|
23
|
-
- railway
|
|
24
|
-
- fly_io
|
|
25
|
-
- digitalocean
|
|
26
|
-
|
|
27
|
-
recommendation:
|
|
28
|
-
platform: hetzner
|
|
29
|
-
monthly_cost: "$11-12"
|
|
30
|
-
confidence: "high"
|
|
31
|
-
|
|
32
|
-
cost_breakdown:
|
|
33
|
-
hetzner:
|
|
34
|
-
server: "$5.83"
|
|
35
|
-
database: "$5.00"
|
|
36
|
-
storage: "$0.50"
|
|
37
|
-
total: "$11.33"
|
|
38
|
-
|
|
39
|
-
vercel:
|
|
40
|
-
hosting: "$0 (hobby) or $60 (production)"
|
|
41
|
-
database: "$0 (planetscale hobby) or $39 (scaler)"
|
|
42
|
-
total: "$0 or $60-99"
|
|
43
|
-
|
|
44
|
-
aws:
|
|
45
|
-
ec2: "$10"
|
|
46
|
-
rds: "$15"
|
|
47
|
-
total: "$25"
|
|
48
|
-
|
|
49
|
-
savings_vs_alternatives:
|
|
50
|
-
vs_vercel: "$48.67/month (production)"
|
|
51
|
-
vs_aws: "$13.67/month"
|
|
52
|
-
annual_savings: "$584/year (vs Vercel)"
|
|
53
|
-
|
|
54
|
-
rationale:
|
|
55
|
-
pros:
|
|
56
|
-
- "Lowest cost"
|
|
57
|
-
- "Predictable pricing"
|
|
58
|
-
- "Managed database included"
|
|
59
|
-
|
|
60
|
-
cons:
|
|
61
|
-
- "EU-only"
|
|
62
|
-
- "No auto-scaling"
|
|
63
|
-
|
|
64
|
-
validation:
|
|
65
|
-
- "Hetzner recommended for budget scenario"
|
|
66
|
-
- "Cost under $15/month"
|
|
67
|
-
- "At least 3 platforms compared"
|
|
68
|
-
- "Savings calculation accurate"
|
|
69
|
-
- "Pros and cons listed"
|
|
70
|
-
|
|
71
|
-
success_criteria:
|
|
72
|
-
- "Recommendation matches requirements"
|
|
73
|
-
- "Cost estimate accurate within 10%"
|
|
74
|
-
- "Clear rationale provided"
|
|
75
|
-
---
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Budget Constraint Optimization"
|
|
3
|
-
description: "Find platform that stays under $20/month budget"
|
|
4
|
-
skill: cost-optimizer
|
|
5
|
-
priority: P1
|
|
6
|
-
|
|
7
|
-
input:
|
|
8
|
-
prompt: "I need to deploy my app with database, budget is max $20/month"
|
|
9
|
-
requirements:
|
|
10
|
-
budget_max: "$20/month"
|
|
11
|
-
app_type: fullstack
|
|
12
|
-
database: postgres
|
|
13
|
-
users: 2000
|
|
14
|
-
strict_budget: true
|
|
15
|
-
|
|
16
|
-
expected_output:
|
|
17
|
-
recommendation:
|
|
18
|
-
platform: hetzner
|
|
19
|
-
monthly_cost: "$11.33"
|
|
20
|
-
within_budget: true
|
|
21
|
-
headroom: "$8.67"
|
|
22
|
-
|
|
23
|
-
alternatives_within_budget:
|
|
24
|
-
- platform: digitalocean
|
|
25
|
-
cost: "$18"
|
|
26
|
-
within_budget: true
|
|
27
|
-
|
|
28
|
-
- platform: railway
|
|
29
|
-
cost: "$20"
|
|
30
|
-
within_budget: true
|
|
31
|
-
|
|
32
|
-
excluded_platforms:
|
|
33
|
-
- platform: vercel_production
|
|
34
|
-
cost: "$60+"
|
|
35
|
-
reason: "Exceeds budget"
|
|
36
|
-
|
|
37
|
-
budget_analysis:
|
|
38
|
-
recommended_cost: "$11.33"
|
|
39
|
-
budget_limit: "$20"
|
|
40
|
-
utilization: "56.6%"
|
|
41
|
-
savings: "$8.67/month buffer"
|
|
42
|
-
|
|
43
|
-
validation:
|
|
44
|
-
- "Recommendation under $20/month"
|
|
45
|
-
- "All alternatives under budget"
|
|
46
|
-
- "Excluded expensive options"
|
|
47
|
-
- "Budget utilization calculated"
|
|
48
|
-
|
|
49
|
-
success_criteria:
|
|
50
|
-
- "Stays within budget"
|
|
51
|
-
- "Maximizes value for budget"
|
|
52
|
-
---
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Scale Requirement - 10k Users"
|
|
3
|
-
description: "Recommend platform for scaling to 10,000 users"
|
|
4
|
-
skill: cost-optimizer
|
|
5
|
-
priority: P2
|
|
6
|
-
|
|
7
|
-
input:
|
|
8
|
-
prompt: "I need to host my SaaS for 10,000 users with high availability"
|
|
9
|
-
requirements:
|
|
10
|
-
users: 10000
|
|
11
|
-
traffic: "100k requests/day"
|
|
12
|
-
database: postgres
|
|
13
|
-
database_size: 8GB
|
|
14
|
-
high_availability: true
|
|
15
|
-
global_audience: false
|
|
16
|
-
|
|
17
|
-
expected_output:
|
|
18
|
-
recommendation:
|
|
19
|
-
platform: hetzner
|
|
20
|
-
instance: cx21_or_cx31
|
|
21
|
-
monthly_cost: "$18-36"
|
|
22
|
-
|
|
23
|
-
cost_breakdown:
|
|
24
|
-
hetzner_cx21:
|
|
25
|
-
server: "$6.90"
|
|
26
|
-
database_8gb: "$20"
|
|
27
|
-
total: "$26.90"
|
|
28
|
-
|
|
29
|
-
hetzner_cx31:
|
|
30
|
-
server: "$14.28"
|
|
31
|
-
database_8gb: "$20"
|
|
32
|
-
total: "$34.28"
|
|
33
|
-
|
|
34
|
-
alternatives:
|
|
35
|
-
aws:
|
|
36
|
-
ec2_t3_medium: "$35"
|
|
37
|
-
rds_8gb: "$45"
|
|
38
|
-
total: "$80"
|
|
39
|
-
|
|
40
|
-
vercel:
|
|
41
|
-
pro_plan: "$120"
|
|
42
|
-
|
|
43
|
-
recommendation_rationale:
|
|
44
|
-
- "CX21 handles 10k users efficiently"
|
|
45
|
-
- "Can upgrade to CX31 if needed"
|
|
46
|
-
- "$53/month savings vs AWS"
|
|
47
|
-
- "$93/month savings vs Vercel"
|
|
48
|
-
|
|
49
|
-
scaling_path:
|
|
50
|
-
current: "CX21 ($27/mo)"
|
|
51
|
-
if_growth: "CX31 ($34/mo)"
|
|
52
|
-
enterprise: "Multiple instances + load balancer ($60/mo)"
|
|
53
|
-
|
|
54
|
-
validation:
|
|
55
|
-
- "Handles 10k users"
|
|
56
|
-
- "High availability considered"
|
|
57
|
-
- "Scaling path provided"
|
|
58
|
-
- "Cost competitive"
|
|
59
|
-
|
|
60
|
-
success_criteria:
|
|
61
|
-
- "Can handle stated scale"
|
|
62
|
-
- "Recommendation appropriate for load"
|
|
63
|
-
---
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
# Test Results: cost-optimizer
|
|
2
|
-
|
|
3
|
-
## How to Run Tests
|
|
4
|
-
|
|
5
|
-
### Test 1: Basic Comparison
|
|
6
|
-
**Prompt**: "What's the cheapest way to host my NextJS SaaS with Postgres for 1000 users?"
|
|
7
|
-
|
|
8
|
-
**Expected**: Hetzner recommended at ~$11/month
|
|
9
|
-
|
|
10
|
-
**Verification**:
|
|
11
|
-
- [ ] Hetzner recommended
|
|
12
|
-
- [ ] Cost under $15/month
|
|
13
|
-
- [ ] At least 3 platforms compared
|
|
14
|
-
- [ ] Savings shown vs alternatives
|
|
15
|
-
|
|
16
|
-
### Test 2: Budget Constraint
|
|
17
|
-
**Prompt**: "I need to deploy my app with database, budget is max $20/month"
|
|
18
|
-
|
|
19
|
-
**Expected**: Recommendation stays under $20
|
|
20
|
-
|
|
21
|
-
**Verification**:
|
|
22
|
-
- [ ] Recommended cost < $20
|
|
23
|
-
- [ ] Budget utilization shown
|
|
24
|
-
- [ ] Expensive options excluded
|
|
25
|
-
|
|
26
|
-
### Test 3: Scale Requirement
|
|
27
|
-
**Prompt**: "I need to host my SaaS for 10,000 users with high availability"
|
|
28
|
-
|
|
29
|
-
**Expected**: Hetzner CX21/CX31 recommended at $27-34/month
|
|
30
|
-
|
|
31
|
-
**Verification**:
|
|
32
|
-
- [ ] Handles 10k users
|
|
33
|
-
- [ ] Scaling path provided
|
|
34
|
-
- [ ] Cost competitive with alternatives
|
|
35
|
-
|
|
36
|
-
## Test Execution
|
|
37
|
-
|
|
38
|
-
**Status**: ⏳ Pending
|
|
39
|
-
|
|
40
|
-
Mark tests as ✅ Passed or ❌ Failed after execution.
|
|
41
|
-
|
|
42
|
-
## Success Criteria
|
|
43
|
-
|
|
44
|
-
✅ All 3 tests recommend appropriate platform
|
|
45
|
-
✅ Cost estimates accurate within 10%
|
|
46
|
-
✅ Savings calculations correct
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Token Structure Validation"
|
|
3
|
-
description: "Test validation of design token structure"
|
|
4
|
-
input:
|
|
5
|
-
tokens:
|
|
6
|
-
colors:
|
|
7
|
-
primary:
|
|
8
|
-
500: "#3b82f6"
|
|
9
|
-
typography:
|
|
10
|
-
heading1:
|
|
11
|
-
fontSize: "2.25rem"
|
|
12
|
-
expected_output:
|
|
13
|
-
type: "validation_result"
|
|
14
|
-
valid: true
|
|
15
|
-
issues: []
|
|
16
|
-
validation:
|
|
17
|
-
- "Naming convention followed"
|
|
18
|
-
- "All required categories present"
|
|
19
|
-
- "Values in correct format"
|
|
20
|
-
success_criteria:
|
|
21
|
-
- "Validation passes"
|
|
22
|
-
- "No issues reported"
|
|
23
|
-
---
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Component Hierarchy Validation"
|
|
3
|
-
description: "Test validation of Atomic Design hierarchy"
|
|
4
|
-
input:
|
|
5
|
-
components:
|
|
6
|
-
atoms:
|
|
7
|
-
- "Button"
|
|
8
|
-
- "Input"
|
|
9
|
-
molecules:
|
|
10
|
-
- "FormField"
|
|
11
|
-
organisms:
|
|
12
|
-
- "Navigation"
|
|
13
|
-
expected_output:
|
|
14
|
-
type: "validation_result"
|
|
15
|
-
valid: true
|
|
16
|
-
hierarchy_correct: true
|
|
17
|
-
validation:
|
|
18
|
-
- "Atoms are smallest components"
|
|
19
|
-
- "Molecules compose atoms"
|
|
20
|
-
- "Organisms compose molecules/atoms"
|
|
21
|
-
success_criteria:
|
|
22
|
-
- "Hierarchy follows Atomic Design"
|
|
23
|
-
- "No circular dependencies"
|
|
24
|
-
---
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Accessibility Checklist Validation"
|
|
3
|
-
description: "Test validation of accessibility requirements"
|
|
4
|
-
input:
|
|
5
|
-
component: "Button"
|
|
6
|
-
accessibility:
|
|
7
|
-
aria_label: true
|
|
8
|
-
keyboard_navigation: true
|
|
9
|
-
color_contrast: 4.6
|
|
10
|
-
touch_target: "44x44"
|
|
11
|
-
expected_output:
|
|
12
|
-
type: "validation_result"
|
|
13
|
-
valid: true
|
|
14
|
-
wcag_compliant: true
|
|
15
|
-
validation:
|
|
16
|
-
- "ARIA labels present"
|
|
17
|
-
- "Keyboard navigation supported"
|
|
18
|
-
- "Color contrast >= 4.5:1"
|
|
19
|
-
- "Touch targets >= 44x44px"
|
|
20
|
-
success_criteria:
|
|
21
|
-
- "WCAG 2.1 AA compliance"
|
|
22
|
-
- "No accessibility violations"
|
|
23
|
-
---
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
name: "Create C4 Context Diagram"
|
|
2
|
-
description: "Test creating a C4 Level 1 context diagram for a system"
|
|
3
|
-
user_input: "Create a C4 context diagram for an e-commerce platform"
|
|
4
|
-
expected_behavior:
|
|
5
|
-
- Generates valid Mermaid C4Context diagram
|
|
6
|
-
- Includes system boundary
|
|
7
|
-
- Shows external actors (users, external systems)
|
|
8
|
-
- Shows relationships and dependencies
|
|
9
|
-
validation:
|
|
10
|
-
- Diagram starts with C4Context keyword
|
|
11
|
-
- Contains Person/System elements
|
|
12
|
-
- Includes Boundary definition
|
|
13
|
-
- Has BiRel or Rel relationship arrows
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
name: "Create Sequence Diagram"
|
|
2
|
-
description: "Test creating a sequence diagram for API authentication flow"
|
|
3
|
-
user_input: "Create a sequence diagram for OAuth 2.0 authentication flow"
|
|
4
|
-
expected_behavior:
|
|
5
|
-
- Generates valid Mermaid sequence diagram
|
|
6
|
-
- Shows participants (client, auth server, resource server)
|
|
7
|
-
- Includes authentication steps in correct order
|
|
8
|
-
- Shows token exchange flow
|
|
9
|
-
validation:
|
|
10
|
-
- Diagram starts with sequenceDiagram keyword
|
|
11
|
-
- Contains participant declarations
|
|
12
|
-
- Has sequential messages (->>, -->)
|
|
13
|
-
- Includes notes for clarity
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
name: "Create Entity Relationship Diagram"
|
|
2
|
-
description: "Test creating an ER diagram for database schema"
|
|
3
|
-
user_input: "Create an ER diagram for a multi-tenant SaaS database"
|
|
4
|
-
expected_behavior:
|
|
5
|
-
- Generates valid Mermaid ER diagram
|
|
6
|
-
- Shows entities (tables)
|
|
7
|
-
- Shows relationships with cardinality
|
|
8
|
-
- Includes key attributes
|
|
9
|
-
validation:
|
|
10
|
-
- Diagram starts with erDiagram keyword
|
|
11
|
-
- Contains entity definitions
|
|
12
|
-
- Has relationships (||--o{, etc.)
|
|
13
|
-
- Shows primary/foreign key fields
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Detect C4 Level 3 (LLD)"
|
|
3
|
-
description: "Tests if diagrams-generator correctly identifies LLD component diagrams"
|
|
4
|
-
input:
|
|
5
|
-
prompt: "Create component diagram for Auth Service"
|
|
6
|
-
expected_output:
|
|
7
|
-
diagram_type: "C4Component"
|
|
8
|
-
document_type: "LLD"
|
|
9
|
-
---
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "Save to Correct Location"
|
|
3
|
-
description: "Tests if diagrams are saved to correct paths (HLD vs LLD)"
|
|
4
|
-
input:
|
|
5
|
-
prompt: "Create component diagram for Payment Service"
|
|
6
|
-
expected_output:
|
|
7
|
-
file_location: ".specweave/docs/internal/architecture/diagrams/payments/component-payment-service.mmd"
|
|
8
|
-
---
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
name: "Create ASP.NET Core REST API"
|
|
2
|
-
description: "Test creating a REST API controller with Entity Framework"
|
|
3
|
-
user_input: "Create a REST API for managing products with CRUD operations"
|
|
4
|
-
expected_behavior:
|
|
5
|
-
- Generates ASP.NET Core controller with appropriate attributes
|
|
6
|
-
- Includes Entity Framework DbContext integration
|
|
7
|
-
- Implements CRUD endpoints (GET, POST, PUT, DELETE)
|
|
8
|
-
- Includes async/await pattern
|
|
9
|
-
- Adds proper HTTP status codes
|
|
10
|
-
validation:
|
|
11
|
-
- Uses [ApiController] and [Route] attributes
|
|
12
|
-
- Controller inherits from ControllerBase
|
|
13
|
-
- Methods use async Task<ActionResult> pattern
|
|
14
|
-
- Includes dependency injection for DbContext
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
name: "Implement JWT Authentication"
|
|
2
|
-
description: "Test implementing JWT authentication in ASP.NET Core"
|
|
3
|
-
user_input: "Add JWT token-based authentication to my API"
|
|
4
|
-
expected_behavior:
|
|
5
|
-
- Configures JWT authentication in Program.cs/Startup.cs
|
|
6
|
-
- Creates login endpoint that generates JWT tokens
|
|
7
|
-
- Includes claims-based authorization
|
|
8
|
-
- Protects endpoints with [Authorize] attribute
|
|
9
|
-
validation:
|
|
10
|
-
- Uses Microsoft.AspNetCore.Authentication.JwtBearer
|
|
11
|
-
- Configures token validation parameters
|
|
12
|
-
- Generates tokens with claims
|
|
13
|
-
- Implements token refresh logic
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
name: "Create Minimal API"
|
|
2
|
-
description: "Test creating .NET 6+ minimal API endpoints"
|
|
3
|
-
user_input: "Create a minimal API for user management"
|
|
4
|
-
expected_behavior:
|
|
5
|
-
- Uses app.MapGet/MapPost/MapPut/MapDelete
|
|
6
|
-
- Implements endpoints in Program.cs
|
|
7
|
-
- Includes route parameters and query strings
|
|
8
|
-
- Uses dependency injection
|
|
9
|
-
validation:
|
|
10
|
-
- No controller classes needed
|
|
11
|
-
- Uses lambda expressions for endpoints
|
|
12
|
-
- Implements proper HTTP verbs
|
|
13
|
-
- Includes validation and error handling
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
id: TC-001
|
|
2
|
-
name: Basic Navigation Test
|
|
3
|
-
description: Verify that the skill can navigate to a webpage and capture a screenshot
|
|
4
|
-
priority: high
|
|
5
|
-
category: functional
|
|
6
|
-
|
|
7
|
-
preconditions:
|
|
8
|
-
- Playwright is installed
|
|
9
|
-
- Chromium browser is available
|
|
10
|
-
- Development server is running on localhost:3000
|
|
11
|
-
|
|
12
|
-
test_steps:
|
|
13
|
-
- step: 1
|
|
14
|
-
action: Create test script that navigates to localhost:3000
|
|
15
|
-
expected: Test script is created in /tmp/
|
|
16
|
-
|
|
17
|
-
- step: 2
|
|
18
|
-
action: Execute test script via execute.js
|
|
19
|
-
expected: Browser launches and navigates to homepage
|
|
20
|
-
|
|
21
|
-
- step: 3
|
|
22
|
-
action: Capture full-page screenshot
|
|
23
|
-
expected: Screenshot is saved to /tmp/ with timestamp
|
|
24
|
-
|
|
25
|
-
- step: 4
|
|
26
|
-
action: Verify page title
|
|
27
|
-
expected: Page title is captured and logged to console
|
|
28
|
-
|
|
29
|
-
- step: 5
|
|
30
|
-
action: Close browser
|
|
31
|
-
expected: Browser closes cleanly without errors
|
|
32
|
-
|
|
33
|
-
acceptance_criteria:
|
|
34
|
-
- Browser launches in visible mode (headless: false)
|
|
35
|
-
- Navigation completes successfully
|
|
36
|
-
- Screenshot file is created with correct naming pattern
|
|
37
|
-
- Console output shows execution steps
|
|
38
|
-
- No errors are thrown during execution
|
|
39
|
-
|
|
40
|
-
test_data:
|
|
41
|
-
url: http://localhost:3000
|
|
42
|
-
expected_title: SpecWeave
|
|
43
|
-
screenshot_pattern: /tmp/homepage-*.png
|
|
44
|
-
|
|
45
|
-
expected_results:
|
|
46
|
-
- Browser opens visibly
|
|
47
|
-
- Page loads within 10 seconds
|
|
48
|
-
- Screenshot file exists and is valid PNG
|
|
49
|
-
- Console shows "✅ Test passed" message
|
|
50
|
-
- Process exits with code 0
|
|
51
|
-
|
|
52
|
-
notes: |
|
|
53
|
-
This is the most basic test case to verify core functionality.
|
|
54
|
-
All other tests depend on this working correctly.
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
id: TC-002
|
|
2
|
-
name: Form Interaction Test
|
|
3
|
-
description: Verify that the skill can interact with form elements using helper utilities
|
|
4
|
-
priority: high
|
|
5
|
-
category: functional
|
|
6
|
-
|
|
7
|
-
preconditions:
|
|
8
|
-
- TC-001 passes
|
|
9
|
-
- Test page has a login form with email and password fields
|
|
10
|
-
- safeType and safeClick utilities are available
|
|
11
|
-
|
|
12
|
-
test_steps:
|
|
13
|
-
- step: 1
|
|
14
|
-
action: Navigate to login page
|
|
15
|
-
expected: Login form is visible
|
|
16
|
-
|
|
17
|
-
- step: 2
|
|
18
|
-
action: Use safeType() to enter email address
|
|
19
|
-
expected: Email field is filled with test email
|
|
20
|
-
|
|
21
|
-
- step: 3
|
|
22
|
-
action: Use safeType() to enter password
|
|
23
|
-
expected: Password field is filled (masked)
|
|
24
|
-
|
|
25
|
-
- step: 4
|
|
26
|
-
action: Use safeClick() to submit form
|
|
27
|
-
expected: Form submission is triggered
|
|
28
|
-
|
|
29
|
-
- step: 5
|
|
30
|
-
action: Wait for navigation or success message
|
|
31
|
-
expected: User is redirected or sees success state
|
|
32
|
-
|
|
33
|
-
- step: 6
|
|
34
|
-
action: Capture screenshot of result
|
|
35
|
-
expected: Screenshot shows post-login state
|
|
36
|
-
|
|
37
|
-
acceptance_criteria:
|
|
38
|
-
- safeType() handles focus and clearing automatically
|
|
39
|
-
- safeType() verifies text was entered correctly
|
|
40
|
-
- safeClick() waits for element to be visible
|
|
41
|
-
- Form submission completes without timeout
|
|
42
|
-
- Screenshots capture both pre and post submission states
|
|
43
|
-
|
|
44
|
-
test_data:
|
|
45
|
-
email: test@example.com
|
|
46
|
-
password: testpassword123
|
|
47
|
-
login_url: http://localhost:3000/login
|
|
48
|
-
expected_redirect: /dashboard
|
|
49
|
-
|
|
50
|
-
expected_results:
|
|
51
|
-
- Email field contains entered value
|
|
52
|
-
- Password field is masked
|
|
53
|
-
- Form submits successfully
|
|
54
|
-
- Navigation completes within 10 seconds
|
|
55
|
-
- Success state is reached
|
|
56
|
-
|
|
57
|
-
error_scenarios:
|
|
58
|
-
- If email field not found: Error message with selector details
|
|
59
|
-
- If click times out: Retry up to 3 times
|
|
60
|
-
- If verification fails: Clear error about mismatch
|
|
61
|
-
|
|
62
|
-
notes: |
|
|
63
|
-
Tests the core interaction utilities that make Playwright easier to use.
|
|
64
|
-
safeType() and safeClick() should handle common edge cases automatically.
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
id: TC-003
|
|
2
|
-
name: SpecWeave Integration Test
|
|
3
|
-
description: Verify that the skill detects SpecWeave context and generates test reports in increment folders
|
|
4
|
-
priority: medium
|
|
5
|
-
category: integration
|
|
6
|
-
|
|
7
|
-
preconditions:
|
|
8
|
-
- TC-001 and TC-002 pass
|
|
9
|
-
- Running in a SpecWeave project (.specweave/ directory exists)
|
|
10
|
-
- Active increment with in-progress status exists
|
|
11
|
-
- Increment has reports/ directory
|
|
12
|
-
|
|
13
|
-
test_steps:
|
|
14
|
-
- step: 1
|
|
15
|
-
action: Execute test from within SpecWeave project
|
|
16
|
-
expected: Executor detects SpecWeave context
|
|
17
|
-
|
|
18
|
-
- step: 2
|
|
19
|
-
action: Check console output for SpecWeave detection message
|
|
20
|
-
expected: "🔷 SpecWeave project detected" is logged
|
|
21
|
-
|
|
22
|
-
- step: 3
|
|
23
|
-
action: Verify active increment detection
|
|
24
|
-
expected: "📦 Active increment: 0001-feature-name" is logged
|
|
25
|
-
|
|
26
|
-
- step: 4
|
|
27
|
-
action: Run test that generates results
|
|
28
|
-
expected: Test executes and collects results
|
|
29
|
-
|
|
30
|
-
- step: 5
|
|
31
|
-
action: Generate test report using generateTestReport()
|
|
32
|
-
expected: Markdown report is created
|
|
33
|
-
|
|
34
|
-
- step: 6
|
|
35
|
-
action: Save report using saveTestReport()
|
|
36
|
-
expected: Report is saved to .specweave/increments/{id}/reports/
|
|
37
|
-
|
|
38
|
-
acceptance_criteria:
|
|
39
|
-
- detectSpecWeaveContext() correctly identifies SpecWeave projects
|
|
40
|
-
- Active increment is detected by checking tasks.md status
|
|
41
|
-
- Test reports follow SpecWeave format (see SKILL.md)
|
|
42
|
-
- Reports are saved to correct increment folder
|
|
43
|
-
- Report includes all sections (summary, results, performance, accessibility)
|
|
44
|
-
|
|
45
|
-
test_data:
|
|
46
|
-
project_root: /path/to/specweave-project
|
|
47
|
-
increment_id: "0001-test-feature"
|
|
48
|
-
increment_status: in-progress
|
|
49
|
-
report_filename: e2e-test-report.md
|
|
50
|
-
|
|
51
|
-
expected_results:
|
|
52
|
-
- isSpecweaveProject: true
|
|
53
|
-
- activeIncrement: "0001-test-feature"
|
|
54
|
-
- Report file exists at: .specweave/increments/0001-test-feature/reports/e2e-test-report.md
|
|
55
|
-
- Report contains proper Markdown formatting
|
|
56
|
-
- Report includes timestamp and test results
|
|
57
|
-
|
|
58
|
-
report_sections_required:
|
|
59
|
-
- Test Summary (total, passed, failed, skipped)
|
|
60
|
-
- Test Results (individual test details)
|
|
61
|
-
- Performance Metrics (page load, interactions)
|
|
62
|
-
- Accessibility Issues (grouped by type)
|
|
63
|
-
- Recommendations (actionable items)
|
|
64
|
-
|
|
65
|
-
edge_cases:
|
|
66
|
-
- No active increment: Should still work, just without increment context
|
|
67
|
-
- Multiple in-progress increments: Use the first one found
|
|
68
|
-
- reports/ directory missing: Create it automatically
|
|
69
|
-
- Running outside SpecWeave: Should work normally without SpecWeave features
|
|
70
|
-
|
|
71
|
-
notes: |
|
|
72
|
-
This test verifies the SpecWeave-specific enhancements that differentiate
|
|
73
|
-
this skill from the original playwright-skill. The ability to automatically
|
|
74
|
-
detect context and generate reports in the right place is a key feature.
|