@machina.ai/openapi-contract-tester 2.1.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/.env.example +91 -0
- package/README.md +472 -0
- package/dist/ai-engine/assertion-generator.d.ts +48 -0
- package/dist/ai-engine/assertion-generator.d.ts.map +1 -0
- package/dist/ai-engine/assertion-generator.js +166 -0
- package/dist/ai-engine/assertion-generator.js.map +1 -0
- package/dist/ai-engine/context-data-generator.d.ts +38 -0
- package/dist/ai-engine/context-data-generator.d.ts.map +1 -0
- package/dist/ai-engine/context-data-generator.js +146 -0
- package/dist/ai-engine/context-data-generator.js.map +1 -0
- package/dist/ai-engine/dataflow-detector.d.ts +53 -0
- package/dist/ai-engine/dataflow-detector.d.ts.map +1 -0
- package/dist/ai-engine/dataflow-detector.js +217 -0
- package/dist/ai-engine/dataflow-detector.js.map +1 -0
- package/dist/ai-engine/dependency-detector.d.ts +52 -0
- package/dist/ai-engine/dependency-detector.d.ts.map +1 -0
- package/dist/ai-engine/dependency-detector.js +241 -0
- package/dist/ai-engine/dependency-detector.js.map +1 -0
- package/dist/ai-engine/edge-case-suggester.d.ts +63 -0
- package/dist/ai-engine/edge-case-suggester.d.ts.map +1 -0
- package/dist/ai-engine/edge-case-suggester.js +177 -0
- package/dist/ai-engine/edge-case-suggester.js.map +1 -0
- package/dist/ai-engine/index.d.ts +13 -0
- package/dist/ai-engine/index.d.ts.map +1 -0
- package/dist/ai-engine/index.js +13 -0
- package/dist/ai-engine/index.js.map +1 -0
- package/dist/analyzers/ai-failure-analyzer.d.ts +41 -0
- package/dist/analyzers/ai-failure-analyzer.d.ts.map +1 -0
- package/dist/analyzers/ai-failure-analyzer.js +220 -0
- package/dist/analyzers/ai-failure-analyzer.js.map +1 -0
- package/dist/analyzers/comparison-utils.d.ts +31 -0
- package/dist/analyzers/comparison-utils.d.ts.map +1 -0
- package/dist/analyzers/comparison-utils.js +85 -0
- package/dist/analyzers/comparison-utils.js.map +1 -0
- package/dist/analyzers/context-analyzer.d.ts +49 -0
- package/dist/analyzers/context-analyzer.d.ts.map +1 -0
- package/dist/analyzers/context-analyzer.js +292 -0
- package/dist/analyzers/context-analyzer.js.map +1 -0
- package/dist/analyzers/dependency-analyzer.d.ts +44 -0
- package/dist/analyzers/dependency-analyzer.d.ts.map +1 -0
- package/dist/analyzers/dependency-analyzer.js +313 -0
- package/dist/analyzers/dependency-analyzer.js.map +1 -0
- package/dist/analyzers/failure-analyzer.d.ts +122 -0
- package/dist/analyzers/failure-analyzer.d.ts.map +1 -0
- package/dist/analyzers/failure-analyzer.js +140 -0
- package/dist/analyzers/failure-analyzer.js.map +1 -0
- package/dist/analyzers/failure-detectors/index.d.ts +33 -0
- package/dist/analyzers/failure-detectors/index.d.ts.map +1 -0
- package/dist/analyzers/failure-detectors/index.js +164 -0
- package/dist/analyzers/failure-detectors/index.js.map +1 -0
- package/dist/analyzers/failure-discrepancy-correlator.d.ts +111 -0
- package/dist/analyzers/failure-discrepancy-correlator.d.ts.map +1 -0
- package/dist/analyzers/failure-discrepancy-correlator.js +202 -0
- package/dist/analyzers/failure-discrepancy-correlator.js.map +1 -0
- package/dist/analyzers/index.d.ts +10 -0
- package/dist/analyzers/index.d.ts.map +1 -0
- package/dist/analyzers/index.js +10 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/analyzers/semantic-matcher.d.ts +123 -0
- package/dist/analyzers/semantic-matcher.d.ts.map +1 -0
- package/dist/analyzers/semantic-matcher.js +297 -0
- package/dist/analyzers/semantic-matcher.js.map +1 -0
- package/dist/analyzers/source-comparator.d.ts +177 -0
- package/dist/analyzers/source-comparator.d.ts.map +1 -0
- package/dist/analyzers/source-comparator.js +225 -0
- package/dist/analyzers/source-comparator.js.map +1 -0
- package/dist/business-rules/business-rules-analyzer.d.ts +44 -0
- package/dist/business-rules/business-rules-analyzer.d.ts.map +1 -0
- package/dist/business-rules/business-rules-analyzer.js +363 -0
- package/dist/business-rules/business-rules-analyzer.js.map +1 -0
- package/dist/business-rules/business-rules-generator.d.ts +78 -0
- package/dist/business-rules/business-rules-generator.d.ts.map +1 -0
- package/dist/business-rules/business-rules-generator.js +357 -0
- package/dist/business-rules/business-rules-generator.js.map +1 -0
- package/dist/business-rules/extractors/rule-extractors.d.ts +50 -0
- package/dist/business-rules/extractors/rule-extractors.d.ts.map +1 -0
- package/dist/business-rules/extractors/rule-extractors.js +189 -0
- package/dist/business-rules/extractors/rule-extractors.js.map +1 -0
- package/dist/business-rules/value-generators.d.ts +70 -0
- package/dist/business-rules/value-generators.d.ts.map +1 -0
- package/dist/business-rules/value-generators.js +142 -0
- package/dist/business-rules/value-generators.js.map +1 -0
- package/dist/executor/auth-providers/auth-header-builder.d.ts +16 -0
- package/dist/executor/auth-providers/auth-header-builder.d.ts.map +1 -0
- package/dist/executor/auth-providers/auth-header-builder.js +47 -0
- package/dist/executor/auth-providers/auth-header-builder.js.map +1 -0
- package/dist/executor/auth-providers/oauth2-provider.d.ts +19 -0
- package/dist/executor/auth-providers/oauth2-provider.d.ts.map +1 -0
- package/dist/executor/auth-providers/oauth2-provider.js +114 -0
- package/dist/executor/auth-providers/oauth2-provider.js.map +1 -0
- package/dist/executor/http-client.d.ts +133 -0
- package/dist/executor/http-client.d.ts.map +1 -0
- package/dist/executor/http-client.js +172 -0
- package/dist/executor/http-client.js.map +1 -0
- package/dist/executor/http-request-builder.d.ts +69 -0
- package/dist/executor/http-request-builder.d.ts.map +1 -0
- package/dist/executor/http-request-builder.js +140 -0
- package/dist/executor/http-request-builder.js.map +1 -0
- package/dist/executor/http-response-parser.d.ts +28 -0
- package/dist/executor/http-response-parser.d.ts.map +1 -0
- package/dist/executor/http-response-parser.js +74 -0
- package/dist/executor/http-response-parser.js.map +1 -0
- package/dist/executor/response-handler.d.ts +66 -0
- package/dist/executor/response-handler.d.ts.map +1 -0
- package/dist/executor/response-handler.js +135 -0
- package/dist/executor/response-handler.js.map +1 -0
- package/dist/executor/result-processor.d.ts +27 -0
- package/dist/executor/result-processor.d.ts.map +1 -0
- package/dist/executor/result-processor.js +140 -0
- package/dist/executor/result-processor.js.map +1 -0
- package/dist/executor/result-utils.d.ts +21 -0
- package/dist/executor/result-utils.d.ts.map +1 -0
- package/dist/executor/result-utils.js +29 -0
- package/dist/executor/result-utils.js.map +1 -0
- package/dist/executor/test-executor.d.ts +49 -0
- package/dist/executor/test-executor.d.ts.map +1 -0
- package/dist/executor/test-executor.js +226 -0
- package/dist/executor/test-executor.js.map +1 -0
- package/dist/executor/test-runner.d.ts +85 -0
- package/dist/executor/test-runner.d.ts.map +1 -0
- package/dist/executor/test-runner.js +177 -0
- package/dist/executor/test-runner.js.map +1 -0
- package/dist/executor/token-detector/index.d.ts +7 -0
- package/dist/executor/token-detector/index.d.ts.map +1 -0
- package/dist/executor/token-detector/index.js +7 -0
- package/dist/executor/token-detector/index.js.map +1 -0
- package/dist/executor/token-detector/token-detector.d.ts +64 -0
- package/dist/executor/token-detector/token-detector.d.ts.map +1 -0
- package/dist/executor/token-detector/token-detector.js +140 -0
- package/dist/executor/token-detector/token-detector.js.map +1 -0
- package/dist/generators/business-rule-from-stories-generator.d.ts +30 -0
- package/dist/generators/business-rule-from-stories-generator.d.ts.map +1 -0
- package/dist/generators/business-rule-from-stories-generator.js +227 -0
- package/dist/generators/business-rule-from-stories-generator.js.map +1 -0
- package/dist/generators/data/ai-data-generator.d.ts +23 -0
- package/dist/generators/data/ai-data-generator.d.ts.map +1 -0
- package/dist/generators/data/ai-data-generator.js +41 -0
- package/dist/generators/data/ai-data-generator.js.map +1 -0
- package/dist/generators/data/base-generator.d.ts +121 -0
- package/dist/generators/data/base-generator.d.ts.map +1 -0
- package/dist/generators/data/base-generator.js +200 -0
- package/dist/generators/data/base-generator.js.map +1 -0
- package/dist/generators/data/heuristic-data-generator.d.ts +28 -0
- package/dist/generators/data/heuristic-data-generator.d.ts.map +1 -0
- package/dist/generators/data/heuristic-data-generator.js +49 -0
- package/dist/generators/data/heuristic-data-generator.js.map +1 -0
- package/dist/generators/data/index.d.ts +48 -0
- package/dist/generators/data/index.d.ts.map +1 -0
- package/dist/generators/data/index.js +201 -0
- package/dist/generators/data/index.js.map +1 -0
- package/dist/generators/data/schema-walker.d.ts +45 -0
- package/dist/generators/data/schema-walker.d.ts.map +1 -0
- package/dist/generators/data/schema-walker.js +103 -0
- package/dist/generators/data/schema-walker.js.map +1 -0
- package/dist/generators/data/type-strategies.d.ts +79 -0
- package/dist/generators/data/type-strategies.d.ts.map +1 -0
- package/dist/generators/data/type-strategies.js +394 -0
- package/dist/generators/data/type-strategies.js.map +1 -0
- package/dist/generators/data-generator.d.ts +11 -0
- package/dist/generators/data-generator.d.ts.map +1 -0
- package/dist/generators/data-generator.js +11 -0
- package/dist/generators/data-generator.js.map +1 -0
- package/dist/generators/edge-case-generator.d.ts +55 -0
- package/dist/generators/edge-case-generator.d.ts.map +1 -0
- package/dist/generators/edge-case-generator.js +327 -0
- package/dist/generators/edge-case-generator.js.map +1 -0
- package/dist/generators/edge-cases/boundary-analyzer.d.ts +26 -0
- package/dist/generators/edge-cases/boundary-analyzer.d.ts.map +1 -0
- package/dist/generators/edge-cases/boundary-analyzer.js +95 -0
- package/dist/generators/edge-cases/boundary-analyzer.js.map +1 -0
- package/dist/generators/error-case-generator.d.ts +11 -0
- package/dist/generators/error-case-generator.d.ts.map +1 -0
- package/dist/generators/error-case-generator.js +11 -0
- package/dist/generators/error-case-generator.js.map +1 -0
- package/dist/generators/errors/auth-error-strategy.d.ts +36 -0
- package/dist/generators/errors/auth-error-strategy.d.ts.map +1 -0
- package/dist/generators/errors/auth-error-strategy.js +118 -0
- package/dist/generators/errors/auth-error-strategy.js.map +1 -0
- package/dist/generators/errors/business-error-strategy.d.ts +44 -0
- package/dist/generators/errors/business-error-strategy.d.ts.map +1 -0
- package/dist/generators/errors/business-error-strategy.js +152 -0
- package/dist/generators/errors/business-error-strategy.js.map +1 -0
- package/dist/generators/errors/error-strategy-factory.d.ts +27 -0
- package/dist/generators/errors/error-strategy-factory.d.ts.map +1 -0
- package/dist/generators/errors/error-strategy-factory.js +47 -0
- package/dist/generators/errors/error-strategy-factory.js.map +1 -0
- package/dist/generators/errors/error-strategy.d.ts +62 -0
- package/dist/generators/errors/error-strategy.d.ts.map +1 -0
- package/dist/generators/errors/error-strategy.js +69 -0
- package/dist/generators/errors/error-strategy.js.map +1 -0
- package/dist/generators/errors/index.d.ts +23 -0
- package/dist/generators/errors/index.d.ts.map +1 -0
- package/dist/generators/errors/index.js +73 -0
- package/dist/generators/errors/index.js.map +1 -0
- package/dist/generators/errors/validation-error-strategy.d.ts +25 -0
- package/dist/generators/errors/validation-error-strategy.d.ts.map +1 -0
- package/dist/generators/errors/validation-error-strategy.js +214 -0
- package/dist/generators/errors/validation-error-strategy.js.map +1 -0
- package/dist/generators/happy-path-generator.d.ts +93 -0
- package/dist/generators/happy-path-generator.d.ts.map +1 -0
- package/dist/generators/happy-path-generator.js +275 -0
- package/dist/generators/happy-path-generator.js.map +1 -0
- package/dist/generators/test-enricher.d.ts +44 -0
- package/dist/generators/test-enricher.d.ts.map +1 -0
- package/dist/generators/test-enricher.js +109 -0
- package/dist/generators/test-enricher.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/ai-cache.d.ts +123 -0
- package/dist/llm/ai-cache.d.ts.map +1 -0
- package/dist/llm/ai-cache.js +220 -0
- package/dist/llm/ai-cache.js.map +1 -0
- package/dist/llm/ai-client.d.ts +92 -0
- package/dist/llm/ai-client.d.ts.map +1 -0
- package/dist/llm/ai-client.js +386 -0
- package/dist/llm/ai-client.js.map +1 -0
- package/dist/llm/data-generator-ai.d.ts +84 -0
- package/dist/llm/data-generator-ai.d.ts.map +1 -0
- package/dist/llm/data-generator-ai.js +284 -0
- package/dist/llm/data-generator-ai.js.map +1 -0
- package/dist/llm/index.d.ts +7 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +7 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/mcp/handlers/base-handler.d.ts +72 -0
- package/dist/mcp/handlers/base-handler.d.ts.map +1 -0
- package/dist/mcp/handlers/base-handler.js +86 -0
- package/dist/mcp/handlers/base-handler.js.map +1 -0
- package/dist/mcp/handlers/compare-sources.d.ts +91 -0
- package/dist/mcp/handlers/compare-sources.d.ts.map +1 -0
- package/dist/mcp/handlers/compare-sources.js +182 -0
- package/dist/mcp/handlers/compare-sources.js.map +1 -0
- package/dist/mcp/handlers/export-results.d.ts +53 -0
- package/dist/mcp/handlers/export-results.d.ts.map +1 -0
- package/dist/mcp/handlers/export-results.js +132 -0
- package/dist/mcp/handlers/export-results.js.map +1 -0
- package/dist/mcp/handlers/export-to-postman.d.ts +65 -0
- package/dist/mcp/handlers/export-to-postman.d.ts.map +1 -0
- package/dist/mcp/handlers/export-to-postman.js +128 -0
- package/dist/mcp/handlers/export-to-postman.js.map +1 -0
- package/dist/mcp/handlers/generate-tests.d.ts +74 -0
- package/dist/mcp/handlers/generate-tests.d.ts.map +1 -0
- package/dist/mcp/handlers/generate-tests.js +519 -0
- package/dist/mcp/handlers/generate-tests.js.map +1 -0
- package/dist/mcp/handlers/index.d.ts +13 -0
- package/dist/mcp/handlers/index.d.ts.map +1 -0
- package/dist/mcp/handlers/index.js +12 -0
- package/dist/mcp/handlers/index.js.map +1 -0
- package/dist/mcp/handlers/run-tests.d.ts +89 -0
- package/dist/mcp/handlers/run-tests.d.ts.map +1 -0
- package/dist/mcp/handlers/run-tests.js +233 -0
- package/dist/mcp/handlers/run-tests.js.map +1 -0
- package/dist/mcp/handlers/types.d.ts +61 -0
- package/dist/mcp/handlers/types.d.ts.map +1 -0
- package/dist/mcp/handlers/types.js +9 -0
- package/dist/mcp/handlers/types.js.map +1 -0
- package/dist/mcp/server.d.ts +64 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +200 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/services/file-service.d.ts +66 -0
- package/dist/mcp/services/file-service.d.ts.map +1 -0
- package/dist/mcp/services/file-service.js +143 -0
- package/dist/mcp/services/file-service.js.map +1 -0
- package/dist/mcp/services/llm-service.d.ts +70 -0
- package/dist/mcp/services/llm-service.d.ts.map +1 -0
- package/dist/mcp/services/llm-service.js +189 -0
- package/dist/mcp/services/llm-service.js.map +1 -0
- package/dist/mcp/services/postman-service.d.ts +128 -0
- package/dist/mcp/services/postman-service.d.ts.map +1 -0
- package/dist/mcp/services/postman-service.js +266 -0
- package/dist/mcp/services/postman-service.js.map +1 -0
- package/dist/mcp/services/report-service.d.ts +81 -0
- package/dist/mcp/services/report-service.d.ts.map +1 -0
- package/dist/mcp/services/report-service.js +210 -0
- package/dist/mcp/services/report-service.js.map +1 -0
- package/dist/mcp/services/spec-service.d.ts +58 -0
- package/dist/mcp/services/spec-service.d.ts.map +1 -0
- package/dist/mcp/services/spec-service.js +140 -0
- package/dist/mcp/services/spec-service.js.map +1 -0
- package/dist/parsers/endpoint-extractor.d.ts +32 -0
- package/dist/parsers/endpoint-extractor.d.ts.map +1 -0
- package/dist/parsers/endpoint-extractor.js +160 -0
- package/dist/parsers/endpoint-extractor.js.map +1 -0
- package/dist/parsers/openapi-parser.d.ts +120 -0
- package/dist/parsers/openapi-parser.d.ts.map +1 -0
- package/dist/parsers/openapi-parser.js +257 -0
- package/dist/parsers/openapi-parser.js.map +1 -0
- package/dist/parsers/visitors/auth-visitor.d.ts +28 -0
- package/dist/parsers/visitors/auth-visitor.d.ts.map +1 -0
- package/dist/parsers/visitors/auth-visitor.js +116 -0
- package/dist/parsers/visitors/auth-visitor.js.map +1 -0
- package/dist/prd/index.d.ts +10 -0
- package/dist/prd/index.d.ts.map +1 -0
- package/dist/prd/index.js +10 -0
- package/dist/prd/index.js.map +1 -0
- package/dist/prd/prd-reader.d.ts +124 -0
- package/dist/prd/prd-reader.d.ts.map +1 -0
- package/dist/prd/prd-reader.js +308 -0
- package/dist/prd/prd-reader.js.map +1 -0
- package/dist/prd/prd-storage.d.ts +232 -0
- package/dist/prd/prd-storage.d.ts.map +1 -0
- package/dist/prd/prd-storage.js +129 -0
- package/dist/prd/prd-storage.js.map +1 -0
- package/dist/repairers/test-auto-repairer.d.ts +61 -0
- package/dist/repairers/test-auto-repairer.d.ts.map +1 -0
- package/dist/repairers/test-auto-repairer.js +213 -0
- package/dist/repairers/test-auto-repairer.js.map +1 -0
- package/dist/reporters/comparison-report-generator.d.ts +58 -0
- package/dist/reporters/comparison-report-generator.d.ts.map +1 -0
- package/dist/reporters/comparison-report-generator.js +369 -0
- package/dist/reporters/comparison-report-generator.js.map +1 -0
- package/dist/reporters/gherkin-formatter.d.ts +34 -0
- package/dist/reporters/gherkin-formatter.d.ts.map +1 -0
- package/dist/reporters/gherkin-formatter.js +231 -0
- package/dist/reporters/gherkin-formatter.js.map +1 -0
- package/dist/reporters/html-report-generator.d.ts +174 -0
- package/dist/reporters/html-report-generator.d.ts.map +1 -0
- package/dist/reporters/html-report-generator.js +194 -0
- package/dist/reporters/html-report-generator.js.map +1 -0
- package/dist/reporters/report-charts.d.ts +23 -0
- package/dist/reporters/report-charts.d.ts.map +1 -0
- package/dist/reporters/report-charts.js +182 -0
- package/dist/reporters/report-charts.js.map +1 -0
- package/dist/reporters/report-sections.d.ts +34 -0
- package/dist/reporters/report-sections.d.ts.map +1 -0
- package/dist/reporters/report-sections.js +481 -0
- package/dist/reporters/report-sections.js.map +1 -0
- package/dist/reporters/report-styles.d.ts +12 -0
- package/dist/reporters/report-styles.d.ts.map +1 -0
- package/dist/reporters/report-styles.js +412 -0
- package/dist/reporters/report-styles.js.map +1 -0
- package/dist/reporters/report-test-details.d.ts +56 -0
- package/dist/reporters/report-test-details.d.ts.map +1 -0
- package/dist/reporters/report-test-details.js +328 -0
- package/dist/reporters/report-test-details.js.map +1 -0
- package/dist/reporters/report-utils.d.ts +40 -0
- package/dist/reporters/report-utils.d.ts.map +1 -0
- package/dist/reporters/report-utils.js +163 -0
- package/dist/reporters/report-utils.js.map +1 -0
- package/dist/types/ai-config.d.ts +63 -0
- package/dist/types/ai-config.d.ts.map +1 -0
- package/dist/types/ai-config.js +79 -0
- package/dist/types/ai-config.js.map +1 -0
- package/dist/types/business-rules.d.ts +235 -0
- package/dist/types/business-rules.d.ts.map +1 -0
- package/dist/types/business-rules.js +6 -0
- package/dist/types/business-rules.js.map +1 -0
- package/dist/types/config.d.ts +106 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +6 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/core.d.ts +72 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/core.js +6 -0
- package/dist/types/core.js.map +1 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +10 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/openapi.d.ts +139 -0
- package/dist/types/openapi.d.ts.map +1 -0
- package/dist/types/openapi.js +6 -0
- package/dist/types/openapi.js.map +1 -0
- package/dist/types/pact.d.ts +101 -0
- package/dist/types/pact.d.ts.map +1 -0
- package/dist/types/pact.js +6 -0
- package/dist/types/pact.js.map +1 -0
- package/dist/types/reporting.d.ts +93 -0
- package/dist/types/reporting.d.ts.map +1 -0
- package/dist/types/reporting.js +6 -0
- package/dist/types/reporting.js.map +1 -0
- package/dist/types/test-case.d.ts +233 -0
- package/dist/types/test-case.d.ts.map +1 -0
- package/dist/types/test-case.js +6 -0
- package/dist/types/test-case.js.map +1 -0
- package/dist/types/test-execution.d.ts +80 -0
- package/dist/types/test-execution.d.ts.map +1 -0
- package/dist/types/test-execution.js +6 -0
- package/dist/types/test-execution.js.map +1 -0
- package/dist/utils/auth-generator.d.ts +30 -0
- package/dist/utils/auth-generator.d.ts.map +1 -0
- package/dist/utils/auth-generator.js +68 -0
- package/dist/utils/auth-generator.js.map +1 -0
- package/dist/utils/config.d.ts +181 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +141 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/coverage-calculator.d.ts +81 -0
- package/dist/utils/coverage-calculator.d.ts.map +1 -0
- package/dist/utils/coverage-calculator.js +134 -0
- package/dist/utils/coverage-calculator.js.map +1 -0
- package/dist/utils/data-loader.d.ts +52 -0
- package/dist/utils/data-loader.d.ts.map +1 -0
- package/dist/utils/data-loader.js +192 -0
- package/dist/utils/data-loader.js.map +1 -0
- package/dist/utils/errors.d.ts +167 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +257 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logger.d.ts +220 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +325 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/openapi-discovery.d.ts +31 -0
- package/dist/utils/openapi-discovery.d.ts.map +1 -0
- package/dist/utils/openapi-discovery.js +322 -0
- package/dist/utils/openapi-discovery.js.map +1 -0
- package/dist/utils/path-resolver.d.ts +101 -0
- package/dist/utils/path-resolver.d.ts.map +1 -0
- package/dist/utils/path-resolver.js +167 -0
- package/dist/utils/path-resolver.js.map +1 -0
- package/dist/utils/resilience.d.ts +181 -0
- package/dist/utils/resilience.d.ts.map +1 -0
- package/dist/utils/resilience.js +269 -0
- package/dist/utils/resilience.js.map +1 -0
- package/dist/validators/openapi-validator.d.ts +198 -0
- package/dist/validators/openapi-validator.d.ts.map +1 -0
- package/dist/validators/openapi-validator.js +349 -0
- package/dist/validators/openapi-validator.js.map +1 -0
- package/dist/validators/response-matcher.d.ts +84 -0
- package/dist/validators/response-matcher.d.ts.map +1 -0
- package/dist/validators/response-matcher.js +234 -0
- package/dist/validators/response-matcher.js.map +1 -0
- package/dist/validators/schema-validator.d.ts +174 -0
- package/dist/validators/schema-validator.d.ts.map +1 -0
- package/dist/validators/schema-validator.js +340 -0
- package/dist/validators/schema-validator.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Report Section Generators for HTML Report
|
|
3
|
+
*
|
|
4
|
+
* Renders the Coverage, AI Analysis, Source Comparison and Root Cause
|
|
5
|
+
* sections, plus the quick-stats tables (by category / by endpoint).
|
|
6
|
+
*
|
|
7
|
+
* @module reporters/report-sections
|
|
8
|
+
*/
|
|
9
|
+
import { getMethodColorClass, getPriorityBadgeClass, getPatternBorderClass, getRootCauseLabel, getRootCauseBorderColor, getRootCausePriorityBadge, getMethodBadgeClass, } from './report-utils.js';
|
|
10
|
+
/**
|
|
11
|
+
* Renders the "Results by Category" quick-stats table.
|
|
12
|
+
*/
|
|
13
|
+
export function generateCategoryTable(byCategory) {
|
|
14
|
+
if (!Object.keys(byCategory).length)
|
|
15
|
+
return '';
|
|
16
|
+
return `
|
|
17
|
+
<div class="bg-white rounded-lg p-6 border border-gray-200">
|
|
18
|
+
<h3 class="text-lg font-semibold text-gray-900 mb-4">Results by Category</h3>
|
|
19
|
+
<div class="overflow-x-auto">
|
|
20
|
+
<table class="w-full border-collapse">
|
|
21
|
+
<thead>
|
|
22
|
+
<tr class="border-b-2 border-gray-200">
|
|
23
|
+
<th class="px-4 py-3 text-left text-sm font-semibold text-gray-700">Category</th>
|
|
24
|
+
<th class="px-4 py-3 text-left text-sm font-semibold text-gray-700">Total</th>
|
|
25
|
+
<th class="px-4 py-3 text-left text-sm font-semibold text-gray-700">Passed</th>
|
|
26
|
+
<th class="px-4 py-3 text-left text-sm font-semibold text-gray-700">Failed</th>
|
|
27
|
+
<th class="px-4 py-3 text-left text-sm font-semibold text-gray-700">Pass Rate</th>
|
|
28
|
+
</tr>
|
|
29
|
+
</thead>
|
|
30
|
+
<tbody>
|
|
31
|
+
${Object.entries(byCategory).map(([category, stats]) => {
|
|
32
|
+
const rate = stats.total > 0 ? ((stats.passed / stats.total) * 100).toFixed(1) : '0.0';
|
|
33
|
+
return `
|
|
34
|
+
<tr class="border-b border-gray-100 hover:bg-gray-50 transition-colors">
|
|
35
|
+
<td class="px-4 py-3 font-medium text-gray-900">${category}</td>
|
|
36
|
+
<td class="px-4 py-3 text-gray-600">${stats.total}</td>
|
|
37
|
+
<td class="px-4 py-3">
|
|
38
|
+
<span class="px-2.5 py-1 bg-emerald-50 text-emerald-700 rounded-md text-sm font-medium border border-emerald-200">
|
|
39
|
+
${stats.passed}
|
|
40
|
+
</span>
|
|
41
|
+
</td>
|
|
42
|
+
<td class="px-4 py-3">
|
|
43
|
+
<span class="px-2.5 py-1 bg-red-50 text-red-700 rounded-md text-sm font-medium border border-red-200">
|
|
44
|
+
${stats.failed}
|
|
45
|
+
</span>
|
|
46
|
+
</td>
|
|
47
|
+
<td class="px-4 py-3 text-gray-700 font-medium">${rate}%</td>
|
|
48
|
+
</tr>
|
|
49
|
+
`;
|
|
50
|
+
}).join('')}
|
|
51
|
+
</tbody>
|
|
52
|
+
</table>
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
`;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Renders the "Results by Endpoint" quick-stats table.
|
|
59
|
+
*/
|
|
60
|
+
export function generateEndpointTable(byEndpoint) {
|
|
61
|
+
if (!Object.keys(byEndpoint).length)
|
|
62
|
+
return '';
|
|
63
|
+
return `
|
|
64
|
+
<div class="bg-white rounded-lg p-6 border border-gray-200">
|
|
65
|
+
<h3 class="text-lg font-semibold text-gray-900 mb-4">Results by Endpoint</h3>
|
|
66
|
+
<div class="overflow-x-auto">
|
|
67
|
+
<table class="w-full border-collapse">
|
|
68
|
+
<thead>
|
|
69
|
+
<tr class="border-b-2 border-gray-200">
|
|
70
|
+
<th class="px-4 py-3 text-left text-sm font-semibold text-gray-700">Endpoint</th>
|
|
71
|
+
<th class="px-4 py-3 text-left text-sm font-semibold text-gray-700">Total</th>
|
|
72
|
+
<th class="px-4 py-3 text-left text-sm font-semibold text-gray-700">Passed</th>
|
|
73
|
+
<th class="px-4 py-3 text-left text-sm font-semibold text-gray-700">Failed</th>
|
|
74
|
+
<th class="px-4 py-3 text-left text-sm font-semibold text-gray-700">Pass Rate</th>
|
|
75
|
+
</tr>
|
|
76
|
+
</thead>
|
|
77
|
+
<tbody>
|
|
78
|
+
${Object.entries(byEndpoint).map(([endpoint, stats]) => {
|
|
79
|
+
const rate = stats.total > 0 ? ((stats.passed / stats.total) * 100).toFixed(1) : '0.0';
|
|
80
|
+
return `
|
|
81
|
+
<tr class="border-b border-gray-100 hover:bg-gray-50 transition-colors">
|
|
82
|
+
<td class="px-4 py-3">
|
|
83
|
+
<code class="bg-gray-100 px-2 py-1 rounded text-sm font-mono text-gray-800 border border-gray-200">${endpoint}</code>
|
|
84
|
+
</td>
|
|
85
|
+
<td class="px-4 py-3 text-gray-600">${stats.total}</td>
|
|
86
|
+
<td class="px-4 py-3">
|
|
87
|
+
<span class="px-2.5 py-1 bg-emerald-50 text-emerald-700 rounded-md text-sm font-medium border border-emerald-200">
|
|
88
|
+
${stats.passed}
|
|
89
|
+
</span>
|
|
90
|
+
</td>
|
|
91
|
+
<td class="px-4 py-3">
|
|
92
|
+
<span class="px-2.5 py-1 bg-red-50 text-red-700 rounded-md text-sm font-medium border border-red-200">
|
|
93
|
+
${stats.failed}
|
|
94
|
+
</span>
|
|
95
|
+
</td>
|
|
96
|
+
<td class="px-4 py-3 text-gray-700 font-medium">${rate}%</td>
|
|
97
|
+
</tr>
|
|
98
|
+
`;
|
|
99
|
+
}).join('')}
|
|
100
|
+
</tbody>
|
|
101
|
+
</table>
|
|
102
|
+
</div>
|
|
103
|
+
</div>
|
|
104
|
+
`;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Renders the Endpoint Coverage section.
|
|
108
|
+
*/
|
|
109
|
+
export function generateCoverageSection(coverage) {
|
|
110
|
+
return `
|
|
111
|
+
<section class="mb-8">
|
|
112
|
+
<div class="container">
|
|
113
|
+
<div class="bg-white rounded-xl shadow-lg p-8">
|
|
114
|
+
<div class="flex items-center gap-3 mb-6">
|
|
115
|
+
<span class="text-4xl">📊</span>
|
|
116
|
+
<h2 class="text-2xl font-bold text-gray-800">Cobertura de Endpoints</h2>
|
|
117
|
+
</div>
|
|
118
|
+
|
|
119
|
+
<div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-8">
|
|
120
|
+
<div class="bg-gradient-to-br from-blue-50 to-blue-100 rounded-lg p-6 border border-blue-200">
|
|
121
|
+
<div class="text-sm font-medium text-blue-600 mb-2">Total Endpoints</div>
|
|
122
|
+
<div class="text-3xl font-bold text-blue-900">${coverage.totalEndpoints}</div>
|
|
123
|
+
</div>
|
|
124
|
+
<div class="bg-gradient-to-br from-green-50 to-green-100 rounded-lg p-6 border border-green-200">
|
|
125
|
+
<div class="text-sm font-medium text-green-600 mb-2">Endpoints Probados</div>
|
|
126
|
+
<div class="text-3xl font-bold text-green-900">${coverage.testedEndpoints}</div>
|
|
127
|
+
</div>
|
|
128
|
+
<div class="bg-gradient-to-br from-purple-50 to-purple-100 rounded-lg p-6 border border-purple-200">
|
|
129
|
+
<div class="text-sm font-medium text-purple-600 mb-2">Porcentaje de Cobertura</div>
|
|
130
|
+
<div class="text-3xl font-bold text-purple-900">${coverage.coveragePercentage}</div>
|
|
131
|
+
</div>
|
|
132
|
+
</div>
|
|
133
|
+
|
|
134
|
+
${coverage.uncoveredEndpoints && coverage.uncoveredEndpoints.length > 0 ? `
|
|
135
|
+
<div class="mb-6">
|
|
136
|
+
<h3 class="text-lg font-semibold text-gray-800 mb-4 flex items-center gap-2">
|
|
137
|
+
<span>⚠️</span>
|
|
138
|
+
Endpoints sin Cobertura (${coverage.uncoveredEndpoints.length})
|
|
139
|
+
</h3>
|
|
140
|
+
<div class="bg-yellow-50 border border-yellow-200 rounded-lg p-4">
|
|
141
|
+
<div class="space-y-2">
|
|
142
|
+
${coverage.uncoveredEndpoints.slice(0, 10).map(endpoint => `
|
|
143
|
+
<div class="flex items-center gap-3 text-sm">
|
|
144
|
+
<span class="px-2 py-1 rounded font-mono text-xs font-semibold ${getMethodColorClass(endpoint.method)}">${endpoint.method}</span>
|
|
145
|
+
<span class="text-gray-700 font-mono">${endpoint.path}</span>
|
|
146
|
+
</div>
|
|
147
|
+
`).join('')}
|
|
148
|
+
${coverage.uncoveredEndpoints.length > 10 ? `
|
|
149
|
+
<div class="text-sm text-gray-600 italic mt-2">... y ${coverage.uncoveredEndpoints.length - 10} más</div>
|
|
150
|
+
` : ''}
|
|
151
|
+
</div>
|
|
152
|
+
</div>
|
|
153
|
+
</div>
|
|
154
|
+
` : ''}
|
|
155
|
+
|
|
156
|
+
${coverage.endpointDetails && coverage.endpointDetails.length > 0 ? `
|
|
157
|
+
<div>
|
|
158
|
+
<h3 class="text-lg font-semibold text-gray-800 mb-4">📋 Detalle por Endpoint</h3>
|
|
159
|
+
<div class="overflow-x-auto">
|
|
160
|
+
<table class="min-w-full divide-y divide-gray-200">
|
|
161
|
+
<thead class="bg-gray-50">
|
|
162
|
+
<tr>
|
|
163
|
+
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Endpoint</th>
|
|
164
|
+
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Tests</th>
|
|
165
|
+
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Exitosos</th>
|
|
166
|
+
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Fallidos</th>
|
|
167
|
+
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Estado</th>
|
|
168
|
+
</tr>
|
|
169
|
+
</thead>
|
|
170
|
+
<tbody class="bg-white divide-y divide-gray-200">
|
|
171
|
+
${coverage.endpointDetails.map(detail => `
|
|
172
|
+
<tr class="hover:bg-gray-50">
|
|
173
|
+
<td class="px-6 py-4 whitespace-nowrap">
|
|
174
|
+
<span class="px-2 py-1 rounded font-mono text-xs font-semibold ${getMethodColorClass(detail.method)}">${detail.method}</span>
|
|
175
|
+
<span class="ml-2 text-sm text-gray-700 font-mono">${detail.path}</span>
|
|
176
|
+
</td>
|
|
177
|
+
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-900">${detail.totalTests}</td>
|
|
178
|
+
<td class="px-6 py-4 whitespace-nowrap text-sm text-green-600 font-semibold">${detail.passedTests}</td>
|
|
179
|
+
<td class="px-6 py-4 whitespace-nowrap text-sm text-red-600 font-semibold">${detail.failedTests}</td>
|
|
180
|
+
<td class="px-6 py-4 whitespace-nowrap">
|
|
181
|
+
${detail.failedTests === 0 ?
|
|
182
|
+
'<span class="px-3 py-1 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800">✅ OK</span>' :
|
|
183
|
+
'<span class="px-3 py-1 inline-flex text-xs leading-5 font-semibold rounded-full bg-red-100 text-red-800">❌ Fallos</span>'}
|
|
184
|
+
</td>
|
|
185
|
+
</tr>
|
|
186
|
+
`).join('')}
|
|
187
|
+
</tbody>
|
|
188
|
+
</table>
|
|
189
|
+
</div>
|
|
190
|
+
</div>
|
|
191
|
+
` : ''}
|
|
192
|
+
</div>
|
|
193
|
+
</div>
|
|
194
|
+
</section>
|
|
195
|
+
`;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Renders the AI-Powered Analysis section.
|
|
199
|
+
*/
|
|
200
|
+
export function generateAiAnalysisSection(aiAnalysis) {
|
|
201
|
+
return `
|
|
202
|
+
<section class="mb-8">
|
|
203
|
+
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
204
|
+
<div class="bg-gradient-to-br from-gray-900 via-gray-800 to-gray-900 rounded-2xl shadow-2xl p-6 md:p-8 text-white">
|
|
205
|
+
<div class="flex flex-wrap items-center gap-4 mb-6">
|
|
206
|
+
<span class="text-5xl">🤖</span>
|
|
207
|
+
<h2 class="text-2xl md:text-3xl font-bold">AI-Powered Analysis</h2>
|
|
208
|
+
<span class="px-4 py-2 bg-gradient-to-r from-indigo-600 to-purple-600 rounded-full text-sm font-semibold">LLM Analysis</span>
|
|
209
|
+
</div>
|
|
210
|
+
|
|
211
|
+
<div class="bg-white bg-opacity-10 rounded-xl p-6 mb-6 backdrop-blur-sm">
|
|
212
|
+
<h3 class="text-xl font-bold mb-3 flex items-center gap-2">
|
|
213
|
+
<span>📋</span> Resumen Ejecutivo
|
|
214
|
+
</h3>
|
|
215
|
+
${typeof aiAnalysis.summary === 'string' ? `
|
|
216
|
+
<p class="text-gray-100 leading-relaxed">${aiAnalysis.summary}</p>
|
|
217
|
+
` : `
|
|
218
|
+
<div class="space-y-3">
|
|
219
|
+
${Object.entries(aiAnalysis.summary).map(([key, value]) => `
|
|
220
|
+
<div class="bg-white bg-opacity-5 rounded-lg p-4">
|
|
221
|
+
<div class="text-sm font-semibold text-indigo-300 mb-2">${key.replace(/_/g, ' ').replace(/\b\w/g, l => l.toUpperCase())}</div>
|
|
222
|
+
${typeof value === 'object' && value !== null ? `
|
|
223
|
+
<div class="space-y-2 ml-3">
|
|
224
|
+
${Object.entries(value).map(([subKey, subValue]) => `
|
|
225
|
+
<div class="text-sm">
|
|
226
|
+
<span class="text-gray-300">${subKey.replace(/_/g, ' ')}:</span>
|
|
227
|
+
<span class="text-white font-medium ml-2">${subValue}</span>
|
|
228
|
+
</div>
|
|
229
|
+
`).join('')}
|
|
230
|
+
</div>
|
|
231
|
+
` : `
|
|
232
|
+
<div class="text-white font-medium">${value}</div>
|
|
233
|
+
`}
|
|
234
|
+
</div>
|
|
235
|
+
`).join('')}
|
|
236
|
+
</div>
|
|
237
|
+
`}
|
|
238
|
+
</div>
|
|
239
|
+
|
|
240
|
+
${aiAnalysis.criticalIssues && aiAnalysis.criticalIssues.length > 0 ? `
|
|
241
|
+
<div class="mb-8">
|
|
242
|
+
<h3 class="text-xl font-bold text-red-600 mb-4 flex items-center gap-2">
|
|
243
|
+
<span>🚨</span> Issues Críticos
|
|
244
|
+
</h3>
|
|
245
|
+
<div class="space-y-4">
|
|
246
|
+
${aiAnalysis.criticalIssues.map(issue => `
|
|
247
|
+
<div class="bg-red-50 border-l-4 border-red-500 p-4 rounded-r-lg">
|
|
248
|
+
<h4 class="font-bold text-red-900 mb-2">${issue.title}</h4>
|
|
249
|
+
<p class="text-red-800 mb-3">${issue.description}</p>
|
|
250
|
+
<div class="flex flex-wrap gap-2">
|
|
251
|
+
<span class="text-xs font-semibold text-red-600">Endpoints afectados:</span>
|
|
252
|
+
${issue.affectedEndpoints.map(ep => `
|
|
253
|
+
<span class="px-2 py-1 bg-red-100 text-red-700 rounded text-xs font-mono">${ep}</span>
|
|
254
|
+
`).join('')}
|
|
255
|
+
</div>
|
|
256
|
+
</div>
|
|
257
|
+
`).join('')}
|
|
258
|
+
</div>
|
|
259
|
+
</div>
|
|
260
|
+
` : ''}
|
|
261
|
+
|
|
262
|
+
${aiAnalysis.patterns && aiAnalysis.patterns.length > 0 ? `
|
|
263
|
+
<div class="mb-8">
|
|
264
|
+
<h3 class="text-xl font-bold text-gray-800 mb-4 flex items-center gap-2">
|
|
265
|
+
<span>🔍</span> Patrones Detectados
|
|
266
|
+
</h3>
|
|
267
|
+
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
268
|
+
${aiAnalysis.patterns.map(pattern => `
|
|
269
|
+
<div class="border rounded-lg p-4 ${getPatternBorderClass(pattern.impact)}">
|
|
270
|
+
<div class="flex items-start justify-between mb-2">
|
|
271
|
+
<h4 class="font-semibold text-gray-900">${pattern.pattern}</h4>
|
|
272
|
+
<span class="px-2 py-1 rounded text-xs font-bold ${getPriorityBadgeClass(pattern.impact)}">${pattern.impact.toUpperCase()}</span>
|
|
273
|
+
</div>
|
|
274
|
+
<p class="text-sm text-gray-700 mb-2">${pattern.description}</p>
|
|
275
|
+
<div class="text-xs text-gray-500">Ocurrencias: <strong>${pattern.occurrences}</strong></div>
|
|
276
|
+
</div>
|
|
277
|
+
`).join('')}
|
|
278
|
+
</div>
|
|
279
|
+
</div>
|
|
280
|
+
` : ''}
|
|
281
|
+
|
|
282
|
+
${aiAnalysis.recommendations && aiAnalysis.recommendations.length > 0 ? `
|
|
283
|
+
<div class="mb-6">
|
|
284
|
+
<h3 class="text-xl font-bold mb-4 flex items-center gap-2">
|
|
285
|
+
<span>🔧</span> Correcciones Recomendadas
|
|
286
|
+
</h3>
|
|
287
|
+
<div class="space-y-4">
|
|
288
|
+
${aiAnalysis.recommendations.map((rec, i) => `
|
|
289
|
+
<div class="flex gap-4 bg-white bg-opacity-10 rounded-xl p-5 border-l-4 border-indigo-500 backdrop-blur-sm hover:bg-opacity-15 transition-colors">
|
|
290
|
+
<div class="flex-shrink-0 w-8 h-8 bg-indigo-600 rounded-full flex items-center justify-center text-white font-bold text-sm">
|
|
291
|
+
${i + 1}
|
|
292
|
+
</div>
|
|
293
|
+
<div class="flex-1 space-y-2">
|
|
294
|
+
<div class="text-yellow-300">
|
|
295
|
+
<strong>Problema:</strong> ${rec.issue}
|
|
296
|
+
${rec.priority ? `<span class="ml-2 px-2 py-1 rounded text-xs font-bold ${getPriorityBadgeClass(rec.priority)}">${rec.priority.toUpperCase()}</span>` : ''}
|
|
297
|
+
</div>
|
|
298
|
+
<div class="text-green-300">
|
|
299
|
+
<strong>Solución:</strong> ${rec.fix}
|
|
300
|
+
</div>
|
|
301
|
+
${rec.autoRepairSuggestion ? `
|
|
302
|
+
<div class="text-blue-300 text-sm">
|
|
303
|
+
<strong>Auto-reparación:</strong> ${rec.autoRepairSuggestion}
|
|
304
|
+
</div>
|
|
305
|
+
` : ''}
|
|
306
|
+
</div>
|
|
307
|
+
</div>
|
|
308
|
+
`).join('')}
|
|
309
|
+
</div>
|
|
310
|
+
</div>
|
|
311
|
+
` : ''}
|
|
312
|
+
</div>
|
|
313
|
+
</div>
|
|
314
|
+
</section>
|
|
315
|
+
`;
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Renders the Source Comparison (OpenAPI vs Code vs PRD) section.
|
|
319
|
+
*/
|
|
320
|
+
export function generateSourceComparisonSection(sourceComparison) {
|
|
321
|
+
return `
|
|
322
|
+
<section class="source-comparison">
|
|
323
|
+
<div class="container">
|
|
324
|
+
<div class="comparison-card">
|
|
325
|
+
<div class="comparison-header">
|
|
326
|
+
<span class="comparison-icon">🔍</span>
|
|
327
|
+
<h2>Source Comparison Analysis</h2>
|
|
328
|
+
<span class="comparison-badge">OpenAPI vs Code vs PRD</span>
|
|
329
|
+
</div>
|
|
330
|
+
|
|
331
|
+
<div class="grid grid-cols-1 md:grid-cols-4 gap-4 mb-6">
|
|
332
|
+
<div class="bg-white rounded-lg shadow p-4">
|
|
333
|
+
<div class="text-sm font-medium text-gray-600 mb-2">Total Endpoints</div>
|
|
334
|
+
<div class="text-3xl font-bold text-blue-600">${sourceComparison.summary.totalEndpointsInSpec + sourceComparison.summary.totalEndpointsInCode}</div>
|
|
335
|
+
<div class="text-xs text-gray-500 mt-2">
|
|
336
|
+
Spec: ${sourceComparison.summary.totalEndpointsInSpec} | Code: ${sourceComparison.summary.totalEndpointsInCode}
|
|
337
|
+
</div>
|
|
338
|
+
</div>
|
|
339
|
+
|
|
340
|
+
<div class="bg-white rounded-lg shadow p-4">
|
|
341
|
+
<div class="text-sm font-medium text-gray-600 mb-2">Aligned</div>
|
|
342
|
+
<div class="text-3xl font-bold text-green-600">${sourceComparison.summary.matchingEndpoints}</div>
|
|
343
|
+
<div class="text-xs text-gray-500 mt-2">
|
|
344
|
+
${((sourceComparison.summary.matchingEndpoints / (sourceComparison.summary.totalEndpointsInSpec || 1)) * 100).toFixed(0)}% coverage
|
|
345
|
+
</div>
|
|
346
|
+
</div>
|
|
347
|
+
|
|
348
|
+
<div class="bg-white rounded-lg shadow p-4">
|
|
349
|
+
<div class="text-sm font-medium text-gray-600 mb-2">Discrepancies</div>
|
|
350
|
+
<div class="text-3xl font-bold text-red-600">${sourceComparison.summary.discrepanciesFound}</div>
|
|
351
|
+
<div class="text-xs text-gray-500 mt-2">
|
|
352
|
+
Errors: ${sourceComparison.summary.errors} | Warnings: ${sourceComparison.summary.warnings}
|
|
353
|
+
</div>
|
|
354
|
+
</div>
|
|
355
|
+
|
|
356
|
+
<div class="bg-white rounded-lg shadow p-4">
|
|
357
|
+
<div class="text-sm font-medium text-gray-600 mb-2">Priority Breakdown</div>
|
|
358
|
+
<div class="flex items-center gap-2 mt-2">
|
|
359
|
+
<span class="px-2 py-1 text-xs font-bold bg-red-600 text-white rounded">${sourceComparison.summary.critical}</span>
|
|
360
|
+
<span class="px-2 py-1 text-xs font-bold bg-orange-500 text-white rounded">${sourceComparison.summary.high}</span>
|
|
361
|
+
<span class="px-2 py-1 text-xs font-bold bg-yellow-500 text-white rounded">${sourceComparison.summary.medium}</span>
|
|
362
|
+
<span class="px-2 py-1 text-xs font-bold bg-blue-500 text-white rounded">${sourceComparison.summary.low}</span>
|
|
363
|
+
</div>
|
|
364
|
+
<div class="text-xs text-gray-500 mt-2">Critical | High | Medium | Low</div>
|
|
365
|
+
</div>
|
|
366
|
+
</div>
|
|
367
|
+
|
|
368
|
+
${sourceComparison.discrepancies.length > 0 ? `
|
|
369
|
+
<div class="comparison-discrepancies">
|
|
370
|
+
<h3 class="text-xl font-bold text-gray-800 mb-4 flex items-center gap-2">
|
|
371
|
+
<span>⚠️</span> Discrepancies (${sourceComparison.discrepancies.length})
|
|
372
|
+
</h3>
|
|
373
|
+
<div class="space-y-3">
|
|
374
|
+
${sourceComparison.discrepancies.slice(0, 10).map(disc => `
|
|
375
|
+
<div class="bg-white border-l-4 ${disc.priority === 'critical' ? 'border-red-600' : disc.priority === 'high' ? 'border-orange-500' : disc.priority === 'medium' ? 'border-yellow-500' : 'border-blue-500'} p-4 rounded-r-lg">
|
|
376
|
+
<div class="flex items-center gap-2 mb-2">
|
|
377
|
+
<span class="px-2 py-1 text-xs font-bold rounded ${disc.priority === 'critical' ? 'bg-red-600 text-white' : disc.priority === 'high' ? 'bg-orange-500 text-white' : disc.priority === 'medium' ? 'bg-yellow-500 text-white' : 'bg-blue-500 text-white'}">${disc.priority.toUpperCase()}</span>
|
|
378
|
+
<span class="text-sm font-semibold text-gray-600">${disc.type.replace(/_/g, ' ').toUpperCase()}</span>
|
|
379
|
+
${disc.endpoint ? `<span class="text-sm font-mono text-gray-700">${disc.endpoint.method} ${disc.endpoint.path}</span>` : ''}
|
|
380
|
+
</div>
|
|
381
|
+
<p class="text-gray-800 mb-2">${disc.description}</p>
|
|
382
|
+
${disc.suggestion ? `
|
|
383
|
+
<div class="bg-blue-50 border-l-4 border-blue-400 p-3 mt-2">
|
|
384
|
+
<p class="text-sm text-blue-800"><strong>💡 Suggestion:</strong> ${disc.suggestion}</p>
|
|
385
|
+
</div>
|
|
386
|
+
` : ''}
|
|
387
|
+
</div>
|
|
388
|
+
`).join('')}
|
|
389
|
+
</div>
|
|
390
|
+
${sourceComparison.discrepancies.length > 10 ? `
|
|
391
|
+
<p class="text-sm text-gray-600 mt-4">Showing 10 of ${sourceComparison.discrepancies.length} discrepancies. View full comparison report for details.</p>
|
|
392
|
+
` : ''}
|
|
393
|
+
</div>
|
|
394
|
+
` : ''}
|
|
395
|
+
</div>
|
|
396
|
+
</div>
|
|
397
|
+
</section>
|
|
398
|
+
`;
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* Renders the Root Cause Analysis section.
|
|
402
|
+
*/
|
|
403
|
+
export function generateRootCauseSection(failureDiscrepancyCorrelation) {
|
|
404
|
+
return `
|
|
405
|
+
<section class="root-cause-analysis">
|
|
406
|
+
<div class="container">
|
|
407
|
+
<div class="root-cause-card">
|
|
408
|
+
<div class="root-cause-header">
|
|
409
|
+
<span class="root-cause-icon">🎯</span>
|
|
410
|
+
<h2>Root Cause Analysis</h2>
|
|
411
|
+
<span class="root-cause-badge">${failureDiscrepancyCorrelation.correlationRate} Identified</span>
|
|
412
|
+
</div>
|
|
413
|
+
|
|
414
|
+
<div class="root-cause-summary">
|
|
415
|
+
<p class="mb-4">
|
|
416
|
+
<strong>${failureDiscrepancyCorrelation.correlatedFailures} of ${failureDiscrepancyCorrelation.totalFailures}</strong> test failures have been correlated with known discrepancies, providing actionable root cause insights.
|
|
417
|
+
</p>
|
|
418
|
+
|
|
419
|
+
<div class="grid grid-cols-2 md:grid-cols-4 gap-3 mb-6">
|
|
420
|
+
${Object.entries(failureDiscrepancyCorrelation.summaryByRootCause)
|
|
421
|
+
.filter(([_, count]) => count > 0)
|
|
422
|
+
.map(([rootCause, count]) => `
|
|
423
|
+
<div class="bg-gray-50 rounded-lg p-3 text-center border-2 ${getRootCauseBorderColor(rootCause)}">
|
|
424
|
+
<div class="text-2xl font-bold text-gray-800">${count}</div>
|
|
425
|
+
<div class="text-xs text-gray-600 mt-1">${getRootCauseLabel(rootCause)}</div>
|
|
426
|
+
</div>
|
|
427
|
+
`).join('')}
|
|
428
|
+
</div>
|
|
429
|
+
</div>
|
|
430
|
+
|
|
431
|
+
<div class="correlations-list">
|
|
432
|
+
<h3 class="text-lg font-bold text-white mb-4">🔗 Failures with Identified Root Causes</h3>
|
|
433
|
+
<div class="space-y-3">
|
|
434
|
+
${failureDiscrepancyCorrelation.correlations
|
|
435
|
+
.filter(c => c.rootCause !== 'unknown')
|
|
436
|
+
.slice(0, 15)
|
|
437
|
+
.map(corr => `
|
|
438
|
+
<div class="correlation-item bg-white bg-opacity-10 rounded-lg p-4 border-l-4 ${getRootCauseBorderColor(corr.rootCause)}">
|
|
439
|
+
<div class="flex items-start justify-between mb-2">
|
|
440
|
+
<div class="flex-grow">
|
|
441
|
+
<div class="flex items-center gap-2 mb-2">
|
|
442
|
+
<span class="px-2 py-1 text-xs font-bold rounded ${getMethodBadgeClass(corr.failure.method)}">${corr.failure.method}</span>
|
|
443
|
+
<span class="text-sm font-mono text-white">${corr.failure.path}</span>
|
|
444
|
+
<span class="px-2 py-1 text-xs font-semibold rounded bg-red-600 text-white">${corr.failure.actualStatus}</span>
|
|
445
|
+
</div>
|
|
446
|
+
<div class="flex items-center gap-2 mb-2">
|
|
447
|
+
<span class="px-2 py-1 text-xs font-bold rounded ${getRootCausePriorityBadge(corr.rootCause)}">${getRootCauseLabel(corr.rootCause)}</span>
|
|
448
|
+
<span class="text-xs text-gray-300">Confidence: ${(corr.confidence * 100).toFixed(0)}%</span>
|
|
449
|
+
${corr.autoRepairable ? '<span class="px-2 py-1 text-xs font-semibold rounded bg-green-600 text-white">Auto-Repairable</span>' : ''}
|
|
450
|
+
</div>
|
|
451
|
+
</div>
|
|
452
|
+
</div>
|
|
453
|
+
|
|
454
|
+
<div class="text-sm text-gray-200 mb-2">
|
|
455
|
+
<strong>🔍 Root Cause:</strong> ${corr.explanation}
|
|
456
|
+
</div>
|
|
457
|
+
|
|
458
|
+
${corr.suggestedFix ? `
|
|
459
|
+
<div class="bg-blue-900 bg-opacity-50 border-l-4 border-blue-400 p-3 mt-2 rounded">
|
|
460
|
+
<p class="text-sm text-blue-100"><strong>💡 Suggested Fix:</strong> ${corr.suggestedFix}</p>
|
|
461
|
+
</div>
|
|
462
|
+
` : ''}
|
|
463
|
+
|
|
464
|
+
${corr.relatedDiscrepancy ? `
|
|
465
|
+
<div class="mt-2 text-xs text-gray-400">
|
|
466
|
+
<strong>Related Discrepancy:</strong> ${corr.relatedDiscrepancy.type.replace(/_/g, ' ')}
|
|
467
|
+
</div>
|
|
468
|
+
` : ''}
|
|
469
|
+
</div>
|
|
470
|
+
`).join('')}
|
|
471
|
+
</div>
|
|
472
|
+
${failureDiscrepancyCorrelation.correlations.filter(c => c.rootCause !== 'unknown').length > 15 ? `
|
|
473
|
+
<p class="text-sm text-gray-300 mt-4">Showing 15 of ${failureDiscrepancyCorrelation.correlations.filter(c => c.rootCause !== 'unknown').length} correlated failures.</p>
|
|
474
|
+
` : ''}
|
|
475
|
+
</div>
|
|
476
|
+
</div>
|
|
477
|
+
</div>
|
|
478
|
+
</section>
|
|
479
|
+
`;
|
|
480
|
+
}
|
|
481
|
+
//# sourceMappingURL=report-sections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-sections.js","sourceRoot":"","sources":["../../src/reporters/report-sections.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTML Report Styles
|
|
3
|
+
*
|
|
4
|
+
* CSS styles embedded in the HTML report.
|
|
5
|
+
*
|
|
6
|
+
* @module reporters/report-styles
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Returns the CSS styles for the HTML report
|
|
10
|
+
*/
|
|
11
|
+
export declare function getReportStyles(): string;
|
|
12
|
+
//# sourceMappingURL=report-styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-styles.d.ts","sourceRoot":"","sources":["../../src/reporters/report-styles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAgZxC"}
|