aigroup-workflow 2.2.1 → 2.2.2
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/commands/fix-build.md +10 -5
- package/.claude/commands/init-project.md +13 -8
- package/.claude/commands/plan.md +15 -8
- package/.claude/commands/review.md +12 -6
- package/.claude/commands/tdd.md +11 -5
- package/.claude/commands/workflow-start.md +20 -11
- package/.claude/settings.json +28 -0
- package/.codex/agents/architect.toml +207 -0
- package/.codex/agents/build-error-resolver.toml +110 -0
- package/.codex/agents/code-reviewer.toml +233 -0
- package/.codex/agents/doc-updater.toml +103 -0
- package/.codex/agents/e2e-runner.toml +103 -0
- package/.codex/agents/get-current-datetime.toml +23 -0
- package/.codex/agents/init-architect.toml +181 -0
- package/.codex/agents/planner.toml +208 -0
- package/.codex/agents/refactor-cleaner.toml +81 -0
- package/.codex/agents/rust-reviewer.toml +90 -0
- package/.codex/agents/security-reviewer.toml +104 -0
- package/.codex/agents/tdd-guide.toml +87 -0
- package/AGENTS.md +2 -2
- package/CLAUDE.md +23 -1
- package/LICENSE +20 -20
- package/README.md +333 -333
- package/agents/a11y-architect.md +141 -141
- package/agents/architect.md +211 -211
- package/agents/build-error-resolver.md +114 -114
- package/agents/chief-of-staff.md +151 -151
- package/agents/code-architect.md +71 -71
- package/agents/code-explorer.md +69 -69
- package/agents/code-reviewer.md +237 -237
- package/agents/code-simplifier.md +47 -47
- package/agents/comment-analyzer.md +45 -45
- package/agents/conversation-analyzer.md +52 -52
- package/agents/cpp-build-resolver.md +90 -90
- package/agents/cpp-reviewer.md +72 -72
- package/agents/csharp-reviewer.md +101 -101
- package/agents/dart-build-resolver.md +201 -201
- package/agents/database-reviewer.md +91 -91
- package/agents/doc-updater.md +107 -107
- package/agents/docs-lookup.md +68 -68
- package/agents/e2e-runner.md +107 -107
- package/agents/flutter-reviewer.md +243 -243
- package/agents/gan-evaluator.md +209 -209
- package/agents/gan-generator.md +131 -131
- package/agents/gan-planner.md +99 -99
- package/agents/get-current-datetime.md +26 -26
- package/agents/go-build-resolver.md +94 -94
- package/agents/go-reviewer.md +76 -76
- package/agents/harness-optimizer.md +35 -35
- package/agents/healthcare-reviewer.md +83 -83
- package/agents/java-build-resolver.md +153 -153
- package/agents/java-reviewer.md +92 -92
- package/agents/kotlin-build-resolver.md +118 -118
- package/agents/kotlin-reviewer.md +159 -159
- package/agents/loop-operator.md +36 -36
- package/agents/opensource-forker.md +198 -198
- package/agents/opensource-packager.md +249 -249
- package/agents/opensource-sanitizer.md +188 -188
- package/agents/performance-optimizer.md +446 -446
- package/agents/planner.md +212 -212
- package/agents/pr-test-analyzer.md +45 -45
- package/agents/python-reviewer.md +98 -98
- package/agents/pytorch-build-resolver.md +120 -120
- package/agents/refactor-cleaner.md +85 -85
- package/agents/rust-build-resolver.md +148 -148
- package/agents/rust-reviewer.md +94 -94
- package/agents/security-reviewer.md +108 -108
- package/agents/seo-specialist.md +59 -59
- package/agents/silent-failure-hunter.md +50 -50
- package/agents/tdd-guide.md +91 -91
- package/agents/type-design-analyzer.md +41 -41
- package/agents/typescript-reviewer.md +112 -112
- package/cli/commands/update.mjs +1 -1
- package/cli/utils/scaffold.mjs +53 -0
- package/docs/rules/agents.md +166 -50
- package/docs/rules/cpp/coding-style.md +44 -44
- package/docs/rules/cpp/hooks.md +39 -39
- package/docs/rules/cpp/patterns.md +51 -51
- package/docs/rules/cpp/security.md +51 -51
- package/docs/rules/cpp/testing.md +44 -44
- package/docs/rules/csharp/coding-style.md +72 -72
- package/docs/rules/csharp/hooks.md +25 -25
- package/docs/rules/csharp/patterns.md +50 -50
- package/docs/rules/csharp/security.md +58 -58
- package/docs/rules/csharp/testing.md +46 -46
- package/docs/rules/dart/coding-style.md +159 -159
- package/docs/rules/dart/hooks.md +66 -66
- package/docs/rules/dart/patterns.md +261 -261
- package/docs/rules/dart/security.md +135 -135
- package/docs/rules/dart/testing.md +215 -215
- package/docs/rules/golang/coding-style.md +32 -32
- package/docs/rules/golang/hooks.md +17 -17
- package/docs/rules/golang/patterns.md +45 -45
- package/docs/rules/golang/security.md +34 -34
- package/docs/rules/golang/testing.md +31 -31
- package/docs/rules/java/coding-style.md +114 -114
- package/docs/rules/java/hooks.md +18 -18
- package/docs/rules/java/patterns.md +146 -146
- package/docs/rules/java/security.md +100 -100
- package/docs/rules/java/testing.md +131 -131
- package/docs/rules/kotlin/coding-style.md +86 -86
- package/docs/rules/kotlin/hooks.md +17 -17
- package/docs/rules/kotlin/patterns.md +146 -146
- package/docs/rules/kotlin/security.md +82 -82
- package/docs/rules/kotlin/testing.md +128 -128
- package/docs/rules/perl/coding-style.md +46 -46
- package/docs/rules/perl/hooks.md +22 -22
- package/docs/rules/perl/patterns.md +76 -76
- package/docs/rules/perl/security.md +69 -69
- package/docs/rules/perl/testing.md +54 -54
- package/docs/rules/php/coding-style.md +40 -40
- package/docs/rules/php/hooks.md +24 -24
- package/docs/rules/php/patterns.md +33 -33
- package/docs/rules/php/security.md +37 -37
- package/docs/rules/php/testing.md +39 -39
- package/docs/rules/python/coding-style.md +42 -42
- package/docs/rules/python/hooks.md +19 -19
- package/docs/rules/python/patterns.md +39 -39
- package/docs/rules/python/security.md +30 -30
- package/docs/rules/python/testing.md +38 -38
- package/docs/rules/rust/coding-style.md +151 -151
- package/docs/rules/rust/hooks.md +16 -16
- package/docs/rules/rust/patterns.md +168 -168
- package/docs/rules/rust/security.md +141 -141
- package/docs/rules/rust/testing.md +154 -154
- package/docs/rules/swift/coding-style.md +47 -47
- package/docs/rules/swift/hooks.md +20 -20
- package/docs/rules/swift/patterns.md +66 -66
- package/docs/rules/swift/security.md +33 -33
- package/docs/rules/swift/testing.md +45 -45
- package/docs/rules/typescript/coding-style.md +199 -199
- package/docs/rules/typescript/hooks.md +22 -22
- package/docs/rules/typescript/patterns.md +52 -52
- package/docs/rules/typescript/security.md +28 -28
- package/docs/rules/typescript/testing.md +18 -18
- package/docs/rules/web/coding-style.md +96 -96
- package/docs/rules/web/design-quality.md +62 -62
- package/docs/rules/web/hooks.md +120 -120
- package/docs/rules/web/patterns.md +79 -79
- package/docs/rules/web/performance.md +64 -64
- package/docs/rules/web/security.md +57 -57
- package/docs/rules/web/testing.md +55 -55
- package/docs/templates/README.md +36 -36
- package/docs/templates/ai-project-final.md +124 -124
- package/docs/templates/ai-project.md +105 -105
- package/docs/templates/api.md +157 -157
- package/docs/templates/bug.md +62 -62
- package/docs/templates/code-review.md +87 -87
- package/docs/templates/generic.md +116 -116
- package/docs/templates/implementation-plan.md +1 -1
- package/docs/templates/meeting.md +68 -68
- package/docs/templates/prd.md +98 -98
- package/docs/templates/ui.md +134 -134
- package/docs/workflow-pipeline.md +5 -5
- package/package.json +40 -39
- package/skills/SUPERPOWERS-LICENSE +21 -21
- package/skills/ai-ml/fine-tuning-expert/SKILL.md +162 -162
- package/skills/ai-ml/fine-tuning-expert/references/dataset-preparation.md +540 -540
- package/skills/ai-ml/fine-tuning-expert/references/deployment-optimization.md +673 -673
- package/skills/ai-ml/fine-tuning-expert/references/evaluation-metrics.md +597 -597
- package/skills/ai-ml/fine-tuning-expert/references/hyperparameter-tuning.md +565 -565
- package/skills/ai-ml/fine-tuning-expert/references/lora-peft.md +347 -347
- package/skills/ai-ml/ml-pipeline/SKILL.md +159 -159
- package/skills/ai-ml/ml-pipeline/references/experiment-tracking.md +833 -833
- package/skills/ai-ml/ml-pipeline/references/feature-engineering.md +631 -631
- package/skills/ai-ml/ml-pipeline/references/model-validation.md +978 -978
- package/skills/ai-ml/ml-pipeline/references/pipeline-orchestration.md +907 -907
- package/skills/ai-ml/ml-pipeline/references/training-pipelines.md +782 -782
- package/skills/ai-ml/rag-architect/SKILL.md +194 -194
- package/skills/ai-ml/rag-architect/references/chunking-strategies.md +878 -878
- package/skills/ai-ml/rag-architect/references/embedding-models.md +561 -561
- package/skills/ai-ml/rag-architect/references/rag-evaluation.md +833 -833
- package/skills/ai-ml/rag-architect/references/retrieval-optimization.md +795 -795
- package/skills/ai-ml/rag-architect/references/vector-databases.md +589 -589
- package/skills/ai-ml/spark-engineer/SKILL.md +148 -148
- package/skills/ai-ml/spark-engineer/references/partitioning-caching.md +543 -543
- package/skills/ai-ml/spark-engineer/references/performance-tuning.md +544 -544
- package/skills/ai-ml/spark-engineer/references/rdd-operations.md +599 -599
- package/skills/ai-ml/spark-engineer/references/spark-sql-dataframes.md +474 -474
- package/skills/ai-ml/spark-engineer/references/streaming-patterns.md +786 -786
- package/skills/backend/api-designer/SKILL.md +217 -217
- package/skills/backend/api-designer/references/error-handling.md +541 -541
- package/skills/backend/api-designer/references/openapi.md +824 -824
- package/skills/backend/api-designer/references/pagination.md +494 -494
- package/skills/backend/api-designer/references/rest-patterns.md +335 -335
- package/skills/backend/api-designer/references/versioning.md +391 -391
- package/skills/backend/architecture-designer/SKILL.md +117 -117
- package/skills/backend/architecture-designer/references/adr-template.md +116 -116
- package/skills/backend/architecture-designer/references/architecture-patterns.md +111 -111
- package/skills/backend/architecture-designer/references/database-selection.md +102 -102
- package/skills/backend/architecture-designer/references/nfr-checklist.md +112 -112
- package/skills/backend/architecture-designer/references/system-design.md +100 -100
- package/skills/backend/code-documenter/SKILL.md +147 -147
- package/skills/backend/code-documenter/references/api-docs-fastapi-django.md +166 -166
- package/skills/backend/code-documenter/references/api-docs-nestjs-express.md +220 -220
- package/skills/backend/code-documenter/references/coverage-reports.md +125 -125
- package/skills/backend/code-documenter/references/documentation-systems.md +333 -333
- package/skills/backend/code-documenter/references/interactive-api-docs.md +531 -531
- package/skills/backend/code-documenter/references/python-docstrings.md +121 -121
- package/skills/backend/code-documenter/references/typescript-jsdoc.md +145 -145
- package/skills/backend/code-documenter/references/user-guides-tutorials.md +530 -530
- package/skills/backend/debugging-wizard/SKILL.md +105 -105
- package/skills/backend/debugging-wizard/references/common-patterns.md +132 -132
- package/skills/backend/debugging-wizard/references/debugging-tools.md +140 -140
- package/skills/backend/debugging-wizard/references/quick-fixes.md +177 -177
- package/skills/backend/debugging-wizard/references/strategies.md +142 -142
- package/skills/backend/debugging-wizard/references/systematic-debugging.md +367 -367
- package/skills/backend/feature-forge/SKILL.md +98 -98
- package/skills/backend/feature-forge/references/acceptance-criteria.md +104 -104
- package/skills/backend/feature-forge/references/ears-syntax.md +99 -99
- package/skills/backend/feature-forge/references/interview-questions.md +150 -150
- package/skills/backend/feature-forge/references/pre-discovery-subagents.md +54 -54
- package/skills/backend/feature-forge/references/specification-template.md +103 -103
- package/skills/backend/fullstack-guardian/SKILL.md +105 -105
- package/skills/backend/fullstack-guardian/references/api-design-standards.md +307 -307
- package/skills/backend/fullstack-guardian/references/architecture-decisions.md +350 -350
- package/skills/backend/fullstack-guardian/references/backend-patterns.md +237 -237
- package/skills/backend/fullstack-guardian/references/common-patterns.md +134 -134
- package/skills/backend/fullstack-guardian/references/deliverables-checklist.md +354 -354
- package/skills/backend/fullstack-guardian/references/design-template.md +91 -91
- package/skills/backend/fullstack-guardian/references/error-handling.md +135 -135
- package/skills/backend/fullstack-guardian/references/frontend-patterns.md +340 -340
- package/skills/backend/fullstack-guardian/references/integration-patterns.md +333 -333
- package/skills/backend/fullstack-guardian/references/security-checklist.md +106 -106
- package/skills/backend/graphql-architect/SKILL.md +146 -146
- package/skills/backend/graphql-architect/references/federation.md +418 -418
- package/skills/backend/graphql-architect/references/migration-from-rest.md +1141 -1141
- package/skills/backend/graphql-architect/references/resolvers.md +425 -425
- package/skills/backend/graphql-architect/references/schema-design.md +393 -393
- package/skills/backend/graphql-architect/references/security.md +569 -569
- package/skills/backend/graphql-architect/references/subscriptions.md +510 -510
- package/skills/backend/legacy-modernizer/SKILL.md +137 -137
- package/skills/backend/legacy-modernizer/references/legacy-testing.md +381 -381
- package/skills/backend/legacy-modernizer/references/migration-strategies.md +423 -423
- package/skills/backend/legacy-modernizer/references/refactoring-patterns.md +395 -395
- package/skills/backend/legacy-modernizer/references/strangler-fig-pattern.md +281 -281
- package/skills/backend/legacy-modernizer/references/system-assessment.md +487 -487
- package/skills/backend/microservices-architect/SKILL.md +164 -164
- package/skills/backend/microservices-architect/references/communication.md +499 -499
- package/skills/backend/microservices-architect/references/data.md +721 -721
- package/skills/backend/microservices-architect/references/decomposition.md +344 -344
- package/skills/backend/microservices-architect/references/observability.md +805 -805
- package/skills/backend/microservices-architect/references/patterns.md +603 -603
- package/skills/database/database-optimizer/SKILL.md +147 -147
- package/skills/database/database-optimizer/references/index-strategies.md +331 -331
- package/skills/database/database-optimizer/references/monitoring-analysis.md +501 -501
- package/skills/database/database-optimizer/references/mysql-tuning.md +452 -452
- package/skills/database/database-optimizer/references/postgresql-tuning.md +413 -413
- package/skills/database/database-optimizer/references/query-optimization.md +251 -251
- package/skills/database/postgres-pro/SKILL.md +152 -152
- package/skills/database/postgres-pro/references/extensions.md +404 -404
- package/skills/database/postgres-pro/references/jsonb.md +321 -321
- package/skills/database/postgres-pro/references/maintenance.md +481 -481
- package/skills/database/postgres-pro/references/performance.md +265 -265
- package/skills/database/postgres-pro/references/replication.md +446 -446
- package/skills/database/sql-pro/SKILL.md +129 -129
- package/skills/database/sql-pro/references/database-design.md +402 -402
- package/skills/database/sql-pro/references/dialect-differences.md +419 -419
- package/skills/database/sql-pro/references/optimization.md +384 -384
- package/skills/database/sql-pro/references/query-patterns.md +285 -285
- package/skills/database/sql-pro/references/window-functions.md +328 -328
- package/skills/dotnet/csharp-developer/SKILL.md +125 -125
- package/skills/dotnet/csharp-developer/references/aspnet-core.md +394 -394
- package/skills/dotnet/csharp-developer/references/blazor.md +553 -553
- package/skills/dotnet/csharp-developer/references/entity-framework.md +409 -409
- package/skills/dotnet/csharp-developer/references/modern-csharp.md +248 -248
- package/skills/dotnet/csharp-developer/references/performance.md +498 -498
- package/skills/dotnet/dotnet-core-expert/SKILL.md +138 -138
- package/skills/dotnet/dotnet-core-expert/references/authentication.md +546 -546
- package/skills/dotnet/dotnet-core-expert/references/clean-architecture.md +455 -455
- package/skills/dotnet/dotnet-core-expert/references/cloud-native.md +548 -548
- package/skills/dotnet/dotnet-core-expert/references/entity-framework.md +440 -440
- package/skills/dotnet/dotnet-core-expert/references/minimal-apis.md +319 -319
- package/skills/frontend/angular-architect/SKILL.md +152 -152
- package/skills/frontend/angular-architect/references/components.md +297 -297
- package/skills/frontend/angular-architect/references/ngrx.md +401 -401
- package/skills/frontend/angular-architect/references/routing.md +361 -361
- package/skills/frontend/angular-architect/references/rxjs.md +319 -319
- package/skills/frontend/angular-architect/references/testing.md +405 -405
- package/skills/frontend/design-commands/design.md +91 -91
- package/skills/frontend/design-commands/handoff.md +97 -97
- package/skills/frontend/design-commands/prototype.md +120 -120
- package/skills/frontend/design-commands/spec.md +160 -160
- package/skills/frontend/design-commands/style.md +78 -78
- package/skills/frontend/flutter-expert/SKILL.md +138 -138
- package/skills/frontend/flutter-expert/references/bloc-state.md +259 -259
- package/skills/frontend/flutter-expert/references/gorouter-navigation.md +119 -119
- package/skills/frontend/flutter-expert/references/performance.md +99 -99
- package/skills/frontend/flutter-expert/references/project-structure.md +118 -118
- package/skills/frontend/flutter-expert/references/riverpod-state.md +130 -130
- package/skills/frontend/flutter-expert/references/widget-patterns.md +123 -123
- package/skills/frontend/nextjs-developer/SKILL.md +143 -143
- package/skills/frontend/nextjs-developer/references/app-router.md +311 -311
- package/skills/frontend/nextjs-developer/references/data-fetching.md +482 -482
- package/skills/frontend/nextjs-developer/references/deployment.md +545 -545
- package/skills/frontend/nextjs-developer/references/server-actions.md +462 -462
- package/skills/frontend/nextjs-developer/references/server-components.md +384 -384
- package/skills/frontend/react-expert/SKILL.md +149 -149
- package/skills/frontend/react-expert/references/hooks-patterns.md +162 -162
- package/skills/frontend/react-expert/references/migration-class-to-modern.md +1119 -1119
- package/skills/frontend/react-expert/references/performance.md +168 -168
- package/skills/frontend/react-expert/references/react-19-features.md +174 -174
- package/skills/frontend/react-expert/references/server-components.md +143 -143
- package/skills/frontend/react-expert/references/state-management.md +171 -171
- package/skills/frontend/react-expert/references/testing-react.md +174 -174
- package/skills/frontend/react-native-expert/SKILL.md +185 -185
- package/skills/frontend/react-native-expert/references/expo-router.md +187 -187
- package/skills/frontend/react-native-expert/references/list-optimization.md +204 -204
- package/skills/frontend/react-native-expert/references/platform-handling.md +188 -188
- package/skills/frontend/react-native-expert/references/project-structure.md +171 -171
- package/skills/frontend/react-native-expert/references/storage-hooks.md +173 -173
- package/skills/frontend/senior-frontend/SKILL.md +477 -477
- package/skills/frontend/senior-frontend/references/frontend_best_practices.md +806 -806
- package/skills/frontend/senior-frontend/references/nextjs_optimization_guide.md +724 -724
- package/skills/frontend/senior-frontend/references/react_patterns.md +746 -746
- package/skills/frontend/senior-frontend/scripts/bundle_analyzer.py +407 -407
- package/skills/frontend/senior-frontend/scripts/component_generator.py +329 -329
- package/skills/frontend/senior-frontend/scripts/frontend_scaffolder.py +1005 -1005
- package/skills/frontend/ui-ux-pro-max/SKILL.md +386 -386
- package/skills/frontend/ui-ux-pro-max/data/charts.csv +26 -26
- package/skills/frontend/ui-ux-pro-max/data/colors.csv +97 -97
- package/skills/frontend/ui-ux-pro-max/data/icons.csv +101 -101
- package/skills/frontend/ui-ux-pro-max/data/landing.csv +31 -31
- package/skills/frontend/ui-ux-pro-max/data/products.csv +96 -96
- package/skills/frontend/ui-ux-pro-max/data/react-performance.csv +45 -45
- package/skills/frontend/ui-ux-pro-max/data/stacks/astro.csv +54 -54
- package/skills/frontend/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
- package/skills/frontend/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
- package/skills/frontend/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
- package/skills/frontend/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
- package/skills/frontend/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
- package/skills/frontend/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
- package/skills/frontend/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
- package/skills/frontend/ui-ux-pro-max/data/stacks/react.csv +54 -54
- package/skills/frontend/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
- package/skills/frontend/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
- package/skills/frontend/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
- package/skills/frontend/ui-ux-pro-max/data/stacks/vue.csv +50 -50
- package/skills/frontend/ui-ux-pro-max/data/styles.csv +68 -68
- package/skills/frontend/ui-ux-pro-max/data/typography.csv +57 -57
- package/skills/frontend/ui-ux-pro-max/data/ui-reasoning.csv +101 -101
- package/skills/frontend/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
- package/skills/frontend/ui-ux-pro-max/data/web-interface.csv +31 -31
- package/skills/frontend/ui-ux-pro-max/scripts/core.py +253 -253
- package/skills/frontend/ui-ux-pro-max/scripts/design_system.py +1067 -1067
- package/skills/frontend/ui-ux-pro-max/scripts/search.py +114 -114
- package/skills/frontend/vue-expert/SKILL.md +98 -98
- package/skills/frontend/vue-expert/references/build-tooling.md +480 -480
- package/skills/frontend/vue-expert/references/components.md +448 -448
- package/skills/frontend/vue-expert/references/composition-api.md +299 -299
- package/skills/frontend/vue-expert/references/mobile-hybrid.md +636 -636
- package/skills/frontend/vue-expert/references/nuxt.md +669 -669
- package/skills/frontend/vue-expert/references/state-management.md +449 -449
- package/skills/frontend/vue-expert/references/typescript.md +584 -584
- package/skills/frontend/vue-expert-js/SKILL.md +167 -167
- package/skills/frontend/vue-expert-js/references/component-architecture.md +219 -219
- package/skills/frontend/vue-expert-js/references/composables-patterns.md +183 -183
- package/skills/frontend/vue-expert-js/references/jsdoc-typing.md +535 -535
- package/skills/frontend/vue-expert-js/references/state-management.md +249 -249
- package/skills/frontend/vue-expert-js/references/testing-patterns.md +237 -237
- package/skills/go-rust-cpp/cpp-pro/SKILL.md +115 -115
- package/skills/go-rust-cpp/cpp-pro/references/build-tooling.md +440 -440
- package/skills/go-rust-cpp/cpp-pro/references/concurrency.md +437 -437
- package/skills/go-rust-cpp/cpp-pro/references/memory-performance.md +397 -397
- package/skills/go-rust-cpp/cpp-pro/references/modern-cpp.md +304 -304
- package/skills/go-rust-cpp/cpp-pro/references/templates.md +357 -357
- package/skills/go-rust-cpp/golang-pro/SKILL.md +122 -122
- package/skills/go-rust-cpp/golang-pro/references/concurrency.md +329 -329
- package/skills/go-rust-cpp/golang-pro/references/generics.md +442 -442
- package/skills/go-rust-cpp/golang-pro/references/interfaces.md +432 -432
- package/skills/go-rust-cpp/golang-pro/references/project-structure.md +477 -477
- package/skills/go-rust-cpp/golang-pro/references/testing.md +451 -451
- package/skills/go-rust-cpp/rust-engineer/SKILL.md +167 -167
- package/skills/go-rust-cpp/rust-engineer/references/async.md +458 -458
- package/skills/go-rust-cpp/rust-engineer/references/error-handling.md +334 -334
- package/skills/go-rust-cpp/rust-engineer/references/ownership.md +278 -278
- package/skills/go-rust-cpp/rust-engineer/references/testing.md +470 -470
- package/skills/go-rust-cpp/rust-engineer/references/traits.md +413 -413
- package/skills/infra/cli-developer/SKILL.md +113 -113
- package/skills/infra/cli-developer/references/design-patterns.md +221 -221
- package/skills/infra/cli-developer/references/go-cli.md +540 -540
- package/skills/infra/cli-developer/references/node-cli.md +383 -383
- package/skills/infra/cli-developer/references/python-cli.md +422 -422
- package/skills/infra/cli-developer/references/ux-patterns.md +448 -448
- package/skills/infra/cloud-architect/SKILL.md +216 -216
- package/skills/infra/cloud-architect/references/aws.md +394 -394
- package/skills/infra/cloud-architect/references/azure.md +562 -562
- package/skills/infra/cloud-architect/references/cost.md +582 -582
- package/skills/infra/cloud-architect/references/gcp.md +633 -633
- package/skills/infra/cloud-architect/references/multi-cloud.md +483 -483
- package/skills/infra/devops-engineer/SKILL.md +144 -144
- package/skills/infra/devops-engineer/references/deployment-strategies.md +241 -241
- package/skills/infra/devops-engineer/references/docker-patterns.md +113 -113
- package/skills/infra/devops-engineer/references/github-actions.md +139 -139
- package/skills/infra/devops-engineer/references/incident-response.md +331 -331
- package/skills/infra/devops-engineer/references/kubernetes.md +154 -154
- package/skills/infra/devops-engineer/references/platform-engineering.md +417 -417
- package/skills/infra/devops-engineer/references/release-automation.md +527 -527
- package/skills/infra/devops-engineer/references/terraform-iac.md +141 -141
- package/skills/infra/kubernetes-specialist/SKILL.md +241 -241
- package/skills/infra/kubernetes-specialist/references/configuration.md +452 -452
- package/skills/infra/kubernetes-specialist/references/cost-optimization.md +458 -458
- package/skills/infra/kubernetes-specialist/references/custom-operators.md +563 -563
- package/skills/infra/kubernetes-specialist/references/gitops.md +530 -530
- package/skills/infra/kubernetes-specialist/references/helm-charts.md +912 -912
- package/skills/infra/kubernetes-specialist/references/multi-cluster.md +507 -507
- package/skills/infra/kubernetes-specialist/references/networking.md +447 -447
- package/skills/infra/kubernetes-specialist/references/service-mesh.md +459 -459
- package/skills/infra/kubernetes-specialist/references/storage.md +535 -535
- package/skills/infra/kubernetes-specialist/references/troubleshooting.md +414 -414
- package/skills/infra/kubernetes-specialist/references/workloads.md +377 -377
- package/skills/infra/mcp-developer/SKILL.md +143 -143
- package/skills/infra/mcp-developer/references/protocol.md +244 -244
- package/skills/infra/mcp-developer/references/python-sdk.md +367 -367
- package/skills/infra/mcp-developer/references/resources.md +554 -554
- package/skills/infra/mcp-developer/references/tools.md +480 -480
- package/skills/infra/mcp-developer/references/typescript-sdk.md +350 -350
- package/skills/infra/monitoring-expert/SKILL.md +176 -176
- package/skills/infra/monitoring-expert/references/alerting-rules.md +141 -141
- package/skills/infra/monitoring-expert/references/application-profiling.md +331 -331
- package/skills/infra/monitoring-expert/references/capacity-planning.md +344 -344
- package/skills/infra/monitoring-expert/references/dashboards.md +126 -126
- package/skills/infra/monitoring-expert/references/opentelemetry.md +123 -123
- package/skills/infra/monitoring-expert/references/performance-testing.md +269 -269
- package/skills/infra/monitoring-expert/references/prometheus-metrics.md +136 -136
- package/skills/infra/monitoring-expert/references/structured-logging.md +142 -142
- package/skills/infra/sre-engineer/SKILL.md +181 -181
- package/skills/infra/sre-engineer/references/automation-toil.md +492 -492
- package/skills/infra/sre-engineer/references/error-budget-policy.md +334 -334
- package/skills/infra/sre-engineer/references/incident-chaos.md +576 -576
- package/skills/infra/sre-engineer/references/monitoring-alerting.md +424 -424
- package/skills/infra/sre-engineer/references/slo-sli-management.md +238 -238
- package/skills/infra/terraform-engineer/SKILL.md +143 -143
- package/skills/infra/terraform-engineer/references/best-practices.md +583 -583
- package/skills/infra/terraform-engineer/references/module-patterns.md +297 -297
- package/skills/infra/terraform-engineer/references/providers.md +452 -452
- package/skills/infra/terraform-engineer/references/state-management.md +371 -371
- package/skills/infra/terraform-engineer/references/testing.md +486 -486
- package/skills/infra/websocket-engineer/SKILL.md +168 -168
- package/skills/infra/websocket-engineer/references/alternatives.md +391 -391
- package/skills/infra/websocket-engineer/references/patterns.md +400 -400
- package/skills/infra/websocket-engineer/references/protocol.md +195 -195
- package/skills/infra/websocket-engineer/references/scaling.md +333 -333
- package/skills/infra/websocket-engineer/references/security.md +474 -474
- package/skills/java/java-architect/SKILL.md +132 -132
- package/skills/java/java-architect/references/jpa-optimization.md +393 -393
- package/skills/java/java-architect/references/reactive-webflux.md +356 -356
- package/skills/java/java-architect/references/spring-boot-setup.md +269 -269
- package/skills/java/java-architect/references/spring-security.md +445 -445
- package/skills/java/java-architect/references/testing-patterns.md +500 -500
- package/skills/java/kotlin-specialist/SKILL.md +147 -147
- package/skills/java/kotlin-specialist/references/android-compose.md +419 -419
- package/skills/java/kotlin-specialist/references/coroutines-flow.md +276 -276
- package/skills/java/kotlin-specialist/references/dsl-idioms.md +421 -421
- package/skills/java/kotlin-specialist/references/ktor-server.md +426 -426
- package/skills/java/kotlin-specialist/references/multiplatform-kmp.md +380 -380
- package/skills/java/spring-boot-engineer/SKILL.md +195 -195
- package/skills/java/spring-boot-engineer/references/cloud.md +498 -498
- package/skills/java/spring-boot-engineer/references/data.md +381 -381
- package/skills/java/spring-boot-engineer/references/security.md +459 -459
- package/skills/java/spring-boot-engineer/references/testing.md +545 -545
- package/skills/java/spring-boot-engineer/references/web.md +295 -295
- package/skills/javascript/javascript-pro/SKILL.md +132 -132
- package/skills/javascript/javascript-pro/references/async-patterns.md +334 -334
- package/skills/javascript/javascript-pro/references/browser-apis.md +398 -398
- package/skills/javascript/javascript-pro/references/modern-syntax.md +272 -272
- package/skills/javascript/javascript-pro/references/modules.md +357 -357
- package/skills/javascript/javascript-pro/references/node-essentials.md +471 -471
- package/skills/javascript/nestjs-expert/SKILL.md +206 -206
- package/skills/javascript/nestjs-expert/references/authentication.md +166 -166
- package/skills/javascript/nestjs-expert/references/controllers-routing.md +111 -111
- package/skills/javascript/nestjs-expert/references/dtos-validation.md +153 -153
- package/skills/javascript/nestjs-expert/references/migration-from-express.md +1237 -1237
- package/skills/javascript/nestjs-expert/references/services-di.md +140 -140
- package/skills/javascript/nestjs-expert/references/testing-patterns.md +186 -186
- package/skills/javascript/typescript-pro/SKILL.md +145 -145
- package/skills/javascript/typescript-pro/references/advanced-types.md +259 -259
- package/skills/javascript/typescript-pro/references/configuration.md +445 -445
- package/skills/javascript/typescript-pro/references/patterns.md +484 -484
- package/skills/javascript/typescript-pro/references/type-guards.md +352 -352
- package/skills/javascript/typescript-pro/references/utility-types.md +329 -329
- package/skills/php/laravel-specialist/SKILL.md +262 -262
- package/skills/php/laravel-specialist/references/eloquent.md +351 -351
- package/skills/php/laravel-specialist/references/livewire.md +512 -512
- package/skills/php/laravel-specialist/references/queues.md +423 -423
- package/skills/php/laravel-specialist/references/routing.md +362 -362
- package/skills/php/laravel-specialist/references/testing.md +522 -522
- package/skills/php/php-pro/SKILL.md +206 -206
- package/skills/php/php-pro/references/async-patterns.md +412 -412
- package/skills/php/php-pro/references/laravel-patterns.md +377 -377
- package/skills/php/php-pro/references/modern-php-features.md +323 -323
- package/skills/php/php-pro/references/symfony-patterns.md +466 -466
- package/skills/php/php-pro/references/testing-quality.md +466 -466
- package/skills/product/competitive-analysis/SKILL.md +257 -257
- package/skills/product/meeting-notes/SKILL.md +266 -266
- package/skills/product/prd-template/SKILL.md +150 -150
- package/skills/product/stakeholder-update/SKILL.md +225 -225
- package/skills/product/user-research-synthesis/SKILL.md +235 -235
- package/skills/python/django-expert/SKILL.md +162 -162
- package/skills/python/django-expert/references/authentication.md +145 -145
- package/skills/python/django-expert/references/drf-serializers.md +148 -148
- package/skills/python/django-expert/references/models-orm.md +151 -151
- package/skills/python/django-expert/references/testing-django.md +204 -204
- package/skills/python/django-expert/references/viewsets-views.md +153 -153
- package/skills/python/fastapi-expert/SKILL.md +185 -185
- package/skills/python/fastapi-expert/references/async-sqlalchemy.md +146 -146
- package/skills/python/fastapi-expert/references/authentication.md +159 -159
- package/skills/python/fastapi-expert/references/endpoints-routing.md +142 -142
- package/skills/python/fastapi-expert/references/migration-from-django.md +996 -996
- package/skills/python/fastapi-expert/references/pydantic-v2.md +135 -135
- package/skills/python/fastapi-expert/references/testing-async.md +159 -159
- package/skills/python/pandas-pro/SKILL.md +178 -178
- package/skills/python/pandas-pro/references/aggregation-groupby.md +545 -545
- package/skills/python/pandas-pro/references/data-cleaning.md +500 -500
- package/skills/python/pandas-pro/references/dataframe-operations.md +420 -420
- package/skills/python/pandas-pro/references/merging-joining.md +596 -596
- package/skills/python/pandas-pro/references/performance-optimization.md +597 -597
- package/skills/python/python-pro/SKILL.md +177 -177
- package/skills/python/python-pro/references/async-patterns.md +356 -356
- package/skills/python/python-pro/references/packaging.md +460 -460
- package/skills/python/python-pro/references/standard-library.md +378 -378
- package/skills/python/python-pro/references/testing.md +404 -404
- package/skills/python/python-pro/references/type-system.md +290 -290
- package/skills/quality/chaos-engineer/SKILL.md +182 -182
- package/skills/quality/chaos-engineer/references/chaos-tools.md +511 -511
- package/skills/quality/chaos-engineer/references/experiment-design.md +229 -229
- package/skills/quality/chaos-engineer/references/game-days.md +434 -434
- package/skills/quality/chaos-engineer/references/infrastructure-chaos.md +348 -348
- package/skills/quality/chaos-engineer/references/kubernetes-chaos.md +432 -432
- package/skills/quality/code-reviewer/SKILL.md +119 -119
- package/skills/quality/code-reviewer/references/common-issues.md +142 -142
- package/skills/quality/code-reviewer/references/feedback-examples.md +144 -144
- package/skills/quality/code-reviewer/references/receiving-feedback.md +238 -238
- package/skills/quality/code-reviewer/references/report-template.md +109 -109
- package/skills/quality/code-reviewer/references/review-checklist.md +88 -88
- package/skills/quality/code-reviewer/references/spec-compliance-review.md +258 -258
- package/skills/quality/playwright-expert/SKILL.md +169 -169
- package/skills/quality/playwright-expert/references/api-mocking.md +140 -140
- package/skills/quality/playwright-expert/references/configuration.md +155 -155
- package/skills/quality/playwright-expert/references/debugging-flaky.md +150 -150
- package/skills/quality/playwright-expert/references/page-object-model.md +152 -152
- package/skills/quality/playwright-expert/references/selectors-locators.md +119 -119
- package/skills/quality/secure-code-guardian/SKILL.md +191 -191
- package/skills/quality/secure-code-guardian/references/authentication.md +136 -136
- package/skills/quality/secure-code-guardian/references/input-validation.md +146 -146
- package/skills/quality/secure-code-guardian/references/owasp-prevention.md +135 -135
- package/skills/quality/secure-code-guardian/references/security-headers.md +133 -133
- package/skills/quality/secure-code-guardian/references/xss-csrf.md +157 -157
- package/skills/quality/security-reviewer/SKILL.md +103 -103
- package/skills/quality/security-reviewer/references/infrastructure-security.md +268 -268
- package/skills/quality/security-reviewer/references/penetration-testing.md +268 -268
- package/skills/quality/security-reviewer/references/report-template.md +170 -170
- package/skills/quality/security-reviewer/references/sast-tools.md +117 -117
- package/skills/quality/security-reviewer/references/secret-scanning.md +125 -125
- package/skills/quality/security-reviewer/references/vulnerability-patterns.md +152 -152
- package/skills/quality/senior-qa/README.md +196 -196
- package/skills/quality/senior-qa/SKILL.md +399 -399
- package/skills/quality/senior-qa/references/qa_best_practices.md +964 -964
- package/skills/quality/senior-qa/references/test_automation_patterns.md +1009 -1009
- package/skills/quality/senior-qa/references/testing_strategies.md +649 -649
- package/skills/quality/senior-qa/scripts/coverage_analyzer.py +836 -836
- package/skills/quality/senior-qa/scripts/e2e_test_scaffolder.py +820 -820
- package/skills/quality/senior-qa/scripts/test_suite_generator.py +605 -605
- package/skills/quality/tdd-guide/HOW_TO_USE.md +313 -313
- package/skills/quality/tdd-guide/README.md +680 -680
- package/skills/quality/tdd-guide/SKILL.md +122 -122
- package/skills/quality/tdd-guide/assets/expected_output.json +77 -77
- package/skills/quality/tdd-guide/assets/sample_input_python.json +39 -39
- package/skills/quality/tdd-guide/assets/sample_input_typescript.json +36 -36
- package/skills/quality/tdd-guide/references/ci-integration.md +195 -195
- package/skills/quality/tdd-guide/references/framework-guide.md +206 -206
- package/skills/quality/tdd-guide/references/tdd-best-practices.md +128 -128
- package/skills/quality/tdd-guide/scripts/coverage_analyzer.py +434 -434
- package/skills/quality/tdd-guide/scripts/fixture_generator.py +440 -440
- package/skills/quality/tdd-guide/scripts/format_detector.py +384 -384
- package/skills/quality/tdd-guide/scripts/framework_adapter.py +428 -428
- package/skills/quality/tdd-guide/scripts/metrics_calculator.py +456 -456
- package/skills/quality/tdd-guide/scripts/output_formatter.py +354 -354
- package/skills/quality/tdd-guide/scripts/tdd_workflow.py +474 -474
- package/skills/quality/tdd-guide/scripts/test_generator.py +438 -438
- package/skills/quality/test-master/SKILL.md +94 -94
- package/skills/quality/test-master/references/automation-frameworks.md +294 -294
- package/skills/quality/test-master/references/e2e-testing.md +128 -128
- package/skills/quality/test-master/references/integration-testing.md +120 -120
- package/skills/quality/test-master/references/performance-testing.md +118 -118
- package/skills/quality/test-master/references/qa-methodology.md +247 -247
- package/skills/quality/test-master/references/security-testing.md +127 -127
- package/skills/quality/test-master/references/tdd-iron-laws.md +174 -174
- package/skills/quality/test-master/references/test-reports.md +104 -104
- package/skills/quality/test-master/references/testing-anti-patterns.md +231 -231
- package/skills/quality/test-master/references/unit-testing.md +113 -113
- package/skills/ruby/rails-expert/SKILL.md +154 -154
- package/skills/ruby/rails-expert/references/active-record.md +244 -244
- package/skills/ruby/rails-expert/references/api-development.md +401 -401
- package/skills/ruby/rails-expert/references/background-jobs.md +272 -272
- package/skills/ruby/rails-expert/references/hotwire-turbo.md +228 -228
- package/skills/ruby/rails-expert/references/rspec-testing.md +367 -367
- package/skills/swift/swift-expert/SKILL.md +163 -163
- package/skills/swift/swift-expert/references/async-concurrency.md +360 -360
- package/skills/swift/swift-expert/references/memory-performance.md +377 -377
- package/skills/swift/swift-expert/references/protocol-oriented.md +354 -354
- package/skills/swift/swift-expert/references/swiftui-patterns.md +291 -291
- package/skills/swift/swift-expert/references/testing-patterns.md +399 -399
- package/skills/workflow/brainstorming/SKILL.md +164 -164
- package/skills/workflow/brainstorming/scripts/frame-template.html +214 -214
- package/skills/workflow/brainstorming/scripts/helper.js +88 -88
- package/skills/workflow/brainstorming/scripts/server.cjs +354 -354
- package/skills/workflow/brainstorming/scripts/start-server.sh +148 -148
- package/skills/workflow/brainstorming/scripts/stop-server.sh +56 -56
- package/skills/workflow/brainstorming/spec-document-reviewer-prompt.md +49 -49
- package/skills/workflow/brainstorming/visual-companion.md +287 -287
- package/skills/workflow/documentation/SKILL.md +45 -45
- package/skills/workflow/entropy-management/SKILL.md +115 -115
- package/skills/workflow/executing-plans/SKILL.md +70 -70
- package/skills/workflow/finishing-a-development-branch/SKILL.md +200 -200
- package/skills/workflow/receiving-code-review/SKILL.md +213 -213
- package/skills/workflow/requesting-code-review/SKILL.md +105 -105
- package/skills/workflow/requesting-code-review/code-reviewer.md +146 -146
- package/skills/workflow/requirement-engineering/SKILL.md +111 -111
- package/skills/workflow/systematic-debugging/CREATION-LOG.md +119 -119
- package/skills/workflow/systematic-debugging/SKILL.md +296 -296
- package/skills/workflow/systematic-debugging/condition-based-waiting-example.ts +158 -158
- package/skills/workflow/systematic-debugging/condition-based-waiting.md +115 -115
- package/skills/workflow/systematic-debugging/defense-in-depth.md +122 -122
- package/skills/workflow/systematic-debugging/find-polluter.sh +63 -63
- package/skills/workflow/systematic-debugging/root-cause-tracing.md +169 -169
- package/skills/workflow/systematic-debugging/test-academic.md +14 -14
- package/skills/workflow/systematic-debugging/test-pressure-1.md +58 -58
- package/skills/workflow/systematic-debugging/test-pressure-2.md +68 -68
- package/skills/workflow/systematic-debugging/test-pressure-3.md +69 -69
- package/skills/workflow/using-git-worktrees/SKILL.md +218 -218
- package/skills/workflow/verification-before-completion/SKILL.md +139 -139
- package/skills/workflow/writing-plans/SKILL.md +151 -151
- package/skills/workflow/writing-plans/plan-document-reviewer-prompt.md +49 -49
- package/skills/workflow/writing-skills/SKILL.md +655 -655
- package/skills/workflow/writing-skills/anthropic-best-practices.md +1150 -1150
- package/skills/workflow/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -189
- package/skills/workflow/writing-skills/persuasion-principles.md +187 -187
- package/skills/workflow/writing-skills/render-graphs.js +168 -168
- package/skills/workflow/writing-skills/testing-skills-with-subagents.md +384 -384
|
@@ -1,206 +1,206 @@
|
|
|
1
|
-
# Testing Framework Guide
|
|
2
|
-
|
|
3
|
-
Language and framework selection, configuration, and patterns.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Table of Contents
|
|
8
|
-
|
|
9
|
-
- [Framework Selection](#framework-selection)
|
|
10
|
-
- [TypeScript/JavaScript](#typescriptjavascript)
|
|
11
|
-
- [Python](#python)
|
|
12
|
-
- [Java](#java)
|
|
13
|
-
- [Version Requirements](#version-requirements)
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## Framework Selection
|
|
18
|
-
|
|
19
|
-
| Language | Recommended | Alternatives | Best For |
|
|
20
|
-
|----------|-------------|--------------|----------|
|
|
21
|
-
| TypeScript/JS | Jest | Vitest, Mocha | React, Node.js, Next.js |
|
|
22
|
-
| Python | Pytest | unittest, nose2 | Django, Flask, FastAPI |
|
|
23
|
-
| Java | JUnit 5 | TestNG | Spring, Android |
|
|
24
|
-
| Vite projects | Vitest | Jest | Modern Vite-based apps |
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## TypeScript/JavaScript
|
|
29
|
-
|
|
30
|
-
### Jest Configuration
|
|
31
|
-
|
|
32
|
-
```javascript
|
|
33
|
-
// jest.config.js
|
|
34
|
-
module.exports = {
|
|
35
|
-
preset: 'ts-jest',
|
|
36
|
-
testEnvironment: 'node',
|
|
37
|
-
testMatch: ['**/*.test.ts'],
|
|
38
|
-
collectCoverageFrom: ['src/**/*.ts'],
|
|
39
|
-
coverageThreshold: {
|
|
40
|
-
global: { branches: 80, lines: 80 }
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### Jest Test Pattern
|
|
46
|
-
|
|
47
|
-
```typescript
|
|
48
|
-
describe('Calculator', () => {
|
|
49
|
-
let calc: Calculator;
|
|
50
|
-
|
|
51
|
-
beforeEach(() => {
|
|
52
|
-
calc = new Calculator();
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
it('should add two numbers', () => {
|
|
56
|
-
expect(calc.add(2, 3)).toBe(5);
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
it('should throw on invalid input', () => {
|
|
60
|
-
expect(() => calc.add(null, 3)).toThrow('Invalid input');
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### Vitest Configuration
|
|
66
|
-
|
|
67
|
-
```typescript
|
|
68
|
-
// vitest.config.ts
|
|
69
|
-
import { defineConfig } from 'vitest/config';
|
|
70
|
-
|
|
71
|
-
export default defineConfig({
|
|
72
|
-
test: {
|
|
73
|
-
globals: true,
|
|
74
|
-
environment: 'node',
|
|
75
|
-
coverage: { provider: 'c8' }
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### Coverage Tools
|
|
81
|
-
- Istanbul/nyc: Traditional coverage
|
|
82
|
-
- c8: Native V8 coverage (faster)
|
|
83
|
-
- Vitest built-in: Integrated with test runner
|
|
84
|
-
|
|
85
|
-
---
|
|
86
|
-
|
|
87
|
-
## Python
|
|
88
|
-
|
|
89
|
-
### Pytest Configuration
|
|
90
|
-
|
|
91
|
-
```ini
|
|
92
|
-
# pytest.ini
|
|
93
|
-
[pytest]
|
|
94
|
-
testpaths = tests
|
|
95
|
-
python_files = test_*.py
|
|
96
|
-
python_functions = test_*
|
|
97
|
-
addopts = --cov=src --cov-report=term-missing
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
### Pytest Test Pattern
|
|
101
|
-
|
|
102
|
-
```python
|
|
103
|
-
import pytest
|
|
104
|
-
from calculator import Calculator
|
|
105
|
-
|
|
106
|
-
class TestCalculator:
|
|
107
|
-
@pytest.fixture
|
|
108
|
-
def calc(self):
|
|
109
|
-
return Calculator()
|
|
110
|
-
|
|
111
|
-
def test_add_positive_numbers(self, calc):
|
|
112
|
-
assert calc.add(2, 3) == 5
|
|
113
|
-
|
|
114
|
-
def test_add_raises_on_invalid_input(self, calc):
|
|
115
|
-
with pytest.raises(ValueError, match="Invalid input"):
|
|
116
|
-
calc.add(None, 3)
|
|
117
|
-
|
|
118
|
-
@pytest.mark.parametrize("a,b,expected", [
|
|
119
|
-
(1, 2, 3),
|
|
120
|
-
(-1, 1, 0),
|
|
121
|
-
(0, 0, 0),
|
|
122
|
-
])
|
|
123
|
-
def test_add_various_inputs(self, calc, a, b, expected):
|
|
124
|
-
assert calc.add(a, b) == expected
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### Coverage Tools
|
|
128
|
-
- coverage.py: Standard Python coverage
|
|
129
|
-
- pytest-cov: Pytest plugin wrapper
|
|
130
|
-
- Report formats: HTML, XML, LCOV
|
|
131
|
-
|
|
132
|
-
---
|
|
133
|
-
|
|
134
|
-
## Java
|
|
135
|
-
|
|
136
|
-
### JUnit 5 Configuration (Maven)
|
|
137
|
-
|
|
138
|
-
```xml
|
|
139
|
-
<!-- pom.xml -->
|
|
140
|
-
<dependency>
|
|
141
|
-
<groupId>org.junit.jupiter</groupId>
|
|
142
|
-
<artifactId>junit-jupiter</artifactId>
|
|
143
|
-
<version>5.9.3</version>
|
|
144
|
-
<scope>test</scope>
|
|
145
|
-
</dependency>
|
|
146
|
-
<plugin>
|
|
147
|
-
<groupId>org.jacoco</groupId>
|
|
148
|
-
<artifactId>jacoco-maven-plugin</artifactId>
|
|
149
|
-
<version>0.8.10</version>
|
|
150
|
-
</plugin>
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
### JUnit 5 Test Pattern
|
|
154
|
-
|
|
155
|
-
```java
|
|
156
|
-
import org.junit.jupiter.api.*;
|
|
157
|
-
import static org.junit.jupiter.api.Assertions.*;
|
|
158
|
-
|
|
159
|
-
class CalculatorTest {
|
|
160
|
-
private Calculator calc;
|
|
161
|
-
|
|
162
|
-
@BeforeEach
|
|
163
|
-
void setUp() {
|
|
164
|
-
calc = new Calculator();
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
@Test
|
|
168
|
-
@DisplayName("should add two positive numbers")
|
|
169
|
-
void testAddPositive() {
|
|
170
|
-
assertEquals(5, calc.add(2, 3));
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
@Test
|
|
174
|
-
@DisplayName("should throw on null input")
|
|
175
|
-
void testAddThrowsOnNull() {
|
|
176
|
-
assertThrows(IllegalArgumentException.class,
|
|
177
|
-
() -> calc.add(null, 3));
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
@ParameterizedTest
|
|
181
|
-
@CsvSource({"1,2,3", "-1,1,0", "0,0,0"})
|
|
182
|
-
void testAddVarious(int a, int b, int expected) {
|
|
183
|
-
assertEquals(expected, calc.add(a, b));
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
### Coverage Tools
|
|
189
|
-
- JaCoCo: Standard Java coverage
|
|
190
|
-
- Cobertura: Alternative XML format
|
|
191
|
-
- Report formats: HTML, XML, CSV
|
|
192
|
-
|
|
193
|
-
---
|
|
194
|
-
|
|
195
|
-
## Version Requirements
|
|
196
|
-
|
|
197
|
-
| Tool | Minimum Version | Notes |
|
|
198
|
-
|------|-----------------|-------|
|
|
199
|
-
| Node.js | 16+ | Required for Jest 29+ |
|
|
200
|
-
| Jest | 29+ | Modern async support |
|
|
201
|
-
| Vitest | 0.34+ | Stable API |
|
|
202
|
-
| Python | 3.8+ | f-strings, async support |
|
|
203
|
-
| Pytest | 7+ | Modern fixtures |
|
|
204
|
-
| Java | 11+ | JUnit 5 support |
|
|
205
|
-
| JUnit | 5.9+ | ParameterizedTest improvements |
|
|
206
|
-
| TypeScript | 4.5+ | Strict mode features |
|
|
1
|
+
# Testing Framework Guide
|
|
2
|
+
|
|
3
|
+
Language and framework selection, configuration, and patterns.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
|
|
9
|
+
- [Framework Selection](#framework-selection)
|
|
10
|
+
- [TypeScript/JavaScript](#typescriptjavascript)
|
|
11
|
+
- [Python](#python)
|
|
12
|
+
- [Java](#java)
|
|
13
|
+
- [Version Requirements](#version-requirements)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Framework Selection
|
|
18
|
+
|
|
19
|
+
| Language | Recommended | Alternatives | Best For |
|
|
20
|
+
|----------|-------------|--------------|----------|
|
|
21
|
+
| TypeScript/JS | Jest | Vitest, Mocha | React, Node.js, Next.js |
|
|
22
|
+
| Python | Pytest | unittest, nose2 | Django, Flask, FastAPI |
|
|
23
|
+
| Java | JUnit 5 | TestNG | Spring, Android |
|
|
24
|
+
| Vite projects | Vitest | Jest | Modern Vite-based apps |
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## TypeScript/JavaScript
|
|
29
|
+
|
|
30
|
+
### Jest Configuration
|
|
31
|
+
|
|
32
|
+
```javascript
|
|
33
|
+
// jest.config.js
|
|
34
|
+
module.exports = {
|
|
35
|
+
preset: 'ts-jest',
|
|
36
|
+
testEnvironment: 'node',
|
|
37
|
+
testMatch: ['**/*.test.ts'],
|
|
38
|
+
collectCoverageFrom: ['src/**/*.ts'],
|
|
39
|
+
coverageThreshold: {
|
|
40
|
+
global: { branches: 80, lines: 80 }
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Jest Test Pattern
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
describe('Calculator', () => {
|
|
49
|
+
let calc: Calculator;
|
|
50
|
+
|
|
51
|
+
beforeEach(() => {
|
|
52
|
+
calc = new Calculator();
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it('should add two numbers', () => {
|
|
56
|
+
expect(calc.add(2, 3)).toBe(5);
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it('should throw on invalid input', () => {
|
|
60
|
+
expect(() => calc.add(null, 3)).toThrow('Invalid input');
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Vitest Configuration
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
// vitest.config.ts
|
|
69
|
+
import { defineConfig } from 'vitest/config';
|
|
70
|
+
|
|
71
|
+
export default defineConfig({
|
|
72
|
+
test: {
|
|
73
|
+
globals: true,
|
|
74
|
+
environment: 'node',
|
|
75
|
+
coverage: { provider: 'c8' }
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Coverage Tools
|
|
81
|
+
- Istanbul/nyc: Traditional coverage
|
|
82
|
+
- c8: Native V8 coverage (faster)
|
|
83
|
+
- Vitest built-in: Integrated with test runner
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Python
|
|
88
|
+
|
|
89
|
+
### Pytest Configuration
|
|
90
|
+
|
|
91
|
+
```ini
|
|
92
|
+
# pytest.ini
|
|
93
|
+
[pytest]
|
|
94
|
+
testpaths = tests
|
|
95
|
+
python_files = test_*.py
|
|
96
|
+
python_functions = test_*
|
|
97
|
+
addopts = --cov=src --cov-report=term-missing
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Pytest Test Pattern
|
|
101
|
+
|
|
102
|
+
```python
|
|
103
|
+
import pytest
|
|
104
|
+
from calculator import Calculator
|
|
105
|
+
|
|
106
|
+
class TestCalculator:
|
|
107
|
+
@pytest.fixture
|
|
108
|
+
def calc(self):
|
|
109
|
+
return Calculator()
|
|
110
|
+
|
|
111
|
+
def test_add_positive_numbers(self, calc):
|
|
112
|
+
assert calc.add(2, 3) == 5
|
|
113
|
+
|
|
114
|
+
def test_add_raises_on_invalid_input(self, calc):
|
|
115
|
+
with pytest.raises(ValueError, match="Invalid input"):
|
|
116
|
+
calc.add(None, 3)
|
|
117
|
+
|
|
118
|
+
@pytest.mark.parametrize("a,b,expected", [
|
|
119
|
+
(1, 2, 3),
|
|
120
|
+
(-1, 1, 0),
|
|
121
|
+
(0, 0, 0),
|
|
122
|
+
])
|
|
123
|
+
def test_add_various_inputs(self, calc, a, b, expected):
|
|
124
|
+
assert calc.add(a, b) == expected
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Coverage Tools
|
|
128
|
+
- coverage.py: Standard Python coverage
|
|
129
|
+
- pytest-cov: Pytest plugin wrapper
|
|
130
|
+
- Report formats: HTML, XML, LCOV
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Java
|
|
135
|
+
|
|
136
|
+
### JUnit 5 Configuration (Maven)
|
|
137
|
+
|
|
138
|
+
```xml
|
|
139
|
+
<!-- pom.xml -->
|
|
140
|
+
<dependency>
|
|
141
|
+
<groupId>org.junit.jupiter</groupId>
|
|
142
|
+
<artifactId>junit-jupiter</artifactId>
|
|
143
|
+
<version>5.9.3</version>
|
|
144
|
+
<scope>test</scope>
|
|
145
|
+
</dependency>
|
|
146
|
+
<plugin>
|
|
147
|
+
<groupId>org.jacoco</groupId>
|
|
148
|
+
<artifactId>jacoco-maven-plugin</artifactId>
|
|
149
|
+
<version>0.8.10</version>
|
|
150
|
+
</plugin>
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### JUnit 5 Test Pattern
|
|
154
|
+
|
|
155
|
+
```java
|
|
156
|
+
import org.junit.jupiter.api.*;
|
|
157
|
+
import static org.junit.jupiter.api.Assertions.*;
|
|
158
|
+
|
|
159
|
+
class CalculatorTest {
|
|
160
|
+
private Calculator calc;
|
|
161
|
+
|
|
162
|
+
@BeforeEach
|
|
163
|
+
void setUp() {
|
|
164
|
+
calc = new Calculator();
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
@Test
|
|
168
|
+
@DisplayName("should add two positive numbers")
|
|
169
|
+
void testAddPositive() {
|
|
170
|
+
assertEquals(5, calc.add(2, 3));
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
@Test
|
|
174
|
+
@DisplayName("should throw on null input")
|
|
175
|
+
void testAddThrowsOnNull() {
|
|
176
|
+
assertThrows(IllegalArgumentException.class,
|
|
177
|
+
() -> calc.add(null, 3));
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
@ParameterizedTest
|
|
181
|
+
@CsvSource({"1,2,3", "-1,1,0", "0,0,0"})
|
|
182
|
+
void testAddVarious(int a, int b, int expected) {
|
|
183
|
+
assertEquals(expected, calc.add(a, b));
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Coverage Tools
|
|
189
|
+
- JaCoCo: Standard Java coverage
|
|
190
|
+
- Cobertura: Alternative XML format
|
|
191
|
+
- Report formats: HTML, XML, CSV
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Version Requirements
|
|
196
|
+
|
|
197
|
+
| Tool | Minimum Version | Notes |
|
|
198
|
+
|------|-----------------|-------|
|
|
199
|
+
| Node.js | 16+ | Required for Jest 29+ |
|
|
200
|
+
| Jest | 29+ | Modern async support |
|
|
201
|
+
| Vitest | 0.34+ | Stable API |
|
|
202
|
+
| Python | 3.8+ | f-strings, async support |
|
|
203
|
+
| Pytest | 7+ | Modern fixtures |
|
|
204
|
+
| Java | 11+ | JUnit 5 support |
|
|
205
|
+
| JUnit | 5.9+ | ParameterizedTest improvements |
|
|
206
|
+
| TypeScript | 4.5+ | Strict mode features |
|
|
@@ -1,128 +1,128 @@
|
|
|
1
|
-
# TDD Best Practices
|
|
2
|
-
|
|
3
|
-
Guidelines for effective test-driven development workflows.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Table of Contents
|
|
8
|
-
|
|
9
|
-
- [Red-Green-Refactor Cycle](#red-green-refactor-cycle)
|
|
10
|
-
- [Test Generation Guidelines](#test-generation-guidelines)
|
|
11
|
-
- [Test Quality Principles](#test-quality-principles)
|
|
12
|
-
- [Coverage Goals](#coverage-goals)
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Red-Green-Refactor Cycle
|
|
17
|
-
|
|
18
|
-
### RED Phase
|
|
19
|
-
1. Write a failing test before any implementation
|
|
20
|
-
2. Test should fail for the right reason (not compilation errors)
|
|
21
|
-
3. Name tests as specifications describing expected behavior
|
|
22
|
-
4. Keep tests small and focused on single behaviors
|
|
23
|
-
|
|
24
|
-
### GREEN Phase
|
|
25
|
-
1. Write minimal code to make the test pass
|
|
26
|
-
2. Avoid over-engineering at this stage
|
|
27
|
-
3. Duplicate code is acceptable temporarily
|
|
28
|
-
4. Focus on correctness, not elegance
|
|
29
|
-
|
|
30
|
-
### REFACTOR Phase
|
|
31
|
-
1. Improve code structure while keeping tests green
|
|
32
|
-
2. Remove duplication introduced in GREEN phase
|
|
33
|
-
3. Apply design patterns where appropriate
|
|
34
|
-
4. Run tests after each small refactoring
|
|
35
|
-
|
|
36
|
-
### Cycle Discipline
|
|
37
|
-
- Complete one cycle before starting the next
|
|
38
|
-
- Commit after each successful GREEN phase
|
|
39
|
-
- Small iterations lead to better designs
|
|
40
|
-
- Resist temptation to write implementation first
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## Test Generation Guidelines
|
|
45
|
-
|
|
46
|
-
### Behavior Focus
|
|
47
|
-
- Test what code does, not how it does it
|
|
48
|
-
- Avoid coupling tests to implementation details
|
|
49
|
-
- Tests should survive internal refactoring
|
|
50
|
-
- Focus on observable outcomes
|
|
51
|
-
|
|
52
|
-
### Naming Conventions
|
|
53
|
-
- Use descriptive names that read as specifications
|
|
54
|
-
- Format: `should_<expected>_when_<condition>`
|
|
55
|
-
- Examples:
|
|
56
|
-
- `should_return_zero_when_cart_is_empty`
|
|
57
|
-
- `should_reject_negative_amounts`
|
|
58
|
-
- `should_apply_discount_for_members`
|
|
59
|
-
|
|
60
|
-
### Test Structure
|
|
61
|
-
- Follow Arrange-Act-Assert (AAA) pattern
|
|
62
|
-
- Keep setup minimal and relevant
|
|
63
|
-
- One logical assertion per test
|
|
64
|
-
- Extract shared setup to fixtures
|
|
65
|
-
|
|
66
|
-
### Coverage Scope
|
|
67
|
-
- Happy path: Normal expected usage
|
|
68
|
-
- Error cases: Invalid inputs, failures
|
|
69
|
-
- Edge cases: Boundaries, empty states
|
|
70
|
-
- Exceptional cases: Timeouts, nulls
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## Test Quality Principles
|
|
75
|
-
|
|
76
|
-
### Independence
|
|
77
|
-
- Each test runs in isolation
|
|
78
|
-
- No shared mutable state between tests
|
|
79
|
-
- Tests can run in any order
|
|
80
|
-
- Parallel execution should work
|
|
81
|
-
|
|
82
|
-
### Speed
|
|
83
|
-
- Unit tests under 100ms each
|
|
84
|
-
- Avoid I/O in unit tests
|
|
85
|
-
- Mock external dependencies
|
|
86
|
-
- Use in-memory databases for integration
|
|
87
|
-
|
|
88
|
-
### Determinism
|
|
89
|
-
- Same inputs produce same results
|
|
90
|
-
- No dependency on system time or random values
|
|
91
|
-
- Controlled test data
|
|
92
|
-
- No flaky tests allowed
|
|
93
|
-
|
|
94
|
-
### Clarity
|
|
95
|
-
- Failure messages explain what went wrong
|
|
96
|
-
- Test code is as clean as production code
|
|
97
|
-
- Avoid clever tricks that obscure intent
|
|
98
|
-
- Comments explain non-obvious setup
|
|
99
|
-
|
|
100
|
-
---
|
|
101
|
-
|
|
102
|
-
## Coverage Goals
|
|
103
|
-
|
|
104
|
-
### Thresholds by Type
|
|
105
|
-
| Type | Target | Rationale |
|
|
106
|
-
|------|--------|-----------|
|
|
107
|
-
| Line coverage | 80%+ | Baseline for most projects |
|
|
108
|
-
| Branch coverage | 70%+ | More meaningful than line |
|
|
109
|
-
| Function coverage | 90%+ | Public APIs should be tested |
|
|
110
|
-
|
|
111
|
-
### Critical Path Rules
|
|
112
|
-
- Authentication: 100% coverage required
|
|
113
|
-
- Payment processing: 100% coverage required
|
|
114
|
-
- Data validation: 100% coverage required
|
|
115
|
-
- Error handlers: Must test all paths
|
|
116
|
-
|
|
117
|
-
### Avoiding Coverage Theater
|
|
118
|
-
- High coverage != good tests
|
|
119
|
-
- Focus on meaningful assertions
|
|
120
|
-
- Test behaviors, not lines
|
|
121
|
-
- Code review test quality, not just metrics
|
|
122
|
-
|
|
123
|
-
### Coverage Analysis Workflow
|
|
124
|
-
1. Generate coverage report after test run
|
|
125
|
-
2. Identify uncovered critical paths (P0)
|
|
126
|
-
3. Review medium-priority gaps (P1)
|
|
127
|
-
4. Document accepted low-priority gaps (P2)
|
|
128
|
-
5. Set threshold gates in CI pipeline
|
|
1
|
+
# TDD Best Practices
|
|
2
|
+
|
|
3
|
+
Guidelines for effective test-driven development workflows.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
|
|
9
|
+
- [Red-Green-Refactor Cycle](#red-green-refactor-cycle)
|
|
10
|
+
- [Test Generation Guidelines](#test-generation-guidelines)
|
|
11
|
+
- [Test Quality Principles](#test-quality-principles)
|
|
12
|
+
- [Coverage Goals](#coverage-goals)
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Red-Green-Refactor Cycle
|
|
17
|
+
|
|
18
|
+
### RED Phase
|
|
19
|
+
1. Write a failing test before any implementation
|
|
20
|
+
2. Test should fail for the right reason (not compilation errors)
|
|
21
|
+
3. Name tests as specifications describing expected behavior
|
|
22
|
+
4. Keep tests small and focused on single behaviors
|
|
23
|
+
|
|
24
|
+
### GREEN Phase
|
|
25
|
+
1. Write minimal code to make the test pass
|
|
26
|
+
2. Avoid over-engineering at this stage
|
|
27
|
+
3. Duplicate code is acceptable temporarily
|
|
28
|
+
4. Focus on correctness, not elegance
|
|
29
|
+
|
|
30
|
+
### REFACTOR Phase
|
|
31
|
+
1. Improve code structure while keeping tests green
|
|
32
|
+
2. Remove duplication introduced in GREEN phase
|
|
33
|
+
3. Apply design patterns where appropriate
|
|
34
|
+
4. Run tests after each small refactoring
|
|
35
|
+
|
|
36
|
+
### Cycle Discipline
|
|
37
|
+
- Complete one cycle before starting the next
|
|
38
|
+
- Commit after each successful GREEN phase
|
|
39
|
+
- Small iterations lead to better designs
|
|
40
|
+
- Resist temptation to write implementation first
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Test Generation Guidelines
|
|
45
|
+
|
|
46
|
+
### Behavior Focus
|
|
47
|
+
- Test what code does, not how it does it
|
|
48
|
+
- Avoid coupling tests to implementation details
|
|
49
|
+
- Tests should survive internal refactoring
|
|
50
|
+
- Focus on observable outcomes
|
|
51
|
+
|
|
52
|
+
### Naming Conventions
|
|
53
|
+
- Use descriptive names that read as specifications
|
|
54
|
+
- Format: `should_<expected>_when_<condition>`
|
|
55
|
+
- Examples:
|
|
56
|
+
- `should_return_zero_when_cart_is_empty`
|
|
57
|
+
- `should_reject_negative_amounts`
|
|
58
|
+
- `should_apply_discount_for_members`
|
|
59
|
+
|
|
60
|
+
### Test Structure
|
|
61
|
+
- Follow Arrange-Act-Assert (AAA) pattern
|
|
62
|
+
- Keep setup minimal and relevant
|
|
63
|
+
- One logical assertion per test
|
|
64
|
+
- Extract shared setup to fixtures
|
|
65
|
+
|
|
66
|
+
### Coverage Scope
|
|
67
|
+
- Happy path: Normal expected usage
|
|
68
|
+
- Error cases: Invalid inputs, failures
|
|
69
|
+
- Edge cases: Boundaries, empty states
|
|
70
|
+
- Exceptional cases: Timeouts, nulls
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Test Quality Principles
|
|
75
|
+
|
|
76
|
+
### Independence
|
|
77
|
+
- Each test runs in isolation
|
|
78
|
+
- No shared mutable state between tests
|
|
79
|
+
- Tests can run in any order
|
|
80
|
+
- Parallel execution should work
|
|
81
|
+
|
|
82
|
+
### Speed
|
|
83
|
+
- Unit tests under 100ms each
|
|
84
|
+
- Avoid I/O in unit tests
|
|
85
|
+
- Mock external dependencies
|
|
86
|
+
- Use in-memory databases for integration
|
|
87
|
+
|
|
88
|
+
### Determinism
|
|
89
|
+
- Same inputs produce same results
|
|
90
|
+
- No dependency on system time or random values
|
|
91
|
+
- Controlled test data
|
|
92
|
+
- No flaky tests allowed
|
|
93
|
+
|
|
94
|
+
### Clarity
|
|
95
|
+
- Failure messages explain what went wrong
|
|
96
|
+
- Test code is as clean as production code
|
|
97
|
+
- Avoid clever tricks that obscure intent
|
|
98
|
+
- Comments explain non-obvious setup
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Coverage Goals
|
|
103
|
+
|
|
104
|
+
### Thresholds by Type
|
|
105
|
+
| Type | Target | Rationale |
|
|
106
|
+
|------|--------|-----------|
|
|
107
|
+
| Line coverage | 80%+ | Baseline for most projects |
|
|
108
|
+
| Branch coverage | 70%+ | More meaningful than line |
|
|
109
|
+
| Function coverage | 90%+ | Public APIs should be tested |
|
|
110
|
+
|
|
111
|
+
### Critical Path Rules
|
|
112
|
+
- Authentication: 100% coverage required
|
|
113
|
+
- Payment processing: 100% coverage required
|
|
114
|
+
- Data validation: 100% coverage required
|
|
115
|
+
- Error handlers: Must test all paths
|
|
116
|
+
|
|
117
|
+
### Avoiding Coverage Theater
|
|
118
|
+
- High coverage != good tests
|
|
119
|
+
- Focus on meaningful assertions
|
|
120
|
+
- Test behaviors, not lines
|
|
121
|
+
- Code review test quality, not just metrics
|
|
122
|
+
|
|
123
|
+
### Coverage Analysis Workflow
|
|
124
|
+
1. Generate coverage report after test run
|
|
125
|
+
2. Identify uncovered critical paths (P0)
|
|
126
|
+
3. Review medium-priority gaps (P1)
|
|
127
|
+
4. Document accepted low-priority gaps (P2)
|
|
128
|
+
5. Set threshold gates in CI pipeline
|