scene-capability-engine 3.0.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/CHANGELOG.md +2513 -0
- package/LICENSE +21 -0
- package/README.md +765 -0
- package/README.zh.md +630 -0
- package/bin/kiro-spec-engine.js +796 -0
- package/bin/kse.js +3 -0
- package/bin/sce.js +3 -0
- package/bin/sco.js +3 -0
- package/docs/331-poc-adaptation-roadmap.md +156 -0
- package/docs/331-poc-dual-track-integration-guide.md +120 -0
- package/docs/331-poc-weekly-delivery-checklist.md +52 -0
- package/docs/OFFLINE_INSTALL.md +96 -0
- package/docs/README.md +279 -0
- package/docs/adopt-migration-guide.md +599 -0
- package/docs/adoption-guide.md +616 -0
- package/docs/agent-hooks-analysis.md +815 -0
- package/docs/architecture.md +733 -0
- package/docs/articles/ai-driven-development-philosophy-and-practice-review.md +208 -0
- package/docs/articles/ai-driven-development-philosophy-and-practice.en.md +459 -0
- package/docs/articles/ai-driven-development-philosophy-and-practice.md +492 -0
- package/docs/autonomous-control-guide.md +851 -0
- package/docs/command-reference.md +1368 -0
- package/docs/community.md +115 -0
- package/docs/cross-tool-guide.md +555 -0
- package/docs/developer-guide.md +619 -0
- package/docs/document-governance.md +865 -0
- package/docs/environment-management-guide.md +526 -0
- package/docs/examples/add-export-command/design.md +194 -0
- package/docs/examples/add-export-command/requirements.md +110 -0
- package/docs/examples/add-export-command/tasks.md +88 -0
- package/docs/examples/add-rest-api/design.md +855 -0
- package/docs/examples/add-rest-api/requirements.md +323 -0
- package/docs/examples/add-rest-api/tasks.md +355 -0
- package/docs/examples/add-user-dashboard/design.md +192 -0
- package/docs/examples/add-user-dashboard/requirements.md +143 -0
- package/docs/examples/add-user-dashboard/tasks.md +91 -0
- package/docs/faq.md +697 -0
- package/docs/handoffs/evidence/ontology/moqui-template-baseline-2026-02-17-232922.json +156 -0
- package/docs/handoffs/evidence/ontology/moqui-template-baseline-2026-02-17-232922.md +24 -0
- package/docs/images/wechat-qr.png +0 -0
- package/docs/integration-modes.md +529 -0
- package/docs/integration-philosophy.md +313 -0
- package/docs/knowledge-management-guide.md +263 -0
- package/docs/manual-workflows-guide.md +418 -0
- package/docs/moqui-capability-matrix.md +73 -0
- package/docs/moqui-template-core-library-playbook.md +109 -0
- package/docs/multi-agent-coordination-guide.md +553 -0
- package/docs/multi-repo-management-guide.md +1344 -0
- package/docs/quick-start-with-ai-tools.md +375 -0
- package/docs/quick-start.md +146 -0
- package/docs/release-checklist.md +121 -0
- package/docs/releases/README.md +13 -0
- package/docs/releases/v1.46.2-validation.md +45 -0
- package/docs/releases/v1.46.2.md +50 -0
- package/docs/scene-runtime-guide.md +347 -0
- package/docs/spec-collaboration-guide.md +369 -0
- package/docs/spec-locking-guide.md +225 -0
- package/docs/spec-numbering-guide.md +348 -0
- package/docs/spec-workflow.md +519 -0
- package/docs/steering-strategy-guide.md +196 -0
- package/docs/team-collaboration-guide.md +465 -0
- package/docs/testing-strategy.md +272 -0
- package/docs/tools/claude-guide.md +654 -0
- package/docs/tools/cursor-guide.md +706 -0
- package/docs/tools/generic-guide.md +446 -0
- package/docs/tools/kiro-guide.md +308 -0
- package/docs/tools/vscode-guide.md +445 -0
- package/docs/tools/windsurf-guide.md +391 -0
- package/docs/troubleshooting.md +1135 -0
- package/docs/upgrade-guide.md +639 -0
- package/docs/value-observability-guide.md +127 -0
- package/docs/zh/README.md +341 -0
- package/docs/zh/quick-start.md +764 -0
- package/docs/zh/release-checklist.md +121 -0
- package/docs/zh/releases/README.md +13 -0
- package/docs/zh/releases/v1.46.2-validation.md +45 -0
- package/docs/zh/releases/v1.46.2.md +50 -0
- package/docs/zh/spec-numbering-guide.md +348 -0
- package/docs/zh/tools/claude-guide.md +349 -0
- package/docs/zh/tools/cursor-guide.md +281 -0
- package/docs/zh/tools/generic-guide.md +499 -0
- package/docs/zh/tools/kiro-guide.md +342 -0
- package/docs/zh/tools/vscode-guide.md +449 -0
- package/docs/zh/tools/windsurf-guide.md +378 -0
- package/docs/zh/value-observability-guide.md +127 -0
- package/docs//344/272/244/344/273/230/346/270/205/345/215/225.md +75 -0
- package/lib/adoption/adoption-logger.js +487 -0
- package/lib/adoption/adoption-strategy.js +538 -0
- package/lib/adoption/backup-manager.js +420 -0
- package/lib/adoption/conflict-resolver.js +410 -0
- package/lib/adoption/detection-engine.js +275 -0
- package/lib/adoption/diff-viewer.js +226 -0
- package/lib/adoption/error-formatter.js +509 -0
- package/lib/adoption/file-classifier.js +385 -0
- package/lib/adoption/progress-reporter.js +534 -0
- package/lib/adoption/smart-orchestrator.js +470 -0
- package/lib/adoption/strategy-selector.js +218 -0
- package/lib/adoption/summary-generator.js +493 -0
- package/lib/adoption/template-sync.js +605 -0
- package/lib/auto/autonomous-engine.js +485 -0
- package/lib/auto/checkpoint-manager.js +300 -0
- package/lib/auto/close-loop-runner.js +2476 -0
- package/lib/auto/config-schema.js +176 -0
- package/lib/auto/decision-engine.js +344 -0
- package/lib/auto/error-recovery-manager.js +580 -0
- package/lib/auto/goal-decomposer.js +278 -0
- package/lib/auto/progress-tracker.js +502 -0
- package/lib/auto/safety-manager.js +186 -0
- package/lib/auto/semantic-decomposer.js +137 -0
- package/lib/auto/state-manager.js +126 -0
- package/lib/auto/task-queue-manager.js +340 -0
- package/lib/backup/backup-system.js +372 -0
- package/lib/backup/selective-backup.js +207 -0
- package/lib/collab/agent-registry.js +240 -0
- package/lib/collab/collab-manager.js +285 -0
- package/lib/collab/contract-manager.js +320 -0
- package/lib/collab/coordinator.js +370 -0
- package/lib/collab/dependency-manager.js +280 -0
- package/lib/collab/index.js +20 -0
- package/lib/collab/integration-manager.js +202 -0
- package/lib/collab/merge-coordinator.js +252 -0
- package/lib/collab/metadata-manager.js +233 -0
- package/lib/collab/multi-agent-config.js +120 -0
- package/lib/collab/spec-lifecycle-manager.js +304 -0
- package/lib/collab/sync-barrier.js +88 -0
- package/lib/collab/visualizer.js +208 -0
- package/lib/commands/adopt.js +749 -0
- package/lib/commands/auto.js +19559 -0
- package/lib/commands/collab.js +275 -0
- package/lib/commands/context.js +99 -0
- package/lib/commands/docs.js +808 -0
- package/lib/commands/doctor.js +273 -0
- package/lib/commands/env.js +420 -0
- package/lib/commands/knowledge.js +309 -0
- package/lib/commands/lock.js +235 -0
- package/lib/commands/ops.js +409 -0
- package/lib/commands/orchestrate.js +446 -0
- package/lib/commands/prompt.js +105 -0
- package/lib/commands/repo.js +118 -0
- package/lib/commands/rollback.js +219 -0
- package/lib/commands/scene.js +15549 -0
- package/lib/commands/spec-bootstrap.js +147 -0
- package/lib/commands/spec-gate.js +157 -0
- package/lib/commands/spec-pipeline.js +205 -0
- package/lib/commands/status.js +321 -0
- package/lib/commands/task.js +199 -0
- package/lib/commands/templates.js +654 -0
- package/lib/commands/upgrade.js +231 -0
- package/lib/commands/value.js +569 -0
- package/lib/commands/watch.js +684 -0
- package/lib/commands/workflows.js +240 -0
- package/lib/commands/workspace-multi.js +325 -0
- package/lib/commands/workspace.js +189 -0
- package/lib/context/context-exporter.js +378 -0
- package/lib/context/prompt-generator.js +482 -0
- package/lib/data/moqui-capability-lexicon.json +45 -0
- package/lib/environment/backup-system.js +189 -0
- package/lib/environment/environment-manager.js +379 -0
- package/lib/environment/environment-registry.js +168 -0
- package/lib/gitignore/gitignore-backup.js +229 -0
- package/lib/gitignore/gitignore-detector.js +239 -0
- package/lib/gitignore/gitignore-integration.js +267 -0
- package/lib/gitignore/gitignore-transformer.js +193 -0
- package/lib/gitignore/layered-rules-template.js +42 -0
- package/lib/governance/archive-tool.js +284 -0
- package/lib/governance/cleanup-tool.js +237 -0
- package/lib/governance/config-manager.js +186 -0
- package/lib/governance/diagnostic-engine.js +271 -0
- package/lib/governance/doc-reference-checker.js +200 -0
- package/lib/governance/execution-logger.js +243 -0
- package/lib/governance/file-scanner.js +285 -0
- package/lib/governance/hooks-manager.js +333 -0
- package/lib/governance/reporter.js +337 -0
- package/lib/governance/validation-engine.js +181 -0
- package/lib/i18n.js +79 -0
- package/lib/knowledge/entry-manager.js +208 -0
- package/lib/knowledge/index-manager.js +261 -0
- package/lib/knowledge/knowledge-manager.js +273 -0
- package/lib/knowledge/template-manager.js +191 -0
- package/lib/lock/index.js +21 -0
- package/lib/lock/lock-file.js +192 -0
- package/lib/lock/lock-manager.js +321 -0
- package/lib/lock/machine-identifier.js +135 -0
- package/lib/lock/steering-file-lock.js +207 -0
- package/lib/lock/task-lock-manager.js +345 -0
- package/lib/operations/audit-logger.js +293 -0
- package/lib/operations/feedback-manager.js +1147 -0
- package/lib/operations/index.js +23 -0
- package/lib/operations/models/index.js +170 -0
- package/lib/operations/operations-manager.js +151 -0
- package/lib/operations/operations-validator.js +280 -0
- package/lib/operations/permission-manager.js +354 -0
- package/lib/operations/template-loader.js +143 -0
- package/lib/orchestrator/agent-spawner.js +629 -0
- package/lib/orchestrator/bootstrap-prompt-builder.js +236 -0
- package/lib/orchestrator/index.js +19 -0
- package/lib/orchestrator/orchestration-engine.js +1270 -0
- package/lib/orchestrator/orchestrator-config.js +173 -0
- package/lib/orchestrator/status-monitor.js +591 -0
- package/lib/python-checker.js +209 -0
- package/lib/repo/config-manager.js +580 -0
- package/lib/repo/errors/config-error.js +13 -0
- package/lib/repo/errors/git-error.js +15 -0
- package/lib/repo/errors/repo-error.js +14 -0
- package/lib/repo/git-operations.js +181 -0
- package/lib/repo/handlers/.gitkeep +1 -0
- package/lib/repo/handlers/exec-handler.js +155 -0
- package/lib/repo/handlers/health-handler.js +169 -0
- package/lib/repo/handlers/init-handler.js +197 -0
- package/lib/repo/handlers/status-handler.js +176 -0
- package/lib/repo/output-formatter.js +184 -0
- package/lib/repo/path-resolver.js +178 -0
- package/lib/repo/repo-manager.js +514 -0
- package/lib/scene-runtime/audit-emitter.js +59 -0
- package/lib/scene-runtime/binding-plugin-loader.js +351 -0
- package/lib/scene-runtime/binding-registry.js +349 -0
- package/lib/scene-runtime/eval-bridge.js +44 -0
- package/lib/scene-runtime/index.js +19 -0
- package/lib/scene-runtime/moqui-adapter.js +620 -0
- package/lib/scene-runtime/moqui-client.js +606 -0
- package/lib/scene-runtime/moqui-extractor.js +2029 -0
- package/lib/scene-runtime/plan-compiler.js +208 -0
- package/lib/scene-runtime/policy-gate.js +58 -0
- package/lib/scene-runtime/runtime-executor.js +358 -0
- package/lib/scene-runtime/scene-loader.js +96 -0
- package/lib/scene-runtime/scene-ontology.js +959 -0
- package/lib/scene-runtime/scene-template-linter.js +852 -0
- package/lib/scene-runtime/templates/scene-template-erp-query-v0.1.yaml +28 -0
- package/lib/scene-runtime/templates/scene-template-hybrid-shadow-v0.1.yaml +34 -0
- package/lib/spec/bootstrap/context-collector.js +48 -0
- package/lib/spec/bootstrap/draft-generator.js +158 -0
- package/lib/spec/bootstrap/questionnaire-engine.js +70 -0
- package/lib/spec/bootstrap/trace-emitter.js +59 -0
- package/lib/spec/multi-spec-orchestrate.js +93 -0
- package/lib/spec/pipeline/constants.js +6 -0
- package/lib/spec/pipeline/stage-adapters.js +118 -0
- package/lib/spec/pipeline/stage-runner.js +146 -0
- package/lib/spec/pipeline/state-store.js +119 -0
- package/lib/spec-gate/engine/gate-engine.js +165 -0
- package/lib/spec-gate/policy/default-policy.js +22 -0
- package/lib/spec-gate/policy/policy-loader.js +103 -0
- package/lib/spec-gate/result-emitter.js +81 -0
- package/lib/spec-gate/rules/default-rules.js +156 -0
- package/lib/spec-gate/rules/rule-registry.js +51 -0
- package/lib/steering/adoption-config.js +164 -0
- package/lib/steering/compliance-auto-fixer.js +204 -0
- package/lib/steering/compliance-cache.js +99 -0
- package/lib/steering/compliance-error-reporter.js +70 -0
- package/lib/steering/context-sync-manager.js +273 -0
- package/lib/steering/index.js +92 -0
- package/lib/steering/spec-steering.js +230 -0
- package/lib/steering/steering-compliance-checker.js +73 -0
- package/lib/steering/steering-loader.js +144 -0
- package/lib/steering/steering-manager.js +289 -0
- package/lib/task/index.js +12 -0
- package/lib/task/task-claimer.js +489 -0
- package/lib/task/task-status-store.js +418 -0
- package/lib/templates/cache-manager.js +440 -0
- package/lib/templates/content-generalizer.js +247 -0
- package/lib/templates/frontmatter-generator.js +128 -0
- package/lib/templates/git-handler.js +471 -0
- package/lib/templates/metadata-collector.js +328 -0
- package/lib/templates/path-utils.js +144 -0
- package/lib/templates/registry-parser.js +505 -0
- package/lib/templates/spec-reader.js +216 -0
- package/lib/templates/template-applicator.js +249 -0
- package/lib/templates/template-creator.js +256 -0
- package/lib/templates/template-error.js +143 -0
- package/lib/templates/template-exporter.js +502 -0
- package/lib/templates/template-manager.js +782 -0
- package/lib/templates/template-validator.js +361 -0
- package/lib/upgrade/migration-engine.js +382 -0
- package/lib/upgrade/migrations/.gitkeep +52 -0
- package/lib/upgrade/migrations/1.0.0-to-1.1.0.js +78 -0
- package/lib/utils/file-diff.js +177 -0
- package/lib/utils/fs-utils.js +274 -0
- package/lib/utils/tool-detector.js +383 -0
- package/lib/utils/validation.js +324 -0
- package/lib/value/gate-summary-emitter.js +99 -0
- package/lib/value/metric-contract-loader.js +210 -0
- package/lib/value/risk-evaluator.js +117 -0
- package/lib/value/weekly-snapshot-builder.js +61 -0
- package/lib/version/version-checker.js +156 -0
- package/lib/version/version-manager.js +327 -0
- package/lib/watch/action-executor.js +458 -0
- package/lib/watch/event-debouncer.js +323 -0
- package/lib/watch/execution-logger.js +550 -0
- package/lib/watch/file-watcher.js +499 -0
- package/lib/watch/presets.js +266 -0
- package/lib/watch/watch-manager.js +533 -0
- package/lib/workspace/multi/global-config.js +150 -0
- package/lib/workspace/multi/index.js +22 -0
- package/lib/workspace/multi/path-utils.js +173 -0
- package/lib/workspace/multi/workspace-context-resolver.js +244 -0
- package/lib/workspace/multi/workspace-registry.js +196 -0
- package/lib/workspace/multi/workspace-state-manager.js +537 -0
- package/lib/workspace/multi/workspace.js +90 -0
- package/lib/workspace/workspace-manager.js +370 -0
- package/lib/workspace/workspace-sync.js +356 -0
- package/locales/en.json +114 -0
- package/locales/zh.json +114 -0
- package/package.json +102 -0
- package/template/.kiro/README.md +247 -0
- package/template/.kiro/hooks/check-spec-on-create.kiro.hook +17 -0
- package/template/.kiro/hooks/run-tests-on-save.kiro.hook +13 -0
- package/template/.kiro/hooks/sync-tasks-on-edit.kiro.hook +16 -0
- package/template/.kiro/specs/SPEC_WORKFLOW_GUIDE.md +134 -0
- package/template/.kiro/steering/CORE_PRINCIPLES.md +133 -0
- package/template/.kiro/steering/CURRENT_CONTEXT.md +30 -0
- package/template/.kiro/steering/ENVIRONMENT.md +35 -0
- package/template/.kiro/steering/RULES_GUIDE.md +46 -0
- package/template/.kiro/templates/operations/default/change-impact.md +112 -0
- package/template/.kiro/templates/operations/default/deployment.md +91 -0
- package/template/.kiro/templates/operations/default/feedback-response.md +269 -0
- package/template/.kiro/templates/operations/default/migration-plan.md +172 -0
- package/template/.kiro/templates/operations/default/monitoring.md +135 -0
- package/template/.kiro/templates/operations/default/operations.md +135 -0
- package/template/.kiro/templates/operations/default/rollback.md +143 -0
- package/template/.kiro/templates/operations/default/tools.yaml +364 -0
- package/template/.kiro/templates/operations/default/troubleshooting.md +123 -0
- package/template/.kiro/tools/backup_manager.py +295 -0
- package/template/.kiro/tools/configuration_manager.py +218 -0
- package/template/.kiro/tools/document_evaluator.py +550 -0
- package/template/.kiro/tools/enhancement_logger.py +168 -0
- package/template/.kiro/tools/error_handler.py +335 -0
- package/template/.kiro/tools/improvement_identifier.py +444 -0
- package/template/.kiro/tools/modification_applicator.py +737 -0
- package/template/.kiro/tools/quality_gate_enforcer.py +207 -0
- package/template/.kiro/tools/quality_scorer.py +305 -0
- package/template/.kiro/tools/report_generator.py +154 -0
- package/template/.kiro/tools/ultrawork_enhancer.py +676 -0
- package/template/.kiro/tools/ultrawork_enhancer_refactored.py +0 -0
- package/template/.kiro/tools/ultrawork_enhancer_v2.py +463 -0
- package/template/.kiro/tools/ultrawork_enhancer_v3.py +606 -0
- package/template/.kiro/tools/workflow_quality_gate.py +100 -0
- package/template/README.md +111 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
# Testing Strategy
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This document defines the testing strategy for kse (Kiro Spec Engine) to balance code quality with CI/CD performance.
|
|
6
|
+
|
|
7
|
+
## Test Categories
|
|
8
|
+
|
|
9
|
+
### 1. Unit Tests (`tests/unit/`)
|
|
10
|
+
|
|
11
|
+
**Purpose**: Validate individual functions and classes in isolation
|
|
12
|
+
|
|
13
|
+
**Characteristics**:
|
|
14
|
+
- Fast execution (< 100ms per test)
|
|
15
|
+
- No external dependencies
|
|
16
|
+
- Mock all I/O operations
|
|
17
|
+
- High coverage of edge cases
|
|
18
|
+
|
|
19
|
+
**When to run**:
|
|
20
|
+
- During development (watch mode)
|
|
21
|
+
- Before committing code
|
|
22
|
+
- In pre-commit hooks
|
|
23
|
+
|
|
24
|
+
**Examples**:
|
|
25
|
+
- `path-utils.test.js` - Path normalization logic
|
|
26
|
+
- `workspace-state-manager.test.js` - State management operations
|
|
27
|
+
- `file-classifier.test.js` - File classification rules
|
|
28
|
+
|
|
29
|
+
### 2. Integration Tests (`tests/integration/`)
|
|
30
|
+
|
|
31
|
+
**Purpose**: Validate component interactions and end-to-end workflows
|
|
32
|
+
|
|
33
|
+
**Characteristics**:
|
|
34
|
+
- Moderate execution time (< 5s per test)
|
|
35
|
+
- Real file system operations
|
|
36
|
+
- Multiple components working together
|
|
37
|
+
- Focus on critical user workflows
|
|
38
|
+
|
|
39
|
+
**When to run**:
|
|
40
|
+
- In CI/CD pipeline (GitHub Actions)
|
|
41
|
+
- Before releases
|
|
42
|
+
- After major refactoring
|
|
43
|
+
|
|
44
|
+
**Examples**:
|
|
45
|
+
- `watch-mode-integration.test.js` - File watching workflow
|
|
46
|
+
- Multi-workspace creation and switching workflow
|
|
47
|
+
- Adoption process end-to-end
|
|
48
|
+
|
|
49
|
+
### 3. Property-Based Tests (`tests/properties/`)
|
|
50
|
+
|
|
51
|
+
**Purpose**: Validate universal properties and invariants
|
|
52
|
+
|
|
53
|
+
**Characteristics**:
|
|
54
|
+
- Slow execution (100+ iterations)
|
|
55
|
+
- Randomized inputs
|
|
56
|
+
- Comprehensive edge case coverage
|
|
57
|
+
|
|
58
|
+
**When to run**:
|
|
59
|
+
- Weekly scheduled runs
|
|
60
|
+
- Before major releases
|
|
61
|
+
- When investigating bugs
|
|
62
|
+
|
|
63
|
+
**Status**: Optional (not yet implemented)
|
|
64
|
+
|
|
65
|
+
## Test Suite Optimization and Expansion (2026-01-29)
|
|
66
|
+
|
|
67
|
+
### Spec 17-00: Unit Test Optimization
|
|
68
|
+
|
|
69
|
+
**Optimization Results**:
|
|
70
|
+
- **Reduced**: 65 redundant unit tests (1,389 → 1,324)
|
|
71
|
+
- **Optimized File**: `file-classifier.test.js` (83 → 18 tests, 78% reduction)
|
|
72
|
+
- **Coverage**: Maintained 100%
|
|
73
|
+
- **Time Saved**: ~2 seconds per full test run
|
|
74
|
+
|
|
75
|
+
**Key Finding**: Critical path coverage gap - 0% of 32 critical paths covered by integration tests
|
|
76
|
+
|
|
77
|
+
For detailed analysis, see `.kiro/specs/17-00-test-suite-optimization/results/`
|
|
78
|
+
|
|
79
|
+
### Spec 18-00: Integration Test Expansion
|
|
80
|
+
|
|
81
|
+
**Expansion Results**:
|
|
82
|
+
- **Added**: 19 new integration tests (10 → 29, +190%)
|
|
83
|
+
- **Commands Covered**: workspace-multi, status, doctor
|
|
84
|
+
- **CI Time**: ~16.8 seconds (well under 20s target)
|
|
85
|
+
- **Test Quality**: 100% pass rate, real file system operations
|
|
86
|
+
|
|
87
|
+
**Infrastructure Created**:
|
|
88
|
+
- `IntegrationTestFixture` - Test environment management
|
|
89
|
+
- `CommandTestHelper` - Command execution and validation utilities
|
|
90
|
+
|
|
91
|
+
**Test Coverage by Command**:
|
|
92
|
+
- **workspace-multi** (11 tests): Creation, switching, listing, deletion, error handling
|
|
93
|
+
- **status** (3 tests): Spec reporting, empty state, counting
|
|
94
|
+
- **doctor** (3 tests): Health checks, missing directories, invalid config
|
|
95
|
+
|
|
96
|
+
For detailed progress, see `.kiro/specs/18-00-integration-test-expansion/PROGRESS.md`
|
|
97
|
+
|
|
98
|
+
### Current State (After Both Specs)
|
|
99
|
+
- **Total Tests**: 1,353 (1,324 unit + 29 integration)
|
|
100
|
+
- **Unit Tests**: 1,324 (98%)
|
|
101
|
+
- **Integration Tests**: 29 (2%)
|
|
102
|
+
- **CI Time**: ~16.8 seconds
|
|
103
|
+
- **Full Suite Time**: ~19 seconds
|
|
104
|
+
|
|
105
|
+
### Test File Size Guidelines
|
|
106
|
+
- **Optimal**: 20-30 tests per file
|
|
107
|
+
- **Maximum**: 40 tests per file
|
|
108
|
+
- **Action Required**: >50 tests per file
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## CI/CD Strategy
|
|
113
|
+
|
|
114
|
+
### GitHub Actions Pipeline
|
|
115
|
+
|
|
116
|
+
```yaml
|
|
117
|
+
# .github/workflows/test.yml
|
|
118
|
+
jobs:
|
|
119
|
+
integration-tests:
|
|
120
|
+
runs-on: ubuntu-latest
|
|
121
|
+
steps:
|
|
122
|
+
- uses: actions/checkout@v3
|
|
123
|
+
- uses: actions/setup-node@v3
|
|
124
|
+
- run: npm ci
|
|
125
|
+
- run: npm run test:ci # Only integration tests
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Local Development
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# Watch mode during development
|
|
132
|
+
npm run test:watch
|
|
133
|
+
|
|
134
|
+
# Run all tests before commit
|
|
135
|
+
npm test
|
|
136
|
+
|
|
137
|
+
# Run specific test file
|
|
138
|
+
npm test -- path/to/test.test.js
|
|
139
|
+
|
|
140
|
+
# Run with coverage
|
|
141
|
+
npm run test:coverage
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Test Optimization Guidelines
|
|
145
|
+
|
|
146
|
+
### Unit Test Optimization
|
|
147
|
+
|
|
148
|
+
1. **Consolidate similar tests**:
|
|
149
|
+
```javascript
|
|
150
|
+
// ❌ Before: 5 separate tests
|
|
151
|
+
it('should handle empty string', ...)
|
|
152
|
+
it('should handle null', ...)
|
|
153
|
+
it('should handle undefined', ...)
|
|
154
|
+
it('should handle whitespace', ...)
|
|
155
|
+
it('should handle special chars', ...)
|
|
156
|
+
|
|
157
|
+
// ✅ After: 1 parameterized test
|
|
158
|
+
it('should reject invalid inputs', () => {
|
|
159
|
+
['', null, undefined, ' ', '@#$'].forEach(input => {
|
|
160
|
+
expect(() => validate(input)).toThrow();
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
2. **Remove redundant assertions**:
|
|
166
|
+
- Test behavior, not implementation
|
|
167
|
+
- One concept per test
|
|
168
|
+
- Avoid testing framework features
|
|
169
|
+
|
|
170
|
+
3. **Use test.each for data-driven tests**:
|
|
171
|
+
```javascript
|
|
172
|
+
test.each([
|
|
173
|
+
['input1', 'expected1'],
|
|
174
|
+
['input2', 'expected2'],
|
|
175
|
+
])('should handle %s', (input, expected) => {
|
|
176
|
+
expect(fn(input)).toBe(expected);
|
|
177
|
+
});
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Integration Test Guidelines
|
|
181
|
+
|
|
182
|
+
1. **Focus on critical paths**:
|
|
183
|
+
- User registration and login
|
|
184
|
+
- Workspace creation and switching
|
|
185
|
+
- Spec lifecycle (create → execute → complete)
|
|
186
|
+
|
|
187
|
+
2. **Minimize setup/teardown**:
|
|
188
|
+
- Reuse test fixtures
|
|
189
|
+
- Use beforeAll for expensive setup
|
|
190
|
+
- Clean up only what's necessary
|
|
191
|
+
|
|
192
|
+
3. **Parallel execution**:
|
|
193
|
+
- Avoid shared state
|
|
194
|
+
- Use unique temp directories
|
|
195
|
+
- Independent test isolation
|
|
196
|
+
|
|
197
|
+
## Current Test Metrics
|
|
198
|
+
|
|
199
|
+
**Before Optimization** (v1.11.3):
|
|
200
|
+
- Total tests: 1425 (1417 passed, 8 skipped)
|
|
201
|
+
- Test suites: 55
|
|
202
|
+
- Execution time: ~23 seconds
|
|
203
|
+
- CI time: ~45 seconds
|
|
204
|
+
|
|
205
|
+
**After Optimization** (v1.11.4):
|
|
206
|
+
- Unit tests: ~1200 (optimized, run locally)
|
|
207
|
+
- Integration tests: ~50 (run in CI)
|
|
208
|
+
- Expected CI time: ~15 seconds
|
|
209
|
+
- Coverage maintained: >85%
|
|
210
|
+
|
|
211
|
+
## Test Coverage Goals
|
|
212
|
+
|
|
213
|
+
- **Critical paths**: 100% coverage
|
|
214
|
+
- **Core business logic**: >90% coverage
|
|
215
|
+
- **Utility functions**: >85% coverage
|
|
216
|
+
- **Error handling**: 100% coverage
|
|
217
|
+
- **Overall project**: >85% coverage
|
|
218
|
+
|
|
219
|
+
## Maintenance
|
|
220
|
+
|
|
221
|
+
### When to Add Tests
|
|
222
|
+
|
|
223
|
+
- **Always**: For bug fixes (regression tests)
|
|
224
|
+
- **Always**: For new features (TDD approach)
|
|
225
|
+
- **Consider**: For refactoring (if behavior changes)
|
|
226
|
+
|
|
227
|
+
### When to Remove Tests
|
|
228
|
+
|
|
229
|
+
- **Redundant tests**: Multiple tests for same behavior
|
|
230
|
+
- **Implementation tests**: Testing internal details
|
|
231
|
+
- **Obsolete tests**: For removed features
|
|
232
|
+
|
|
233
|
+
### Test Review Checklist
|
|
234
|
+
|
|
235
|
+
- [ ] Test name clearly describes what is being tested
|
|
236
|
+
- [ ] Test is independent (no shared state)
|
|
237
|
+
- [ ] Test is deterministic (no random failures)
|
|
238
|
+
- [ ] Test is fast (< 100ms for unit, < 5s for integration)
|
|
239
|
+
- [ ] Test has clear assertions
|
|
240
|
+
- [ ] Test follows AAA pattern (Arrange, Act, Assert)
|
|
241
|
+
|
|
242
|
+
## Tools and Commands
|
|
243
|
+
|
|
244
|
+
### NPM Scripts
|
|
245
|
+
|
|
246
|
+
```json
|
|
247
|
+
{
|
|
248
|
+
"test": "jest",
|
|
249
|
+
"test:ci": "jest --config=jest.config.ci.js",
|
|
250
|
+
"test:watch": "jest --watch",
|
|
251
|
+
"test:coverage": "jest --coverage",
|
|
252
|
+
"test:unit": "jest tests/unit",
|
|
253
|
+
"test:integration": "jest tests/integration"
|
|
254
|
+
}
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### Jest Configuration
|
|
258
|
+
|
|
259
|
+
- `jest.config.js` - Default configuration (all tests)
|
|
260
|
+
- `jest.config.ci.js` - CI configuration (integration only)
|
|
261
|
+
|
|
262
|
+
## References
|
|
263
|
+
|
|
264
|
+
- [Jest Documentation](https://jestjs.io/docs/getting-started)
|
|
265
|
+
- [Testing Best Practices](https://github.com/goldbergyoni/javascript-testing-best-practices)
|
|
266
|
+
- [Test Pyramid](https://martinfowler.com/articles/practical-test-pyramid.html)
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
**Version**: v1.0
|
|
271
|
+
**Last Updated**: 2026-01-29
|
|
272
|
+
**Maintained by**: kse Development Team
|