@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,28 +1,66 @@
|
|
|
1
|
+
import { SKYRAMP_SDK_VERSION } from "./skyrampSdkVersion.js";
|
|
2
|
+
/** The SDK spec the generated JavaScript and TypeScript tests need. */
|
|
3
|
+
const npmSdkSpec = `@skyramp/skyramp@${SKYRAMP_SDK_VERSION}`;
|
|
4
|
+
const pythonDependencyGuidance = `
|
|
5
|
+
Persist each missing approved package in the development manifest:
|
|
6
|
+
- Use \`uv add --dev <package>\` for a project using \`[dependency-groups].dev\`.
|
|
7
|
+
- Use \`poetry add --group dev <package>\` for a Poetry project.
|
|
8
|
+
- Add it to \`requirements-dev.txt\`, then run \`python3 -m pip install -r requirements-dev.txt\`.
|
|
9
|
+
If no Python manifest exists at the test project root, create requirements-dev.txt and seed it with the missing approved package. Do not create it alongside pyproject.toml.
|
|
10
|
+
If the repository commits poetry.lock or uv.lock, update it in the same change. Use \`poetry lock\` or \`uv lock\`; both keep the versions already locked.
|
|
11
|
+
`;
|
|
12
|
+
const javascriptDependencyGuidance = `
|
|
13
|
+
Inspect package.json before installing anything.
|
|
14
|
+
- If a required package is already declared, install from the existing manifest without changing its version.
|
|
15
|
+
- If no JavaScript/TypeScript manifest exists at the test project root, create package.json with only \`{ "devDependencies": {} }\` before adding the missing approved package.
|
|
16
|
+
- If an approved package is missing, add it as a devDependency with the repository's package manager. The npm equivalent is \`npm install --save-dev --legacy-peer-deps <package>\`.
|
|
17
|
+
- Never add, upgrade, or downgrade Playwright or @playwright/test when either is already declared.
|
|
18
|
+
- If the repository commits a lockfile, update it in the same change. Use \`npm install --package-lock-only\`, \`yarn install --mode update-lockfile\`, \`pnpm install --lockfile-only\`, or \`bun install --lockfile-only\` for the package manager the repository uses.
|
|
19
|
+
- Do not change \`allowScripts\`, \`pnpm.onlyBuiltDependencies\`, or \`trustedDependencies\`.
|
|
20
|
+
`;
|
|
21
|
+
const javaDependencyGuidance = `
|
|
22
|
+
Inspect existing Java build signals before adding a dependency. Use an existing manifest when present.
|
|
23
|
+
- For Maven wrapper or settings signals, create a minimal pom.xml only when it is absent, and add approved dependencies with <scope>test</scope>.
|
|
24
|
+
- For Gradle wrapper or settings signals, create the matching build.gradle or build.gradle.kts only when it is absent, and use testImplementation or testRuntimeOnly.
|
|
25
|
+
- Do not introduce a competing build system. If neither build system is identified, keep the standalone runner instead of inventing one.
|
|
26
|
+
- If the repository commits gradle.lockfile, update it in the same change with the repository's Gradle wrapper (\`./gradlew dependencies --write-locks\`), or \`gradle\` only when there is no wrapper.
|
|
27
|
+
`;
|
|
28
|
+
function getJavascriptSteps(extension) {
|
|
29
|
+
return `${javascriptDependencyGuidance}${sdkDeclaration("javascript")}
|
|
30
|
+
# Execute the test file
|
|
31
|
+
npx playwright test <test-file>.spec.${extension} --reporter=list
|
|
32
|
+
`;
|
|
33
|
+
}
|
|
34
|
+
/** How to declare the Skyramp SDK, per language. Kept out of the shared
|
|
35
|
+
* dependency guidance because that guidance is also returned for `mock`, and
|
|
36
|
+
* a mock is deployed rather than run as a test — it needs no SDK. */
|
|
37
|
+
const SDK_DECLARATION = {
|
|
38
|
+
python: "Declare `skyramp` in the same development manifest.",
|
|
39
|
+
javascript: `If @skyramp/skyramp is not already declared, add ${npmSdkSpec} as a devDependency. If it is declared, leave its version alone and report the mismatch if the verifier refuses it.`,
|
|
40
|
+
java: "Declare `dev.skyramp:skyramp-library` with test scope. An existing manifest resolves the version through its own dependency management; a manifest you created has none, so give a concrete version there.",
|
|
41
|
+
};
|
|
42
|
+
/** The SDK line for a language, or nothing when the language has none. */
|
|
43
|
+
function sdkDeclaration(language) {
|
|
44
|
+
const key = language === "typescript" ? "javascript" : language;
|
|
45
|
+
const line = SDK_DECLARATION[key];
|
|
46
|
+
return line ? `\n${line}\n` : "";
|
|
47
|
+
}
|
|
1
48
|
export function getLanguageSteps(params) {
|
|
2
49
|
const { language, testType } = params;
|
|
3
50
|
if (testType === "mock") {
|
|
4
51
|
switch (language) {
|
|
5
52
|
case "python":
|
|
6
|
-
return
|
|
7
|
-
# Install skyramp dependency
|
|
8
|
-
pip3 install skyramp
|
|
9
|
-
|
|
53
|
+
return `${pythonDependencyGuidance}
|
|
10
54
|
# Run the mock server
|
|
11
55
|
python3 <mock-file>.py
|
|
12
56
|
`;
|
|
13
57
|
case "typescript":
|
|
14
|
-
return
|
|
15
|
-
# Install dependencies
|
|
16
|
-
npm install @skyramp/skyramp
|
|
17
|
-
|
|
58
|
+
return `${javascriptDependencyGuidance}
|
|
18
59
|
# Run the mock server
|
|
19
60
|
npx ts-node <mock-file>.ts
|
|
20
61
|
`;
|
|
21
62
|
case "javascript":
|
|
22
|
-
return
|
|
23
|
-
# Install dependencies
|
|
24
|
-
npm install @skyramp/skyramp
|
|
25
|
-
|
|
63
|
+
return `${javascriptDependencyGuidance}
|
|
26
64
|
# Run the mock server
|
|
27
65
|
node <mock-file>.js
|
|
28
66
|
`;
|
|
@@ -30,63 +68,40 @@ node <mock-file>.js
|
|
|
30
68
|
return "";
|
|
31
69
|
}
|
|
32
70
|
}
|
|
33
|
-
let
|
|
71
|
+
let steps = "";
|
|
34
72
|
switch (language) {
|
|
35
73
|
case "python":
|
|
36
|
-
|
|
37
|
-
# Install skyramp dependency
|
|
38
|
-
pip3 install skyramp
|
|
39
|
-
`;
|
|
74
|
+
steps = pythonDependencyGuidance + sdkDeclaration("python");
|
|
40
75
|
// e2e and ui tests
|
|
41
76
|
if (testType === "e2e" || testType === "ui") {
|
|
42
|
-
|
|
43
|
-
# Install playwright dependencies
|
|
44
|
-
pip3 install pytest-playwright
|
|
77
|
+
steps += `
|
|
45
78
|
# Execute the test file
|
|
46
79
|
python3 -m pytest --browser chromium <test-file>.py
|
|
47
80
|
`;
|
|
48
81
|
}
|
|
49
82
|
// framework pytest
|
|
50
83
|
if (params.framework === "pytest") {
|
|
51
|
-
|
|
52
|
-
# Install pytest dependency
|
|
53
|
-
pip3 install pytest
|
|
54
|
-
|
|
84
|
+
steps += `
|
|
55
85
|
# Execute test file
|
|
56
86
|
python3 -m pytest <test-file>.py
|
|
57
87
|
`;
|
|
58
88
|
}
|
|
59
89
|
// robot framework
|
|
60
90
|
if (params.framework === "robot") {
|
|
61
|
-
|
|
62
|
-
# Install robotframework dependency
|
|
63
|
-
pip3 install robotframework
|
|
64
|
-
|
|
91
|
+
steps += `
|
|
65
92
|
# Execution of test file
|
|
66
93
|
python3 -m robot <robot-file>.robot
|
|
67
94
|
`;
|
|
68
95
|
}
|
|
69
96
|
break;
|
|
70
97
|
case "javascript":
|
|
71
|
-
|
|
72
|
-
# install dependencies for package.json
|
|
73
|
-
npm install @skyramp/skyramp @playwright/test
|
|
74
|
-
|
|
75
|
-
# Execution of test file
|
|
76
|
-
npx playwright test <test-file>.spec.js --reporter=list
|
|
77
|
-
`;
|
|
98
|
+
steps = getJavascriptSteps("js");
|
|
78
99
|
break;
|
|
79
100
|
case "typescript":
|
|
80
|
-
|
|
81
|
-
# install dependencies for package.json
|
|
82
|
-
npm install @skyramp/skyramp @playwright/test
|
|
83
|
-
|
|
84
|
-
# Execution of test file
|
|
85
|
-
npx playwright test <test-file>.spec.ts --reporter=list
|
|
86
|
-
`;
|
|
101
|
+
steps = getJavascriptSteps("ts");
|
|
87
102
|
break;
|
|
88
103
|
case "java":
|
|
89
|
-
|
|
104
|
+
steps = `${javaDependencyGuidance}${sdkDeclaration("java")}
|
|
90
105
|
# Prerequisites
|
|
91
106
|
# Compile the test file
|
|
92
107
|
javac -cp "./lib/*" -d target <test-file>.java
|
|
@@ -104,11 +119,11 @@ java -jar "./lib/junit-platform-console-standalone-\${JUNIT_PLATFORM_VER}.jar" \
|
|
|
104
119
|
default:
|
|
105
120
|
return "";
|
|
106
121
|
}
|
|
107
|
-
return
|
|
122
|
+
return steps + appendExecutionInstruction();
|
|
108
123
|
}
|
|
109
124
|
function appendExecutionInstruction() {
|
|
110
125
|
return `
|
|
111
|
-
- Notify the user that they can also use
|
|
126
|
+
- Notify the user that they can also use the Execute with Skyramp tool to run the test.
|
|
112
127
|
- Before I can execute the test for you, I need to confirm the following information:
|
|
113
128
|
Authentication: Please provide me with your authentication token (by default we assume a Bearer Token). If you don't require any token for your service please just say: 'No token required'
|
|
114
129
|
`;
|
|
@@ -49,7 +49,8 @@ export const isBareIdPath = (path) => {
|
|
|
49
49
|
return (segs.length > 0 &&
|
|
50
50
|
segs.every((seg) => {
|
|
51
51
|
const canonical = canonicalSegment(seg);
|
|
52
|
-
return canonical.startsWith("{") &&
|
|
52
|
+
return (canonical.startsWith("{") &&
|
|
53
|
+
canonical.slice(1, -1).toLowerCase() === "id");
|
|
53
54
|
}));
|
|
54
55
|
};
|
|
55
56
|
// Segment-boundary suffix match: avoids "/orders" matching "/preorders".
|
|
@@ -27,7 +27,9 @@ export function buildPathSignatures(file) {
|
|
|
27
27
|
// import of "./Foo" — special-case the compound extension.
|
|
28
28
|
const isDts = /\.d\.ts$/i.test(file);
|
|
29
29
|
const ext = isDts ? ".d.ts" : path.extname(file);
|
|
30
|
-
const basename = isDts
|
|
30
|
+
const basename = isDts
|
|
31
|
+
? path.basename(file, ".d.ts")
|
|
32
|
+
: path.basename(file, ext);
|
|
31
33
|
const quotes = [`'`, `"`, "`"];
|
|
32
34
|
const stems = [`/${basename}`, `/${basename}${ext}`];
|
|
33
35
|
// An index module is normally imported by its directory (`from './_constants'`,
|
|
@@ -43,7 +45,9 @@ export function buildPathSignatures(file) {
|
|
|
43
45
|
/** True for `index.<ext>` modules, including `index.d.ts` (the same test buildPathSignatures uses). */
|
|
44
46
|
export function isIndexModule(file) {
|
|
45
47
|
const isDts = /\.d\.ts$/i.test(file);
|
|
46
|
-
return (isDts
|
|
48
|
+
return ((isDts
|
|
49
|
+
? path.basename(file, ".d.ts")
|
|
50
|
+
: path.basename(file, path.extname(file))) === "index");
|
|
47
51
|
}
|
|
48
52
|
/**
|
|
49
53
|
* True when `importerContent` (the source of `importerFile`) contains an import
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* matching (contract tests, or a fallback when names drift between
|
|
12
12
|
* register and generate).
|
|
13
13
|
*/
|
|
14
|
-
import {
|
|
14
|
+
import { PlannedScenario } from "../recommendation/types.js";
|
|
15
15
|
import type { PlannedTest } from "../recommendation/types.js";
|
|
16
16
|
/** Query shape built from a generation-tool call or a reported test entry. */
|
|
17
17
|
export interface PlanMatchQuery {
|
|
@@ -34,7 +34,7 @@ export declare function normalizeMatchPath(rawPath: string | undefined): string;
|
|
|
34
34
|
/** Name key (if a name exists) plus one endpoint key per step. BOTH kinds carry
|
|
35
35
|
* the planned test's test type, or a contract call matches an integration-only
|
|
36
36
|
* planned test sharing its name. A slug holds no `:`. */
|
|
37
|
-
export declare function computeMatchKeys(scenario:
|
|
37
|
+
export declare function computeMatchKeys(scenario: PlannedScenario): string[];
|
|
38
38
|
/**
|
|
39
39
|
* True when `query` matches `keys`:
|
|
40
40
|
* - by testType + scenarioName slug (`name:<testType>:<slug>`), or
|
|
@@ -51,7 +51,9 @@ export function isOpaqueIdSegment(segment) {
|
|
|
51
51
|
// The sign belongs to the value: an edge-case step writes `/orders/-1` to
|
|
52
52
|
// probe a negative id, and without the sign that segment became the resource
|
|
53
53
|
// name, so the key could never match real order coverage.
|
|
54
|
-
return UUID_RE.test(segment) ||
|
|
54
|
+
return (UUID_RE.test(segment) ||
|
|
55
|
+
/^-?\d+$/.test(segment) ||
|
|
56
|
+
/^[0-9a-f]{16,}$/i.test(segment));
|
|
55
57
|
}
|
|
56
58
|
/**
|
|
57
59
|
* Normalize a path so param and id segments collapse to `:p`.
|
|
@@ -76,22 +78,20 @@ export function normalizeMatchPath(rawPath) {
|
|
|
76
78
|
})
|
|
77
79
|
.join("/");
|
|
78
80
|
}
|
|
79
|
-
/** The scenario is read back from the stored plan, so `steps` is an array only on
|
|
80
|
-
* the validated path. `?? []` keeps a malformed plan from costing the call. */
|
|
81
|
-
function inferTestType(scenario) {
|
|
82
|
-
const steps = Array.isArray(scenario?.steps) ? scenario.steps : [];
|
|
83
|
-
return (scenario?.testType ?? (steps.length === 1 ? "contract" : "integration")).toLowerCase();
|
|
84
|
-
}
|
|
85
81
|
/** Name key (if a name exists) plus one endpoint key per step. BOTH kinds carry
|
|
86
82
|
* the planned test's test type, or a contract call matches an integration-only
|
|
87
83
|
* planned test sharing its name. A slug holds no `:`. */
|
|
88
84
|
export function computeMatchKeys(scenario) {
|
|
89
85
|
const keys = [];
|
|
90
|
-
const testType =
|
|
91
|
-
const slug = slugifyName(scenario
|
|
86
|
+
const testType = scenario.testType.toLowerCase();
|
|
87
|
+
const slug = slugifyName(scenario.scenarioName);
|
|
92
88
|
if (slug)
|
|
93
89
|
keys.push(`name:${testType}:${slug}`);
|
|
94
|
-
|
|
90
|
+
// The steps come back off the run state file too, so the array the type declares
|
|
91
|
+
// holds only on the validated path. A corrupted one is no evidence about the
|
|
92
|
+
// scenario, and a throw here failed generation instead of allowing the call.
|
|
93
|
+
const steps = Array.isArray(scenario.steps) ? scenario.steps : [];
|
|
94
|
+
for (const step of steps) {
|
|
95
95
|
if (!step?.method || !step?.path)
|
|
96
96
|
continue;
|
|
97
97
|
keys.push(`ep:${testType}:${step.method.toUpperCase()}:${normalizeMatchPath(step.path)}`);
|
|
@@ -127,8 +127,12 @@ function nameAgrees(keys, query) {
|
|
|
127
127
|
const nameSlug = query.scenarioName ? slugifyName(query.scenarioName) : "";
|
|
128
128
|
if (!nameSlug)
|
|
129
129
|
return false;
|
|
130
|
-
const wanted = query.testType
|
|
131
|
-
|
|
130
|
+
const wanted = query.testType
|
|
131
|
+
? `name:${query.testType.toLowerCase()}:${nameSlug}`
|
|
132
|
+
: undefined;
|
|
133
|
+
return keys.some((key) => wanted !== undefined
|
|
134
|
+
? key === wanted
|
|
135
|
+
: key.startsWith("name:") && key.endsWith(`:${nameSlug}`));
|
|
132
136
|
}
|
|
133
137
|
/** Whether the plan holds this query's endpoint, ignoring the name. Shared by
|
|
134
138
|
* the name channel — which may no longer answer alone on an endpoint query —
|
|
@@ -222,12 +226,14 @@ export function nameMatchedTypeMismatches(plannedTests, query) {
|
|
|
222
226
|
// The name channel, minus the type: a key ending in this slug means the plan
|
|
223
227
|
// holds the scenario, and the segment before it is the type it holds it as.
|
|
224
228
|
const named = keys.filter((key) => key.startsWith("name:") && key.endsWith(`:${nameSlug}`));
|
|
225
|
-
return named.length > 0 &&
|
|
229
|
+
return (named.length > 0 &&
|
|
230
|
+
!named.some((key) => key === `name:${calledType}:${nameSlug}`));
|
|
226
231
|
});
|
|
227
232
|
}
|
|
228
233
|
/** True when `query` matches at least one planned test of the registered plan.
|
|
229
234
|
* The keys are computed per call rather than stored with the plan, so there is
|
|
230
235
|
* one description of a planned test and no second shape to drift from it. */
|
|
231
236
|
export function matchesPlanCandidates(plannedTests, query) {
|
|
232
|
-
return plannedTests.some((plannedTest) => !!plannedTest?.scenario &&
|
|
237
|
+
return plannedTests.some((plannedTest) => !!plannedTest?.scenario &&
|
|
238
|
+
matchesMatchKeys(computeMatchKeys(plannedTest.scenario), query));
|
|
233
239
|
}
|
|
@@ -36,7 +36,9 @@ function selectorsFrom(description) {
|
|
|
36
36
|
}
|
|
37
37
|
// A bare token is only a selector if the whole backticked run is one — otherwise
|
|
38
38
|
// it is prose, or an attribute selector already harvested above.
|
|
39
|
-
if (!sawAttr &&
|
|
39
|
+
if (!sawAttr &&
|
|
40
|
+
BARE_TOKEN_RE.test(token) &&
|
|
41
|
+
token.length >= MIN_BARE_TOKEN_LENGTH) {
|
|
40
42
|
out.add(token);
|
|
41
43
|
}
|
|
42
44
|
}
|
|
@@ -125,7 +127,10 @@ function bareMemberName(member) {
|
|
|
125
127
|
*/
|
|
126
128
|
export function findMissedReuse(specContent, members) {
|
|
127
129
|
const locators = extractRawLocatorTokens(specContent);
|
|
128
|
-
const compiled = members.map((m) => ({
|
|
130
|
+
const compiled = members.map((m) => ({
|
|
131
|
+
m,
|
|
132
|
+
matchers: m.selectors.map(toMatcher),
|
|
133
|
+
}));
|
|
129
134
|
const missed = [];
|
|
130
135
|
for (const locator of locators) {
|
|
131
136
|
const hit = compiled.find(({ matchers }) => matchers.some((re) => re.test(locator)));
|
|
@@ -19,7 +19,12 @@ export async function expandImports(selected, allPoms) {
|
|
|
19
19
|
if (!ref || !ref.startsWith("."))
|
|
20
20
|
continue;
|
|
21
21
|
const base = path.resolve(path.dirname(file), ref);
|
|
22
|
-
for (const cand of [
|
|
22
|
+
for (const cand of [
|
|
23
|
+
base,
|
|
24
|
+
`${base}.js`,
|
|
25
|
+
`${base}.ts`,
|
|
26
|
+
base.replace(/\.js$/, ".ts"),
|
|
27
|
+
]) {
|
|
23
28
|
if (pomSet.has(cand) && !seen.has(cand)) {
|
|
24
29
|
seen.add(cand);
|
|
25
30
|
out.push({ file: cand, referrer: file });
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readFile, stat } from "fs/promises";
|
|
2
2
|
import * as path from "path";
|
|
3
|
-
import { extractSelectors, DEFAULT_TESTID_ATTRS } from "./selector-extractor.js";
|
|
3
|
+
import { extractSelectors, DEFAULT_TESTID_ATTRS, } from "./selector-extractor.js";
|
|
4
4
|
import { globPomFiles, globAllSourceFiles } from "./pom-files.js";
|
|
5
5
|
import { scorePoms } from "./scoring.js";
|
|
6
6
|
import { expandImports } from "./import-expansion.js";
|
|
@@ -9,17 +9,29 @@ import { stripComments } from "./strip.js";
|
|
|
9
9
|
const DISCOVERY_FILE_CAP = 3000;
|
|
10
10
|
export const SELECTION_CAP = 10;
|
|
11
11
|
export const FINAL_CAP = 25;
|
|
12
|
-
const PLAYWRIGHT_CONFIG_NAMES = [
|
|
12
|
+
const PLAYWRIGHT_CONFIG_NAMES = [
|
|
13
|
+
"playwright.config.ts",
|
|
14
|
+
"playwright.config.js",
|
|
15
|
+
"playwright.config.mjs",
|
|
16
|
+
"playwright.config.cjs",
|
|
17
|
+
];
|
|
13
18
|
const TESTID_ATTRIBUTE_RE = /testIdAttribute\s*:\s*["']([^"']+)["']/;
|
|
14
19
|
export async function findRoot(startDir) {
|
|
15
20
|
let dir = startDir;
|
|
16
21
|
for (let i = 0; i < 8; i++) {
|
|
17
|
-
for (const marker of [
|
|
22
|
+
for (const marker of [
|
|
23
|
+
"package.json",
|
|
24
|
+
"tsconfig.json",
|
|
25
|
+
"jsconfig.json",
|
|
26
|
+
".git",
|
|
27
|
+
]) {
|
|
18
28
|
try {
|
|
19
29
|
await stat(path.join(dir, marker));
|
|
20
30
|
return dir;
|
|
21
31
|
}
|
|
22
|
-
catch {
|
|
32
|
+
catch {
|
|
33
|
+
/* keep walking */
|
|
34
|
+
}
|
|
23
35
|
}
|
|
24
36
|
const parent = path.dirname(dir);
|
|
25
37
|
if (parent === dir)
|
|
@@ -39,7 +51,9 @@ export async function readTestIdAttribute(root) {
|
|
|
39
51
|
if (m)
|
|
40
52
|
return m[1];
|
|
41
53
|
}
|
|
42
|
-
catch {
|
|
54
|
+
catch {
|
|
55
|
+
/* try next filename */
|
|
56
|
+
}
|
|
43
57
|
}
|
|
44
58
|
return undefined;
|
|
45
59
|
}
|
|
@@ -49,7 +63,9 @@ export async function readTestIdAttribute(root) {
|
|
|
49
63
|
* the exact-tie case in index.test.ts.
|
|
50
64
|
*/
|
|
51
65
|
export function tierAndCap(candidates, maxScore) {
|
|
52
|
-
const kept = [...candidates]
|
|
66
|
+
const kept = [...candidates]
|
|
67
|
+
.sort((a, b) => b.score - a.score)
|
|
68
|
+
.slice(0, FINAL_CAP);
|
|
53
69
|
const isTier1 = (c) => c.score > maxScore / 4 || c.rareHits >= 2;
|
|
54
70
|
const tier1 = kept.filter(isTier1);
|
|
55
71
|
const tier2 = kept.filter((c) => !isTier1(c));
|
|
@@ -57,16 +73,24 @@ export function tierAndCap(candidates, maxScore) {
|
|
|
57
73
|
}
|
|
58
74
|
/** Deterministic POM pre-scoping. tier1/tier2 both [] ⇒ caller must fall back to the unscoped prompt. */
|
|
59
75
|
export async function selectScopedPoms(opts) {
|
|
60
|
-
const empty = (selectors = 0, pomFiles = 0, discovery = "none") => ({
|
|
76
|
+
const empty = (selectors = 0, pomFiles = 0, discovery = "none") => ({
|
|
77
|
+
tier1: [],
|
|
78
|
+
tier2: [],
|
|
79
|
+
diagnostics: { selectors, pomFiles, scoped: 0, discovery },
|
|
80
|
+
});
|
|
61
81
|
let spec = opts.specContent ?? "";
|
|
62
82
|
// Prefer the on-disk file (the agent may have rewritten it); fall back to the passed prompt content.
|
|
63
83
|
try {
|
|
64
84
|
spec = await readFile(opts.testFile, "utf8");
|
|
65
85
|
}
|
|
66
|
-
catch {
|
|
86
|
+
catch {
|
|
87
|
+
/* use provided specContent */
|
|
88
|
+
}
|
|
67
89
|
const root = await findRoot(path.dirname(opts.testFile));
|
|
68
90
|
const testIdAttribute = await readTestIdAttribute(root);
|
|
69
|
-
const extraTestIdAttrs = testIdAttribute && !DEFAULT_TESTID_ATTRS.includes(testIdAttribute)
|
|
91
|
+
const extraTestIdAttrs = testIdAttribute && !DEFAULT_TESTID_ATTRS.includes(testIdAttribute)
|
|
92
|
+
? [testIdAttribute]
|
|
93
|
+
: [];
|
|
70
94
|
const selectors = extractSelectors(spec, extraTestIdAttrs);
|
|
71
95
|
if (selectors.length === 0)
|
|
72
96
|
return empty();
|
|
@@ -111,19 +135,33 @@ export async function selectScopedPoms(opts) {
|
|
|
111
135
|
const candidates = expanded.flatMap(({ file, referrer }) => {
|
|
112
136
|
const own = rankedByFile.get(file);
|
|
113
137
|
if (own)
|
|
114
|
-
return [
|
|
138
|
+
return [
|
|
139
|
+
{
|
|
140
|
+
file: own.file,
|
|
141
|
+
score: own.score,
|
|
142
|
+
rareHits: own.rareHits,
|
|
143
|
+
matchedTokens: own.matchedTokens,
|
|
144
|
+
},
|
|
145
|
+
];
|
|
115
146
|
// Invariant: every expansion addition without an own rank carries the referrer that
|
|
116
147
|
// pulled it in (expandImports always tags non-selected files this way). Skip
|
|
117
148
|
// defensively rather than assert, in case that invariant is ever violated.
|
|
118
149
|
const referrerEntry = referrer ? rankedByFile.get(referrer) : undefined;
|
|
119
150
|
if (!referrerEntry)
|
|
120
151
|
return [];
|
|
121
|
-
return [
|
|
152
|
+
return [
|
|
153
|
+
{ file, score: referrerEntry.score, rareHits: 0, matchedTokens: [] },
|
|
154
|
+
];
|
|
122
155
|
});
|
|
123
156
|
const { tier1, tier2 } = tierAndCap(candidates, maxScore);
|
|
124
157
|
return {
|
|
125
158
|
tier1,
|
|
126
159
|
tier2,
|
|
127
|
-
diagnostics: {
|
|
160
|
+
diagnostics: {
|
|
161
|
+
selectors: selectors.length,
|
|
162
|
+
pomFiles: pomFiles.length,
|
|
163
|
+
scoped: tier1.length + tier2.length,
|
|
164
|
+
discovery,
|
|
165
|
+
},
|
|
128
166
|
};
|
|
129
167
|
}
|
|
@@ -20,12 +20,16 @@ export async function scorePoms(selectors, files) {
|
|
|
20
20
|
try {
|
|
21
21
|
contents.set(f, (await readFile(f, "utf8")).replace(/\\/g, ""));
|
|
22
22
|
}
|
|
23
|
-
catch {
|
|
23
|
+
catch {
|
|
24
|
+
/* unreadable file: skip */
|
|
25
|
+
}
|
|
24
26
|
}));
|
|
25
27
|
// Selectors arrive pre-normalized from extractSelectors — only file contents need stripping.
|
|
26
28
|
const fileMatches = new Map(); // selector -> files containing it
|
|
27
29
|
for (const sel of selectors) {
|
|
28
|
-
const matched = [...contents.entries()]
|
|
30
|
+
const matched = [...contents.entries()]
|
|
31
|
+
.filter(([, c]) => c.includes(sel))
|
|
32
|
+
.map(([f]) => f);
|
|
29
33
|
if (matched.length > 0)
|
|
30
34
|
fileMatches.set(sel, matched);
|
|
31
35
|
}
|
|
@@ -33,7 +37,13 @@ export async function scorePoms(selectors, files) {
|
|
|
33
37
|
for (const [sel, matched] of fileMatches) {
|
|
34
38
|
const df = matched.length;
|
|
35
39
|
for (const f of matched) {
|
|
36
|
-
const s = scores.get(f) ?? {
|
|
40
|
+
const s = scores.get(f) ?? {
|
|
41
|
+
file: f,
|
|
42
|
+
score: 0,
|
|
43
|
+
hits: 0,
|
|
44
|
+
rareHits: 0,
|
|
45
|
+
matchedTokens: [],
|
|
46
|
+
};
|
|
37
47
|
s.score += 1 / df;
|
|
38
48
|
s.hits += 1;
|
|
39
49
|
if (df <= RARE_DF)
|
|
@@ -5,7 +5,12 @@
|
|
|
5
5
|
*/
|
|
6
6
|
// Default test-id attribute family. Playwright's own default is data-testid, but
|
|
7
7
|
// data-test/data-qa/data-cy are common conventions in the wild — match them all.
|
|
8
|
-
export const DEFAULT_TESTID_ATTRS = [
|
|
8
|
+
export const DEFAULT_TESTID_ATTRS = [
|
|
9
|
+
"data-test",
|
|
10
|
+
"data-testid",
|
|
11
|
+
"data-qa",
|
|
12
|
+
"data-cy",
|
|
13
|
+
];
|
|
9
14
|
// Full regex-escape for attr names — a config-supplied testIdAttribute could contain
|
|
10
15
|
// a stray metachar, which must not be allowed to distort the pattern.
|
|
11
16
|
import { escapeRegExp as esc } from "../regex.js";
|
|
@@ -20,7 +25,10 @@ const attrAnchor = (attrs) => new RegExp(`\\[(?:${attrs.map(esc).join("|")})[$^*
|
|
|
20
25
|
// locator values, shared by both extractSelectors and extractRawLocatorTokens.
|
|
21
26
|
const GET_BY_TEST_ID = /getByTestId\(\s*["']([^"']+)["']/g;
|
|
22
27
|
const GET_BY_TEXT_LABEL_PLACEHOLDER = /getBy(?:Text|Label|Placeholder)\(\s*["']([^"']+)["']/g;
|
|
23
|
-
const LOCATOR_PATTERNS = [
|
|
28
|
+
const LOCATOR_PATTERNS = [
|
|
29
|
+
GET_BY_TEST_ID,
|
|
30
|
+
GET_BY_TEXT_LABEL_PLACEHOLDER,
|
|
31
|
+
];
|
|
24
32
|
// getByRole("role", ...) and bare `name: "..."` object keys are useful evidence for
|
|
25
33
|
// POM *detection* (scoring which page objects a test's actions touch), but they are
|
|
26
34
|
// NOT raw locator values: a role name isn't a selector, and `name:` matches ANY bare
|
|
@@ -28,7 +36,12 @@ const LOCATOR_PATTERNS = [GET_BY_TEST_ID, GET_BY_TEXT_LABEL_PLACEHOLDER];
|
|
|
28
36
|
// finding 1). Only extractSelectors (the detection path) includes these.
|
|
29
37
|
const GET_BY_ROLE = /getByRole\(\s*["']([^"']+)["']/g;
|
|
30
38
|
const BARE_NAME_FIELD = /name:\s*["']([^"']+)["']/g;
|
|
31
|
-
const OTHER_PATTERNS = [
|
|
39
|
+
const OTHER_PATTERNS = [
|
|
40
|
+
GET_BY_TEST_ID,
|
|
41
|
+
GET_BY_ROLE,
|
|
42
|
+
BARE_NAME_FIELD,
|
|
43
|
+
GET_BY_TEXT_LABEL_PLACEHOLDER,
|
|
44
|
+
];
|
|
32
45
|
// Raw .locator("...")/.frameLocator("...") strings that are NOT test-id-attribute based
|
|
33
46
|
// (e.g. ".step-deduplication", "iframe#asset-list").
|
|
34
47
|
// Quote-type-aware alternates: a double-quoted arg may contain unescaped single quotes
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/** Every line- and block-comment span in `src`, in source order. Exported for callers
|
|
2
|
+
* that must decide whether a `//` OPENS a comment rather than sits inside one: a `//`
|
|
3
|
+
* on its own line inside `/* … *\/` opens nothing, and deleting that line can take the
|
|
4
|
+
* block's terminator with it. */
|
|
5
|
+
export declare function commentSpans(src: string): {
|
|
6
|
+
start: number;
|
|
7
|
+
end: number;
|
|
8
|
+
}[];
|
|
1
9
|
/** Blanks line/block comments only, preserving string/template literal contents (e.g. so an
|
|
2
10
|
* import specifier's quoted path stays readable). Each blanked character becomes a space
|
|
3
11
|
* (newlines preserved) so remaining code characters keep their original offset. */
|