@skyramp/mcp 0.4.1 → 0.4.2-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/commands/localDevTestChangesCommand.js +2 -1
- package/build/commands/recommendTestsAndExecuteCommand.js +15 -7
- package/build/commands/testThisEndpointCommand.js +35 -6
- package/build/execution/wrapperConfig.d.ts +56 -0
- package/build/execution/wrapperConfig.js +155 -0
- package/build/index.js +40 -10
- package/build/playwright/blueprintDigest.js +28 -7
- package/build/playwright/registerPlaywrightTools.js +47 -28
- package/build/playwright/traceExportStore.d.ts +22 -0
- package/build/playwright/traceExportStore.js +81 -0
- package/build/playwright/traceRecordingPrompt.js +11 -3
- package/build/prompts/code-reuse.js +118 -49
- 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 +8 -23
- package/build/prompts/local-dev/local-dev-prompts.d.ts +1 -1
- package/build/prompts/local-dev/local-dev-prompts.js +31 -4
- 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 +124 -2
- package/build/prompts/shared-helper-policy.js +178 -12
- package/build/prompts/startTraceCollectionPrompts.js +1 -1
- package/build/prompts/sut-setup/modes/adaptWorkflowPrompt.js +7 -8
- 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 +6 -4
- 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.d.ts +16 -8
- package/build/prompts/test-maintenance/drift-analysis-prompt.js +93 -38
- 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 +8 -5
- package/build/prompts/test-recommendation/recommendationSections.js +19 -8
- package/build/prompts/test-recommendation/recommendationShared.d.ts +1 -1
- package/build/prompts/test-recommendation/recommendationShared.js +0 -1
- 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 +133 -63
- 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 +53 -9
- 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/runTestSkill.d.ts +6 -0
- package/build/skills/runTestSkill.js +17 -0
- 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 -1
- package/build/tools/auth/loginTool.js +3 -1
- package/build/tools/auth/logoutTool.js +3 -1
- package/build/tools/budgetExcuse.d.ts +15 -0
- package/build/tools/budgetExcuse.js +113 -0
- 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 +269 -30
- 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 +118 -48
- package/build/tools/executeSkyrampTestTool.js +998 -372
- 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/submitReportTool.d.ts +51 -12
- package/build/tools/submitReportTool.js +988 -161
- package/build/tools/test-management/actionsTool.js +241 -51
- package/build/tools/test-management/analyzeChangesTool.d.ts +8 -9
- package/build/tools/test-management/analyzeChangesTool.js +127 -68
- package/build/tools/test-management/analyzeTestHealthTool.d.ts +0 -11
- package/build/tools/test-management/analyzeTestHealthTool.js +42 -76
- 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/test-management/testsOwedBeforeRun.d.ts +28 -0
- package/build/tools/test-management/testsOwedBeforeRun.js +53 -0
- package/build/tools/trace/startTraceCollectionTool.js +3 -1
- package/build/tools/trace/stopTraceCollectionTool.js +42 -6
- 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/RepositoryAnalysis.d.ts +32 -72
- package/build/types/ReuseOutcome.d.ts +100 -7
- 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 +16 -0
- package/build/types/TestTypes.js +40 -3
- package/build/types/TestbotPromptOptions.d.ts +9 -1
- package/build/types/TestbotReport.d.ts +45 -9
- package/build/utils/AnalysisStateManager.d.ts +137 -34
- package/build/utils/AnalysisStateManager.js +228 -44
- 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/connectionErrors.d.ts +10 -0
- package/build/utils/connectionErrors.js +10 -0
- 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 +60 -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/progress.d.ts +1 -1
- package/build/utils/progress.js +1 -1
- package/build/utils/proxy-terminal.d.ts +19 -1
- package/build/utils/proxy-terminal.js +346 -21
- package/build/utils/rebaselineSnapshots.d.ts +1 -1
- package/build/utils/rebaselineSnapshots.js +6 -16
- 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.d.ts +10 -0
- package/build/utils/reuseRouting.js +21 -2
- package/build/utils/runContextGauge.d.ts +27 -0
- package/build/utils/runContextGauge.js +181 -0
- 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/skyrampMdContent.d.ts +1 -1
- package/build/utils/skyrampMdContent.js +1 -1
- package/build/utils/skyrampSdkVersion.d.ts +9 -0
- package/build/utils/skyrampSdkVersion.js +16 -0
- 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 +809 -0
- package/build/utils/testExecutionRecord.d.ts +94 -0
- package/build/utils/testExecutionRecord.js +269 -0
- package/build/utils/testFileClassification.d.ts +8 -0
- package/build/utils/testFileClassification.js +39 -4
- package/build/utils/trace-parser.js +62 -14
- package/build/utils/urlPath.js +3 -1
- package/build/utils/utils-verify/action-key.d.ts +46 -0
- package/build/utils/utils-verify/action-key.js +120 -38
- package/build/utils/utils-verify/action-sites.d.ts +32 -0
- package/build/utils/utils-verify/action-sites.js +202 -0
- 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 +333 -0
- package/build/utils/utils-verify/call-sites.d.ts +31 -7
- package/build/utils/utils-verify/call-sites.js +80 -13
- 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 +2 -0
- package/build/utils/utils-verify/index.js +2 -0
- package/build/utils/utils-verify/language-spec.d.ts +51 -10
- package/build/utils/utils-verify/language-spec.js +232 -21
- 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 +56 -7
- package/build/utils/utils-verify/parse.js +195 -40
- 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 +79 -3
- package/build/utils/utils-verify/verify.js +531 -61
- 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.d.ts +72 -52
- package/build/workspace/workspace.js +19 -15
- 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 +2 -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 +45 -50
- package/plugin/skills/run-test/SKILL.md +16 -0
- 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/adapters/jestAdapter.d.ts +0 -14
- package/build/adapters/jestAdapter.js +0 -113
- package/build/adapters/mochaAdapter.d.ts +0 -13
- package/build/adapters/mochaAdapter.js +0 -87
- package/build/adapters/playwrightAdapter.d.ts +0 -17
- package/build/adapters/playwrightAdapter.js +0 -182
- package/build/adapters/pytestAdapter.d.ts +0 -15
- package/build/adapters/pytestAdapter.js +0 -108
- 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/build/tools/runExistingTestsTool.d.ts +0 -138
- package/build/tools/runExistingTestsTool.js +0 -644
- package/build/types/ExternalTestExecution.d.ts +0 -67
- package/build/types/ExternalTestExecution.js +0 -8
- package/build/workspace/testSuites.d.ts +0 -20
- package/build/workspace/testSuites.js +0 -17
- package/node_modules/playwright/node_modules/playwright-core/.DS_Store +0 -0
|
@@ -1,36 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { PlannedTest } from "./types.js";
|
|
1
|
+
import { PlannedStep, PlannedTest } from "./types.js";
|
|
3
2
|
export declare const HTTP_METHODS: ReadonlySet<string>;
|
|
4
3
|
/** Whether the planned test carries a `ui` or `e2e` label. The label alone exempts
|
|
5
4
|
* nothing (see `isUICandidate`); the schema reads it alone only for a planned test
|
|
6
5
|
* with no steps to look at. */
|
|
7
6
|
export declare function hasUITestTypeLabel(rawTestType: unknown): boolean;
|
|
8
7
|
/** Whether a step is an HTTP call: a real request method AND a path, since a verb
|
|
9
|
-
* with no path names no route.
|
|
10
|
-
|
|
11
|
-
export declare function isHTTPStep(step: ScenarioStep | undefined): boolean;
|
|
8
|
+
* with no path names no route. Applied PER STEP. */
|
|
9
|
+
export declare function isHTTPStep(step: PlannedStep | undefined): boolean;
|
|
12
10
|
/** Whether a step calls the app rather than driving a screen: anything with a
|
|
13
11
|
* target whose method is not a page interaction, so an HTTP request and an
|
|
14
12
|
* `OPERATION` both count. The page interactions are the closed set. */
|
|
15
|
-
export declare function isCallStep(step:
|
|
13
|
+
export declare function isCallStep(step: PlannedStep | undefined): boolean;
|
|
16
14
|
/** Whether a planned test is exempt from the route checks. A UI test's endpoints are
|
|
17
15
|
* attributions the agent wrote, not what it asserts. THE LABEL DECIDES: inferring
|
|
18
16
|
* from method names read a fixed list of HTTP verbs, so a GraphQL or Thrift call
|
|
19
17
|
* looked like a browser click. Every verifier reads this one function. */
|
|
20
18
|
export declare function isUIPlannedTest(plannedTest: PlannedTest): boolean;
|
|
21
19
|
/** Every step that calls the app rather than driving a screen. */
|
|
22
|
-
export declare function callSteps(plannedTest: PlannedTest):
|
|
20
|
+
export declare function callSteps(plannedTest: PlannedTest): PlannedStep[];
|
|
23
21
|
/** The step a planned test's test is about: the one `stepUnderTest` names, or the only
|
|
24
22
|
* call the planned test makes. A planned test that makes several calls and names none
|
|
25
23
|
* has NO subject — the agent states it and the server asks when it is missing,
|
|
26
24
|
* rather than ranking write methods and path prefixes to guess. A `stepUnderTest`
|
|
27
25
|
* matching no call is undefined too: the declaration is wrong, not a hint. */
|
|
28
|
-
export declare function subjectStep(plannedTest: PlannedTest):
|
|
26
|
+
export declare function subjectStep(plannedTest: PlannedTest): PlannedStep | undefined;
|
|
29
27
|
/** One step's route as a single key, `METHOD path`. The method is trimmed and
|
|
30
28
|
* upper-cased, because a method is case-insensitive by protocol; the PATH is
|
|
31
29
|
* compared AS WRITTEN, so two spellings of one route stay two routes. A step
|
|
32
30
|
* with no path names no route and gets no key. */
|
|
33
|
-
export declare function stepRouteKey(step:
|
|
31
|
+
export declare function stepRouteKey(step: PlannedStep | undefined): string | undefined;
|
|
34
32
|
/** One step's route as `METHOD path` with every record id folded to `{id}`.
|
|
35
33
|
*
|
|
36
34
|
* The state test asks whether the PLAN covers a route, and the id a step happened
|
|
@@ -39,4 +37,4 @@ export declare function stepRouteKey(step: ScenarioStep | undefined): string | u
|
|
|
39
37
|
* close one by renumbering (run 33988304641, LB03). `stepRouteKey` keeps the path
|
|
40
38
|
* as written because `statedDifference` asks the opposite question — whether two
|
|
41
39
|
* planned tests test the same thing — and there two spellings must stay two. */
|
|
42
|
-
export declare function stateRouteKey(step:
|
|
40
|
+
export declare function stateRouteKey(step: PlannedStep | undefined): string | undefined;
|
|
@@ -6,38 +6,35 @@ export const HTTP_METHODS = new Set(HTTP_STEP_METHODS);
|
|
|
6
6
|
export function hasUITestTypeLabel(rawTestType) {
|
|
7
7
|
// Trimmed as well as lower-cased: without the trim `"ui "` was checked and
|
|
8
8
|
// `"UI"` was not, so one trailing space decided which of three verifiers ran.
|
|
9
|
-
const testType = String(rawTestType ?? "")
|
|
9
|
+
const testType = String(rawTestType ?? "")
|
|
10
|
+
.trim()
|
|
11
|
+
.toLowerCase();
|
|
10
12
|
return testType === "ui" || testType === "e2e";
|
|
11
13
|
}
|
|
12
14
|
/** Whether a step is an HTTP call: a real request method AND a path, since a verb
|
|
13
|
-
* with no path names no route.
|
|
14
|
-
* it labels what a step exercises, not how it reaches the app. Applied PER STEP. */
|
|
15
|
+
* with no path names no route. Applied PER STEP. */
|
|
15
16
|
export function isHTTPStep(step) {
|
|
16
|
-
const method = String(step?.method ?? "")
|
|
17
|
+
const method = String(step?.method ?? "")
|
|
18
|
+
.trim()
|
|
19
|
+
.toUpperCase();
|
|
17
20
|
return HTTP_METHODS.has(method) && String(step?.path ?? "").trim().length > 0;
|
|
18
21
|
}
|
|
19
22
|
/** Whether a step calls the app rather than driving a screen: anything with a
|
|
20
23
|
* target whose method is not a page interaction, so an HTTP request and an
|
|
21
24
|
* `OPERATION` both count. The page interactions are the closed set. */
|
|
22
25
|
export function isCallStep(step) {
|
|
23
|
-
return !isUiStepVerb(step?.method) && String(step?.path ?? "").trim().length > 0;
|
|
26
|
+
return (!isUiStepVerb(step?.method) && String(step?.path ?? "").trim().length > 0);
|
|
24
27
|
}
|
|
25
28
|
/** Whether a planned test is exempt from the route checks. A UI test's endpoints are
|
|
26
29
|
* attributions the agent wrote, not what it asserts. THE LABEL DECIDES: inferring
|
|
27
30
|
* from method names read a fixed list of HTTP verbs, so a GraphQL or Thrift call
|
|
28
31
|
* looked like a browser click. Every verifier reads this one function. */
|
|
29
32
|
export function isUIPlannedTest(plannedTest) {
|
|
30
|
-
|
|
31
|
-
// caller the schema does not cover. Without this guard `planned test.scenario`
|
|
32
|
-
// throws, and `runVerifier` turns that throw into an acknowledgeable
|
|
33
|
-
// "crashed" objection — which hides the real objection instead of raising it.
|
|
34
|
-
if (!plannedTest)
|
|
35
|
-
return false;
|
|
36
|
-
return hasUITestTypeLabel(plannedTest.scenario?.testType);
|
|
33
|
+
return hasUITestTypeLabel(plannedTest.scenario.testType);
|
|
37
34
|
}
|
|
38
35
|
/** Every step that calls the app rather than driving a screen. */
|
|
39
36
|
export function callSteps(plannedTest) {
|
|
40
|
-
return
|
|
37
|
+
return plannedTest.scenario.steps.filter((step) => isCallStep(step));
|
|
41
38
|
}
|
|
42
39
|
/** The step a planned test's test is about: the one `stepUnderTest` names, or the only
|
|
43
40
|
* call the planned test makes. A planned test that makes several calls and names none
|
|
@@ -46,7 +43,7 @@ export function callSteps(plannedTest) {
|
|
|
46
43
|
* matching no call is undefined too: the declaration is wrong, not a hint. */
|
|
47
44
|
export function subjectStep(plannedTest) {
|
|
48
45
|
const calls = callSteps(plannedTest);
|
|
49
|
-
const declaredOrder = plannedTest
|
|
46
|
+
const declaredOrder = plannedTest.declarations.stepUnderTest;
|
|
50
47
|
if (typeof declaredOrder === "number")
|
|
51
48
|
return calls.find((step) => (step.order ?? 0) === declaredOrder);
|
|
52
49
|
return calls.length === 1 ? calls[0] : undefined;
|
|
@@ -59,7 +56,9 @@ export function stepRouteKey(step) {
|
|
|
59
56
|
const path = String(step?.path ?? "").trim();
|
|
60
57
|
if (!path)
|
|
61
58
|
return undefined;
|
|
62
|
-
const method = String(step?.method ?? "ANY")
|
|
59
|
+
const method = String(step?.method ?? "ANY")
|
|
60
|
+
.trim()
|
|
61
|
+
.toUpperCase() || "ANY";
|
|
63
62
|
return `${method} ${path}`;
|
|
64
63
|
}
|
|
65
64
|
/** A segment that identifies one record rather than naming part of the route: all
|
|
@@ -77,7 +76,9 @@ export function stateRouteKey(step) {
|
|
|
77
76
|
const path = String(step?.path ?? "").trim();
|
|
78
77
|
if (!path)
|
|
79
78
|
return undefined;
|
|
80
|
-
const method = String(step?.method ?? "ANY")
|
|
79
|
+
const method = String(step?.method ?? "ANY")
|
|
80
|
+
.trim()
|
|
81
|
+
.toUpperCase() || "ANY";
|
|
81
82
|
const folded = path
|
|
82
83
|
.split("/")
|
|
83
84
|
.map((segment) => (RECORD_ID_SEGMENT.test(segment) ? "{id}" : segment))
|
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
import { ChangedFileName } from "../utils/branchDiff.js";
|
|
2
|
-
import {
|
|
2
|
+
import { ScenarioCategory } from "../types/TestRecommendation.js";
|
|
3
|
+
import { StepMethod } from "../types/StepMethod.js";
|
|
4
|
+
import { TestbotSupportedTestType } from "./../types/TestTypes.js";
|
|
5
|
+
/** The scenario half of a planned test: exactly what `buildRegistration` builds
|
|
6
|
+
* from the schema, and nothing else. It used to be typed as the analysis's own
|
|
7
|
+
* `PlanScenario`, which declares nine required fields where four were never set,
|
|
8
|
+
* so every reader of `priority`, `chainingKeys`, `requiresAuth` or
|
|
9
|
+
* `estimatedComplexity` would have read undefined against a type that promised a
|
|
10
|
+
* value. `steps` is always an array: a ui planned test that names a screen instead
|
|
11
|
+
* of steps carries an empty one, so readers test its length. */
|
|
12
|
+
/** One step a planned test makes, as the plan schema takes it — NOT the
|
|
13
|
+
* analysis's `ScenarioStep`, which requires a `description` and an
|
|
14
|
+
* `expectedStatusCode` that the plan schema leaves optional, and an
|
|
15
|
+
* `interactionType` the plan schema does not take at all. */
|
|
16
|
+
export interface PlannedStep {
|
|
17
|
+
order: number;
|
|
18
|
+
/** An HTTP verb, one of `UI_STEP_VERBS` (`click`, `type`), or `OPERATION` for a
|
|
19
|
+
* call with no verb. The same closed set `stepMethodSchema` emits. */
|
|
20
|
+
method: StepMethod;
|
|
21
|
+
/** The request path for an HTTP step, the interaction's target for a page step
|
|
22
|
+
* (`checkout button`), the operation's name for an `OPERATION` step. So a step
|
|
23
|
+
* is a route only when `isCallStep` says it is: that helper drops the page
|
|
24
|
+
* verbs, and every route check reads it rather than this field. */
|
|
25
|
+
path: string;
|
|
26
|
+
description?: string;
|
|
27
|
+
requestBody?: unknown;
|
|
28
|
+
queryParams?: unknown;
|
|
29
|
+
omits?: string[];
|
|
30
|
+
expectedStatusCode?: number;
|
|
31
|
+
}
|
|
32
|
+
export interface PlannedScenario {
|
|
33
|
+
scenarioName: string;
|
|
34
|
+
description: string;
|
|
35
|
+
category: ScenarioCategory;
|
|
36
|
+
steps: PlannedStep[];
|
|
37
|
+
/** The schema accepts these four and no other. */
|
|
38
|
+
testType: TestbotSupportedTestType;
|
|
39
|
+
}
|
|
3
40
|
import type { BlueprintCaptureDigest } from "../types/BlueprintDigest.js";
|
|
4
41
|
import type { RemovedUiElement } from "../utils/removedUiElements.js";
|
|
5
42
|
/** One element a UI planned test targets. EVERY field is optional and three are
|
|
@@ -32,7 +69,7 @@ export interface PlanChange {
|
|
|
32
69
|
/** The inputs that prove this change: what a route must accept and what it must
|
|
33
70
|
* reject. Exactly one of `value` and `absent` per entry. The coverage check reads
|
|
34
71
|
* it; nothing else on the server does. */
|
|
35
|
-
|
|
72
|
+
testCases?: Array<{
|
|
36
73
|
param: string;
|
|
37
74
|
value?: string | number | boolean | null;
|
|
38
75
|
absent?: true;
|
|
@@ -116,11 +153,12 @@ export interface PlannedTestDetails {
|
|
|
116
153
|
}
|
|
117
154
|
export interface PlannedTest {
|
|
118
155
|
plannedTestId: string;
|
|
119
|
-
scenario:
|
|
156
|
+
scenario: PlannedScenario;
|
|
120
157
|
declarations: PlannedTestDetails;
|
|
121
158
|
/** Deliberately NOT part of the planned test id: an id stays the same across
|
|
122
|
-
* registrations
|
|
123
|
-
|
|
159
|
+
* registrations. Every planned test names one, a single-repository run
|
|
160
|
+
* included — the name is what joins the test to the diff it is checked against. */
|
|
161
|
+
repository: string;
|
|
124
162
|
}
|
|
125
163
|
export interface ObjectionAnswer {
|
|
126
164
|
objectionId: string;
|
|
@@ -136,6 +174,9 @@ export interface ObjectionAnswer {
|
|
|
136
174
|
* tested by a file I am editing" — without it, `coverage:change:` is unanswerable
|
|
137
175
|
* for a correct maintenance decision, and it closes only with a `blocker`. */
|
|
138
176
|
export interface PlanMaintenance {
|
|
177
|
+
/** The `owner/repo` holding the test. Two repositories of a run can hold the same
|
|
178
|
+
* relative path, so the entry says which one it edited. */
|
|
179
|
+
repository: string;
|
|
139
180
|
/** Repository-relative path of the existing test. Only its presence in the
|
|
140
181
|
* checkout is checked, the same rule `declarations.existingTests` follows. */
|
|
141
182
|
file: string;
|
|
@@ -143,6 +184,9 @@ export interface PlanMaintenance {
|
|
|
143
184
|
differsBy: string;
|
|
144
185
|
/** The ids of the declared changes this maintenance covers. */
|
|
145
186
|
changes: string[];
|
|
187
|
+
/** The declared defects this maintained test proves. Always stated, like
|
|
188
|
+
* `changes`: an entry that proves none sends an empty list. */
|
|
189
|
+
defects: string[];
|
|
146
190
|
}
|
|
147
191
|
export interface PlanInput {
|
|
148
192
|
/** The changes the diff makes. Each planned test cites the ones it tests. */
|
|
@@ -176,7 +220,8 @@ export interface Objection {
|
|
|
176
220
|
/** Facts the verifiers check against. Gathered once per run by the caller. */
|
|
177
221
|
export interface VerifyContext {
|
|
178
222
|
/** Every repository this run analyzed, and the files its diff changed there.
|
|
179
|
-
* NAMES ONLY, never contents. A single-repository run has one entry.
|
|
223
|
+
* NAMES ONLY, never contents. A single-repository run has one entry. Every
|
|
224
|
+
* planned test names one of these keys; there is no wildcard. */
|
|
180
225
|
changedFiles: Record<string, ChangedFileName[]>;
|
|
181
226
|
/** Repositories with no branch diff. Softens objections RUN-WIDE, because a
|
|
182
227
|
* planned test that names no repository is checked against every one of them. */
|
|
@@ -199,16 +244,21 @@ export interface VerifyContext {
|
|
|
199
244
|
title: string;
|
|
200
245
|
description: string;
|
|
201
246
|
};
|
|
202
|
-
/** Whether a cited path names a file in
|
|
203
|
-
*
|
|
204
|
-
|
|
247
|
+
/** Whether a cited path names a file in the run's repositories. Injected to keep
|
|
248
|
+
* the verifiers filesystem-free. Named a repository it asks that one, and a name
|
|
249
|
+
* this run does not know answers false. Omitted, it asks every one. */
|
|
250
|
+
citedFileExists(relativePath: string, repository?: string): boolean;
|
|
205
251
|
/** The route patterns that mount a changed frontend file, as the framework
|
|
206
252
|
* spells them (`/secrets/$envSlug`, `/orders/:id`). Injected for the same
|
|
207
253
|
* reason as `citedFileExists`: the scan reads the repository, the verifier
|
|
208
|
-
* does not.
|
|
209
|
-
*
|
|
210
|
-
*
|
|
211
|
-
|
|
254
|
+
* does not. ASKED OF ONE REPOSITORY, the one the planned test names: two
|
|
255
|
+
* repositories can hold the same relative file, and answering from whichever
|
|
256
|
+
* was scanned first objected to a test against another repository's routes.
|
|
257
|
+
* UNDEFINED means the resolver cannot speak for this file — an unsupported
|
|
258
|
+
* framework, a route table it could not parse, a repository this run does not
|
|
259
|
+
* know — and the check stays silent. An EMPTY array is a statement: nothing
|
|
260
|
+
* mounts it. */
|
|
261
|
+
routesRenderingFile(relativePath: string, repository: string): string[] | undefined;
|
|
212
262
|
}
|
|
213
263
|
/** Every changed file of the run, whatever repository it sits in. */
|
|
214
264
|
export declare function allChangedFiles(ctx: VerifyContext): ChangedFileName[];
|
|
@@ -216,9 +266,13 @@ export interface Verifier {
|
|
|
216
266
|
readonly name: string;
|
|
217
267
|
run(registration: PlanInput, ctx: VerifyContext): Objection[];
|
|
218
268
|
}
|
|
219
|
-
/** The changed files a planned test is checked against: its own repository's
|
|
220
|
-
* names
|
|
221
|
-
*
|
|
269
|
+
/** The changed files a planned test is checked against: its own repository's.
|
|
270
|
+
* UNDEFINED when it names a repository this run does not know, which the caller
|
|
271
|
+
* objects to. Every planned test names one, so there is no names-none case: every
|
|
272
|
+
* run keys its repositories by a real `owner/repo`.
|
|
273
|
+
*
|
|
274
|
+
* The schema trims the name and holds it to the `owner/repo` shape before any
|
|
275
|
+
* verifier runs, so the lookup takes the field as it stands. */
|
|
222
276
|
export declare function changedFilesFor(ctx: VerifyContext, plannedTest: {
|
|
223
|
-
repository
|
|
277
|
+
repository: string;
|
|
224
278
|
}): ChangedFileName[] | undefined;
|
|
@@ -1,20 +1,14 @@
|
|
|
1
1
|
/** Every changed file of the run, whatever repository it sits in. */
|
|
2
2
|
export function allChangedFiles(ctx) {
|
|
3
|
-
return Object.values(ctx
|
|
3
|
+
return Object.values(ctx.changedFiles).flatMap((files) => files ?? []);
|
|
4
4
|
}
|
|
5
|
-
/** The changed files a planned test is checked against: its own repository's
|
|
6
|
-
* names
|
|
7
|
-
*
|
|
5
|
+
/** The changed files a planned test is checked against: its own repository's.
|
|
6
|
+
* UNDEFINED when it names a repository this run does not know, which the caller
|
|
7
|
+
* objects to. Every planned test names one, so there is no names-none case: every
|
|
8
|
+
* run keys its repositories by a real `owner/repo`.
|
|
9
|
+
*
|
|
10
|
+
* The schema trims the name and holds it to the `owner/repo` shape before any
|
|
11
|
+
* verifier runs, so the lookup takes the field as it stands. */
|
|
8
12
|
export function changedFilesFor(ctx, plannedTest) {
|
|
9
|
-
|
|
10
|
-
const repo = String(plannedTest?.repository ?? "").trim();
|
|
11
|
-
if (!repo)
|
|
12
|
-
return allChangedFiles(ctx);
|
|
13
|
-
const own = known[repo];
|
|
14
|
-
if (own)
|
|
15
|
-
return own;
|
|
16
|
-
// Only a MULTI-repository run reads an unmatched name as unknown: a single-repo
|
|
17
|
-
// run keys the primary as "the primary repository" when `metadata.repository` is
|
|
18
|
-
// absent, which no name the agent writes will ever match.
|
|
19
|
-
return Object.keys(known).length > 1 ? undefined : allChangedFiles(ctx);
|
|
13
|
+
return ctx.changedFiles[plannedTest.repository];
|
|
20
14
|
}
|
|
@@ -40,7 +40,7 @@ export declare const CHANGED_FILE_CONTRACT: {
|
|
|
40
40
|
};
|
|
41
41
|
readonly unknownRepository: {
|
|
42
42
|
readonly message: "This planned test names a repository this run did not analyze.";
|
|
43
|
-
readonly suggestion: "Name one of the repositories listed in the evidence,
|
|
43
|
+
readonly suggestion: "Name one of the repositories listed in the evidence, spelled as the evidence spells it. A name nothing analyzed leaves the planned test with no diff to be checked against.";
|
|
44
44
|
};
|
|
45
45
|
readonly screenEvidenceUnrelated: {
|
|
46
46
|
readonly message: "The file this UI test cites for its screen is not one this pull request changed.";
|
|
@@ -176,7 +176,7 @@ export declare const COVERAGE_CONTRACT: {
|
|
|
176
176
|
readonly message: "No test in this plan names the state the record is in when {route} mutates it.";
|
|
177
177
|
readonly suggestion: "Plan one test that puts a record in a stated state — through the API, the UI, or data the app already holds; a record with no rows yet counts — then runs the mutation on it, and name that state as `startState`. If the route can meet a record that is not freshly created, use that state. Only a planned test closes this: there is no answer for it.";
|
|
178
178
|
};
|
|
179
|
-
readonly
|
|
179
|
+
readonly testCases: {
|
|
180
180
|
readonly message: "No test for this change sends the declared case {missing}.";
|
|
181
181
|
readonly suggestion: "Add the missing values to a test that cites this change, or answer in one line why they need no test.";
|
|
182
182
|
};
|
|
@@ -286,7 +286,7 @@ export declare const DEFECTS_CONTRACT: {
|
|
|
286
286
|
};
|
|
287
287
|
readonly untested: {
|
|
288
288
|
readonly message: "This declared defect has no test in the plan.";
|
|
289
|
-
readonly suggestion: "Add a planned test that cites the defect in `defects` and sets `expected.outcome` to `fail`. A defect in a file this pull request touches gets the test whether or not this pull request introduced it. If something stopped this run from writing the test, answer it and set `blocker` to what stopped it.";
|
|
289
|
+
readonly suggestion: "Add a planned test that cites the defect in `defects` and sets `expected.outcome` to `fail`. A defect in a file this pull request touches gets the test whether or not this pull request introduced it. If an existing test already proves it and this run edits that test rather than writing a new one, declare it in `maintains` with the file, what your edit changes, and this defect's id — maintenance is proof, and a duplicate spec beside the one you edited is the mistake. If something stopped this run from writing the test, answer it and set `blocker` to what stopped it.";
|
|
290
290
|
};
|
|
291
291
|
readonly expectedPass: {
|
|
292
292
|
readonly message: "Every test that cites this defect expects to pass, and a test that passes today proves nothing about a defect.";
|
|
@@ -296,6 +296,10 @@ export declare const DEFECTS_CONTRACT: {
|
|
|
296
296
|
readonly message: "A planned test cites a defect id that this plan does not declare.";
|
|
297
297
|
readonly suggestion: "Spell the defect's `id` exactly as your own `defects` list gives it — the match is exact apart from surrounding space. Declare the defect if it is missing.";
|
|
298
298
|
};
|
|
299
|
+
readonly maintainedUnknownDefect: {
|
|
300
|
+
readonly message: "A `maintains` entry cites a defect id that this plan does not declare.";
|
|
301
|
+
readonly suggestion: "Spell the defect's `id` exactly as your own `defects` list gives it — the match is exact apart from surrounding space. Declare the defect if it is missing.";
|
|
302
|
+
};
|
|
299
303
|
readonly conflictWithoutDefect: {
|
|
300
304
|
readonly message: "This test reports a requirement conflict and cites no defect.";
|
|
301
305
|
readonly suggestion: "List the conflict in `defects`: the file and line that contradict the requirement, and a description that quotes the requirement. Cite that id from this test.";
|
|
@@ -22,7 +22,7 @@ export const CHANGED_FILE_CONTRACT = {
|
|
|
22
22
|
},
|
|
23
23
|
unknownRepository: {
|
|
24
24
|
message: "This planned test names a repository this run did not analyze.",
|
|
25
|
-
suggestion: "Name one of the repositories listed in the evidence,
|
|
25
|
+
suggestion: "Name one of the repositories listed in the evidence, spelled as the evidence spells it. A name nothing analyzed leaves the planned test with no diff to be checked against.",
|
|
26
26
|
},
|
|
27
27
|
screenEvidenceUnrelated: {
|
|
28
28
|
message: "The file this UI test cites for its screen is not one this pull request changed.",
|
|
@@ -181,7 +181,7 @@ export const COVERAGE_CONTRACT = {
|
|
|
181
181
|
// anyway. What a case IS stays the agent's judgment — the field takes any
|
|
182
182
|
// parameter and any value, so nothing here has to know a kind of input in
|
|
183
183
|
// advance.
|
|
184
|
-
|
|
184
|
+
testCases: {
|
|
185
185
|
message: "No test for this change sends the declared case {missing}.",
|
|
186
186
|
suggestion: "Add the missing values to a test that cites this change, or answer in one line why they need no test.",
|
|
187
187
|
},
|
|
@@ -347,7 +347,7 @@ export const DEFECTS_CONTRACT = {
|
|
|
347
347
|
},
|
|
348
348
|
untested: {
|
|
349
349
|
message: "This declared defect has no test in the plan.",
|
|
350
|
-
suggestion: "Add a planned test that cites the defect in `defects` and sets `expected.outcome` to `fail`. A defect in a file this pull request touches gets the test whether or not this pull request introduced it. If something stopped this run from writing the test, answer it and set `blocker` to what stopped it.",
|
|
350
|
+
suggestion: "Add a planned test that cites the defect in `defects` and sets `expected.outcome` to `fail`. A defect in a file this pull request touches gets the test whether or not this pull request introduced it. If an existing test already proves it and this run edits that test rather than writing a new one, declare it in `maintains` with the file, what your edit changes, and this defect's id — maintenance is proof, and a duplicate spec beside the one you edited is the mistake. If something stopped this run from writing the test, answer it and set `blocker` to what stopped it.",
|
|
351
351
|
},
|
|
352
352
|
expectedPass: {
|
|
353
353
|
message: "Every test that cites this defect expects to pass, and a test that passes today proves nothing about a defect.",
|
|
@@ -357,6 +357,10 @@ export const DEFECTS_CONTRACT = {
|
|
|
357
357
|
message: "A planned test cites a defect id that this plan does not declare.",
|
|
358
358
|
suggestion: "Spell the defect's `id` exactly as your own `defects` list gives it — the match is exact apart from surrounding space. Declare the defect if it is missing.",
|
|
359
359
|
},
|
|
360
|
+
maintainedUnknownDefect: {
|
|
361
|
+
message: "A `maintains` entry cites a defect id that this plan does not declare.",
|
|
362
|
+
suggestion: "Spell the defect's `id` exactly as your own `defects` list gives it — the match is exact apart from surrounding space. Declare the defect if it is missing.",
|
|
363
|
+
},
|
|
360
364
|
conflictWithoutDefect: {
|
|
361
365
|
message: "This test reports a requirement conflict and cites no defect.",
|
|
362
366
|
suggestion: "List the conflict in `defects`: the file and line that contradict the requirement, and a description that quotes the requirement. Cite that id from this test.",
|
|
@@ -369,5 +373,5 @@ export const DEFECTS_CONTRACT = {
|
|
|
369
373
|
* than blanked, so a missed key shows up as `{knob}` instead of reading as a gap
|
|
370
374
|
* in an otherwise ordinary sentence. */
|
|
371
375
|
export function fillPlaceholders(text, values) {
|
|
372
|
-
return text.replace(/\{(\w+)\}/g, (whole, key) =>
|
|
376
|
+
return text.replace(/\{(\w+)\}/g, (whole, key) => key in values ? String(values[key]) : whole);
|
|
373
377
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { allChangedFiles, changedFilesFor } from "../types.js";
|
|
2
|
-
import { CHANGED_FILE_CONTRACT } from "../verifierContracts.js";
|
|
3
|
-
import { changedPathSet, normalizeCitedPath, whyNotAChangedFile } from "./citedPath.js";
|
|
1
|
+
import { allChangedFiles, changedFilesFor, } from "../types.js";
|
|
2
|
+
import { CHANGED_FILE_CONTRACT, } from "../verifierContracts.js";
|
|
3
|
+
import { changedPathSet, normalizeCitedPath, whyNotAChangedFile, } from "./citedPath.js";
|
|
4
4
|
/** Verifier 1. The files a planned test cites for the change it targets are files
|
|
5
5
|
* this pull request really changed. NAMES ONLY — no diff content is read, so an
|
|
6
6
|
* irrelevant file inside the diff cannot be caught. SILENT on a run with no
|
|
@@ -22,9 +22,9 @@ function describeType(value) {
|
|
|
22
22
|
/** One objection, so every branch below reads the same way. */
|
|
23
23
|
function raise(plannedTest, key, objection, evidence) {
|
|
24
24
|
return {
|
|
25
|
-
objectionId: `changedFile:${key}:${plannedTest
|
|
25
|
+
objectionId: `changedFile:${key}:${plannedTest.plannedTestId}`,
|
|
26
26
|
verifier: "changedFile",
|
|
27
|
-
plannedTestId: plannedTest
|
|
27
|
+
plannedTestId: plannedTest.plannedTestId,
|
|
28
28
|
message: objection.message,
|
|
29
29
|
evidence,
|
|
30
30
|
suggestion: objection.suggestion,
|
|
@@ -44,7 +44,7 @@ export const changedFile = {
|
|
|
44
44
|
// repository.
|
|
45
45
|
const own = changedFilesFor(ctx, plannedTest);
|
|
46
46
|
if (own === undefined) {
|
|
47
|
-
objections.push(raise(plannedTest, "unknownRepository", CHANGED_FILE_CONTRACT.objections.unknownRepository, `this run analyzed ${Object.keys(ctx.changedFiles
|
|
47
|
+
objections.push(raise(plannedTest, "unknownRepository", CHANGED_FILE_CONTRACT.objections.unknownRepository, `this run analyzed ${Object.keys(ctx.changedFiles).join(", ") || "no repository"}, and this planned test names "${plannedTest.repository}"`));
|
|
48
48
|
continue;
|
|
49
49
|
}
|
|
50
50
|
const surfaces = changedPathSet(own, true);
|
|
@@ -55,17 +55,15 @@ export const changedFile = {
|
|
|
55
55
|
// `screenEvidence.file` has to be a file the diff changed. Independent of
|
|
56
56
|
// the changed file's own result — a planned test can get both wrong, and each
|
|
57
57
|
// names its own fix.
|
|
58
|
-
const citedScreen = String(plannedTest
|
|
58
|
+
const citedScreen = String(plannedTest.declarations.screenEvidence?.file ?? "").trim();
|
|
59
59
|
if (citedScreen && !pages.has(normalizeCitedPath(citedScreen))) {
|
|
60
|
-
const page = String(plannedTest
|
|
60
|
+
const page = String(plannedTest.declarations.elements?.pageUrl ?? "").trim();
|
|
61
61
|
objections.push(raise(plannedTest, "screenEvidenceUnrelated", CHANGED_FILE_CONTRACT.objections.screenEvidenceUnrelated, `${pages.size} changed file(s) still in the tree. ${whyNotAChangedFile(citedScreen)}, for ${page ? `the test that opens ${page}` : "a test that names no page"}.`));
|
|
62
62
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
const raw = plannedTest?.declarations?.changedFile;
|
|
66
|
-
const cited = typeof raw === "string" ? raw.trim() : "";
|
|
63
|
+
const declared = plannedTest.declarations.changedFile;
|
|
64
|
+
const cited = (declared ?? "").trim();
|
|
67
65
|
if (!cited) {
|
|
68
|
-
objections.push(raise(plannedTest, "notStated", CHANGED_FILE_CONTRACT.objections.notStated, `changedFile is ${describeType(
|
|
66
|
+
objections.push(raise(plannedTest, "notStated", CHANGED_FILE_CONTRACT.objections.notStated, `changedFile is ${describeType(declared)}; ${surfaces.size} file(s) changed in this run and the plan does not say which one this test targets.`));
|
|
69
67
|
continue;
|
|
70
68
|
}
|
|
71
69
|
if (!surfaces.has(normalizeCitedPath(cited))) {
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import { ChangedFileName } from "../../utils/branchDiff.js";
|
|
2
|
+
import { PlanMaintenance, VerifyContext } from "../types.js";
|
|
3
|
+
/** Whether a `maintains` entry names a file that stays inside the repository and is
|
|
4
|
+
* present in the repository the entry names.
|
|
5
|
+
*
|
|
6
|
+
* An entry credits its ids only when it is. `coverage:change:` and
|
|
7
|
+
* `defects:untested:` close only with a blocker, so crediting a file nobody can
|
|
8
|
+
* open would route around both. */
|
|
9
|
+
export declare function maintainedFileIsInItsRepository(entry: PlanMaintenance, ctx: VerifyContext): boolean;
|
|
2
10
|
/** A cited path reduced to the spelling `git diff --name-status` produces: `./`,
|
|
3
11
|
* backslashes, doubled and trailing slashes fold, and so do git's quoting of a
|
|
4
12
|
* non-ASCII path and both unicode compositions. Case does NOT fold, and a path
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { unquoteIfQuoted } from "../../utils/branchDiff.js";
|
|
2
2
|
import { escapesRepo } from "./endpointGrounded.js";
|
|
3
|
+
/** Whether a `maintains` entry names a file that stays inside the repository and is
|
|
4
|
+
* present in the repository the entry names.
|
|
5
|
+
*
|
|
6
|
+
* An entry credits its ids only when it is. `coverage:change:` and
|
|
7
|
+
* `defects:untested:` close only with a blocker, so crediting a file nobody can
|
|
8
|
+
* open would route around both. */
|
|
9
|
+
export function maintainedFileIsInItsRepository(entry, ctx) {
|
|
10
|
+
const path = entry.file.trim();
|
|
11
|
+
return (!!path && !escapesRepo(path) && ctx.citedFileExists(path, entry.repository));
|
|
12
|
+
}
|
|
3
13
|
/** A cited path reduced to the spelling `git diff --name-status` produces: `./`,
|
|
4
14
|
* backslashes, doubled and trailing slashes fold, and so do git's quoting of a
|
|
5
15
|
* non-ASCII path and both unicode compositions. Case does NOT fold, and a path
|
|
@@ -7,10 +17,14 @@ import { escapesRepo } from "./endpointGrounded.js";
|
|
|
7
17
|
export function normalizeCitedPath(raw) {
|
|
8
18
|
if (typeof raw !== "string")
|
|
9
19
|
return "";
|
|
10
|
-
const slashed = unquoteIfQuoted(raw.trim())
|
|
20
|
+
const slashed = unquoteIfQuoted(raw.trim())
|
|
21
|
+
.normalize("NFC")
|
|
22
|
+
.replace(/\\/g, "/");
|
|
11
23
|
if (!slashed || escapesRepo(slashed))
|
|
12
24
|
return "";
|
|
13
|
-
const segments = slashed
|
|
25
|
+
const segments = slashed
|
|
26
|
+
.split("/")
|
|
27
|
+
.filter((segment) => segment !== "" && segment !== ".");
|
|
14
28
|
return segments.join("/");
|
|
15
29
|
}
|
|
16
30
|
/** The changed paths a citation can name, in the same normalised spelling.
|
|
@@ -2,8 +2,8 @@ import { Verifier } from "../types.js";
|
|
|
2
2
|
/** One declared case as the objection spells it.
|
|
3
3
|
*
|
|
4
4
|
* Exported: `expectedValueSourced` keys its objections on the same rendering, so
|
|
5
|
-
* two cases on one parameter are two objections there too. */
|
|
6
|
-
export declare function
|
|
5
|
+
* two test cases on one parameter are two objections there too. */
|
|
6
|
+
export declare function renderTestCase(declared: {
|
|
7
7
|
param: string;
|
|
8
8
|
value?: unknown;
|
|
9
9
|
absent?: true;
|