@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,5 +1,12 @@
|
|
|
1
1
|
import { normalizePath } from "./language-spec.js";
|
|
2
|
-
import {
|
|
2
|
+
import { actionStepKeys, actionStepsOf, } from "./action-key.js";
|
|
3
|
+
/** A helper's action steps and their joined key, read once from its body. */
|
|
4
|
+
function actionSequence(body, language) {
|
|
5
|
+
const steps = actionStepsOf(body, language);
|
|
6
|
+
const keys = actionStepKeys(steps);
|
|
7
|
+
return keys ? { actionKey: keys.join("; "), actionSteps: keys } : {};
|
|
8
|
+
}
|
|
9
|
+
import { fixedSleepsIn, pythonSleepBindings, } from "./fixed-sleep.js";
|
|
3
10
|
import { stripComments, stripCommentsAndStrings, stripStrings, } from "../pom-scope/strip.js";
|
|
4
11
|
/** Whether the `<` at `i` opens a generic (`Record<string, …>`, `Array<{…}>`) rather
|
|
5
12
|
* than comparing (`i < 3`): a generic follows an identifier or `>` and is followed
|
|
@@ -41,8 +48,14 @@ function bracketStep(sig, i, d) {
|
|
|
41
48
|
* a binding pattern never splits. `undefined` when the text holds no readable
|
|
42
49
|
* parameter list. Language-neutral: both a TS `{` and a Python `:` terminator lie
|
|
43
50
|
* outside the parentheses this reads. */
|
|
44
|
-
export function signatureParams(sigLines
|
|
51
|
+
export function signatureParams(sigLines,
|
|
52
|
+
/** The same lines with only comments blanked, offsets preserved. When given, the
|
|
53
|
+
* parameters are SPLIT on `sigLines` (string contents blanked, so a comma inside
|
|
54
|
+
* a default never splits) and READ from these, so a default keeps its value —
|
|
55
|
+
* the additive gate compares that value against the body it replaced. */
|
|
56
|
+
rawLines) {
|
|
45
57
|
const sig = sigLines.join(" ");
|
|
58
|
+
const raw = rawLines ? rawLines.join(" ") : sig;
|
|
46
59
|
// The parameter list's `(` is the first one outside a generic: a constraint may
|
|
47
60
|
// hold parentheses of its own (`<T extends (a: string) => void>(page, cb)`).
|
|
48
61
|
let open = -1;
|
|
@@ -71,34 +84,90 @@ export function signatureParams(sigLines) {
|
|
|
71
84
|
if (close === -1)
|
|
72
85
|
return undefined;
|
|
73
86
|
const params = [];
|
|
74
|
-
let
|
|
87
|
+
let from = open + 1;
|
|
75
88
|
const e = { depth: 0, angle: 0 };
|
|
76
89
|
for (let i = open + 1; i < close; i++) {
|
|
77
|
-
const ch = sig[i];
|
|
78
90
|
bracketStep(sig, i, e);
|
|
79
|
-
if (
|
|
80
|
-
params.push(
|
|
81
|
-
|
|
91
|
+
if (sig[i] === "," && e.depth === 0) {
|
|
92
|
+
params.push(raw.slice(from, i));
|
|
93
|
+
from = i + 1;
|
|
82
94
|
}
|
|
83
|
-
else
|
|
84
|
-
cur += ch;
|
|
85
95
|
}
|
|
86
|
-
params.push(
|
|
96
|
+
params.push(raw.slice(from, close));
|
|
87
97
|
// Python's bare `*` and `/` are keyword-only / positional-only MARKERS, not
|
|
88
98
|
// parameters.
|
|
89
99
|
return params
|
|
90
100
|
.map((p) => p.trim())
|
|
91
101
|
.filter((p) => p !== "" && p !== "*" && p !== "/");
|
|
92
102
|
}
|
|
93
|
-
/** The
|
|
94
|
-
|
|
103
|
+
/** The index of the `=` that opens a parameter's default value, or -1. Depth-aware,
|
|
104
|
+
* so an `=` inside a parenthesised type, an object type or a generic is not one;
|
|
105
|
+
* `=>`, `==`, `!=`, `<=` and `>=` are not one either.
|
|
106
|
+
*
|
|
107
|
+
* The ONE detection of a default: the typing advisory reads it, the status rule
|
|
108
|
+
* reads it, and the additive gate reads the value that follows it. They must not
|
|
109
|
+
* disagree about what a default is. */
|
|
110
|
+
export function defaultAt(param) {
|
|
111
|
+
let depth = 0;
|
|
112
|
+
for (let i = 0; i < param.length; i++) {
|
|
113
|
+
const ch = param[i];
|
|
114
|
+
if ("([{<".includes(ch))
|
|
115
|
+
depth++;
|
|
116
|
+
else if (")]}>".includes(ch)) {
|
|
117
|
+
// `=>` closes nothing; the `>` of a generic does.
|
|
118
|
+
if (!(ch === ">" && param[i - 1] === "="))
|
|
119
|
+
depth = Math.max(0, depth - 1);
|
|
120
|
+
}
|
|
121
|
+
else if (ch === "=" &&
|
|
122
|
+
depth === 0 &&
|
|
123
|
+
param[i + 1] !== ">" &&
|
|
124
|
+
param[i + 1] !== "=" &&
|
|
125
|
+
!"=!<>".includes(param[i - 1] ?? ""))
|
|
126
|
+
return i;
|
|
127
|
+
}
|
|
128
|
+
return -1;
|
|
129
|
+
}
|
|
130
|
+
/** Whether one declared parameter carries a default value. See defaultAt. */
|
|
131
|
+
export function hasDefault(param) {
|
|
132
|
+
return defaultAt(param) !== -1;
|
|
133
|
+
}
|
|
134
|
+
/** The declared NAME of a parameter, less its annotation, default, rest / unpack
|
|
135
|
+
* marker and optional `?`: `...rest: T[]` → `rest`, `expected_status=200` →
|
|
136
|
+
* `expected_status`, `expectedStatus?: number` → `expectedStatus`. A binding
|
|
137
|
+
* pattern has no single name and returns its text unchanged. */
|
|
138
|
+
export function paramName(raw) {
|
|
139
|
+
return raw
|
|
140
|
+
.split("=")[0]
|
|
141
|
+
.split(":")[0]
|
|
142
|
+
.replace(/^\s*(?:\.\.\.|\*+)/, "")
|
|
143
|
+
.replace(/\?\s*$/, "")
|
|
144
|
+
.trim();
|
|
145
|
+
}
|
|
146
|
+
/** The parameters of a TS signature whose type gives a caller nothing to satisfy:
|
|
147
|
+
* no annotation (`page`), `any` (checks nothing), or `unknown` (assignable to
|
|
148
|
+
* nothing but itself, so every use of it fails, under every compiler setting).
|
|
149
|
+
* Each entry is the name alone when unannotated, `name: any` / `name: unknown`
|
|
150
|
+
* otherwise. */
|
|
151
|
+
export function unusableParamTypesOf(sigLines) {
|
|
95
152
|
const out = [];
|
|
96
153
|
for (const raw of signatureParams(sigLines) ?? []) {
|
|
97
154
|
const param = raw.replace(/^\.\.\./, "");
|
|
155
|
+
// Parenthesised spans dropped: a function-type annotation's own parameters
|
|
156
|
+
// and a call in a default value are not this parameter's annotation.
|
|
157
|
+
const flat = param.replace(/\([^)]*\)/g, "");
|
|
158
|
+
// `: any` compiles clean under noImplicitAny — the customer's compiler will
|
|
159
|
+
// NEVER report it, which makes it the one case this advisory can catch that
|
|
160
|
+
// tsc cannot (and the exact legacy convention SKYR-3324 wrote). `: unknown`
|
|
161
|
+
// fails at its first use, before or after a default: the annotation, not the
|
|
162
|
+
// default, decides the type, so the inference carve-out below does not apply.
|
|
163
|
+
const weak = /^([A-Za-z_$][\w$]*)\??\s*:\s*(any|unknown)\s*(?:=(?!>)|$)/.exec(flat);
|
|
164
|
+
if (weak) {
|
|
165
|
+
out.push(`${weak[1]}: ${weak[2]}`);
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
98
168
|
// A default value means TypeScript infers the type — not a finding, even
|
|
99
|
-
// unannotated (`expectedStatus = 200`).
|
|
100
|
-
|
|
101
|
-
if (/=(?!>)/.test(param.replace(/\([^)]*\)/g, "")))
|
|
169
|
+
// unannotated (`expectedStatus = 200`).
|
|
170
|
+
if (hasDefault(param))
|
|
102
171
|
continue;
|
|
103
172
|
// A binding pattern's inner colons are renames, not annotations:
|
|
104
173
|
// `{ page: browserPage }` is implicitly any unless a `:` follows the
|
|
@@ -113,18 +182,20 @@ export function untypedParamsOf(sigLines) {
|
|
|
113
182
|
break;
|
|
114
183
|
}
|
|
115
184
|
}
|
|
116
|
-
|
|
117
|
-
|
|
185
|
+
const annotation = after === -1 ? "" : param.slice(after).trimStart();
|
|
186
|
+
const pattern = (after === -1 ? param : param.slice(0, after)).replace(/\s+/g, " ");
|
|
187
|
+
if (!annotation.startsWith(":"))
|
|
188
|
+
out.push(pattern);
|
|
189
|
+
else {
|
|
190
|
+
// `{ page }: any` is annotated, and as unusable as `page: any`.
|
|
191
|
+
const weakAnnotation = /^:\s*(any|unknown)\s*$/.exec(annotation.replace(/\([^)]*\)/g, ""));
|
|
192
|
+
if (weakAnnotation)
|
|
193
|
+
out.push(`${pattern}: ${weakAnnotation[1]}`);
|
|
194
|
+
}
|
|
118
195
|
continue;
|
|
119
196
|
}
|
|
120
|
-
if (param.includes(":"))
|
|
121
|
-
// `page: any` compiles clean under noImplicitAny — the customer's compiler
|
|
122
|
-
// will NEVER report it, which makes it the one case this advisory can catch
|
|
123
|
-
// that tsc cannot. It is also the exact legacy convention SKYR-3324 wrote.
|
|
124
|
-
if (/:\s*any\s*$/.test(param))
|
|
125
|
-
out.push(param.split(":")[0].trim().replace(/\?$/, "") + ": any");
|
|
197
|
+
if (param.includes(":"))
|
|
126
198
|
continue;
|
|
127
|
-
}
|
|
128
199
|
out.push(param.replace(/\?$/, ""));
|
|
129
200
|
}
|
|
130
201
|
return out;
|
|
@@ -139,6 +210,17 @@ export function untypedParamsOf(sigLines) {
|
|
|
139
210
|
* next non-blank column-0 line; TS/JS bodies end when the brace depth opened by
|
|
140
211
|
* the definition returns to zero.
|
|
141
212
|
*/
|
|
213
|
+
/** A generated TEST's own module-level helpers: what parseUtilsFile reads from it,
|
|
214
|
+
* less the test functions themselves (`test_…` / `testUi`), which are not helpers a
|
|
215
|
+
* call can sit "inside" in the sense the sibling scans and the body-reach check
|
|
216
|
+
* report. */
|
|
217
|
+
export function localHelpersOf(content, spec) {
|
|
218
|
+
return parseUtilsFile(content, spec).filter((h) => !/^test/i.test(h.name));
|
|
219
|
+
}
|
|
220
|
+
/** The helper whose body holds `line` (1-based), if any. */
|
|
221
|
+
export function localHelperAt(helpers, line) {
|
|
222
|
+
return helpers.find((h) => line >= h.line && line <= h.endLine);
|
|
223
|
+
}
|
|
142
224
|
export function parseUtilsFile(content, spec) {
|
|
143
225
|
const lines = content.split("\n");
|
|
144
226
|
// Structure — where a body ends — is read on a copy with comments and string
|
|
@@ -146,6 +228,10 @@ export function parseUtilsFile(content, spec) {
|
|
|
146
228
|
// (`fill("{")`) or a `#` in a Python string must not move a helper's end and
|
|
147
229
|
// swallow every helper after it.
|
|
148
230
|
const structure = blankCommentsAndStrings(content, spec).split("\n");
|
|
231
|
+
// What THIS file binds to a sleep — read once, from its imports (Python only).
|
|
232
|
+
const sleepBindings = spec.language === "python"
|
|
233
|
+
? pythonSleepBindings(content)
|
|
234
|
+
: { bare: new Set(), qualified: new Set() };
|
|
149
235
|
const helpers = [];
|
|
150
236
|
let i = 0;
|
|
151
237
|
while (i < lines.length) {
|
|
@@ -174,6 +260,9 @@ export function parseUtilsFile(content, spec) {
|
|
|
174
260
|
// The blanked copy: a comment inside a wrapped signature must not reach the
|
|
175
261
|
// agent as a "parameter", and a comma inside a default string must not split one.
|
|
176
262
|
const signature = signatureLines(scan);
|
|
263
|
+
const params = signatureParams(signature, blankComments(body.join("\n"), spec)
|
|
264
|
+
.split("\n")
|
|
265
|
+
.slice(0, signature.length));
|
|
177
266
|
const helper = {
|
|
178
267
|
name,
|
|
179
268
|
line: start + 1,
|
|
@@ -181,11 +270,17 @@ export function parseUtilsFile(content, spec) {
|
|
|
181
270
|
wrapsRequest: false,
|
|
182
271
|
hasGuard: hasPageErrorGuard(body.join("\n"), spec),
|
|
183
272
|
assertions: [],
|
|
184
|
-
|
|
185
|
-
arity:
|
|
273
|
+
unusableParamTypes: spec.language === "typescript" ? unusableParamTypesOf(signature) : [],
|
|
274
|
+
arity: params?.length,
|
|
275
|
+
params,
|
|
276
|
+
// Read from the body while it is in hand, like actionKey: structure off the
|
|
277
|
+
// blanked copy, the shown text off the original. Takes the parameters main
|
|
278
|
+
// already read rather than reading the signature a second time — a parameter
|
|
279
|
+
// shadows a module's sleep binding, so the two must be the same list.
|
|
280
|
+
fixedSleeps: fixedSleepsIn(body, scan, spec.language, params ?? [], start + 1, sleepBindings),
|
|
186
281
|
// Comments blanked, strings kept: a commented-out click is not a step, and
|
|
187
282
|
// the selector literals are the key.
|
|
188
|
-
|
|
283
|
+
...actionSequence(blankComments(body.join("\n"), spec), spec.language),
|
|
189
284
|
};
|
|
190
285
|
let requests = 0;
|
|
191
286
|
for (let k = 0; k < body.length; k++) {
|
|
@@ -266,10 +361,65 @@ export function isSingleLiteral(line, m) {
|
|
|
266
361
|
export function blankStrings(src, spec) {
|
|
267
362
|
if (spec.language !== "python")
|
|
268
363
|
return stripStrings(src);
|
|
269
|
-
return src
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
364
|
+
return blankPythonStrings(src);
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Blank every Python string literal, triple-quoted ones included, preserving offsets.
|
|
368
|
+
*
|
|
369
|
+
* A line-by-line regex cannot do this: a `"""…"""` block spans lines, so a `#` inside a
|
|
370
|
+
* docstring or an embedded SQL block read as a comment. Every scanner built on this
|
|
371
|
+
* then treated quoted text as code the file executes — and the delivery-time marker
|
|
372
|
+
* strip deleted a line out of a value rather than out of a comment.
|
|
373
|
+
*/
|
|
374
|
+
function blankPythonStrings(src) {
|
|
375
|
+
const out = src.split("");
|
|
376
|
+
const blank = (from, to) => {
|
|
377
|
+
for (let k = from; k < to; k++)
|
|
378
|
+
if (out[k] !== "\n")
|
|
379
|
+
out[k] = " ";
|
|
380
|
+
};
|
|
381
|
+
let i = 0;
|
|
382
|
+
const n = src.length;
|
|
383
|
+
while (i < n) {
|
|
384
|
+
const c = src[i];
|
|
385
|
+
// A comment runs to the end of the line and holds no string opener.
|
|
386
|
+
if (c === "#") {
|
|
387
|
+
while (i < n && src[i] !== "\n")
|
|
388
|
+
i++;
|
|
389
|
+
continue;
|
|
390
|
+
}
|
|
391
|
+
if (c !== '"' && c !== "'") {
|
|
392
|
+
i++;
|
|
393
|
+
continue;
|
|
394
|
+
}
|
|
395
|
+
// A string prefix (r, b, f, u, rb, …) is part of the literal, not of the quote.
|
|
396
|
+
const triple = src.startsWith(c.repeat(3), i);
|
|
397
|
+
const quote = triple ? c.repeat(3) : c;
|
|
398
|
+
const start = i;
|
|
399
|
+
i += quote.length;
|
|
400
|
+
let closed = false;
|
|
401
|
+
while (i < n) {
|
|
402
|
+
if (src[i] === "\\") {
|
|
403
|
+
i += 2;
|
|
404
|
+
continue;
|
|
405
|
+
}
|
|
406
|
+
if (src.startsWith(quote, i)) {
|
|
407
|
+
i += quote.length;
|
|
408
|
+
closed = true;
|
|
409
|
+
break;
|
|
410
|
+
}
|
|
411
|
+
// Only a triple-quoted literal may hold a raw newline.
|
|
412
|
+
if (src[i] === "\n" && !triple)
|
|
413
|
+
break;
|
|
414
|
+
i++;
|
|
415
|
+
}
|
|
416
|
+
if (!closed) {
|
|
417
|
+
i = start + 1;
|
|
418
|
+
continue;
|
|
419
|
+
}
|
|
420
|
+
blank(start + quote.length, i - quote.length);
|
|
421
|
+
}
|
|
422
|
+
return out.join("");
|
|
273
423
|
}
|
|
274
424
|
/** Assertions in a source file: lines (Python) / occurrences (TS) matching the
|
|
275
425
|
* language's assertion pattern, with comments and string contents blanked so a
|
|
@@ -300,8 +450,10 @@ export function hasPageErrorGuard(content, spec) {
|
|
|
300
450
|
return false;
|
|
301
451
|
}
|
|
302
452
|
/** Comments blanked, strings preserved, offsets kept. TS/JS use the shared stripper;
|
|
303
|
-
* Python blanks each line from its first `#` outside a string.
|
|
304
|
-
|
|
453
|
+
* Python blanks each line from its first `#` outside a string. Exported for the
|
|
454
|
+
* readers that need a literal intact but a comment gone — an import's module
|
|
455
|
+
* path is a string, and a commented-out import must not count. */
|
|
456
|
+
export function blankComments(src, spec) {
|
|
305
457
|
if (spec.language !== "python")
|
|
306
458
|
return stripComments(src);
|
|
307
459
|
const blanked = blankStrings(src, spec).split("\n");
|
|
@@ -318,14 +470,17 @@ function blankComments(src, spec) {
|
|
|
318
470
|
export function blankCommentsAndStrings(src, spec) {
|
|
319
471
|
if (spec.language !== "python")
|
|
320
472
|
return stripCommentsAndStrings(src);
|
|
321
|
-
|
|
473
|
+
// The same scanner `blankStrings` uses, so a docstring is hidden from BOTH. A
|
|
474
|
+
// line-by-line regex could only see a literal that opens and closes on one line, so
|
|
475
|
+
// an `expect(...)` inside a triple-quoted block counted as a delivered assertion and
|
|
476
|
+
// could hide a real loss. Comments are blanked afterwards, on the copy whose string
|
|
477
|
+
// contents are already gone, so a `#` inside a literal is not one.
|
|
478
|
+
return (blankPythonStrings(src)
|
|
322
479
|
.split("\n")
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
.replace(/#.*$/, (c) => " ".repeat(c.length)))
|
|
328
|
-
.join("\n");
|
|
480
|
+
// Blanked, not deleted: callers scan this copy for OFFSETS and read the text back
|
|
481
|
+
// out of the original, so every line must keep its length.
|
|
482
|
+
.map((line) => line.replace(/#.*$/, (c) => " ".repeat(c.length)))
|
|
483
|
+
.join("\n"));
|
|
329
484
|
}
|
|
330
485
|
function signatureLines(body) {
|
|
331
486
|
// The signature runs until its parameter parentheses close: a `{` inside a
|
|
@@ -41,3 +41,8 @@ export interface RetrofitMismatch {
|
|
|
41
41
|
* than a refusal the agent cannot act on.
|
|
42
42
|
*/
|
|
43
43
|
export declare function retrofitMismatches(retrofitFile: string, utilsFiles: string[], spec: UtilsLanguageSpec): Promise<RetrofitMismatch[]>;
|
|
44
|
+
/** The file's content at HEAD, or undefined when there is nothing to compare against
|
|
45
|
+
* (untracked, no git root, or git unavailable). Never throws. The ONE reader of a
|
|
46
|
+
* file's committed baseline on the utils path: the incumbent-signature gate reads
|
|
47
|
+
* the utils module through it too. */
|
|
48
|
+
export declare function committedBaseline(file: string): Promise<string | undefined>;
|
|
@@ -192,8 +192,10 @@ function sameSet(a, b) {
|
|
|
192
192
|
return true;
|
|
193
193
|
}
|
|
194
194
|
/** The file's content at HEAD, or undefined when there is nothing to compare against
|
|
195
|
-
* (untracked, no git root, or git unavailable). Never throws.
|
|
196
|
-
|
|
195
|
+
* (untracked, no git root, or git unavailable). Never throws. The ONE reader of a
|
|
196
|
+
* file's committed baseline on the utils path: the incumbent-signature gate reads
|
|
197
|
+
* the utils module through it too. */
|
|
198
|
+
export async function committedBaseline(file) {
|
|
197
199
|
const root = detectGitRoot(file);
|
|
198
200
|
if (!root)
|
|
199
201
|
return undefined;
|
|
@@ -26,5 +26,10 @@ export interface StagingResult {
|
|
|
26
26
|
* the tests importing them will fail in the output commit, so the verify pass
|
|
27
27
|
* treats a non-empty list as a failed verification. */
|
|
28
28
|
failed: string[];
|
|
29
|
+
/** The repository's own modules the spec imports that this run CHANGED (absolute)
|
|
30
|
+
* — a helper added to the customer's file. Staged like the utils file: the module
|
|
31
|
+
* may sit above the test directory the action sweeps, and a test importing a
|
|
32
|
+
* helper the output commit does not carry fails for everyone else. */
|
|
33
|
+
inHouse: string[];
|
|
29
34
|
}
|
|
30
35
|
export declare function stageUtilsArtifacts(testFile: string, language?: string): Promise<StagingResult>;
|
|
@@ -6,6 +6,7 @@ import { detectGitRoot, stageGeneratedPaths } from "../gitStaging.js";
|
|
|
6
6
|
import { logger } from "../logger.js";
|
|
7
7
|
import { isTestbotEnabled } from "../featureFlags.js";
|
|
8
8
|
import { locateUtilsFiles, realpath } from "./locate.js";
|
|
9
|
+
import { locateInHouseModules } from "./in-house.js";
|
|
9
10
|
import { CODEGEN_MARKER_RE } from "./call-sites.js";
|
|
10
11
|
import { utilsSpecFor, utilsSpecForFile } from "./language-spec.js";
|
|
11
12
|
const execFileAsync = promisify(execFile);
|
|
@@ -14,7 +15,14 @@ export async function stageUtilsArtifacts(testFile, language) {
|
|
|
14
15
|
const failed = [];
|
|
15
16
|
const utilsFilesOut = [];
|
|
16
17
|
const retrofits = [];
|
|
17
|
-
const
|
|
18
|
+
const inHouse = [];
|
|
19
|
+
const result = {
|
|
20
|
+
staged,
|
|
21
|
+
failed,
|
|
22
|
+
utilsFiles: utilsFilesOut,
|
|
23
|
+
retrofits,
|
|
24
|
+
inHouse,
|
|
25
|
+
};
|
|
18
26
|
// Outside a testbot run stageGeneratedPaths is a no-op; report nothing as staged
|
|
19
27
|
// rather than a list of files nothing touched.
|
|
20
28
|
if (!isTestbotEnabled())
|
|
@@ -42,6 +50,20 @@ export async function stageUtilsArtifacts(testFile, language) {
|
|
|
42
50
|
failed.push(file);
|
|
43
51
|
}
|
|
44
52
|
}
|
|
53
|
+
for (const module of await modifiedInHouseModules(testFile, language)) {
|
|
54
|
+
inHouse.push(module);
|
|
55
|
+
try {
|
|
56
|
+
await stageGeneratedPaths(module);
|
|
57
|
+
staged.push(module);
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
logger.warning("Could not stage an in-house module this run extended", {
|
|
61
|
+
file: module,
|
|
62
|
+
error: String(err),
|
|
63
|
+
});
|
|
64
|
+
failed.push(module);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
45
67
|
// Sibling generated tests this run EDITED to import from the utils file (STEP 5c, or
|
|
46
68
|
// a maintenance update): tracked, modified, codegen-marked, importing a located utils
|
|
47
69
|
// stem. Discovery staged only the current test and the loop above only the utils
|
|
@@ -65,9 +87,32 @@ export async function stageUtilsArtifacts(testFile, language) {
|
|
|
65
87
|
}
|
|
66
88
|
return result;
|
|
67
89
|
}
|
|
68
|
-
|
|
90
|
+
/** The in-house modules the spec imports that differ from HEAD — what this run
|
|
91
|
+
* added to. Tracked-and-modified only: an untracked module is not in-house, and an
|
|
92
|
+
* unchanged one carries nothing of this run's. Never throws. */
|
|
93
|
+
async function modifiedInHouseModules(testFile, language) {
|
|
69
94
|
const spec = utilsSpecFor(language) ?? utilsSpecForFile(testFile);
|
|
70
95
|
const root = detectGitRoot(testFile);
|
|
96
|
+
if (!spec || !root)
|
|
97
|
+
return [];
|
|
98
|
+
try {
|
|
99
|
+
const modules = await locateInHouseModules({ testFile, spec, cwd: root });
|
|
100
|
+
if (modules.length === 0)
|
|
101
|
+
return [];
|
|
102
|
+
const { stdout } = await execFileAsync("git", ["diff", "-z", "--name-only", "--diff-filter=M", "HEAD"], { cwd: root, encoding: "utf8" });
|
|
103
|
+
const modified = new Set();
|
|
104
|
+
for (const rel of stdout.split("\0").filter(Boolean))
|
|
105
|
+
modified.add(await realpath(path.resolve(root, rel)));
|
|
106
|
+
return modules.map((m) => m.file).filter((f) => modified.has(f));
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
logger.warning("Could not list the in-house modules this run changed — none will be staged", { testFile, error: String(err) });
|
|
110
|
+
return [];
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
async function modifiedSiblingsImporting(testFile, utilsFiles, language) {
|
|
114
|
+
const spec = utilsSpecForFile(testFile) ?? utilsSpecFor(language);
|
|
115
|
+
const root = detectGitRoot(testFile);
|
|
71
116
|
if (!spec || !root)
|
|
72
117
|
return [];
|
|
73
118
|
let modified;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { type HelperAssertion, type UtilsHelper } from "./parse.js";
|
|
2
|
+
import { type UtilsLanguageSpec } from "./language-spec.js";
|
|
3
|
+
/** The helper's status-only assertions, as the language spec recognises them. */
|
|
4
|
+
export declare function statusAssertions(h: UtilsHelper, spec: UtilsLanguageSpec): HelperAssertion[];
|
|
5
|
+
/** Whether the helper pins the status to ONE value — an equality whose operand IS
|
|
6
|
+
* the status, not a bound or a set (`toBeLessThan(500)`, `in (200, 201)`), and not
|
|
7
|
+
* an equality elsewhere in the same assertion (`… < 500 and attempts == 1`). Only
|
|
8
|
+
* then is a status assertion in the spec a restatement rather than a tighter
|
|
9
|
+
* claim. A `.not.` form pins nothing. */
|
|
10
|
+
export declare function assertsStatusEquality(h: UtilsHelper, spec: UtilsLanguageSpec): boolean;
|
|
11
|
+
export interface DefaultedStatusParam {
|
|
12
|
+
/** The parameter as declared — `expectedStatus = 200`, `expected_status=None`. */
|
|
13
|
+
param: string;
|
|
14
|
+
name: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* The parameter the helper's status assertion READS, when it carries a default (or
|
|
18
|
+
* is optional). `undefined` when the helper asserts no status, when its status
|
|
19
|
+
* assertion reads a literal rather than a parameter, or when the parameter has no
|
|
20
|
+
* default.
|
|
21
|
+
*
|
|
22
|
+
* Keyed on the assertion, not on the parameter's name: the same cohort that produced
|
|
23
|
+
* the evidence spelled it `expectedStatus` in one module and `expectedStatusCode` in
|
|
24
|
+
* another, and a name-matched rule misses whichever spelling the next run picks. A
|
|
25
|
+
* `None` default counts — a helper whose assertion is switched off by default lets
|
|
26
|
+
* a caller read the status without verifying it.
|
|
27
|
+
*/
|
|
28
|
+
export declare function defaultedStatusParam(h: UtilsHelper, spec: UtilsLanguageSpec): DefaultedStatusParam | undefined;
|
|
29
|
+
/** The declared parameter the helper's status assertion reads, or `undefined` when
|
|
30
|
+
* the helper asserts no status or compares it against a literal. */
|
|
31
|
+
export declare function statusParamOf(h: UtilsHelper, spec: UtilsLanguageSpec): DefaultedStatusParam | undefined;
|
|
32
|
+
/** The literal a helper pins the status to (`200`), when it pins one and reads no
|
|
33
|
+
* parameter for it — the shape whose restatement cannot be fixed by deleting the
|
|
34
|
+
* spec's assertion alone, because the call has no status argument to keep. */
|
|
35
|
+
export declare function pinnedStatusLiteral(h: UtilsHelper, spec: UtilsLanguageSpec): string | undefined;
|
|
36
|
+
export interface RestatedStatus {
|
|
37
|
+
helper: string;
|
|
38
|
+
/** 1-based spec line of the first restating assertion. */
|
|
39
|
+
line: number;
|
|
40
|
+
/** That assertion, as written. */
|
|
41
|
+
text: string;
|
|
42
|
+
/** How many call sites of this helper restate the status. */
|
|
43
|
+
sites: number;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Call sites in the spec whose returned response the spec then asserts the status
|
|
47
|
+
* of — for helpers that already assert it. One finding per helper, with the count.
|
|
48
|
+
*
|
|
49
|
+
* The link from call to assertion is the RESPONSE VARIABLE: the call's result is
|
|
50
|
+
* bound to a name (`const r = await getOrder(…)`, `r = get_order(…)`), and a later
|
|
51
|
+
* line asserts on `<that name>.status…` before the name is assigned again. Read on
|
|
52
|
+
* a copy with comments and string contents blanked, so a commented-out call or a
|
|
53
|
+
* quoted example binds nothing, and it stops at the next function or test block,
|
|
54
|
+
* which binds its own names. What this cannot see: a destructured result
|
|
55
|
+
* (`const { statusCode } = await …`), a call passed straight into an assertion
|
|
56
|
+
* (`expect((await getOrder(…)).status)`), an alias of the status (`const s =
|
|
57
|
+
* r.status`), a helper called under an import alias, and a response threaded through
|
|
58
|
+
* a further call or a `.then`. Each is a miss, never a false finding.
|
|
59
|
+
*/
|
|
60
|
+
export declare function restatedStatusAssertions(specContent: string, spec: UtilsLanguageSpec, helpers: readonly string[],
|
|
61
|
+
/** Names the spec binds the utils module to — see UtilsLanguageSpec.moduleQualifiers. */
|
|
62
|
+
qualifiers?: readonly string[]): RestatedStatus[];
|