@skyramp/mcp 0.4.1 → 0.4.2-rc.1
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/build/adapters/jestAdapter.js +23 -5
- package/build/adapters/mochaAdapter.js +7 -1
- package/build/adapters/playwrightAdapter.js +3 -1
- package/build/adapters/pytestAdapter.js +14 -3
- package/build/commands/localDevTestChangesCommand.js +1 -0
- package/build/commands/recommendTestsAndExecuteCommand.js +5 -6
- package/build/commands/testThisEndpointCommand.js +16 -4
- package/build/index.js +34 -4
- package/build/playwright/blueprintDigest.js +28 -7
- package/build/playwright/registerPlaywrightTools.js +33 -28
- package/build/playwright/traceRecordingPrompt.js +9 -2
- package/build/prompts/code-reuse.js +95 -29
- package/build/prompts/fix-error-prompt.d.ts +9 -1
- package/build/prompts/fix-error-prompt.js +31 -28
- package/build/prompts/local-dev/local-dev-plan.d.ts +3 -0
- package/build/prompts/local-dev/local-dev-plan.js +3 -1
- package/build/prompts/local-dev/local-dev-prompts.d.ts +1 -1
- package/build/prompts/local-dev/local-dev-prompts.js +30 -3
- package/build/prompts/modularization/integration-test-modularization.js +13 -6
- package/build/prompts/modularization/ui-test-modularization.js +1 -1
- package/build/prompts/personas.js +1 -1
- package/build/prompts/pom-aware-code-reuse.js +7 -9
- package/build/prompts/reuse-hand-off.d.ts +64 -0
- package/build/prompts/reuse-hand-off.js +130 -0
- package/build/prompts/shared-helper-policy.d.ts +88 -2
- package/build/prompts/shared-helper-policy.js +145 -11
- package/build/prompts/sut-setup/modes/adaptWorkflowPrompt.js +1 -1
- package/build/prompts/sut-setup/modes/dockerComposePrompt.js +1 -1
- package/build/prompts/sut-setup/shared.d.ts +4 -1
- package/build/prompts/sut-setup/shared.js +2 -2
- package/build/prompts/test-maintenance/actionsInstructions.d.ts +19 -11
- package/build/prompts/test-maintenance/actionsInstructions.js +47 -26
- package/build/prompts/test-maintenance/drift-analysis-prompt.js +3 -2
- package/build/prompts/test-maintenance/driftAnalysisSections.js +5 -3
- package/build/prompts/test-maintenance/driftAnalysisShared.js +4 -2
- package/build/prompts/test-maintenance/uiDriftAnalysisSections.js +7 -4
- package/build/prompts/test-recommendation/recommendationSections.js +19 -8
- package/build/prompts/test-recommendation/registerRecommendTestsPrompt.js +5 -2
- package/build/prompts/test-recommendation/test-recommendation-prompt.js +10 -7
- package/build/prompts/testbot/testbot-prompts.js +123 -55
- package/build/recommendation/answers.js +18 -9
- package/build/recommendation/pullRequestText.js +1 -1
- package/build/recommendation/registerPlan.js +31 -17
- package/build/recommendation/subjectStep.d.ts +8 -10
- package/build/recommendation/subjectStep.js +17 -16
- package/build/recommendation/types.d.ts +71 -17
- package/build/recommendation/types.js +9 -15
- package/build/recommendation/verifierContracts.d.ts +7 -3
- package/build/recommendation/verifierContracts.js +8 -4
- package/build/recommendation/verifiers/changedFile.js +11 -13
- package/build/recommendation/verifiers/citedPath.d.ts +8 -0
- package/build/recommendation/verifiers/citedPath.js +16 -2
- package/build/recommendation/verifiers/coverage.d.ts +2 -2
- package/build/recommendation/verifiers/coverage.js +190 -134
- package/build/recommendation/verifiers/defects.js +56 -16
- package/build/recommendation/verifiers/deliveredMatchesPlan.d.ts +7 -1
- package/build/recommendation/verifiers/deliveredMatchesPlan.js +28 -14
- package/build/recommendation/verifiers/endpointGrounded.js +14 -8
- package/build/recommendation/verifiers/existingCoverage.d.ts +6 -0
- package/build/recommendation/verifiers/existingCoverage.js +30 -21
- package/build/recommendation/verifiers/expectedOutcome.js +17 -8
- package/build/recommendation/verifiers/expectedValueSourced.js +54 -43
- package/build/recommendation/verifiers/issueTraceability.d.ts +5 -0
- package/build/recommendation/verifiers/issueTraceability.js +64 -7
- package/build/recommendation/verifiers/removedElementGuarded.js +19 -11
- package/build/recommendation/verifiers/reportedCategory.js +9 -4
- package/build/recommendation/verifiers/requirementSourced.js +34 -21
- package/build/recommendation/verifiers/screenRoute.js +15 -10
- package/build/recommendation/verifiers/statedDifference.js +15 -8
- package/build/recommendation/verifiers/uiElementGrounded.js +50 -16
- package/build/resources/analysisResources.js +7 -3
- package/build/resources/progressResource.js +4 -2
- package/build/resources/sutSetupResource.js +20 -2
- package/build/resources/testbotResource.js +19 -1
- package/build/services/AnalyticsService.js +3 -1
- package/build/services/ScenarioGenerationService.js +5 -5
- package/build/services/TestDiscoveryService.js +21 -5
- package/build/services/TestExecutionService.js +63 -21
- package/build/services/TestGenerationService.d.ts +1 -1
- package/build/services/TestGenerationService.js +43 -24
- package/build/skills/enhanceAssertionsSkill.d.ts +45 -0
- package/build/skills/enhanceAssertionsSkill.js +103 -0
- package/build/skills/fixTestImportErrorsSkill.d.ts +2 -2
- package/build/skills/fixTestImportErrorsSkill.js +2 -2
- package/build/skills/skillFiles.d.ts +38 -0
- package/build/skills/skillFiles.js +94 -0
- package/build/skills/validateAssertionAlignmentSkill.d.ts +34 -0
- package/build/skills/validateAssertionAlignmentSkill.js +59 -0
- package/build/tool-phases.js +4 -0
- package/build/tools/auth/loginTool.js +3 -1
- package/build/tools/auth/logoutTool.js +3 -1
- package/build/tools/code-refactor/alignAssertionsTool.d.ts +2 -0
- package/build/tools/code-refactor/alignAssertionsTool.js +51 -0
- package/build/tools/code-refactor/assertion-state.d.ts +1 -1
- package/build/tools/code-refactor/assertion-state.js +1 -1
- package/build/tools/code-refactor/assertionOperations.d.ts +44 -0
- package/build/tools/code-refactor/assertionOperations.js +82 -0
- package/build/tools/code-refactor/assertionSkillTools.d.ts +3 -0
- package/build/tools/code-refactor/assertionSkillTools.js +86 -0
- package/build/tools/code-refactor/codeReuseTool.js +27 -3
- package/build/tools/code-refactor/enhanceAssertionsTool.js +19 -83
- package/build/tools/code-refactor/gate-markers.d.ts +51 -0
- package/build/tools/code-refactor/gate-markers.js +95 -0
- package/build/tools/code-refactor/retrofit-state.d.ts +3 -1
- package/build/tools/code-refactor/retrofit-state.js +44 -2
- package/build/tools/code-refactor/reuse-outcome.d.ts +23 -1
- package/build/tools/code-refactor/reuse-outcome.js +36 -13
- package/build/tools/code-refactor/reuse-state.d.ts +90 -16
- package/build/tools/code-refactor/reuse-state.js +191 -61
- package/build/tools/code-refactor/utils-verify-gates.d.ts +4 -0
- package/build/tools/code-refactor/utils-verify-gates.js +252 -27
- package/build/tools/code-refactor/verify-gates.d.ts +15 -1
- package/build/tools/code-refactor/verify-gates.js +36 -4
- package/build/tools/enrichTestWithMocksTool.d.ts +1 -1
- package/build/tools/enrichTestWithMocksTool.js +9 -5
- package/build/tools/executeSkyrampTestTool.d.ts +22 -1
- package/build/tools/executeSkyrampTestTool.js +571 -271
- package/build/tools/execution-video-state.js +1 -1
- package/build/tools/fixErrorTool.js +5 -6
- package/build/tools/generate-tests/batchMockGenerationTool.js +1 -1
- package/build/tools/generate-tests/generateBatchScenarioRestTool.js +114 -73
- package/build/tools/generate-tests/generateContractRestTool.js +34 -16
- package/build/tools/generate-tests/generateE2ERestTool.d.ts +1 -0
- package/build/tools/generate-tests/generateE2ERestTool.js +9 -1
- package/build/tools/generate-tests/generateIntegrationRestTool.js +22 -7
- package/build/tools/generate-tests/generateMockRestTool.js +3 -1
- package/build/tools/generate-tests/generateUIRestTool.d.ts +2 -0
- package/build/tools/generate-tests/generateUIRestTool.js +11 -2
- package/build/tools/generate-tests/loadTestSchema.js +1 -3
- package/build/tools/generate-tests/planGuard.js +6 -3
- package/build/tools/generate-tests/scenarioFileIdentity.js +4 -1
- package/build/tools/generate-tests/scenarioLint.js +17 -5
- package/build/tools/generate-tests/trace-reuse-guard.js +5 -2
- package/build/tools/generateEnrichedIntegrationTestTool.js +9 -3
- package/build/tools/one-click/oneClickTool.js +3 -1
- package/build/tools/preflightMockCheckTool.js +23 -7
- package/build/tools/runExistingTestsTool.d.ts +1 -1
- package/build/tools/runExistingTestsTool.js +43 -21
- package/build/tools/submitReportTool.d.ts +51 -12
- package/build/tools/submitReportTool.js +860 -161
- package/build/tools/test-management/actionsTool.js +210 -51
- package/build/tools/test-management/analyzeChangesTool.d.ts +4 -5
- package/build/tools/test-management/analyzeChangesTool.js +127 -68
- package/build/tools/test-management/analyzeTestHealthTool.js +35 -13
- package/build/tools/test-management/registerTestPlanTool.d.ts +44 -34
- package/build/tools/test-management/registerTestPlanTool.js +255 -111
- package/build/tools/test-management/resolveScreenTool.js +33 -9
- package/build/tools/trace/startTraceCollectionTool.js +3 -1
- package/build/tools/trace/stopTraceCollectionTool.js +41 -5
- package/build/tools/verifyTestDependenciesTool.d.ts +3 -0
- package/build/tools/verifyTestDependenciesTool.js +54 -0
- package/build/tools/workspace/initScanWorkspaceTool.js +9 -3
- package/build/tools/workspace/initializeWorkspaceTool.js +3 -1
- package/build/types/AssertionOutcome.d.ts +1 -1
- package/build/types/EnhanceType.d.ts +6 -0
- package/build/types/EnhanceType.js +1 -0
- package/build/types/ExternalTestExecution.d.ts +2 -2
- package/build/types/RepositoryAnalysis.d.ts +0 -40
- package/build/types/ReuseOutcome.d.ts +96 -4
- package/build/types/ReuseOutcome.js +16 -0
- package/build/types/StepMethod.js +20 -6
- package/build/types/TestAnalysis.d.ts +10 -2
- package/build/types/TestExecution.d.ts +45 -0
- package/build/types/TestRecommendation.d.ts +1 -1
- package/build/types/TestRecommendation.js +4 -1
- package/build/types/TestTypes.d.ts +13 -0
- package/build/types/TestTypes.js +34 -3
- package/build/types/TestbotPromptOptions.d.ts +9 -1
- package/build/types/TestbotReport.d.ts +45 -9
- package/build/utils/AnalysisStateManager.d.ts +137 -27
- package/build/utils/AnalysisStateManager.js +227 -43
- package/build/utils/assertion-verify/api-shared-lints.js +34 -16
- package/build/utils/assertion-verify/metrics.js +39 -6
- package/build/utils/assertion-verify/ui-lints.js +4 -2
- package/build/utils/branchDiff.js +47 -12
- package/build/utils/canonicalJson.js +3 -1
- package/build/utils/dartRouteExtractor.js +36 -7
- package/build/utils/fixAttempts.d.ts +26 -0
- package/build/utils/fixAttempts.js +109 -0
- package/build/utils/frontendSelectors.js +23 -4
- package/build/utils/generatedTestRecord.d.ts +19 -0
- package/build/utils/generatedTestRecord.js +61 -0
- package/build/utils/gitStaging.js +7 -2
- package/build/utils/initAgent.js +26 -6
- package/build/utils/language-helper.js +39 -45
- package/build/utils/pathMatching.js +2 -1
- package/build/utils/pathSignatures.js +6 -2
- package/build/utils/planMatchKeys.d.ts +2 -2
- package/build/utils/planMatchKeys.js +20 -14
- package/build/utils/pom-catalog-parse.js +7 -2
- package/build/utils/pom-scope/import-expansion.js +6 -1
- package/build/utils/pom-scope/index.js +50 -12
- package/build/utils/pom-scope/scoring.js +13 -3
- package/build/utils/pom-scope/selector-extractor.js +16 -3
- package/build/utils/pom-scope/strip.d.ts +8 -0
- package/build/utils/pom-scope/strip.js +238 -0
- package/build/utils/pom-scope/testIdDiscovery.js +14 -2
- package/build/utils/pom-verify/__fixtures__/af-style/asset-list.page.d.ts +1 -1
- package/build/utils/pom-verify/__fixtures__/af-style/asset-list.page.js +4 -2
- package/build/utils/pom-verify/__fixtures__/af-style/report.iframe.page.js +3 -1
- package/build/utils/pom-verify/__fixtures__/af-style/workflow-footer.page.js +3 -1
- package/build/utils/pom-verify/bindings.js +5 -1
- package/build/utils/pom-verify/calls.js +9 -2
- package/build/utils/pom-verify/verify.js +27 -5
- package/build/utils/pr-comment-parser.js +20 -7
- package/build/utils/proxy-terminal.d.ts +19 -1
- package/build/utils/proxy-terminal.js +346 -21
- package/build/utils/removedUiElements.js +1 -1
- package/build/utils/reportLanguage.js +35 -7
- package/build/utils/reportVerification.d.ts +14 -8
- package/build/utils/reportVerification.js +19 -19
- package/build/utils/repositorySlug.d.ts +32 -0
- package/build/utils/repositorySlug.js +77 -0
- package/build/utils/reuseRouting.js +6 -2
- package/build/utils/runSerialized.d.ts +3 -0
- package/build/utils/runSerialized.js +39 -0
- package/build/utils/screenRoutes.js +74 -18
- package/build/utils/sourceRouteExtractor.js +13 -6
- package/build/utils/telemetry.d.ts +1 -0
- package/build/utils/telemetry.js +8 -5
- package/build/utils/testDependencyPolicy.d.ts +9 -0
- package/build/utils/testDependencyPolicy.js +788 -0
- package/build/utils/testExecutionRecord.d.ts +90 -0
- package/build/utils/testExecutionRecord.js +267 -0
- package/build/utils/testFileClassification.js +3 -1
- package/build/utils/trace-parser.js +62 -14
- package/build/utils/urlPath.js +3 -1
- package/build/utils/utils-verify/action-key.d.ts +4 -0
- package/build/utils/utils-verify/action-key.js +2 -2
- package/build/utils/utils-verify/allow.d.ts +122 -3
- package/build/utils/utils-verify/allow.js +146 -21
- package/build/utils/utils-verify/body-reach.d.ts +120 -0
- package/build/utils/utils-verify/body-reach.js +335 -0
- package/build/utils/utils-verify/call-sites.d.ts +6 -1
- package/build/utils/utils-verify/call-sites.js +72 -8
- package/build/utils/utils-verify/delivered-imports.d.ts +43 -0
- package/build/utils/utils-verify/delivered-imports.js +84 -0
- package/build/utils/utils-verify/fixed-sleep.d.ts +96 -0
- package/build/utils/utils-verify/fixed-sleep.js +461 -0
- package/build/utils/utils-verify/in-house.d.ts +93 -0
- package/build/utils/utils-verify/in-house.js +719 -0
- package/build/utils/utils-verify/incumbent.d.ts +3 -0
- package/build/utils/utils-verify/incumbent.js +75 -0
- package/build/utils/utils-verify/index.d.ts +1 -0
- package/build/utils/utils-verify/index.js +1 -0
- package/build/utils/utils-verify/language-spec.d.ts +26 -10
- package/build/utils/utils-verify/language-spec.js +217 -20
- package/build/utils/utils-verify/locate.d.ts +26 -0
- package/build/utils/utils-verify/locate.js +125 -23
- package/build/utils/utils-verify/module-name.d.ts +40 -0
- package/build/utils/utils-verify/module-name.js +98 -0
- package/build/utils/utils-verify/parse.d.ts +46 -6
- package/build/utils/utils-verify/parse.js +176 -38
- package/build/utils/utils-verify/retrofit-equivalence.d.ts +5 -0
- package/build/utils/utils-verify/retrofit-equivalence.js +4 -2
- package/build/utils/utils-verify/stage.d.ts +5 -0
- package/build/utils/utils-verify/stage.js +47 -2
- package/build/utils/utils-verify/status-once.d.ts +62 -0
- package/build/utils/utils-verify/status-once.js +207 -0
- package/build/utils/utils-verify/typecheck.d.ts +61 -0
- package/build/utils/utils-verify/typecheck.js +338 -0
- package/build/utils/utils-verify/verify.d.ts +76 -1
- package/build/utils/utils-verify/verify.js +516 -44
- package/build/utils/versions.d.ts +3 -3
- package/build/utils/versions.js +1 -1
- package/build/utils/workspaceAuth.js +107 -37
- package/build/workspace/queryParamResolution.js +11 -4
- package/build/workspace/workspace.js +7 -7
- package/node_modules/playwright/ThirdPartyNotices.txt +19 -19
- package/node_modules/playwright/lib/mcp/skyramp/assertTool.js +8 -2
- package/node_modules/playwright/lib/mcp/skyramp/common/cssValue.js +87 -0
- package/node_modules/playwright/lib/mcp/skyramp/loadTraceTool.js +31 -0
- package/node_modules/playwright/lib/mcp/skyramp/skyRampImport.js +3 -0
- package/node_modules/playwright/lib/mcp/skyramp/traceRecordingBackend.js +181 -15
- package/node_modules/playwright/lib/mcp/test/skyRampExport.js +24 -0
- package/node_modules/playwright/lib/transform/babelBundleImpl.js +2353 -190
- package/node_modules/playwright/node_modules/playwright-core/ThirdPartyNotices.txt +62 -34
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/.package-lock.json +72 -41
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/@hono/node-server/dist/serve-static.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/@hono/node-server/dist/serve-static.mjs +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/@hono/node-server/package.json +2 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/README.md +16 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/index.js +4 -20
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/read.js +17 -17
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/json.js +60 -32
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/raw.js +3 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/text.js +3 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/urlencoded.js +16 -20
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/utils.js +18 -16
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/LICENSE +22 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/README.md +71 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/dist/index.d.ts +46 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/dist/index.js +176 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/dist/index.js.map +1 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/package.json +52 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/package.json +23 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/CHANGELOG.md +21 -14
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/isObject.d.ts +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/package.json +6 -7
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/tsconfig.json +1 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/index.js +266 -45
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/lib/schemes.js +9 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/lib/utils.js +396 -92
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/package.json +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/component-safe-serialization.test.js +163 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/equal.test.js +31 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/fixtures/uri-js-parse.json +2 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/ipv6-canonical.test.js +34 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/ipv6-validation.test.js +124 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/malformed-percent.test.js +77 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/malformed-urn.test.js +61 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/parse.test.js +7 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/query-fragment-normalization.test.js +33 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/reserved-path-normalization.test.js +109 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/scheme-validation.test.js +124 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/security-normalization.test.js +101 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/security.test.js +301 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/urn-full-input.test.js +29 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/websocket-query-preservation.test.js +24 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hasown/CHANGELOG.md +7 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hasown/index.d.ts +0 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hasown/package.json +4 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/client/client.js +30 -16
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/client/utils.js +4 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/context.js +32 -13
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/accepts/accepts.js +36 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/proxy/index.js +4 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/ssg/ssg.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/ssg/utils.js +30 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/streaming/sse.js +5 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/hono-base.js +10 -8
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/base.js +44 -23
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/components.js +25 -26
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/context.js +5 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/dom/render.js +2 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/dom/server.js +5 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/hooks/index.js +16 -13
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/intrinsic-element/components.js +3 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/streaming.js +4 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/cache/index.js +103 -8
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/compress/index.js +5 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/cors/index.js +17 -14
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/csrf/index.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/etag/digest.js +47 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/etag/index.js +7 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/jwk/jwk.js +9 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/jwt/jwt.js +9 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/language/language.js +10 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/method-not-allowed/index.js +90 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/pretty-json/index.js +3 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/secure-headers/secure-headers.js +16 -7
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/request.js +20 -13
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/linear-router/router.js +7 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/pattern-router/router.js +3 -9
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +65 -59
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +71 -128
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +14 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/trie-router/node.js +47 -70
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/trie-router/router.js +3 -11
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/utils.js +27 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/accept.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/body.js +21 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/cookie.js +4 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/ipaddr.js +5 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/stream.js +12 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/url.js +19 -11
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/client/client.js +30 -16
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/client/utils.js +4 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/context.js +32 -13
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/accepts/accepts.js +36 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/proxy/index.js +4 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/ssg/ssg.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/ssg/utils.js +30 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/streaming/sse.js +5 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/hono-base.js +10 -8
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/base.js +41 -23
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/components.js +26 -27
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/context.js +6 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/dom/render.js +2 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/dom/server.js +5 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/hooks/index.js +16 -13
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/intrinsic-element/components.js +4 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/streaming.js +5 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/cache/index.js +103 -8
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/compress/index.js +5 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/cors/index.js +17 -14
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/csrf/index.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/etag/digest.js +47 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/etag/index.js +7 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/jwk/jwk.js +9 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/jwt/jwt.js +9 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/language/language.js +10 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/method-not-allowed/index.js +68 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/pretty-json/index.js +3 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/secure-headers/secure-headers.js +16 -7
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/request.js +21 -14
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/linear-router/router.js +7 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/pattern-router/router.js +3 -9
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/reg-exp-router/node.js +61 -58
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/reg-exp-router/router.js +77 -129
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/reg-exp-router/trie.js +14 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/trie-router/node.js +47 -70
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/trie-router/router.js +3 -11
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/utils.js +5 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/adapter/aws-lambda/types.d.ts +9 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/client/types.d.ts +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/context.d.ts +6 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/hono-base.d.ts +4 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/base.d.ts +7 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/dom/index.d.ts +5 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/dom/intrinsic-element/components.d.ts +2 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/dom/server.d.ts +5 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/hooks/index.d.ts +8 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/index.d.ts +5 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/cache/index.d.ts +6 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/combine/index.d.ts +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/cors/index.d.ts +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/jsx-renderer/index.d.ts +2 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/jwk/jwk.d.ts +2 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/jwt/jwt.d.ts +2 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/method-not-allowed/index.d.ts +49 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/secure-headers/permissions-policy.d.ts +3 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +4 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/reg-exp-router/trie.d.ts +2 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/trie-router/node.d.ts +1 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/trie-router/router.d.ts +0 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/utils.d.ts +1 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router.d.ts +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/utils/headers.d.ts +2 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/utils/url.d.ts +5 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/accept.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/body.js +21 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/cookie.js +5 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/ipaddr.js +5 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/stream.js +12 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/url.js +17 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/package.json +11 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/README.md +173 -143
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/address-error.d.ts +11 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/address-error.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/common.d.ts +49 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/common.js +79 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/common.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv4.d.ts +78 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv4.js +119 -24
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv4.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv6.d.ts +151 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv6.js +316 -90
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv6.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v4/constants.d.ts +12 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v4/constants.js +45 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v4/constants.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v6/constants.d.ts +14 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v6/constants.js +50 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v6/constants.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/package.json +6 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/.github/THREAT_MODEL.md +3 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/CHANGELOG.md +26 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/README.md +19 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/dist/qs.js +25 -25
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/eslint.config.mjs +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/lib/parse.js +16 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/lib/stringify.js +23 -8
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/lib/utils.js +57 -11
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/package.json +8 -7
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/test/parse.js +419 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/test/stringify.js +317 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/test/utils.js +206 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/CHANGELOG.md +10 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/README.md +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/index.js +5 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/package.json +10 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/test/index.js +16 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/index.js +8 -18
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/LICENSE +22 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/README.md +71 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/dist/index.d.ts +46 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/dist/index.js +176 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/dist/index.js.map +1 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/package.json +52 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/package.json +9 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/package-lock.json +72 -41
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/.package-lock.json +6 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/brace-expansion/README.md +23 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/brace-expansion/index.js +265 -86
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/brace-expansion/package.json +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/README.md +173 -143
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/address-error.d.ts +11 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/address-error.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/common.d.ts +49 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/common.js +79 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/common.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv4.d.ts +78 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv4.js +119 -24
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv4.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv6.d.ts +151 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv6.js +316 -90
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv6.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v4/constants.d.ts +12 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v4/constants.js +45 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v4/constants.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v6/constants.d.ts +14 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v6/constants.js +50 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v6/constants.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/package.json +6 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/package-lock.json +6 -6
- package/node_modules/playwright/node_modules/playwright-core/lib/cli/program.js +18 -9
- package/node_modules/playwright/node_modules/playwright-core/lib/mcpBundleImpl/index.js +47 -47
- package/node_modules/playwright/node_modules/playwright-core/lib/server/codegen/skyramp/jsonlReader.js +3 -0
- package/node_modules/playwright/node_modules/playwright-core/lib/server/recorder/recorderRunner.js +42 -0
- package/node_modules/playwright/node_modules/playwright-core/lib/utilsBundleImpl/index.js +121 -121
- package/node_modules/playwright/node_modules/playwright-core/lib/vite/traceViewer/{index.B7KbSQcC.js → index.BAkLd5DX.js} +1 -1
- package/node_modules/playwright/node_modules/playwright-core/lib/vite/traceViewer/index.html +1 -1
- package/node_modules/playwright/node_modules/playwright-core/package.json +1 -1
- package/node_modules/playwright/node_modules/playwright-core/src/cli/program.ts +31 -9
- package/node_modules/playwright/node_modules/playwright-core/src/server/codegen/skyramp/jsonlReader.ts +1 -0
- package/node_modules/playwright/node_modules/playwright-core/src/server/recorder/recorderRunner.ts +57 -1
- package/node_modules/playwright/package.json +2 -2
- package/package.json +7 -6
- package/plugin/prompts/code-reuse/hand-off.md +30 -0
- package/plugin/prompts/generate-tests/generation.md +1 -1
- package/plugin/prompts/plan-tests.md +14 -14
- package/plugin/prompts/testbot-task1.md +4 -2
- package/plugin/skills/enhance-assertions/SKILL.md +25 -0
- package/plugin/skills/enhance-assertions/reference/contract.md +51 -0
- package/plugin/skills/enhance-assertions/reference/integration.md +58 -0
- package/plugin/skills/enhance-assertions/reference/shared-rules.md +220 -0
- package/plugin/skills/enhance-assertions/reference/ui.md +373 -0
- package/plugin/skills/fix-test-import-errors/SKILL.md +44 -50
- package/plugin/skills/validate-assertion-alignment-post-execution/SKILL.md +32 -0
- package/plugin/skills/validate-assertion-alignment-post-execution/reference/checks.md +44 -0
- package/plugin/skills/validate-assertion-alignment-post-execution/reference/evidence.md +47 -0
- package/build/prompts/enhance-assertions/contractProviderAssertionsPrompt.d.ts +0 -2
- package/build/prompts/enhance-assertions/contractProviderAssertionsPrompt.js +0 -29
- package/build/prompts/enhance-assertions/integrationAssertionsPrompt.d.ts +0 -2
- package/build/prompts/enhance-assertions/integrationAssertionsPrompt.js +0 -36
- package/build/prompts/enhance-assertions/sharedAssertionRules.d.ts +0 -16
- package/build/prompts/enhance-assertions/sharedAssertionRules.js +0 -284
- package/build/prompts/enhance-assertions/uiAssertionsPrompt.d.ts +0 -2
- package/build/prompts/enhance-assertions/uiAssertionsPrompt.js +0 -388
- package/node_modules/playwright/node_modules/playwright-core/.DS_Store +0 -0
|
@@ -1,27 +1,29 @@
|
|
|
1
1
|
import { normalizeCategory } from "../../types/TestRecommendation.js";
|
|
2
|
+
import { maintainedFileIsInItsRepository } from "./citedPath.js";
|
|
2
3
|
import { DEFECTS_CONTRACT } from "../verifierContracts.js";
|
|
3
4
|
/** A defect id as the plan spells it: trimmed, and exact otherwise. */
|
|
4
5
|
function idKey(raw) {
|
|
5
|
-
return
|
|
6
|
+
return raw.trim();
|
|
6
7
|
}
|
|
7
|
-
/** The defect ids one planned test cites, trimmed and without repeats.
|
|
8
|
-
* defensively: the plan comes off disk, so the array type holds only on the
|
|
9
|
-
* validated path, and a throw here would hide every other objection. */
|
|
8
|
+
/** The defect ids one planned test cites, trimmed and without repeats. */
|
|
10
9
|
function citedDefects(plannedTest) {
|
|
11
|
-
const declared = plannedTest
|
|
12
|
-
if (!Array.isArray(declared))
|
|
13
|
-
return [];
|
|
10
|
+
const declared = plannedTest.declarations.defects ?? [];
|
|
14
11
|
return [...new Set(declared.map(idKey))].filter(Boolean);
|
|
15
12
|
}
|
|
13
|
+
/** The defect ids one maintenance entry proves, trimmed and without repeats. The
|
|
14
|
+
* schema requires the list, so it is always an array. */
|
|
15
|
+
function maintainedDefects(entry) {
|
|
16
|
+
return [...new Set(entry.defects.map(idKey))].filter(Boolean);
|
|
17
|
+
}
|
|
16
18
|
/** Whether a planned test expects to fail. Undeclared reads as not failing: a test
|
|
17
19
|
* that says nothing about its outcome proves nothing about a defect either. */
|
|
18
20
|
function expectsToFail(plannedTest) {
|
|
19
|
-
return plannedTest
|
|
21
|
+
return plannedTest.declarations.expected?.outcome === "fail";
|
|
20
22
|
}
|
|
21
23
|
/** Where the defect sits, as the objection quotes it. */
|
|
22
24
|
function locate(defect) {
|
|
23
|
-
const file = String(defect
|
|
24
|
-
return typeof defect
|
|
25
|
+
const file = String(defect.file ?? "").trim() || "no file";
|
|
26
|
+
return typeof defect.line === "number" ? `${file}:${defect.line}` : file;
|
|
25
27
|
}
|
|
26
28
|
/** Every declared defect needs one planned test that cites it and expects to fail,
|
|
27
29
|
* or an answer. Read off the PLAN alone, like the behaviour half of coverage: the
|
|
@@ -32,9 +34,19 @@ function locate(defect) {
|
|
|
32
34
|
* `issuesFound`, which exists at report time, after every test is generated. */
|
|
33
35
|
export const defects = {
|
|
34
36
|
name: "defects",
|
|
35
|
-
run(registration,
|
|
36
|
-
const declared =
|
|
37
|
-
const plannedTests = registration.plannedTests
|
|
37
|
+
run(registration, ctx) {
|
|
38
|
+
const declared = registration.defects.filter((defect) => idKey(defect.id).length > 0);
|
|
39
|
+
const plannedTests = registration.plannedTests;
|
|
40
|
+
const maintains = registration.maintains ?? [];
|
|
41
|
+
// The defects the run proves by editing an existing test instead of planning a
|
|
42
|
+
// new one. Only from an entry whose file is in the repository it names.
|
|
43
|
+
const maintainedProof = new Set();
|
|
44
|
+
for (const entry of maintains) {
|
|
45
|
+
if (!maintainedFileIsInItsRepository(entry, ctx))
|
|
46
|
+
continue;
|
|
47
|
+
for (const id of maintainedDefects(entry))
|
|
48
|
+
maintainedProof.add(id);
|
|
49
|
+
}
|
|
38
50
|
const objections = [];
|
|
39
51
|
// An empty list is its own objection and NOT an early return: a plan that
|
|
40
52
|
// declares nothing can still cite `D1` from a planned test, and that citation
|
|
@@ -57,6 +69,10 @@ export const defects = {
|
|
|
57
69
|
continue;
|
|
58
70
|
seen.add(id);
|
|
59
71
|
const citing = plannedTests.filter((plannedTest) => citedDefects(plannedTest).includes(id));
|
|
72
|
+
// A maintained spec is green after its edit, so the outcome rule below is for
|
|
73
|
+
// planned tests alone.
|
|
74
|
+
if (citing.length === 0 && maintainedProof.has(id))
|
|
75
|
+
continue;
|
|
60
76
|
if (citing.length === 0) {
|
|
61
77
|
objections.push({
|
|
62
78
|
// Keyed on the defect's id, not its position: the agent reorders the
|
|
@@ -95,18 +111,42 @@ export const defects = {
|
|
|
95
111
|
});
|
|
96
112
|
}
|
|
97
113
|
}
|
|
114
|
+
// The maintenance mirror of `unknownId`, keyed on the file: two entries may name
|
|
115
|
+
// one file, and the agent answers a file once.
|
|
116
|
+
const unknownByFile = new Map();
|
|
117
|
+
for (const entry of maintains) {
|
|
118
|
+
const key = idKey(entry.file) || "unnamed";
|
|
119
|
+
for (const id of maintainedDefects(entry)) {
|
|
120
|
+
if (known.has(id))
|
|
121
|
+
continue;
|
|
122
|
+
const unknown = unknownByFile.get(key) ?? [];
|
|
123
|
+
if (!unknown.includes(id))
|
|
124
|
+
unknown.push(id);
|
|
125
|
+
unknownByFile.set(key, unknown);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
for (const [key, unknown] of unknownByFile) {
|
|
129
|
+
objections.push({
|
|
130
|
+
objectionId: `defects:maintains:unknownDefect:${key}`,
|
|
131
|
+
verifier: "defects",
|
|
132
|
+
message: DEFECTS_CONTRACT.objections.maintainedUnknownDefect.message,
|
|
133
|
+
evidence: `${key === "unnamed" ? "an unnamed `maintains` entry" : key} cites ${unknown.map((id) => `"${id}"`).join(", ")}; this plan declares ${known.size > 0 ? [...known].map((declaredId) => `"${declaredId}"`).join(", ") : "no defects"}.`,
|
|
134
|
+
suggestion: DEFECTS_CONTRACT.objections.maintainedUnknownDefect.suggestion,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
98
137
|
// A requirement the code does not meet is a defect, and that defect's `file` is
|
|
99
138
|
// the code that contradicts the requirement.
|
|
100
139
|
for (const plannedTest of plannedTests) {
|
|
101
|
-
if (normalizeCategory(plannedTest
|
|
140
|
+
if (normalizeCategory(plannedTest.scenario.category) !==
|
|
141
|
+
"requirement_conflict")
|
|
102
142
|
continue;
|
|
103
143
|
if (citedDefects(plannedTest).length > 0)
|
|
104
144
|
continue;
|
|
105
|
-
const plannedTestId = idKey(plannedTest
|
|
145
|
+
const plannedTestId = idKey(plannedTest.plannedTestId) || "plan";
|
|
106
146
|
objections.push({
|
|
107
147
|
objectionId: `defects:conflictWithoutDefect:${plannedTestId}`,
|
|
108
148
|
verifier: "defects",
|
|
109
|
-
plannedTestId: plannedTest
|
|
149
|
+
plannedTestId: plannedTest.plannedTestId,
|
|
110
150
|
message: DEFECTS_CONTRACT.objections.conflictWithoutDefect.message,
|
|
111
151
|
evidence: `${plannedTestId} is planned as \`requirement_conflict\` and cites no defect in \`defects\`.`,
|
|
112
152
|
suggestion: DEFECTS_CONTRACT.objections.conflictWithoutDefect.suggestion,
|
|
@@ -3,6 +3,10 @@ import { Plan } from "../registerPlan.js";
|
|
|
3
3
|
/** One test as it appears in the submitted report. */
|
|
4
4
|
export interface DeliveredTest {
|
|
5
5
|
plannedTestId: string;
|
|
6
|
+
/** The repo the REPORT attributes it to. Compared against the plan's: an id is
|
|
7
|
+
* unique within the plan, so a row reusing one under another repo would
|
|
8
|
+
* otherwise join and ship the wrong attribution. */
|
|
9
|
+
repository: string;
|
|
6
10
|
}
|
|
7
11
|
/** One maintenance row that LEFT COVERAGE BEHIND, as the report publishes it. The
|
|
8
12
|
* caller filters by action: a row this check is handed is one whose edit a later
|
|
@@ -17,7 +21,9 @@ export interface MaintainedTest {
|
|
|
17
21
|
/** Verifier 5, post-execution half. Both directions on one pass: a report entry
|
|
18
22
|
* that was in no plan, and a planned planned test that never shipped. The two lists
|
|
19
23
|
* join on `plannedTestId` exactly — never a name, an endpoint or a similarity
|
|
20
|
-
* score
|
|
24
|
+
* score — and the matched pair must agree on the repository, so a real id cannot
|
|
25
|
+
* carry a made-up repo through. Objections go to the report: the tests already
|
|
26
|
+
* exist. */
|
|
21
27
|
export declare function checkDeliveredMatchesPlan(plan: Plan, delivered: DeliveredTest[]): Objection[];
|
|
22
28
|
/** The maintenance mirror of "planned but not delivered". A `maintains` entry is
|
|
23
29
|
* what makes its changes count as covered, and until this ran nothing downstream
|
|
@@ -2,23 +2,37 @@ import { testFileMatches } from "../../utils/utils.js";
|
|
|
2
2
|
/** Verifier 5, post-execution half. Both directions on one pass: a report entry
|
|
3
3
|
* that was in no plan, and a planned planned test that never shipped. The two lists
|
|
4
4
|
* join on `plannedTestId` exactly — never a name, an endpoint or a similarity
|
|
5
|
-
* score
|
|
5
|
+
* score — and the matched pair must agree on the repository, so a real id cannot
|
|
6
|
+
* carry a made-up repo through. Objections go to the report: the tests already
|
|
7
|
+
* exist. */
|
|
6
8
|
export function checkDeliveredMatchesPlan(plan, delivered) {
|
|
7
|
-
const planned = new
|
|
8
|
-
const shipped = new
|
|
9
|
+
const planned = new Map(plan.plannedTests.map((c) => [c.plannedTestId, c.repository]));
|
|
10
|
+
const shipped = new Map(delivered.map((d) => [d.plannedTestId, d.repository]));
|
|
9
11
|
const objections = [];
|
|
10
|
-
for (const id of shipped) {
|
|
11
|
-
|
|
12
|
+
for (const [id, repository] of shipped) {
|
|
13
|
+
const plannedRepository = planned.get(id);
|
|
14
|
+
if (plannedRepository === undefined) {
|
|
15
|
+
objections.push({
|
|
16
|
+
objectionId: `deliveredMatchesPlan:${id}`,
|
|
17
|
+
verifier: "deliveredMatchesPlan",
|
|
18
|
+
message: "This test is in the report but was not in the plan. Every test written must be declared first.",
|
|
19
|
+
evidence: `delivered but unplanned: ${id}`,
|
|
20
|
+
suggestion: "Declare it in the plan and register it again, or take it out of the report.",
|
|
21
|
+
});
|
|
12
22
|
continue;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
23
|
+
}
|
|
24
|
+
if (plannedRepository !== repository) {
|
|
25
|
+
objections.push({
|
|
26
|
+
objectionId: `deliveredMatchesPlan:repository:${id}`,
|
|
27
|
+
verifier: "deliveredMatchesPlan",
|
|
28
|
+
plannedTestId: id,
|
|
29
|
+
message: "This test names one repository in the plan and another in the report. A test belongs to one repository.",
|
|
30
|
+
evidence: `planned under ${plannedRepository}, reported under ${repository}`,
|
|
31
|
+
suggestion: "Set the report entry's repository to the one the plan declared, or plan the test under the repository it was written for.",
|
|
32
|
+
});
|
|
33
|
+
}
|
|
20
34
|
}
|
|
21
|
-
for (const id of planned) {
|
|
35
|
+
for (const id of planned.keys()) {
|
|
22
36
|
if (shipped.has(id))
|
|
23
37
|
continue;
|
|
24
38
|
objections.push({
|
|
@@ -47,7 +61,7 @@ export function checkMaintenanceDelivered(plan, maintained) {
|
|
|
47
61
|
const claimed = Array.isArray(plan?.maintains) ? plan.maintains : [];
|
|
48
62
|
if (claimed.length === 0)
|
|
49
63
|
return [];
|
|
50
|
-
const text = (value) =>
|
|
64
|
+
const text = (value) => typeof value === "string" ? value.trim() : "";
|
|
51
65
|
const editedPaths = [];
|
|
52
66
|
for (const row of Array.isArray(maintained) ? maintained : []) {
|
|
53
67
|
for (const full of [text(row?.testFilePath), text(row?.pomFile)])
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { isUIPlannedTest } from "../subjectStep.js";
|
|
2
|
-
import { ENDPOINT_GROUNDED_CONTRACT } from "../verifierContracts.js";
|
|
2
|
+
import { ENDPOINT_GROUNDED_CONTRACT, } from "../verifierContracts.js";
|
|
3
3
|
import { isTestPath } from "../../utils/testFileClassification.js";
|
|
4
4
|
/** A path that leaves the checkout, in any of its spellings. Callers pass a
|
|
5
5
|
* trimmed path: " ../routes.rb" splits to [" ..", "routes.rb"], so no segment
|
|
6
6
|
* equals ".." and one leading space would carry it through. */
|
|
7
7
|
export function escapesRepo(file) {
|
|
8
8
|
// POSIX absolute, a Windows drive, a bare leading backslash, and a UNC share.
|
|
9
|
-
if (file.startsWith("/") ||
|
|
9
|
+
if (file.startsWith("/") ||
|
|
10
|
+
file.startsWith("\\") ||
|
|
11
|
+
/^[A-Za-z]:[\\/]/.test(file))
|
|
10
12
|
return true;
|
|
11
13
|
// A URL, which both citation describes promise is not a citation: `http://host/x`
|
|
12
14
|
// has no leading slash and no `..`, so without this it resolved against the
|
|
@@ -15,7 +17,9 @@ export function escapesRepo(file) {
|
|
|
15
17
|
const scheme = /^([A-Za-z][A-Za-z0-9+.-]*):([\s\S]*)$/.exec(file);
|
|
16
18
|
if (scheme) {
|
|
17
19
|
const [, name, rest] = scheme;
|
|
18
|
-
if (rest.startsWith("/") ||
|
|
20
|
+
if (rest.startsWith("/") ||
|
|
21
|
+
rest.includes("://") ||
|
|
22
|
+
/^(file|data|javascript|jar|blob)$/i.test(name))
|
|
19
23
|
return true;
|
|
20
24
|
}
|
|
21
25
|
return file.split(/[\\/]/).some((segment) => segment === "..");
|
|
@@ -70,20 +74,22 @@ export const endpointGrounded = {
|
|
|
70
74
|
for (const plannedTest of registration.plannedTests) {
|
|
71
75
|
if (isUIPlannedTest(plannedTest))
|
|
72
76
|
continue;
|
|
73
|
-
const evidence = plannedTest.declarations
|
|
77
|
+
const evidence = plannedTest.declarations.routes ?? [];
|
|
74
78
|
const ungrounded = [];
|
|
75
79
|
let uncited = 0;
|
|
76
80
|
let disqualified = 0;
|
|
77
|
-
for (const step of plannedTest.scenario
|
|
81
|
+
for (const step of plannedTest.scenario.steps) {
|
|
78
82
|
// A step naming no path calls nothing there is a file to cite for — a wait,
|
|
79
83
|
// a pause, a setup line. The verb is deliberately NOT read: requiring one
|
|
80
84
|
// made a Thrift or GraphQL call look like a click and skip this check.
|
|
81
|
-
if (!String(step
|
|
85
|
+
if (!String(step.path ?? "").trim())
|
|
82
86
|
continue;
|
|
83
|
-
const key = `${String(step
|
|
87
|
+
const key = `${String(step.method ?? "ANY").trim() || "ANY"} ${String(step.path).trim()}`;
|
|
84
88
|
// Named by the step's own `order`, so nothing here compares two spellings
|
|
85
89
|
// of one route. The number must be a number: a string `"2"` names no step.
|
|
86
|
-
|
|
90
|
+
// The number must be a number: a string `"2"` names no step, and `===`
|
|
91
|
+
// alone would read one as a match against a numeric `order`.
|
|
92
|
+
const cited = evidence.filter((e) => typeof e.step === "number" && e.step === step.order);
|
|
87
93
|
if (cited.length === 0) {
|
|
88
94
|
uncited += 1;
|
|
89
95
|
pushOnce(ungrounded, `${key} (no file cited)`);
|
|
@@ -3,4 +3,10 @@ import { Verifier } from "../types.js";
|
|
|
3
3
|
* checkout, and nothing more: deciding that one already covers the planned test came
|
|
4
4
|
* from route-parsed `METHOD::resource` keys, wrong in both directions. `differsBy`
|
|
5
5
|
* is recorded, never judged, and citing nothing raises nothing. */
|
|
6
|
+
/** The id plan time raises when a `maintains` entry's file does not resolve in the
|
|
7
|
+
* checkout, or when the entry names no file. Built here and read by report time,
|
|
8
|
+
* which has no `VerifyContext` and so cannot resolve a path itself: the presence
|
|
9
|
+
* of this objection IS the file verdict. Exported rather than spelled twice —
|
|
10
|
+
* `issueTraceability` looks it up per entry. */
|
|
11
|
+
export declare function maintainedFileObjectionId(file: unknown): string;
|
|
6
12
|
export declare const existingCoverage: Verifier;
|
|
@@ -4,20 +4,28 @@ import { EXISTING_COVERAGE_CONTRACT } from "../verifierContracts.js";
|
|
|
4
4
|
* checkout, and nothing more: deciding that one already covers the planned test came
|
|
5
5
|
* from route-parsed `METHOD::resource` keys, wrong in both directions. `differsBy`
|
|
6
6
|
* is recorded, never judged, and citing nothing raises nothing. */
|
|
7
|
+
/** The id plan time raises when a `maintains` entry's file does not resolve in the
|
|
8
|
+
* checkout, or when the entry names no file. Built here and read by report time,
|
|
9
|
+
* which has no `VerifyContext` and so cannot resolve a path itself: the presence
|
|
10
|
+
* of this objection IS the file verdict. Exported rather than spelled twice —
|
|
11
|
+
* `issueTraceability` looks it up per entry. */
|
|
12
|
+
export function maintainedFileObjectionId(file) {
|
|
13
|
+
const named = String(file ?? "").trim();
|
|
14
|
+
return `existingCoverage:maintains:${named || "unnamed"}`;
|
|
15
|
+
}
|
|
7
16
|
export const existingCoverage = {
|
|
8
17
|
name: "existingCoverage",
|
|
9
18
|
run(registration, ctx) {
|
|
10
19
|
const objections = [];
|
|
11
20
|
for (const plannedTest of registration.plannedTests) {
|
|
12
|
-
// The
|
|
13
|
-
//
|
|
14
|
-
|
|
15
|
-
const cited = plannedTest?.declarations?.existingTests;
|
|
21
|
+
// The field AND its entries: `crashContainment.test.ts` feeds `[null]`, and
|
|
22
|
+
// `existingCoverage.test.ts` feeds the field itself as `5` and as a string.
|
|
23
|
+
const cited = plannedTest.declarations.existingTests;
|
|
16
24
|
if (!Array.isArray(cited))
|
|
17
25
|
continue;
|
|
18
26
|
const unreadable = [];
|
|
19
27
|
for (const entry of cited) {
|
|
20
|
-
const file = String(entry
|
|
28
|
+
const file = String(entry.file ?? "").trim();
|
|
21
29
|
if (!file) {
|
|
22
30
|
pushOnce(unreadable, "an entry names no file");
|
|
23
31
|
continue;
|
|
@@ -28,8 +36,9 @@ export const existingCoverage = {
|
|
|
28
36
|
pushOnce(unreadable, `${file} (points outside the repository)`);
|
|
29
37
|
continue;
|
|
30
38
|
}
|
|
31
|
-
|
|
32
|
-
|
|
39
|
+
// The planned test's own repository: two repositories can hold the same path.
|
|
40
|
+
if (!ctx.citedFileExists(file, plannedTest.repository))
|
|
41
|
+
pushOnce(unreadable, `${file} (not found in ${plannedTest.repository})`);
|
|
33
42
|
}
|
|
34
43
|
if (unreadable.length === 0)
|
|
35
44
|
continue;
|
|
@@ -45,30 +54,28 @@ export const existingCoverage = {
|
|
|
45
54
|
// `maintains` is what makes a change covered by an edited test count in
|
|
46
55
|
// `coverage`, so the same file check applies to it, plus the change ids it
|
|
47
56
|
// cites: an id no `changes` entry declares would credit coverage for nothing.
|
|
48
|
-
const maintains =
|
|
49
|
-
const declaredChanges = new Set(
|
|
50
|
-
.map((change) => String(change?.id ?? "").trim())
|
|
51
|
-
.filter(Boolean));
|
|
57
|
+
const maintains = registration.maintains ?? [];
|
|
58
|
+
const declaredChanges = new Set(registration.changes.map((change) => change.id.trim()).filter(Boolean));
|
|
52
59
|
// Gathered per file BEFORE any objection is pushed: the schema allows two
|
|
53
60
|
// entries naming the same file, the objection id is keyed on the file so the
|
|
54
61
|
// agent answers a file once, and keying alone dropped the second entry's ids.
|
|
55
62
|
const missingByFile = new Map();
|
|
56
63
|
const unknownByFile = new Map();
|
|
57
64
|
for (const entry of maintains) {
|
|
58
|
-
const file =
|
|
65
|
+
const file = entry.file.trim();
|
|
59
66
|
const key = file || "unnamed";
|
|
60
67
|
const missing = !file
|
|
61
68
|
? "an entry names no file"
|
|
62
69
|
: escapesRepo(file)
|
|
63
70
|
? `${file} (points outside the repository)`
|
|
64
|
-
:
|
|
65
|
-
|
|
66
|
-
|
|
71
|
+
: // The repository the entry names, for the same reason.
|
|
72
|
+
!ctx.citedFileExists(file, entry.repository)
|
|
73
|
+
? `${file} (not found in ${entry.repository})`
|
|
74
|
+
: "";
|
|
67
75
|
if (missing && !missingByFile.has(key))
|
|
68
76
|
missingByFile.set(key, missing);
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
const id = String(raw ?? "").trim();
|
|
77
|
+
for (const raw of entry.changes) {
|
|
78
|
+
const id = raw.trim();
|
|
72
79
|
if (!id || declaredChanges.has(id))
|
|
73
80
|
continue;
|
|
74
81
|
const unknown = unknownByFile.get(key) ?? [];
|
|
@@ -79,11 +86,12 @@ export const existingCoverage = {
|
|
|
79
86
|
}
|
|
80
87
|
for (const [key, missing] of missingByFile) {
|
|
81
88
|
objections.push({
|
|
82
|
-
objectionId:
|
|
89
|
+
objectionId: maintainedFileObjectionId(key),
|
|
83
90
|
verifier: "existingCoverage",
|
|
84
91
|
message: EXISTING_COVERAGE_CONTRACT.objections.maintainedTestMissing.message,
|
|
85
92
|
evidence: `maintained test not in the checkout: ${missing}`,
|
|
86
|
-
suggestion: EXISTING_COVERAGE_CONTRACT.objections.maintainedTestMissing
|
|
93
|
+
suggestion: EXISTING_COVERAGE_CONTRACT.objections.maintainedTestMissing
|
|
94
|
+
.suggestion,
|
|
87
95
|
});
|
|
88
96
|
}
|
|
89
97
|
for (const [key, unknown] of unknownByFile) {
|
|
@@ -92,7 +100,8 @@ export const existingCoverage = {
|
|
|
92
100
|
verifier: "existingCoverage",
|
|
93
101
|
message: EXISTING_COVERAGE_CONTRACT.objections.maintainedUnknownChange.message,
|
|
94
102
|
evidence: `${key === "unnamed" ? "an unnamed entry" : key} cites ${unknown.map((id) => `"${id}"`).join(", ")}; this plan declares ${[...declaredChanges].map((id) => `"${id}"`).join(", ") || "no changes"}`,
|
|
95
|
-
suggestion: EXISTING_COVERAGE_CONTRACT.objections.maintainedUnknownChange
|
|
103
|
+
suggestion: EXISTING_COVERAGE_CONTRACT.objections.maintainedUnknownChange
|
|
104
|
+
.suggestion,
|
|
96
105
|
});
|
|
97
106
|
}
|
|
98
107
|
return objections;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { categoryExpectsRed } from "../../types/TestRecommendation.js";
|
|
2
|
-
import { fillPlaceholders, EXPECTED_OUTCOME_CONTRACT } from "../verifierContracts.js";
|
|
2
|
+
import { fillPlaceholders, EXPECTED_OUTCOME_CONTRACT, } from "../verifierContracts.js";
|
|
3
3
|
import { subjectStep } from "../subjectStep.js";
|
|
4
4
|
/** The severities that count as the run's own reported defect. */
|
|
5
5
|
const BLOCKER_FLOOR = ["critical", "high"];
|
|
@@ -11,7 +11,9 @@ function blockingIssue(plannedTest, issues) {
|
|
|
11
11
|
if (!path)
|
|
12
12
|
return undefined;
|
|
13
13
|
for (const issue of issues) {
|
|
14
|
-
if (!BLOCKER_FLOOR.includes(String(issue?.severity ?? "")
|
|
14
|
+
if (!BLOCKER_FLOOR.includes(String(issue?.severity ?? "")
|
|
15
|
+
.trim()
|
|
16
|
+
.toLowerCase()))
|
|
15
17
|
continue;
|
|
16
18
|
const description = String(issue?.description ?? "");
|
|
17
19
|
const sourceFile = String(issue?.sourceFile ?? "");
|
|
@@ -36,6 +38,8 @@ export function checkExpectedOutcomeAfterExecution(plan, results, issues = []) {
|
|
|
36
38
|
const result = byId.get(plannedTest.plannedTestId);
|
|
37
39
|
if (!result)
|
|
38
40
|
continue;
|
|
41
|
+
// The stored plan is not schema-validated. An entry with no `declarations`
|
|
42
|
+
// is skipped; a throw here would cost every entry after it as well.
|
|
39
43
|
const declared = plannedTest.declarations?.expected?.outcome;
|
|
40
44
|
if (declared === "fail" && result.passed) {
|
|
41
45
|
objections.push({
|
|
@@ -62,14 +66,18 @@ export function checkExpectedOutcomeAfterExecution(plan, results, issues = []) {
|
|
|
62
66
|
// Stated by the agent, not inferred: a 404 the test asked for and a 404 that
|
|
63
67
|
// stopped it read the same in the failure text, and only whoever wrote the
|
|
64
68
|
// test knows which it was. A row that leaves the field out raises nothing.
|
|
65
|
-
if (declared === "fail" &&
|
|
69
|
+
if (declared === "fail" &&
|
|
70
|
+
!result.passed &&
|
|
71
|
+
result.reachedBehavior === false) {
|
|
66
72
|
const blocker = blockingIssue(plannedTest, issues);
|
|
67
73
|
objections.push({
|
|
68
74
|
objectionId: `expectedOutcome:executed:${plannedTest.plannedTestId}`,
|
|
69
75
|
verifier: "expectedOutcome",
|
|
70
76
|
plannedTestId: plannedTest.plannedTestId,
|
|
71
77
|
message: EXPECTED_OUTCOME_CONTRACT.objections.executed.message,
|
|
72
|
-
evidence: blocker
|
|
78
|
+
evidence: blocker
|
|
79
|
+
? `blocked by reported issue: ${blocker}`
|
|
80
|
+
: (result.failureDetail ?? ""),
|
|
73
81
|
suggestion: EXPECTED_OUTCOME_CONTRACT.objections.executed.suggestion,
|
|
74
82
|
});
|
|
75
83
|
}
|
|
@@ -87,8 +95,8 @@ export const expectedOutcomeAtPlanTime = {
|
|
|
87
95
|
for (const plannedTest of registration.plannedTests) {
|
|
88
96
|
// Compared normalised, reported as written: the agent has to recognise the
|
|
89
97
|
// value it sent in the objection.
|
|
90
|
-
const category = String(plannedTest.scenario
|
|
91
|
-
const declaredOutcome = plannedTest.declarations
|
|
98
|
+
const category = String(plannedTest.scenario.category ?? "");
|
|
99
|
+
const declaredOutcome = plannedTest.declarations.expected?.outcome;
|
|
92
100
|
if (declaredOutcome !== "pass" || !categoryExpectsRed(category))
|
|
93
101
|
continue;
|
|
94
102
|
objections.push({
|
|
@@ -96,8 +104,9 @@ export const expectedOutcomeAtPlanTime = {
|
|
|
96
104
|
verifier: "expectedOutcome",
|
|
97
105
|
plannedTestId: plannedTest.plannedTestId,
|
|
98
106
|
message: fillPlaceholders(EXPECTED_OUTCOME_CONTRACT.objections.passInShouldFailCategory.message, { category }),
|
|
99
|
-
evidence: `category ${category}, declared pass: "${plannedTest.declarations
|
|
100
|
-
suggestion: EXPECTED_OUTCOME_CONTRACT.objections.passInShouldFailCategory
|
|
107
|
+
evidence: `category ${category}, declared pass: "${plannedTest.declarations.expected?.why ?? ""}"`,
|
|
108
|
+
suggestion: EXPECTED_OUTCOME_CONTRACT.objections.passInShouldFailCategory
|
|
109
|
+
.suggestion,
|
|
101
110
|
});
|
|
102
111
|
}
|
|
103
112
|
return objections;
|