@skyramp/mcp 0.4.1-rc.2 → 0.4.2-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/adapters/jestAdapter.js +23 -5
- package/build/adapters/mochaAdapter.js +7 -1
- package/build/adapters/playwrightAdapter.js +3 -1
- package/build/adapters/pytestAdapter.js +14 -3
- package/build/commands/localDevTestChangesCommand.js +1 -0
- package/build/commands/recommendTestsAndExecuteCommand.js +5 -6
- package/build/commands/testThisEndpointCommand.js +16 -4
- package/build/index.js +34 -4
- package/build/playwright/blueprintDigest.js +28 -7
- package/build/playwright/registerPlaywrightTools.js +33 -28
- package/build/playwright/traceRecordingPrompt.js +9 -2
- package/build/prompts/code-reuse.js +95 -29
- package/build/prompts/fix-error-prompt.d.ts +9 -1
- package/build/prompts/fix-error-prompt.js +31 -28
- package/build/prompts/local-dev/local-dev-plan.d.ts +3 -0
- package/build/prompts/local-dev/local-dev-plan.js +3 -1
- package/build/prompts/local-dev/local-dev-prompts.d.ts +1 -1
- package/build/prompts/local-dev/local-dev-prompts.js +30 -3
- package/build/prompts/modularization/integration-test-modularization.js +13 -6
- package/build/prompts/modularization/ui-test-modularization.js +1 -1
- package/build/prompts/personas.js +1 -1
- package/build/prompts/pom-aware-code-reuse.js +7 -9
- package/build/prompts/reuse-hand-off.d.ts +64 -0
- package/build/prompts/reuse-hand-off.js +130 -0
- package/build/prompts/shared-helper-policy.d.ts +88 -2
- package/build/prompts/shared-helper-policy.js +145 -11
- package/build/prompts/sut-setup/modes/adaptWorkflowPrompt.js +1 -1
- package/build/prompts/sut-setup/modes/dockerComposePrompt.js +1 -1
- package/build/prompts/sut-setup/shared.d.ts +4 -1
- package/build/prompts/sut-setup/shared.js +2 -2
- package/build/prompts/test-maintenance/actionsInstructions.d.ts +19 -11
- package/build/prompts/test-maintenance/actionsInstructions.js +47 -26
- package/build/prompts/test-maintenance/drift-analysis-prompt.js +3 -2
- package/build/prompts/test-maintenance/driftAnalysisSections.js +5 -3
- package/build/prompts/test-maintenance/driftAnalysisShared.js +4 -2
- package/build/prompts/test-maintenance/uiDriftAnalysisSections.js +7 -4
- package/build/prompts/test-recommendation/recommendationSections.js +19 -8
- package/build/prompts/test-recommendation/registerRecommendTestsPrompt.js +5 -2
- package/build/prompts/test-recommendation/test-recommendation-prompt.js +10 -7
- package/build/prompts/testbot/testbot-prompts.js +123 -55
- package/build/recommendation/answers.js +18 -9
- package/build/recommendation/pullRequestText.js +1 -1
- package/build/recommendation/registerPlan.js +31 -17
- package/build/recommendation/subjectStep.d.ts +8 -10
- package/build/recommendation/subjectStep.js +17 -16
- package/build/recommendation/types.d.ts +71 -17
- package/build/recommendation/types.js +9 -15
- package/build/recommendation/verifierContracts.d.ts +7 -3
- package/build/recommendation/verifierContracts.js +8 -4
- package/build/recommendation/verifiers/changedFile.js +11 -13
- package/build/recommendation/verifiers/citedPath.d.ts +8 -0
- package/build/recommendation/verifiers/citedPath.js +16 -2
- package/build/recommendation/verifiers/coverage.d.ts +2 -2
- package/build/recommendation/verifiers/coverage.js +190 -134
- package/build/recommendation/verifiers/defects.js +56 -16
- package/build/recommendation/verifiers/deliveredMatchesPlan.d.ts +7 -1
- package/build/recommendation/verifiers/deliveredMatchesPlan.js +28 -14
- package/build/recommendation/verifiers/endpointGrounded.js +14 -8
- package/build/recommendation/verifiers/existingCoverage.d.ts +6 -0
- package/build/recommendation/verifiers/existingCoverage.js +30 -21
- package/build/recommendation/verifiers/expectedOutcome.js +17 -8
- package/build/recommendation/verifiers/expectedValueSourced.js +54 -43
- package/build/recommendation/verifiers/issueTraceability.d.ts +5 -0
- package/build/recommendation/verifiers/issueTraceability.js +64 -7
- package/build/recommendation/verifiers/removedElementGuarded.js +19 -11
- package/build/recommendation/verifiers/reportedCategory.js +9 -4
- package/build/recommendation/verifiers/requirementSourced.js +34 -21
- package/build/recommendation/verifiers/screenRoute.js +15 -10
- package/build/recommendation/verifiers/statedDifference.js +15 -8
- package/build/recommendation/verifiers/uiElementGrounded.js +50 -16
- package/build/resources/analysisResources.js +7 -3
- package/build/resources/progressResource.js +4 -2
- package/build/resources/sutSetupResource.js +20 -2
- package/build/resources/testbotResource.js +19 -1
- package/build/services/AnalyticsService.js +3 -1
- package/build/services/ScenarioGenerationService.js +5 -5
- package/build/services/TestDiscoveryService.js +21 -5
- package/build/services/TestExecutionService.js +63 -21
- package/build/services/TestGenerationService.d.ts +1 -1
- package/build/services/TestGenerationService.js +43 -24
- package/build/skills/enhanceAssertionsSkill.d.ts +45 -0
- package/build/skills/enhanceAssertionsSkill.js +103 -0
- package/build/skills/fixTestImportErrorsSkill.d.ts +2 -2
- package/build/skills/fixTestImportErrorsSkill.js +2 -2
- package/build/skills/skillFiles.d.ts +38 -0
- package/build/skills/skillFiles.js +94 -0
- package/build/skills/validateAssertionAlignmentSkill.d.ts +34 -0
- package/build/skills/validateAssertionAlignmentSkill.js +59 -0
- package/build/tool-phases.js +4 -0
- package/build/tools/auth/loginTool.js +3 -1
- package/build/tools/auth/logoutTool.js +3 -1
- package/build/tools/code-refactor/alignAssertionsTool.d.ts +2 -0
- package/build/tools/code-refactor/alignAssertionsTool.js +51 -0
- package/build/tools/code-refactor/assertion-state.d.ts +1 -1
- package/build/tools/code-refactor/assertion-state.js +1 -1
- package/build/tools/code-refactor/assertionOperations.d.ts +44 -0
- package/build/tools/code-refactor/assertionOperations.js +82 -0
- package/build/tools/code-refactor/assertionSkillTools.d.ts +3 -0
- package/build/tools/code-refactor/assertionSkillTools.js +86 -0
- package/build/tools/code-refactor/codeReuseTool.js +27 -3
- package/build/tools/code-refactor/enhanceAssertionsTool.js +19 -83
- package/build/tools/code-refactor/gate-markers.d.ts +51 -0
- package/build/tools/code-refactor/gate-markers.js +95 -0
- package/build/tools/code-refactor/retrofit-state.d.ts +3 -1
- package/build/tools/code-refactor/retrofit-state.js +44 -2
- package/build/tools/code-refactor/reuse-outcome.d.ts +23 -1
- package/build/tools/code-refactor/reuse-outcome.js +36 -13
- package/build/tools/code-refactor/reuse-state.d.ts +90 -16
- package/build/tools/code-refactor/reuse-state.js +191 -61
- package/build/tools/code-refactor/utils-verify-gates.d.ts +4 -0
- package/build/tools/code-refactor/utils-verify-gates.js +252 -27
- package/build/tools/code-refactor/verify-gates.d.ts +15 -1
- package/build/tools/code-refactor/verify-gates.js +36 -4
- package/build/tools/enrichTestWithMocksTool.d.ts +1 -1
- package/build/tools/enrichTestWithMocksTool.js +9 -5
- package/build/tools/executeSkyrampTestTool.d.ts +22 -1
- package/build/tools/executeSkyrampTestTool.js +571 -271
- package/build/tools/execution-video-state.js +1 -1
- package/build/tools/fixErrorTool.js +5 -6
- package/build/tools/generate-tests/batchMockGenerationTool.js +1 -1
- package/build/tools/generate-tests/generateBatchScenarioRestTool.js +114 -73
- package/build/tools/generate-tests/generateContractRestTool.js +34 -16
- package/build/tools/generate-tests/generateE2ERestTool.d.ts +1 -0
- package/build/tools/generate-tests/generateE2ERestTool.js +9 -1
- package/build/tools/generate-tests/generateIntegrationRestTool.js +22 -7
- package/build/tools/generate-tests/generateMockRestTool.js +3 -1
- package/build/tools/generate-tests/generateUIRestTool.d.ts +2 -0
- package/build/tools/generate-tests/generateUIRestTool.js +11 -2
- package/build/tools/generate-tests/loadTestSchema.js +1 -3
- package/build/tools/generate-tests/planGuard.js +6 -3
- package/build/tools/generate-tests/scenarioFileIdentity.js +4 -1
- package/build/tools/generate-tests/scenarioLint.js +17 -5
- package/build/tools/generate-tests/trace-reuse-guard.js +5 -2
- package/build/tools/generateEnrichedIntegrationTestTool.js +9 -3
- package/build/tools/one-click/oneClickTool.js +3 -1
- package/build/tools/preflightMockCheckTool.js +23 -7
- package/build/tools/runExistingTestsTool.d.ts +1 -1
- package/build/tools/runExistingTestsTool.js +43 -21
- package/build/tools/submitReportTool.d.ts +51 -12
- package/build/tools/submitReportTool.js +860 -161
- package/build/tools/test-management/actionsTool.js +210 -51
- package/build/tools/test-management/analyzeChangesTool.d.ts +4 -5
- package/build/tools/test-management/analyzeChangesTool.js +127 -68
- package/build/tools/test-management/analyzeTestHealthTool.js +35 -13
- package/build/tools/test-management/registerTestPlanTool.d.ts +44 -34
- package/build/tools/test-management/registerTestPlanTool.js +255 -111
- package/build/tools/test-management/resolveScreenTool.js +33 -9
- package/build/tools/trace/startTraceCollectionTool.js +3 -1
- package/build/tools/trace/stopTraceCollectionTool.js +41 -5
- package/build/tools/verifyTestDependenciesTool.d.ts +3 -0
- package/build/tools/verifyTestDependenciesTool.js +54 -0
- package/build/tools/workspace/initScanWorkspaceTool.js +9 -3
- package/build/tools/workspace/initializeWorkspaceTool.js +3 -1
- package/build/types/AssertionOutcome.d.ts +1 -1
- package/build/types/EnhanceType.d.ts +6 -0
- package/build/types/EnhanceType.js +1 -0
- package/build/types/ExternalTestExecution.d.ts +2 -2
- package/build/types/RepositoryAnalysis.d.ts +0 -40
- package/build/types/ReuseOutcome.d.ts +96 -4
- package/build/types/ReuseOutcome.js +16 -0
- package/build/types/StepMethod.js +20 -6
- package/build/types/TestAnalysis.d.ts +10 -2
- package/build/types/TestExecution.d.ts +45 -0
- package/build/types/TestRecommendation.d.ts +1 -1
- package/build/types/TestRecommendation.js +4 -1
- package/build/types/TestTypes.d.ts +13 -0
- package/build/types/TestTypes.js +34 -3
- package/build/types/TestbotPromptOptions.d.ts +9 -1
- package/build/types/TestbotReport.d.ts +45 -9
- package/build/utils/AnalysisStateManager.d.ts +137 -27
- package/build/utils/AnalysisStateManager.js +227 -43
- package/build/utils/assertion-verify/api-shared-lints.js +34 -16
- package/build/utils/assertion-verify/metrics.js +39 -6
- package/build/utils/assertion-verify/ui-lints.js +4 -2
- package/build/utils/branchDiff.js +47 -12
- package/build/utils/canonicalJson.js +3 -1
- package/build/utils/dartRouteExtractor.js +36 -7
- package/build/utils/fixAttempts.d.ts +26 -0
- package/build/utils/fixAttempts.js +109 -0
- package/build/utils/frontendSelectors.js +23 -4
- package/build/utils/generatedTestRecord.d.ts +19 -0
- package/build/utils/generatedTestRecord.js +61 -0
- package/build/utils/gitStaging.js +7 -2
- package/build/utils/initAgent.js +26 -6
- package/build/utils/language-helper.js +39 -45
- package/build/utils/pathMatching.js +2 -1
- package/build/utils/pathSignatures.js +6 -2
- package/build/utils/planMatchKeys.d.ts +2 -2
- package/build/utils/planMatchKeys.js +20 -14
- package/build/utils/pom-catalog-parse.js +7 -2
- package/build/utils/pom-scope/import-expansion.js +6 -1
- package/build/utils/pom-scope/index.js +50 -12
- package/build/utils/pom-scope/scoring.js +13 -3
- package/build/utils/pom-scope/selector-extractor.js +16 -3
- package/build/utils/pom-scope/strip.d.ts +8 -0
- package/build/utils/pom-scope/strip.js +238 -0
- package/build/utils/pom-scope/testIdDiscovery.js +14 -2
- package/build/utils/pom-verify/__fixtures__/af-style/asset-list.page.d.ts +1 -1
- package/build/utils/pom-verify/__fixtures__/af-style/asset-list.page.js +4 -2
- package/build/utils/pom-verify/__fixtures__/af-style/report.iframe.page.js +3 -1
- package/build/utils/pom-verify/__fixtures__/af-style/workflow-footer.page.js +3 -1
- package/build/utils/pom-verify/bindings.js +5 -1
- package/build/utils/pom-verify/calls.js +9 -2
- package/build/utils/pom-verify/verify.js +27 -5
- package/build/utils/pr-comment-parser.js +20 -7
- package/build/utils/proxy-terminal.d.ts +19 -1
- package/build/utils/proxy-terminal.js +346 -21
- package/build/utils/removedUiElements.js +1 -1
- package/build/utils/reportLanguage.js +35 -7
- package/build/utils/reportVerification.d.ts +14 -8
- package/build/utils/reportVerification.js +19 -19
- package/build/utils/repositorySlug.d.ts +32 -0
- package/build/utils/repositorySlug.js +77 -0
- package/build/utils/reuseRouting.js +6 -2
- package/build/utils/runSerialized.d.ts +3 -0
- package/build/utils/runSerialized.js +39 -0
- package/build/utils/screenRoutes.js +74 -18
- package/build/utils/sourceRouteExtractor.js +13 -6
- package/build/utils/telemetry.d.ts +1 -0
- package/build/utils/telemetry.js +8 -5
- package/build/utils/testDependencyPolicy.d.ts +9 -0
- package/build/utils/testDependencyPolicy.js +788 -0
- package/build/utils/testExecutionRecord.d.ts +90 -0
- package/build/utils/testExecutionRecord.js +267 -0
- package/build/utils/testFileClassification.js +3 -1
- package/build/utils/trace-parser.js +62 -14
- package/build/utils/urlPath.js +3 -1
- package/build/utils/utils-verify/action-key.d.ts +4 -0
- package/build/utils/utils-verify/action-key.js +2 -2
- package/build/utils/utils-verify/allow.d.ts +122 -3
- package/build/utils/utils-verify/allow.js +146 -21
- package/build/utils/utils-verify/body-reach.d.ts +120 -0
- package/build/utils/utils-verify/body-reach.js +335 -0
- package/build/utils/utils-verify/call-sites.d.ts +6 -1
- package/build/utils/utils-verify/call-sites.js +72 -8
- package/build/utils/utils-verify/delivered-imports.d.ts +43 -0
- package/build/utils/utils-verify/delivered-imports.js +84 -0
- package/build/utils/utils-verify/fixed-sleep.d.ts +96 -0
- package/build/utils/utils-verify/fixed-sleep.js +461 -0
- package/build/utils/utils-verify/in-house.d.ts +93 -0
- package/build/utils/utils-verify/in-house.js +719 -0
- package/build/utils/utils-verify/incumbent.d.ts +3 -0
- package/build/utils/utils-verify/incumbent.js +75 -0
- package/build/utils/utils-verify/index.d.ts +1 -0
- package/build/utils/utils-verify/index.js +1 -0
- package/build/utils/utils-verify/language-spec.d.ts +26 -10
- package/build/utils/utils-verify/language-spec.js +217 -20
- package/build/utils/utils-verify/locate.d.ts +26 -0
- package/build/utils/utils-verify/locate.js +125 -23
- package/build/utils/utils-verify/module-name.d.ts +40 -0
- package/build/utils/utils-verify/module-name.js +98 -0
- package/build/utils/utils-verify/parse.d.ts +46 -6
- package/build/utils/utils-verify/parse.js +176 -38
- package/build/utils/utils-verify/retrofit-equivalence.d.ts +5 -0
- package/build/utils/utils-verify/retrofit-equivalence.js +4 -2
- package/build/utils/utils-verify/stage.d.ts +5 -0
- package/build/utils/utils-verify/stage.js +47 -2
- package/build/utils/utils-verify/status-once.d.ts +62 -0
- package/build/utils/utils-verify/status-once.js +207 -0
- package/build/utils/utils-verify/typecheck.d.ts +61 -0
- package/build/utils/utils-verify/typecheck.js +338 -0
- package/build/utils/utils-verify/verify.d.ts +76 -1
- package/build/utils/utils-verify/verify.js +516 -44
- package/build/utils/versions.d.ts +3 -3
- package/build/utils/versions.js +1 -1
- package/build/utils/workspaceAuth.js +107 -37
- package/build/workspace/queryParamResolution.js +11 -4
- package/build/workspace/workspace.js +7 -7
- package/node_modules/playwright/ThirdPartyNotices.txt +19 -19
- package/node_modules/playwright/lib/mcp/skyramp/assertTool.js +8 -2
- package/node_modules/playwright/lib/mcp/skyramp/common/cssValue.js +87 -0
- package/node_modules/playwright/lib/mcp/skyramp/loadTraceTool.js +31 -0
- package/node_modules/playwright/lib/mcp/skyramp/skyRampImport.js +3 -0
- package/node_modules/playwright/lib/mcp/skyramp/traceRecordingBackend.js +181 -15
- package/node_modules/playwright/lib/mcp/test/skyRampExport.js +24 -0
- package/node_modules/playwright/lib/transform/babelBundleImpl.js +2353 -190
- package/node_modules/playwright/node_modules/playwright-core/ThirdPartyNotices.txt +62 -34
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/.package-lock.json +72 -41
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/@hono/node-server/dist/serve-static.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/@hono/node-server/dist/serve-static.mjs +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/@hono/node-server/package.json +2 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/README.md +16 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/index.js +4 -20
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/read.js +17 -17
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/json.js +60 -32
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/raw.js +3 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/text.js +3 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/urlencoded.js +16 -20
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/utils.js +18 -16
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/LICENSE +22 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/README.md +71 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/dist/index.d.ts +46 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/dist/index.js +176 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/dist/index.js.map +1 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/package.json +52 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/package.json +23 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/CHANGELOG.md +21 -14
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/isObject.d.ts +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/package.json +6 -7
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/tsconfig.json +1 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/index.js +266 -45
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/lib/schemes.js +9 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/lib/utils.js +396 -92
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/package.json +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/component-safe-serialization.test.js +163 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/equal.test.js +31 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/fixtures/uri-js-parse.json +2 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/ipv6-canonical.test.js +34 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/ipv6-validation.test.js +124 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/malformed-percent.test.js +77 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/malformed-urn.test.js +61 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/parse.test.js +7 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/query-fragment-normalization.test.js +33 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/reserved-path-normalization.test.js +109 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/scheme-validation.test.js +124 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/security-normalization.test.js +101 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/security.test.js +301 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/urn-full-input.test.js +29 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/websocket-query-preservation.test.js +24 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hasown/CHANGELOG.md +7 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hasown/index.d.ts +0 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hasown/package.json +4 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/client/client.js +30 -16
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/client/utils.js +4 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/context.js +32 -13
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/accepts/accepts.js +36 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/proxy/index.js +4 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/ssg/ssg.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/ssg/utils.js +30 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/streaming/sse.js +5 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/hono-base.js +10 -8
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/base.js +44 -23
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/components.js +25 -26
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/context.js +5 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/dom/render.js +2 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/dom/server.js +5 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/hooks/index.js +16 -13
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/intrinsic-element/components.js +3 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/streaming.js +4 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/cache/index.js +103 -8
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/compress/index.js +5 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/cors/index.js +17 -14
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/csrf/index.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/etag/digest.js +47 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/etag/index.js +7 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/jwk/jwk.js +9 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/jwt/jwt.js +9 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/language/language.js +10 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/method-not-allowed/index.js +90 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/pretty-json/index.js +3 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/secure-headers/secure-headers.js +16 -7
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/request.js +20 -13
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/linear-router/router.js +7 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/pattern-router/router.js +3 -9
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +65 -59
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +71 -128
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +14 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/trie-router/node.js +47 -70
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/trie-router/router.js +3 -11
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/utils.js +27 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/accept.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/body.js +21 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/cookie.js +4 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/ipaddr.js +5 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/stream.js +12 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/url.js +19 -11
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/client/client.js +30 -16
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/client/utils.js +4 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/context.js +32 -13
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/accepts/accepts.js +36 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/proxy/index.js +4 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/ssg/ssg.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/ssg/utils.js +30 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/streaming/sse.js +5 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/hono-base.js +10 -8
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/base.js +41 -23
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/components.js +26 -27
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/context.js +6 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/dom/render.js +2 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/dom/server.js +5 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/hooks/index.js +16 -13
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/intrinsic-element/components.js +4 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/streaming.js +5 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/cache/index.js +103 -8
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/compress/index.js +5 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/cors/index.js +17 -14
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/csrf/index.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/etag/digest.js +47 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/etag/index.js +7 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/jwk/jwk.js +9 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/jwt/jwt.js +9 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/language/language.js +10 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/method-not-allowed/index.js +68 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/pretty-json/index.js +3 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/secure-headers/secure-headers.js +16 -7
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/request.js +21 -14
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/linear-router/router.js +7 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/pattern-router/router.js +3 -9
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/reg-exp-router/node.js +61 -58
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/reg-exp-router/router.js +77 -129
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/reg-exp-router/trie.js +14 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/trie-router/node.js +47 -70
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/trie-router/router.js +3 -11
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/utils.js +5 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/adapter/aws-lambda/types.d.ts +9 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/client/types.d.ts +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/context.d.ts +6 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/hono-base.d.ts +4 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/base.d.ts +7 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/dom/index.d.ts +5 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/dom/intrinsic-element/components.d.ts +2 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/dom/server.d.ts +5 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/hooks/index.d.ts +8 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/index.d.ts +5 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/cache/index.d.ts +6 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/combine/index.d.ts +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/cors/index.d.ts +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/jsx-renderer/index.d.ts +2 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/jwk/jwk.d.ts +2 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/jwt/jwt.d.ts +2 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/method-not-allowed/index.d.ts +49 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/secure-headers/permissions-policy.d.ts +3 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +4 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/reg-exp-router/trie.d.ts +2 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/trie-router/node.d.ts +1 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/trie-router/router.d.ts +0 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/utils.d.ts +1 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router.d.ts +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/utils/headers.d.ts +2 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/utils/url.d.ts +5 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/accept.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/body.js +21 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/cookie.js +5 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/ipaddr.js +5 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/stream.js +12 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/url.js +17 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/package.json +11 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/README.md +173 -143
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/address-error.d.ts +11 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/address-error.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/common.d.ts +49 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/common.js +79 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/common.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv4.d.ts +78 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv4.js +119 -24
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv4.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv6.d.ts +151 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv6.js +316 -90
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv6.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v4/constants.d.ts +12 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v4/constants.js +45 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v4/constants.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v6/constants.d.ts +14 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v6/constants.js +50 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v6/constants.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/package.json +6 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/.github/THREAT_MODEL.md +3 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/CHANGELOG.md +26 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/README.md +19 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/dist/qs.js +25 -25
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/eslint.config.mjs +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/lib/parse.js +16 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/lib/stringify.js +23 -8
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/lib/utils.js +57 -11
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/package.json +8 -7
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/test/parse.js +419 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/test/stringify.js +317 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/test/utils.js +206 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/CHANGELOG.md +10 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/README.md +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/index.js +5 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/package.json +10 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/test/index.js +16 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/index.js +8 -18
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/LICENSE +22 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/README.md +71 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/dist/index.d.ts +46 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/dist/index.js +176 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/dist/index.js.map +1 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/package.json +52 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/package.json +9 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/package-lock.json +72 -41
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/.package-lock.json +6 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/brace-expansion/README.md +23 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/brace-expansion/index.js +265 -86
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/brace-expansion/package.json +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/README.md +173 -143
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/address-error.d.ts +11 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/address-error.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/common.d.ts +49 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/common.js +79 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/common.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv4.d.ts +78 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv4.js +119 -24
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv4.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv6.d.ts +151 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv6.js +316 -90
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv6.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v4/constants.d.ts +12 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v4/constants.js +45 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v4/constants.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v6/constants.d.ts +14 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v6/constants.js +50 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v6/constants.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/package.json +6 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/package-lock.json +6 -6
- package/node_modules/playwright/node_modules/playwright-core/lib/cli/program.js +18 -9
- package/node_modules/playwright/node_modules/playwright-core/lib/mcpBundleImpl/index.js +47 -47
- package/node_modules/playwright/node_modules/playwright-core/lib/server/codegen/skyramp/jsonlReader.js +3 -0
- package/node_modules/playwright/node_modules/playwright-core/lib/server/recorder/recorderRunner.js +42 -0
- package/node_modules/playwright/node_modules/playwright-core/lib/utilsBundleImpl/index.js +121 -121
- package/node_modules/playwright/node_modules/playwright-core/lib/vite/traceViewer/{index.B7KbSQcC.js → index.BAkLd5DX.js} +1 -1
- package/node_modules/playwright/node_modules/playwright-core/lib/vite/traceViewer/index.html +1 -1
- package/node_modules/playwright/node_modules/playwright-core/package.json +1 -1
- package/node_modules/playwright/node_modules/playwright-core/src/cli/program.ts +31 -9
- package/node_modules/playwright/node_modules/playwright-core/src/server/codegen/skyramp/jsonlReader.ts +1 -0
- package/node_modules/playwright/node_modules/playwright-core/src/server/recorder/recorderRunner.ts +57 -1
- package/node_modules/playwright/package.json +2 -2
- package/package.json +7 -6
- package/plugin/prompts/code-reuse/hand-off.md +30 -0
- package/plugin/prompts/generate-tests/generation.md +1 -1
- package/plugin/prompts/plan-tests.md +14 -14
- package/plugin/prompts/testbot-task1.md +4 -2
- package/plugin/skills/enhance-assertions/SKILL.md +25 -0
- package/plugin/skills/enhance-assertions/reference/contract.md +51 -0
- package/plugin/skills/enhance-assertions/reference/integration.md +58 -0
- package/plugin/skills/enhance-assertions/reference/shared-rules.md +220 -0
- package/plugin/skills/enhance-assertions/reference/ui.md +373 -0
- package/plugin/skills/fix-test-import-errors/SKILL.md +44 -50
- package/plugin/skills/validate-assertion-alignment-post-execution/SKILL.md +32 -0
- package/plugin/skills/validate-assertion-alignment-post-execution/reference/checks.md +44 -0
- package/plugin/skills/validate-assertion-alignment-post-execution/reference/evidence.md +47 -0
- package/build/prompts/enhance-assertions/contractProviderAssertionsPrompt.d.ts +0 -2
- package/build/prompts/enhance-assertions/contractProviderAssertionsPrompt.js +0 -29
- package/build/prompts/enhance-assertions/integrationAssertionsPrompt.d.ts +0 -2
- package/build/prompts/enhance-assertions/integrationAssertionsPrompt.js +0 -36
- package/build/prompts/enhance-assertions/sharedAssertionRules.d.ts +0 -16
- package/build/prompts/enhance-assertions/sharedAssertionRules.js +0 -284
- package/build/prompts/enhance-assertions/uiAssertionsPrompt.d.ts +0 -2
- package/build/prompts/enhance-assertions/uiAssertionsPrompt.js +0 -388
- package/node_modules/playwright/node_modules/playwright-core/.DS_Store +0 -0
|
@@ -36,7 +36,9 @@ export function parseJestJson(report, opts) {
|
|
|
36
36
|
const noAssertions = (file.assertionResults ?? []).length === 0;
|
|
37
37
|
const isExecFailure = noAssertions && (file.testExecError || file.status === "failed");
|
|
38
38
|
if (isExecFailure) {
|
|
39
|
-
const raw = file.testExecError?.message ??
|
|
39
|
+
const raw = file.testExecError?.message ??
|
|
40
|
+
file.message ??
|
|
41
|
+
"test file failed to run";
|
|
40
42
|
results.push({
|
|
41
43
|
testId: `${name} › (file failed to run)`,
|
|
42
44
|
file: name,
|
|
@@ -48,7 +50,9 @@ export function parseJestJson(report, opts) {
|
|
|
48
50
|
}
|
|
49
51
|
for (const a of file.assertionResults ?? []) {
|
|
50
52
|
const status = mapAssertion(a.status);
|
|
51
|
-
const titlePath = [...(a.ancestorTitles ?? []), a.title ?? ""]
|
|
53
|
+
const titlePath = [...(a.ancestorTitles ?? []), a.title ?? ""]
|
|
54
|
+
.filter(Boolean)
|
|
55
|
+
.join(" › ");
|
|
52
56
|
const message = status === "fail" || status === "error"
|
|
53
57
|
? stripVTControlCharacters((a.failureMessages ?? [])[0] ?? "").trim() || undefined
|
|
54
58
|
: undefined;
|
|
@@ -67,7 +71,13 @@ export function parseJestJson(report, opts) {
|
|
|
67
71
|
const passed = results.filter((r) => r.status === "pass").length;
|
|
68
72
|
return {
|
|
69
73
|
results,
|
|
70
|
-
summary: {
|
|
74
|
+
summary: {
|
|
75
|
+
ran: passed + failed + errored,
|
|
76
|
+
failed,
|
|
77
|
+
errored,
|
|
78
|
+
skipped,
|
|
79
|
+
truncated: opts?.truncated ?? false,
|
|
80
|
+
},
|
|
71
81
|
environmentHealthy: true,
|
|
72
82
|
};
|
|
73
83
|
}
|
|
@@ -95,7 +105,11 @@ function splitSelectors(selectors) {
|
|
|
95
105
|
}
|
|
96
106
|
export function buildJestArgs(input) {
|
|
97
107
|
const { files, titles } = splitSelectors(input.selectors);
|
|
98
|
-
const args = [
|
|
108
|
+
const args = [
|
|
109
|
+
...files,
|
|
110
|
+
"--json",
|
|
111
|
+
`--outputFile=${input.reportPath}`,
|
|
112
|
+
];
|
|
99
113
|
if (input.mode === "probe")
|
|
100
114
|
args.push("--bail=1");
|
|
101
115
|
if (titles.length > 0)
|
|
@@ -104,7 +118,11 @@ export function buildJestArgs(input) {
|
|
|
104
118
|
}
|
|
105
119
|
export function buildVitestArgs(input) {
|
|
106
120
|
const { files, titles } = splitSelectors(input.selectors);
|
|
107
|
-
const args = [
|
|
121
|
+
const args = [
|
|
122
|
+
...files,
|
|
123
|
+
"--reporter=json",
|
|
124
|
+
`--outputFile=${input.reportPath}`,
|
|
125
|
+
];
|
|
108
126
|
if (input.mode === "probe")
|
|
109
127
|
args.push("--bail=1");
|
|
110
128
|
if (titles.length > 0)
|
|
@@ -49,7 +49,13 @@ export function parseMochaJson(report, opts) {
|
|
|
49
49
|
const passed = results.filter((r) => r.status === "pass").length;
|
|
50
50
|
return {
|
|
51
51
|
results,
|
|
52
|
-
summary: {
|
|
52
|
+
summary: {
|
|
53
|
+
ran: passed + failed + errored,
|
|
54
|
+
failed,
|
|
55
|
+
errored,
|
|
56
|
+
skipped,
|
|
57
|
+
truncated: opts?.truncated ?? false,
|
|
58
|
+
},
|
|
53
59
|
environmentHealthy: true,
|
|
54
60
|
};
|
|
55
61
|
}
|
|
@@ -111,7 +111,9 @@ export function parsePlaywrightJson(report, opts) {
|
|
|
111
111
|
}
|
|
112
112
|
continue; // never reported as a test result
|
|
113
113
|
}
|
|
114
|
-
const titlePath = [...describePath, spec.title]
|
|
114
|
+
const titlePath = [...describePath, spec.title]
|
|
115
|
+
.filter(Boolean)
|
|
116
|
+
.join(" › ");
|
|
115
117
|
const testId = `${file} › ${titlePath}` +
|
|
116
118
|
(multiProject && test.projectName ? ` [${test.projectName}]` : "");
|
|
117
119
|
const durationMs = test.results?.[test.results.length - 1]?.duration ?? 0;
|
|
@@ -33,7 +33,9 @@ function messageOf(test) {
|
|
|
33
33
|
return stripVTControlCharacters(raw).trim() || undefined;
|
|
34
34
|
}
|
|
35
35
|
function durationMsOf(test) {
|
|
36
|
-
const secs = (test.setup?.duration ?? 0) +
|
|
36
|
+
const secs = (test.setup?.duration ?? 0) +
|
|
37
|
+
(test.call?.duration ?? 0) +
|
|
38
|
+
(test.teardown?.duration ?? 0);
|
|
37
39
|
return Math.round(secs * 1000);
|
|
38
40
|
}
|
|
39
41
|
export function parsePytestJson(report, opts) {
|
|
@@ -52,7 +54,10 @@ export function parsePytestJson(report, opts) {
|
|
|
52
54
|
};
|
|
53
55
|
});
|
|
54
56
|
const collectionErrors = (rep.collectors ?? []).filter((c) => c.outcome === "error" || c.outcome === "failed");
|
|
55
|
-
const lastLine = (raw) => stripVTControlCharacters(raw ?? "collection error")
|
|
57
|
+
const lastLine = (raw) => stripVTControlCharacters(raw ?? "collection error")
|
|
58
|
+
.split("\n")
|
|
59
|
+
.filter(Boolean)
|
|
60
|
+
.slice(-1)[0] ?? "collection error";
|
|
56
61
|
// Surface each collection/import error as an errored result so a broken file is
|
|
57
62
|
// never invisible — regardless of whether other selected files ran. A collection
|
|
58
63
|
// error IS a real breakage (PR signal), counted in `errored`/`ran`.
|
|
@@ -83,7 +88,13 @@ export function parsePytestJson(report, opts) {
|
|
|
83
88
|
const passed = results.filter((r) => r.status === "pass").length;
|
|
84
89
|
return {
|
|
85
90
|
results,
|
|
86
|
-
summary: {
|
|
91
|
+
summary: {
|
|
92
|
+
ran: passed + failed + errored,
|
|
93
|
+
failed,
|
|
94
|
+
errored,
|
|
95
|
+
skipped,
|
|
96
|
+
truncated: opts?.truncated ?? false,
|
|
97
|
+
},
|
|
87
98
|
environmentHealthy,
|
|
88
99
|
healthDetail,
|
|
89
100
|
diagnostics: {
|
|
@@ -118,6 +118,7 @@ Three rules apply in fallback mode at all times:
|
|
|
118
118
|
`;
|
|
119
119
|
const ctx = {
|
|
120
120
|
repositoryPath: "<REPOSITORY_PATH>",
|
|
121
|
+
repository: "<OWNER/REPO of the checkout, from its origin remote>",
|
|
121
122
|
baseCommit: "<BASE_BRANCH from one-click baseBranch, default main>",
|
|
122
123
|
maxRecommendations: 8,
|
|
123
124
|
maxGenerate: 5,
|
|
@@ -67,7 +67,10 @@ const fullRepoRecommendGenerateExecuteSteps = [
|
|
|
67
67
|
inputs: {
|
|
68
68
|
workspacePath: { source: "user", paramKey: "repositoryPath" },
|
|
69
69
|
language: { source: "literal", value: "from workspace" },
|
|
70
|
-
testType: {
|
|
70
|
+
testType: {
|
|
71
|
+
source: "literal",
|
|
72
|
+
value: "from test file / recommendation",
|
|
73
|
+
},
|
|
71
74
|
testFile: {
|
|
72
75
|
source: "literal",
|
|
73
76
|
value: "path to a single generated test file; for each test path returned by generation tools in step 2, call skyramp_execute_test separately with testFile set to that path",
|
|
@@ -110,10 +113,6 @@ export const FULLREPO_RECOMMEND_GENERATE_EXECUTE_TESTS_COMMAND = {
|
|
|
110
113
|
steps: fullRepoRecommendGenerateExecuteSteps,
|
|
111
114
|
inputParams: {
|
|
112
115
|
required: ["repositoryPath"],
|
|
113
|
-
optional: [
|
|
114
|
-
"token",
|
|
115
|
-
"endpointURL",
|
|
116
|
-
"apiSchema",
|
|
117
|
-
],
|
|
116
|
+
optional: ["token", "endpointURL", "apiSchema"],
|
|
118
117
|
},
|
|
119
118
|
};
|
|
@@ -75,7 +75,10 @@ const comprehensivelyTestGivenEndpointSteps = [
|
|
|
75
75
|
inputs: {
|
|
76
76
|
workspacePath: { source: "user", paramKey: "repositoryPath" },
|
|
77
77
|
language: { source: "literal", value: "from workspace" },
|
|
78
|
-
testType: {
|
|
78
|
+
testType: {
|
|
79
|
+
source: "literal",
|
|
80
|
+
value: "from generated test / recommendation",
|
|
81
|
+
},
|
|
79
82
|
testFile: {
|
|
80
83
|
source: "literal",
|
|
81
84
|
value: "path to a single generated test file; for each test path returned by generation tools in step 3, call skyramp_execute_test separately with testFile set to that path",
|
|
@@ -108,9 +111,18 @@ const comprehensivelyTestGivenEndpointSteps = [
|
|
|
108
111
|
description: "Optionally run existing tests individually; iterate over tests from stateFile and write results back",
|
|
109
112
|
inputs: {
|
|
110
113
|
workspacePath: { source: "user", paramKey: "repositoryPath" },
|
|
111
|
-
testFile: {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
+
testFile: {
|
|
115
|
+
source: "literal",
|
|
116
|
+
value: "path from stateFile existingTests array",
|
|
117
|
+
},
|
|
118
|
+
language: {
|
|
119
|
+
source: "literal",
|
|
120
|
+
value: "language from stateFile existingTests array",
|
|
121
|
+
},
|
|
122
|
+
testType: {
|
|
123
|
+
source: "literal",
|
|
124
|
+
value: "testType from stateFile existingTests array",
|
|
125
|
+
},
|
|
114
126
|
token: { source: "user", paramKey: "token" },
|
|
115
127
|
stateFile: { source: "step", stepIndex: 1, outputKey: "stateFile" },
|
|
116
128
|
},
|
package/build/index.js
CHANGED
|
@@ -19,10 +19,13 @@ import { registerE2ETestTool } from "./tools/generate-tests/generateE2ERestTool.
|
|
|
19
19
|
import { registerLoginTool } from "./tools/auth/loginTool.js";
|
|
20
20
|
import { registerLogoutTool } from "./tools/auth/logoutTool.js";
|
|
21
21
|
import { registerFixErrorTool } from "./tools/fixErrorTool.js";
|
|
22
|
+
import { registerVerifyTestDependenciesTool } from "./tools/verifyTestDependenciesTool.js";
|
|
22
23
|
import { registerRecommendTestsPrompt } from "./prompts/test-recommendation/registerRecommendTestsPrompt.js";
|
|
23
24
|
import { registerModularizationTool } from "./tools/code-refactor/modularizationTool.js";
|
|
24
25
|
import { registerCodeReuseTool } from "./tools/code-refactor/codeReuseTool.js";
|
|
25
26
|
import { registerEnhanceAssertionsTool } from "./tools/code-refactor/enhanceAssertionsTool.js";
|
|
27
|
+
import { registerAlignAssertionsTool } from "./tools/code-refactor/alignAssertionsTool.js";
|
|
28
|
+
import { registerAssertionSnapshotTool, registerAssertionVerifyTool, } from "./tools/code-refactor/assertionSkillTools.js";
|
|
26
29
|
import { registerBatchScenarioTestTool } from "./tools/generate-tests/generateBatchScenarioRestTool.js";
|
|
27
30
|
import { registerMockTool } from "./tools/generate-tests/generateMockRestTool.js";
|
|
28
31
|
import { registerBatchMockTool } from "./tools/generate-tests/batchMockGenerationTool.js";
|
|
@@ -68,6 +71,18 @@ else if (oneClickEnabled) {
|
|
|
68
71
|
else if (localDevEnabled) {
|
|
69
72
|
oneClickInstructions = localDevInstructions;
|
|
70
73
|
}
|
|
74
|
+
// Global workspace-init nudge for bare MCP usage. Suppressed in testbot mode,
|
|
75
|
+
// which runs its own INIT_WORKSPACE step (buildWorkspaceInitSection()) instead.
|
|
76
|
+
const workspaceInitInstructions = isTestbotEnabled() || oneClickEnabled || localDevEnabled
|
|
77
|
+
? ""
|
|
78
|
+
: `
|
|
79
|
+
## Workspace Initialization (REQUIRED before the first Skyramp tool call)
|
|
80
|
+
If the workspace root is a git repo AND \`.skyramp/workspace.yml\` does not exist:
|
|
81
|
+
1. Call \`skyramp_init_scan\` with \`workspacePath\` set to the current repository root → follow the returned instructions to discover all services.
|
|
82
|
+
2. Call \`skyramp_init_workspace\` with that SAME \`workspacePath\`, \`services\`, and the \`scanToken\` from step 1.
|
|
83
|
+
3. Proceed with the originally requested tool, if it is not one of the two workspace-init tools above.
|
|
84
|
+
Skip only if: not a git repo, \`.skyramp/workspace.yml\` already exists, or user explicitly declines.
|
|
85
|
+
`;
|
|
71
86
|
const server = new McpServer({
|
|
72
87
|
name: "Skyramp MCP Server",
|
|
73
88
|
version: "1.0.0",
|
|
@@ -84,7 +99,7 @@ const server = new McpServer({
|
|
|
84
99
|
},
|
|
85
100
|
},
|
|
86
101
|
instructions: `Skyramp MCP Server — generates and executes API tests (fuzz, contract, integration, E2E, UI).
|
|
87
|
-
|
|
102
|
+
${workspaceInitInstructions}
|
|
88
103
|
## Rules
|
|
89
104
|
- NEVER show CLI commands. NEVER attempt to install or configure the Skyramp CLI. ALWAYS use the MCP tools provided.
|
|
90
105
|
- For UI and E2E tests, there are TWO recording modes:
|
|
@@ -172,12 +187,22 @@ const codeQualityTools = [
|
|
|
172
187
|
registerModularizationTool,
|
|
173
188
|
registerCodeReuseTool,
|
|
174
189
|
registerEnhanceAssertionsTool,
|
|
190
|
+
registerAssertionVerifyTool,
|
|
191
|
+
registerVerifyTestDependenciesTool,
|
|
175
192
|
];
|
|
176
193
|
// With the Skyramp plugin loaded the agent already has the
|
|
177
194
|
// fix-test-import-errors skill; the tool would be a second copy of
|
|
178
195
|
// the same text (SKYR-4296).
|
|
179
196
|
if (!isSkillsLoaded()) {
|
|
180
|
-
|
|
197
|
+
// Same reasoning as fix-test-import-errors: with the plugin loaded the agent
|
|
198
|
+
// has the validate-assertion-alignment-post-execution skill directly; this
|
|
199
|
+
// tool exists so an agent without skill support still gets the same
|
|
200
|
+
// procedure, rendered from the same markdown with real arguments filled in.
|
|
201
|
+
codeQualityTools.push(registerFixErrorTool, registerAlignAssertionsTool);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
// The enhance-assertions skill drives its own snapshot step itself (SKYR-4310).
|
|
205
|
+
codeQualityTools.push(registerAssertionSnapshotTool);
|
|
181
206
|
}
|
|
182
207
|
codeQualityTools.forEach((registerTool) => registerTool(server));
|
|
183
208
|
// Register analysis resources (MCP Resources for enriched data access)
|
|
@@ -256,12 +281,17 @@ infrastructureTools.forEach((registerTool) => registerTool(server));
|
|
|
256
281
|
// Editing the repo's own Playwright config is the wrong instruction: a
|
|
257
282
|
// suite may have several, and none of them at the root.
|
|
258
283
|
logger.info("No testIdAttribute declared or discovered — capture stays on Playwright's data-testid. " +
|
|
259
|
-
"Set PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE to override.", {
|
|
284
|
+
"Set PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE to override.", {
|
|
285
|
+
attributesSeenInSelectors: discovered.observed,
|
|
286
|
+
filesScanned: discovered.filesScanned,
|
|
287
|
+
});
|
|
260
288
|
}
|
|
261
289
|
}
|
|
262
290
|
}
|
|
263
291
|
catch (err) {
|
|
264
|
-
logger.warning("Could not determine this repository's testIdAttribute", {
|
|
292
|
+
logger.warning("Could not determine this repository's testIdAttribute", {
|
|
293
|
+
error: err,
|
|
294
|
+
});
|
|
265
295
|
}
|
|
266
296
|
await registerPlaywrightTools(server, { testIdAttribute });
|
|
267
297
|
})().catch((err) => {
|
|
@@ -15,7 +15,9 @@ export function blueprintJsonSpan(text) {
|
|
|
15
15
|
const MAX_DEPTH = 12;
|
|
16
16
|
export const MAX_ELEMENTS = 2000;
|
|
17
17
|
function text(value) {
|
|
18
|
-
return typeof value === "string" && value.trim().length > 0
|
|
18
|
+
return typeof value === "string" && value.trim().length > 0
|
|
19
|
+
? value
|
|
20
|
+
: undefined;
|
|
19
21
|
}
|
|
20
22
|
function rowText(value) {
|
|
21
23
|
if (!Array.isArray(value))
|
|
@@ -32,13 +34,21 @@ function fillTemplate(template, parameters) {
|
|
|
32
34
|
const values = parameters;
|
|
33
35
|
return template.replace(/\{([^{}]+)\}/g, (placeholder, name) => {
|
|
34
36
|
const value = values[name];
|
|
35
|
-
return typeof value === "string" || typeof value === "number"
|
|
37
|
+
return typeof value === "string" || typeof value === "number"
|
|
38
|
+
? String(value)
|
|
39
|
+
: placeholder;
|
|
36
40
|
});
|
|
37
41
|
}
|
|
38
42
|
function identity(element) {
|
|
39
43
|
// Serialised rather than joined on a separator: a row's context text is page
|
|
40
44
|
// content and can hold any character, so any separator could be in it.
|
|
41
|
-
return JSON.stringify([
|
|
45
|
+
return JSON.stringify([
|
|
46
|
+
element.role,
|
|
47
|
+
element.accessibleName,
|
|
48
|
+
element.testId ?? "",
|
|
49
|
+
element.stableId ?? "",
|
|
50
|
+
element.contextText ?? [],
|
|
51
|
+
]);
|
|
42
52
|
}
|
|
43
53
|
/** Every element this record describes. A repeating one keeps BOTH its template
|
|
44
54
|
* and each filled-in row, because the agent lifts a row's rendered name. */
|
|
@@ -80,7 +90,9 @@ function collectElements(root) {
|
|
|
80
90
|
const found = [];
|
|
81
91
|
let truncated = false;
|
|
82
92
|
const seen = new Set();
|
|
83
|
-
const stack = [
|
|
93
|
+
const stack = [
|
|
94
|
+
{ value: root, depth: 0 },
|
|
95
|
+
];
|
|
84
96
|
while (stack.length > 0) {
|
|
85
97
|
if (found.length >= MAX_ELEMENTS) {
|
|
86
98
|
truncated = true;
|
|
@@ -117,12 +129,16 @@ function collectElements(root) {
|
|
|
117
129
|
}
|
|
118
130
|
function urlOf(parsed) {
|
|
119
131
|
const blueprint = parsed.blueprint;
|
|
120
|
-
const inner = blueprint && typeof blueprint === "object"
|
|
132
|
+
const inner = blueprint && typeof blueprint === "object"
|
|
133
|
+
? blueprint
|
|
134
|
+
: undefined;
|
|
121
135
|
return text(parsed.url) ?? (inner ? text(inner.url) : undefined);
|
|
122
136
|
}
|
|
123
137
|
function pageHashOf(parsed) {
|
|
124
138
|
const blueprint = parsed.blueprint;
|
|
125
|
-
const inner = blueprint && typeof blueprint === "object"
|
|
139
|
+
const inner = blueprint && typeof blueprint === "object"
|
|
140
|
+
? blueprint
|
|
141
|
+
: undefined;
|
|
126
142
|
return text(parsed.pageHash) ?? (inner ? text(inner.pageHash) : undefined);
|
|
127
143
|
}
|
|
128
144
|
/** The digest of one payload, or undefined when nothing in it keys to a page.
|
|
@@ -148,5 +164,10 @@ export function digestFromBlueprintText(payload, previousUrl) {
|
|
|
148
164
|
return undefined;
|
|
149
165
|
const pageHash = pageHashOf(record);
|
|
150
166
|
const { elements, truncated } = collectElements(record);
|
|
151
|
-
return {
|
|
167
|
+
return {
|
|
168
|
+
url,
|
|
169
|
+
...(pageHash ? { pageHash } : {}),
|
|
170
|
+
elements,
|
|
171
|
+
...(truncated ? { elementsTruncated: true } : {}),
|
|
172
|
+
};
|
|
152
173
|
}
|
|
@@ -6,7 +6,7 @@ import { z } from "zod";
|
|
|
6
6
|
import { logger } from "../utils/logger.js";
|
|
7
7
|
import { PlaywrightTraceService, } from "./PlaywrightTraceService.js";
|
|
8
8
|
import { blueprintJsonSpan } from "./blueprintDigest.js";
|
|
9
|
-
import { recordBlueprintCapture, recordBrowserNavigation } from "./blueprintDigestStore.js";
|
|
9
|
+
import { recordBlueprintCapture, recordBrowserNavigation, } from "./blueprintDigestStore.js";
|
|
10
10
|
let _service = null;
|
|
11
11
|
export function getPlaywrightTraceService() {
|
|
12
12
|
return _service;
|
|
@@ -44,11 +44,16 @@ function withAssertReminder(result) {
|
|
|
44
44
|
const content = result?.content ?? [];
|
|
45
45
|
const last = content.map((block) => block?.type).lastIndexOf("text");
|
|
46
46
|
if (last < 0) {
|
|
47
|
-
return {
|
|
47
|
+
return {
|
|
48
|
+
...result,
|
|
49
|
+
content: [...content, { type: "text", text: ASSERT_REMINDER }],
|
|
50
|
+
};
|
|
48
51
|
}
|
|
49
52
|
return {
|
|
50
53
|
...result,
|
|
51
|
-
content: content.map((block, i) => i === last && block?.type === "text"
|
|
54
|
+
content: content.map((block, i) => i === last && block?.type === "text"
|
|
55
|
+
? { ...block, text: `${block.text}\n\n${ASSERT_REMINDER}` }
|
|
56
|
+
: block),
|
|
52
57
|
};
|
|
53
58
|
}
|
|
54
59
|
/**
|
|
@@ -171,32 +176,32 @@ export async function registerPlaywrightTools(server, options) {
|
|
|
171
176
|
// The widgetType field on blueprint elements still signals "custom" to
|
|
172
177
|
// the agent — no guidance is lost.
|
|
173
178
|
const ESSENTIAL_TOOLS = new Set([
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
179
|
+
"browser_navigate",
|
|
180
|
+
"browser_snapshot",
|
|
181
|
+
"browser_click",
|
|
182
|
+
"browser_type",
|
|
183
|
+
"browser_press_key",
|
|
184
|
+
"browser_select_option",
|
|
185
|
+
"browser_hover",
|
|
186
|
+
"browser_drag",
|
|
187
|
+
"browser_file_upload",
|
|
188
|
+
"browser_evaluate",
|
|
189
|
+
"browser_tabs",
|
|
190
|
+
"browser_navigate_back",
|
|
191
|
+
"browser_wait_for",
|
|
192
|
+
"browser_take_screenshot",
|
|
193
|
+
"browser_assert",
|
|
194
|
+
"browser_assert_hidden",
|
|
195
|
+
"browser_assert_api_request",
|
|
196
|
+
"browser_assert_table_cell",
|
|
197
|
+
"browser_mouse_action",
|
|
198
|
+
"browser_visual_snapshot",
|
|
199
|
+
"browser_gojs_add_node",
|
|
200
|
+
"browser_gojs_link",
|
|
201
|
+
"skyramp_export_zip",
|
|
202
|
+
"skyramp_load_trace",
|
|
198
203
|
// DOM Analyzer: blueprint capture (capture-act-capture pattern)
|
|
199
|
-
|
|
204
|
+
"browser_blueprint",
|
|
200
205
|
]);
|
|
201
206
|
const filteredTools = tools.filter((t) => ESSENTIAL_TOOLS.has(t.name));
|
|
202
207
|
logger.info(`Filtering to ${filteredTools.length} essential tools (from ${tools.length} total)`);
|
|
@@ -55,11 +55,18 @@ These concepts drive the DOM Analyzer capture tools and constrain how their outp
|
|
|
55
55
|
- **\`browser_blueprint\` — stable logical names**: logical names like \`add_order_btn\` and their derived \`getByRole\` locators survive page reloads and playback. Use them in generated test code. Call \`browser_blueprint\` before and after each meaningful action to capture state changes.
|
|
56
56
|
|
|
57
57
|
### Assertions
|
|
58
|
-
Call \`browser_assert\` when assertions are needed.
|
|
58
|
+
Call \`browser_assert\` when assertions are needed. Provide \`expected\` for every type that takes one (all except \`visible\`).
|
|
59
59
|
- \`type: "text"\` — verify an element contains expected text
|
|
60
60
|
- \`type: "value"\` — verify an input field has an expected value
|
|
61
|
+
- \`type: "css"\` — verify a computed style (\`property\` = the CSS property, e.g. \`background-color\`; \`expected\` = the value the app computes)
|
|
62
|
+
- \`type: "class"\` — verify the element carries a class (\`expected\` = one class name)
|
|
63
|
+
- \`type: "attribute"\` — verify an attribute value (\`property\` = the attribute name; \`expected\` = its value)
|
|
61
64
|
|
|
62
|
-
**Visual / screenshot assertions.** When the instruction asks to take a screenshot, capture a baseline, or verify how a page/element/region *looks* (as opposed to its text or value), call \`browser_visual_snapshot\` — it records a \`toHaveScreenshot()\` assertion so the generated test pixel-compares against a baseline image on every run.
|
|
65
|
+
**Visual / screenshot assertions.** When the instruction asks to take a screenshot, capture a baseline, or verify how a page/element/region *looks* (as opposed to its text or value), call \`browser_visual_snapshot\` — it records a \`toHaveScreenshot()\` assertion so the generated test pixel-compares against a baseline image on every run.
|
|
66
|
+
|
|
67
|
+
**When the change under test is how something looks** — a colour, class or attribute the diff changes — assert it directly with \`browser_assert\` \`type: css/class/attribute\` on the element that OWNS the property (the flex container for \`flex-direction\`, not its children); if it has no stable ref, note a recording gap rather than assert the wrong element. Order has no kind: \`flex-direction\` when the diff flipped it, else a \`boundingBox()\` comparison at enhance. \`browser_visual_snapshot\` only for a look no property expresses (image, gradient, chart).
|
|
68
|
+
|
|
69
|
+
Do NOT use \`browser_take_screenshot\` to record a visual check: it only captures a throwaway image, is dropped at export (it produces no assertion), and will NOT appear in the generated test. Use it only to view the page yourself while recording. \`filename\` is optional on \`browser_visual_snapshot\`: if the instruction names a baseline file (e.g. \`page-001.png\`) pass it as \`filename\`, otherwise omit it and one is auto-generated per \`snapshotType\` (\`page-NNN.png\` for a page, \`el-NNN.png\` for an element, \`region-NNN.png\` for a region).
|
|
63
70
|
|
|
64
71
|
### Tips
|
|
65
72
|
- **Custom dropdowns (Radix, MUI, etc.)**: click the combobox trigger → \`browser_snapshot\` → click the option. Do NOT use \`browser_select_option\` — it only works on native \`<select>\` elements.
|