swipium 1.5.0 → 2.0.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/CHANGELOG.md +183 -0
- package/README.md +173 -280
- package/THREAT_MODEL.md +223 -47
- package/dist/appMap/automationLink.js +30 -27
- package/dist/appMap/automationLink.js.map +1 -1
- package/dist/appMap/build.js +47 -21
- package/dist/appMap/build.js.map +1 -1
- package/dist/appMap/codeIndex.js +2 -2
- package/dist/appMap/codeIndex.js.map +1 -1
- package/dist/appMap/featureIndex.js +3 -3
- package/dist/appMap/featureIndex.js.map +1 -1
- package/dist/appMap/featureModel.js +2 -2
- package/dist/appMap/featureModel.js.map +1 -1
- package/dist/appMap/firstRunApply.js +2 -2
- package/dist/appMap/firstRunApply.js.map +1 -1
- package/dist/appMap/issues.js +10 -10
- package/dist/appMap/issues.js.map +1 -1
- package/dist/appMap/migrations.js +5 -5
- package/dist/appMap/migrations.js.map +1 -1
- package/dist/appMap/prelaunch.js +2 -2
- package/dist/appMap/prelaunch.js.map +1 -1
- package/dist/appMap/projectRegistry.js +77 -11
- package/dist/appMap/projectRegistry.js.map +1 -1
- package/dist/appMap/provenance.js +2 -2
- package/dist/appMap/provenance.js.map +1 -1
- package/dist/appMap/query.js +2 -2
- package/dist/appMap/query.js.map +1 -1
- package/dist/appMap/runtimeMerge.js +3 -3
- package/dist/appMap/runtimeMerge.js.map +1 -1
- package/dist/appMap/schema.js +1 -1
- package/dist/appMap/schema.js.map +1 -1
- package/dist/appMap/screenMatch.js +1 -1
- package/dist/appMap/screenMatch.js.map +1 -1
- package/dist/appMap/staticScan.js +17 -17
- package/dist/appMap/staticScan.js.map +1 -1
- package/dist/appMap/store.js +55 -7
- package/dist/appMap/store.js.map +1 -1
- package/dist/appMap/tsAstScan.js +3 -3
- package/dist/appMap/tsAstScan.js.map +1 -1
- package/dist/artifacts/bundletool.js +5 -5
- package/dist/artifacts/bundletool.js.map +1 -1
- package/dist/artifacts/resolve.js +10 -10
- package/dist/artifacts/resolve.js.map +1 -1
- package/dist/automation/capabilities.js +3 -3
- package/dist/automation/capabilities.js.map +1 -1
- package/dist/automation/gestures.js +1 -1
- package/dist/automation/gestures.js.map +1 -1
- package/dist/automation/plan.js +7 -7
- package/dist/automation/plan.js.map +1 -1
- package/dist/automation/report.js +3 -3
- package/dist/automation/report.js.map +1 -1
- package/dist/automation/selectors.js +14 -25
- package/dist/automation/selectors.js.map +1 -1
- package/dist/automation/types.js +1 -1
- package/dist/automation/types.js.map +1 -1
- package/dist/automation/waits.js +5 -5
- package/dist/automation/waits.js.map +1 -1
- package/dist/automation/webview.js +2 -2
- package/dist/automation/webview.js.map +1 -1
- package/dist/automationGen/appiumModel.js +13 -7
- package/dist/automationGen/appiumModel.js.map +1 -1
- package/dist/automationGen/ciEmitter.js +5 -5
- package/dist/automationGen/ciEmitter.js.map +1 -1
- package/dist/automationGen/identifiers.js +224 -0
- package/dist/automationGen/identifiers.js.map +1 -0
- package/dist/automationGen/jsEmitter.js +265 -106
- package/dist/automationGen/jsEmitter.js.map +1 -1
- package/dist/automationGen/packagePatch.js +2 -2
- package/dist/automationGen/packagePatch.js.map +1 -1
- package/dist/automationGen/platformResolve.js +36 -0
- package/dist/automationGen/platformResolve.js.map +1 -0
- package/dist/automationGen/projectProfile.js +71 -26
- package/dist/automationGen/projectProfile.js.map +1 -1
- package/dist/automationGen/pythonEmitter.js +276 -105
- package/dist/automationGen/pythonEmitter.js.map +1 -1
- package/dist/automationGen/readmeEmitter.js +7 -6
- package/dist/automationGen/readmeEmitter.js.map +1 -1
- package/dist/{tools/automationGenerate.js → automationGen/run.js} +72 -113
- package/dist/automationGen/run.js.map +1 -0
- package/dist/automationGen/suitePlan.js +6 -4
- package/dist/automationGen/suitePlan.js.map +1 -1
- package/dist/automationGen/validation.js +20 -8
- package/dist/automationGen/validation.js.map +1 -1
- package/dist/build/parseBuildLog.js +2 -2
- package/dist/build/parseBuildLog.js.map +1 -1
- package/dist/build/plan.js +7 -7
- package/dist/build/plan.js.map +1 -1
- package/dist/ci/preflight.js +13 -4
- package/dist/ci/preflight.js.map +1 -1
- package/dist/cli/gc.js +74 -0
- package/dist/cli/gc.js.map +1 -0
- package/dist/cli/init.js +217 -26
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/main.js +50 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/report.js +218 -0
- package/dist/cli/report.js.map +1 -0
- package/dist/cli/scan.js +35 -14
- package/dist/cli/scan.js.map +1 -1
- package/dist/cli/suite.js +6 -6
- package/dist/cli/suite.js.map +1 -1
- package/dist/cli/verify.js +7 -7
- package/dist/cli/verify.js.map +1 -1
- package/dist/consent/consent.js +162 -5
- package/dist/consent/consent.js.map +1 -1
- package/dist/context/detect.js +45 -14
- package/dist/context/detect.js.map +1 -1
- package/dist/context/findApps.js +6 -6
- package/dist/context/findApps.js.map +1 -1
- package/dist/context/projectRoot.js +174 -19
- package/dist/context/projectRoot.js.map +1 -1
- package/dist/context/scan.js +1 -1
- package/dist/context/scan.js.map +1 -1
- package/dist/core/capabilityGroups.js +90 -0
- package/dist/core/capabilityGroups.js.map +1 -0
- package/dist/core/target.js +3 -3
- package/dist/core/target.js.map +1 -1
- package/dist/core/targetPlan.js +65 -62
- package/dist/core/targetPlan.js.map +1 -1
- package/dist/drivers/DirectDriver.js +300 -36
- package/dist/drivers/DirectDriver.js.map +1 -1
- package/dist/drivers/SimctlDriver.js +120 -7
- package/dist/drivers/SimctlDriver.js.map +1 -1
- package/dist/drivers/WdaDriver.js +350 -50
- package/dist/drivers/WdaDriver.js.map +1 -1
- package/dist/explore/candidates.js +2 -2
- package/dist/explore/candidates.js.map +1 -1
- package/dist/explore/graph.js +5 -5
- package/dist/explore/graph.js.map +1 -1
- package/dist/explore/policy.js +5 -5
- package/dist/explore/policy.js.map +1 -1
- package/dist/explore/runner.js +301 -284
- package/dist/explore/runner.js.map +1 -1
- package/dist/explore/signatures.js +1 -1
- package/dist/featureTesting/executionBootstrap.js +29 -30
- package/dist/featureTesting/executionBootstrap.js.map +1 -1
- package/dist/featureTesting/featureMap.js +2 -2
- package/dist/featureTesting/featureMap.js.map +1 -1
- package/dist/featureTesting/featureScope.js +12 -12
- package/dist/featureTesting/featureScope.js.map +1 -1
- package/dist/featureTesting/mapFeatureScope.js +7 -7
- package/dist/featureTesting/mapFeatureScope.js.map +1 -1
- package/dist/featureTesting/objectiveModel.js +10 -10
- package/dist/featureTesting/objectiveModel.js.map +1 -1
- package/dist/featureTesting/resultMerge.js +6 -6
- package/dist/featureTesting/resultMerge.js.map +1 -1
- package/dist/featureTesting/sources.js +4 -4
- package/dist/featureTesting/sources.js.map +1 -1
- package/dist/featureTesting/suiteBridge.js +1 -1
- package/dist/featureTesting/suiteBridge.js.map +1 -1
- package/dist/featureTesting/synonyms.js +1 -1
- package/dist/featureTesting/synonyms.js.map +1 -1
- package/dist/featureTesting/testCaseFactory.js +11 -11
- package/dist/featureTesting/testCaseFactory.js.map +1 -1
- package/dist/featureTesting/testPlan.js +3 -3
- package/dist/featureTesting/testPlan.js.map +1 -1
- package/dist/firstRun/authStateMachine.js +1 -1
- package/dist/firstRun/authStateMachine.js.map +1 -1
- package/dist/firstRun/classifyScreen.js +5 -5
- package/dist/firstRun/classifyScreen.js.map +1 -1
- package/dist/firstRun/firstRunPlanner.js +11 -11
- package/dist/firstRun/firstRunPlanner.js.map +1 -1
- package/dist/firstRun/firstRunRunner.js +8 -8
- package/dist/firstRun/firstRunRunner.js.map +1 -1
- package/dist/firstRun/generatedDataPolicy.js +9 -9
- package/dist/firstRun/generatedDataPolicy.js.map +1 -1
- package/dist/firstRun/inputPlanner.js +5 -5
- package/dist/firstRun/inputPlanner.js.map +1 -1
- package/dist/firstRun/onboardingStateMachine.js +1 -1
- package/dist/firstRun/onboardingStateMachine.js.map +1 -1
- package/dist/firstRun/paywallPolicy.js +3 -3
- package/dist/firstRun/paywallPolicy.js.map +1 -1
- package/dist/firstRun/types.js +1 -1
- package/dist/firstRun/types.js.map +1 -1
- package/dist/fixtures/catalog.js +33 -3
- package/dist/fixtures/catalog.js.map +1 -1
- package/dist/fixtures/load.js +50 -0
- package/dist/fixtures/load.js.map +1 -0
- package/dist/flows/discover.js +2 -2
- package/dist/flows/discover.js.map +1 -1
- package/dist/flows/generate.js +20 -10
- package/dist/flows/generate.js.map +1 -1
- package/dist/flows/pack.js +3 -3
- package/dist/flows/pack.js.map +1 -1
- package/dist/flows/paths.js +57 -0
- package/dist/flows/paths.js.map +1 -0
- package/dist/flows/repair.js +111 -23
- package/dist/flows/repair.js.map +1 -1
- package/dist/flows/run.js +153 -57
- package/dist/flows/run.js.map +1 -1
- package/dist/flows/schema.js +50 -5
- package/dist/flows/schema.js.map +1 -1
- package/dist/flows/seedExec.js +4 -4
- package/dist/flows/seedExec.js.map +1 -1
- package/dist/flows/templates.js +5 -5
- package/dist/index.js +50 -8
- package/dist/index.js.map +1 -1
- package/dist/issues/classify.js +16 -16
- package/dist/issues/classify.js.map +1 -1
- package/dist/issues/fingerprint.js +24 -4
- package/dist/issues/fingerprint.js.map +1 -1
- package/dist/issues/index.js +94 -31
- package/dist/issues/index.js.map +1 -1
- package/dist/issues/metrics.js +4 -4
- package/dist/issues/metrics.js.map +1 -1
- package/dist/issues/recurrence.js +35 -8
- package/dist/issues/recurrence.js.map +1 -1
- package/dist/issues/report.js +4 -4
- package/dist/issues/report.js.map +1 -1
- package/dist/issues/reportBridge.js +4 -4
- package/dist/issues/reportBridge.js.map +1 -1
- package/dist/issues/schema.js +2 -2
- package/dist/issues/schema.js.map +1 -1
- package/dist/issues/sourceRevision.js +2 -2
- package/dist/issues/sourceRevision.js.map +1 -1
- package/dist/issues/store.js +110 -32
- package/dist/issues/store.js.map +1 -1
- package/dist/lib/abortScope.js +48 -0
- package/dist/lib/abortScope.js.map +1 -0
- package/dist/lib/android.js +75 -7
- package/dist/lib/android.js.map +1 -1
- package/dist/lib/coordSpace.js +1 -1
- package/dist/lib/coordSpace.js.map +1 -1
- package/dist/lib/device.js +32 -7
- package/dist/lib/device.js.map +1 -1
- package/dist/lib/gestures.js +141 -0
- package/dist/lib/gestures.js.map +1 -0
- package/dist/lib/gitignore.js +4 -3
- package/dist/lib/gitignore.js.map +1 -1
- package/dist/lib/image.js +1 -1
- package/dist/lib/image.js.map +1 -1
- package/dist/lib/lockfile.js +370 -31
- package/dist/lib/lockfile.js.map +1 -1
- package/dist/lib/needsInput.js +3 -3
- package/dist/lib/needsInput.js.map +1 -1
- package/dist/lib/png.js +2 -2
- package/dist/lib/png.js.map +1 -1
- package/dist/lib/redact.js +170 -9
- package/dist/lib/redact.js.map +1 -1
- package/dist/lib/result.js +79 -10
- package/dist/lib/result.js.map +1 -1
- package/dist/lib/schemaHash.js +3 -3
- package/dist/lib/schemaHash.js.map +1 -1
- package/dist/lib/sensitive.js +3 -2
- package/dist/lib/sensitive.js.map +1 -1
- package/dist/lib/simctl.js +3 -3
- package/dist/lib/simctl.js.map +1 -1
- package/dist/lib/spawn.js +52 -10
- package/dist/lib/spawn.js.map +1 -1
- package/dist/lib/toolAnnotations.js +114 -0
- package/dist/lib/toolAnnotations.js.map +1 -0
- package/dist/lib/wda.js +294 -15
- package/dist/lib/wda.js.map +1 -1
- package/dist/mobileAudit/checks.js +12 -12
- package/dist/mobileAudit/checks.js.map +1 -1
- package/dist/mobileAudit/evidence.js +4 -4
- package/dist/mobileAudit/evidence.js.map +1 -1
- package/dist/mobileAudit/profiles.js +1 -1
- package/dist/mobileAudit/profiles.js.map +1 -1
- package/dist/mobileAudit/results.js +3 -3
- package/dist/mobileAudit/results.js.map +1 -1
- package/dist/mobileAudit/runner.js +72 -18
- package/dist/mobileAudit/runner.js.map +1 -1
- package/dist/oracle/auth.js +1 -1
- package/dist/oracle/auth.js.map +1 -1
- package/dist/oracle/failures.js +219 -36
- package/dist/oracle/failures.js.map +1 -1
- package/dist/oracle/health.js +63 -17
- package/dist/oracle/health.js.map +1 -1
- package/dist/oracle/locator.js +13 -13
- package/dist/oracle/locator.js.map +1 -1
- package/dist/oracle/record.js +3 -3
- package/dist/oracle/record.js.map +1 -1
- package/dist/orchestration/envelope.js +2 -2
- package/dist/orchestration/envelope.js.map +1 -1
- package/dist/orchestration/goal.js +4 -4
- package/dist/orchestration/goal.js.map +1 -1
- package/dist/orchestration/testThis/execute.js +62 -21
- package/dist/orchestration/testThis/execute.js.map +1 -1
- package/dist/orchestration/testThis/pipeline.js +119 -30
- package/dist/orchestration/testThis/pipeline.js.map +1 -1
- package/dist/orchestration/testThis/plan.js +162 -73
- package/dist/orchestration/testThis/plan.js.map +1 -1
- package/dist/orchestration/testThis/sessionIntent.js +72 -0
- package/dist/orchestration/testThis/sessionIntent.js.map +1 -0
- package/dist/orchestration/testThis/terminal.js +34 -16
- package/dist/orchestration/testThis/terminal.js.map +1 -1
- package/dist/orchestration/testThis/types.js +1 -1
- package/dist/orchestration/testThis/types.js.map +1 -1
- package/dist/plan/plan.js +9 -9
- package/dist/plan/plan.js.map +1 -1
- package/dist/prompts/index.js +22 -22
- package/dist/prompts/index.js.map +1 -1
- package/dist/report/export.js +392 -37
- package/dist/report/export.js.map +1 -1
- package/dist/report/findingsDedupe.js +41 -0
- package/dist/report/findingsDedupe.js.map +1 -0
- package/dist/report/policy.js +7 -4
- package/dist/report/policy.js.map +1 -1
- package/dist/report/qaLevel.js +8 -8
- package/dist/report/qaLevel.js.map +1 -1
- package/dist/report/sarifSources.js +160 -0
- package/dist/report/sarifSources.js.map +1 -0
- package/dist/report/summary.js +2 -2
- package/dist/report/summary.js.map +1 -1
- package/dist/report/testCatalog.js +4 -4
- package/dist/report/testCatalog.js.map +1 -1
- package/dist/report/toolHealth.js +124 -0
- package/dist/report/toolHealth.js.map +1 -0
- package/dist/server.js +472 -45
- package/dist/server.js.map +1 -1
- package/dist/services/automationGenerate.js +8 -2
- package/dist/services/automationGenerate.js.map +1 -1
- package/dist/services/build.js +2 -2
- package/dist/services/build.js.map +1 -1
- package/dist/{tools → services}/flowGenerate.js +29 -13
- package/dist/services/flowGenerate.js.map +1 -0
- package/dist/services/preflight.js +4 -4
- package/dist/services/preflight.js.map +1 -1
- package/dist/services/prepareAndroid.js +46 -8
- package/dist/services/prepareAndroid.js.map +1 -1
- package/dist/services/prepareIos.js +24 -9
- package/dist/services/prepareIos.js.map +1 -1
- package/dist/services/report.js +100 -45
- package/dist/services/report.js.map +1 -1
- package/dist/services/smoke.js +32 -16
- package/dist/services/smoke.js.map +1 -1
- package/dist/services/suiteGenerate.js +28 -3
- package/dist/services/suiteGenerate.js.map +1 -1
- package/dist/services/testSuiteKnowledge.js +40 -27
- package/dist/services/testSuiteKnowledge.js.map +1 -1
- package/dist/session/attach.js +270 -6
- package/dist/session/attach.js.map +1 -1
- package/dist/session/processRegistry.js +317 -48
- package/dist/session/processRegistry.js.map +1 -1
- package/dist/session/progress.js +1 -1
- package/dist/session/retention.js +201 -0
- package/dist/session/retention.js.map +1 -0
- package/dist/session/store.js +275 -48
- package/dist/session/store.js.map +1 -1
- package/dist/snapshot/overlays.js +53 -8
- package/dist/snapshot/overlays.js.map +1 -1
- package/dist/snapshot/parse.js +28 -4
- package/dist/snapshot/parse.js.map +1 -1
- package/dist/snapshot/present.js +11 -5
- package/dist/snapshot/present.js.map +1 -1
- package/dist/snapshot/settle.js +39 -9
- package/dist/snapshot/settle.js.map +1 -1
- package/dist/state/consent.js +99 -0
- package/dist/state/consent.js.map +1 -0
- package/dist/state/profile.js +46 -2
- package/dist/state/profile.js.map +1 -1
- package/dist/suite/compile.js +9 -5
- package/dist/suite/compile.js.map +1 -1
- package/dist/suite/lint.js +4 -4
- package/dist/suite/lint.js.map +1 -1
- package/dist/suite/pom.js +50 -41
- package/dist/suite/pom.js.map +1 -1
- package/dist/suite/secretGuard.js +266 -0
- package/dist/suite/secretGuard.js.map +1 -0
- package/dist/suite/testcase.js +9 -7
- package/dist/suite/testcase.js.map +1 -1
- package/dist/testSuite/exporter.js +4 -4
- package/dist/testSuite/exporter.js.map +1 -1
- package/dist/testSuite/generator.js +13 -9
- package/dist/testSuite/generator.js.map +1 -1
- package/dist/testSuite/history.js +1 -1
- package/dist/testSuite/history.js.map +1 -1
- package/dist/testSuite/issueLinks.js +3 -3
- package/dist/testSuite/issueLinks.js.map +1 -1
- package/dist/testSuite/lint.js +4 -4
- package/dist/testSuite/lint.js.map +1 -1
- package/dist/testSuite/merge.js +5 -5
- package/dist/testSuite/merge.js.map +1 -1
- package/dist/testSuite/schema.js +5 -5
- package/dist/testSuite/schema.js.map +1 -1
- package/dist/testSuite/store.js +3 -3
- package/dist/testSuite/store.js.map +1 -1
- package/dist/testSuite/traceability.js +2 -2
- package/dist/testSuite/traceability.js.map +1 -1
- package/dist/tools/act.js +794 -164
- package/dist/tools/act.js.map +1 -1
- package/dist/tools/agent.js +451 -128
- package/dist/tools/agent.js.map +1 -1
- package/dist/tools/appControl.js +69 -19
- package/dist/tools/appControl.js.map +1 -1
- package/dist/tools/appMap.js +188 -130
- package/dist/tools/appMap.js.map +1 -1
- package/dist/tools/build.js +32 -42
- package/dist/tools/build.js.map +1 -1
- package/dist/tools/bundletool.js +21 -31
- package/dist/tools/bundletool.js.map +1 -1
- package/dist/tools/clearOverlay.js +55 -12
- package/dist/tools/clearOverlay.js.map +1 -1
- package/dist/tools/device.js +76 -24
- package/dist/tools/device.js.map +1 -1
- package/dist/tools/doctor.js +68 -28
- package/dist/tools/doctor.js.map +1 -1
- package/dist/tools/explore.js +41 -47
- package/dist/tools/explore.js.map +1 -1
- package/dist/tools/featureTesting.js +31 -48
- package/dist/tools/featureTesting.js.map +1 -1
- package/dist/tools/firstRun.js +34 -41
- package/dist/tools/firstRun.js.map +1 -1
- package/dist/tools/flow.js +183 -103
- package/dist/tools/flow.js.map +1 -1
- package/dist/tools/flowRepair.js +25 -13
- package/dist/tools/flowRepair.js.map +1 -1
- package/dist/tools/generate.js +52 -89
- package/dist/tools/generate.js.map +1 -1
- package/dist/tools/getArtifact.js +16 -5
- package/dist/tools/getArtifact.js.map +1 -1
- package/dist/tools/health.js +15 -12
- package/dist/tools/health.js.map +1 -1
- package/dist/tools/ios.js +45 -223
- package/dist/tools/ios.js.map +1 -1
- package/dist/tools/issues.js +251 -35
- package/dist/tools/issues.js.map +1 -1
- package/dist/tools/jobs.js +41 -16
- package/dist/tools/jobs.js.map +1 -1
- package/dist/tools/metro.js +36 -35
- package/dist/tools/metro.js.map +1 -1
- package/dist/tools/mobileAudit.js +50 -45
- package/dist/tools/mobileAudit.js.map +1 -1
- package/dist/tools/network.js +31 -14
- package/dist/tools/network.js.map +1 -1
- package/dist/tools/note.js +26 -26
- package/dist/tools/note.js.map +1 -1
- package/dist/tools/prepareIosTarget.js +10 -16
- package/dist/tools/prepareIosTarget.js.map +1 -1
- package/dist/tools/prepareTarget.js +117 -50
- package/dist/tools/prepareTarget.js.map +1 -1
- package/dist/tools/report.js +11 -22
- package/dist/tools/report.js.map +1 -1
- package/dist/tools/resolveArtifact.js +11 -15
- package/dist/tools/resolveArtifact.js.map +1 -1
- package/dist/tools/resolveTarget.js +78 -24
- package/dist/tools/resolveTarget.js.map +1 -1
- package/dist/tools/screenRecord.js +23 -21
- package/dist/tools/screenRecord.js.map +1 -1
- package/dist/tools/screenshot.js +23 -16
- package/dist/tools/screenshot.js.map +1 -1
- package/dist/tools/smoke.js +20 -16
- package/dist/tools/smoke.js.map +1 -1
- package/dist/tools/snapshot.js +155 -118
- package/dist/tools/snapshot.js.map +1 -1
- package/dist/tools/startSession.js +104 -116
- package/dist/tools/startSession.js.map +1 -1
- package/dist/tools/suite.js +72 -43
- package/dist/tools/suite.js.map +1 -1
- package/dist/tools/testSuite.js +30 -20
- package/dist/tools/testSuite.js.map +1 -1
- package/dist/tools/testThis.js +24 -28
- package/dist/tools/testThis.js.map +1 -1
- package/dist/tools/visual.js +686 -210
- package/dist/tools/visual.js.map +1 -1
- package/dist/tools/wait.js +9 -38
- package/dist/tools/wait.js.map +1 -1
- package/dist/tools/wda.js +187 -57
- package/dist/tools/wda.js.map +1 -1
- package/dist/version.js +31 -22
- package/dist/version.js.map +1 -1
- package/dist/visual/ocr.js +53 -6
- package/dist/visual/ocr.js.map +1 -1
- package/dist/visual/provider.js +80 -12
- package/dist/visual/provider.js.map +1 -1
- package/docs/README.md +24 -10
- package/docs/ci-reports.md +328 -0
- package/docs/concepts.md +227 -0
- package/docs/flows.md +153 -0
- package/docs/mcp-server.md +194 -128
- package/docs/physical-devices.md +84 -0
- package/docs/tools.md +812 -152
- package/package.json +3 -2
- package/dist/tools/assertVisual.js +0 -84
- package/dist/tools/assertVisual.js.map +0 -1
- package/dist/tools/automationGenerate.js.map +0 -1
- package/dist/tools/capabilities.js +0 -179
- package/dist/tools/capabilities.js.map +0 -1
- package/dist/tools/detectContext.js +0 -41
- package/dist/tools/detectContext.js.map +0 -1
- package/dist/tools/flowGenerate.js.map +0 -1
- package/dist/tools/history.js +0 -86
- package/dist/tools/history.js.map +0 -1
- package/dist/tools/locator.js +0 -85
- package/dist/tools/locator.js.map +0 -1
- package/dist/tools/permissions.js +0 -174
- package/dist/tools/permissions.js.map +0 -1
- package/dist/tools/plan.js +0 -52
- package/dist/tools/plan.js.map +0 -1
- package/dist/tools/screenInfo.js +0 -76
- package/dist/tools/screenInfo.js.map +0 -1
- package/dist/tools/seed.js +0 -133
- package/dist/tools/seed.js.map +0 -1
- package/dist/tools/state.js +0 -217
- package/dist/tools/state.js.map +0 -1
- package/dist/tools/visualText.js +0 -106
- package/dist/tools/visualText.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "swipium",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Swipium MCP server for simulator-based mobile QA workflows, evidence capture, app maps, and generated test suites.",
|
|
6
6
|
"keywords": [
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"files": [
|
|
29
29
|
"dist",
|
|
30
30
|
"docs",
|
|
31
|
+
"!docs/v1-mvp-plan.md",
|
|
31
32
|
"THREAT_MODEL.md",
|
|
32
33
|
"CHANGELOG.md"
|
|
33
34
|
],
|
|
@@ -39,7 +40,7 @@
|
|
|
39
40
|
"url": "https://github.com/GeroPalombo/swipium"
|
|
40
41
|
},
|
|
41
42
|
"bugs": {
|
|
42
|
-
"url": "https://github.com/
|
|
43
|
+
"url": "https://github.com/GeroPalombo/swipium/issues"
|
|
43
44
|
},
|
|
44
45
|
"homepage": "https://swipium.com",
|
|
45
46
|
"publishConfig": {
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
// qa_assert_visual — record a VISUAL assertion in one call: capture a screenshot as evidence
|
|
2
|
-
// and file a qa_note(verifiedVisually) pass/fail. For screens with no usable structured tree
|
|
3
|
-
// (maps, canvases, animations) where the agent confirms a rendered result by eye. Replaces the
|
|
4
|
-
// two-step qa_screenshot + qa_note(verifiedVisually) idiom with a single intent-revealing tool.
|
|
5
|
-
import { z } from 'zod';
|
|
6
|
-
import { qaOk, qaError } from '../lib/result.js';
|
|
7
|
-
import { captureCoordinateSpace } from '../lib/coordSpace.js';
|
|
8
|
-
import { sensitiveRefusal } from '../lib/sensitive.js';
|
|
9
|
-
import { getDriver } from '../session/attach.js';
|
|
10
|
-
export function registerAssertVisual(server, sessions) {
|
|
11
|
-
server.registerTool('qa_assert_visual', {
|
|
12
|
-
title: 'Assert a visual result',
|
|
13
|
-
description: 'Record a visual assertion for a screen that has no usable structured tree (map/canvas/animation): captures a screenshot as evidence and files a test outcome with verifiedVisually=true. Use `pass:false` if the expected thing is NOT visible. Equivalent to qa_screenshot + qa_note(verifiedVisually) but in one call. Returns the screenshot URI and the recorded note.',
|
|
14
|
-
inputSchema: {
|
|
15
|
-
sessionId: z.string(),
|
|
16
|
-
assertion: z.string().describe('what you visually confirmed, e.g. "Live Map rendered with the route polyline"'),
|
|
17
|
-
pass: z.boolean().optional().describe('default true; set false if the expected result is NOT visible'),
|
|
18
|
-
reason: z.string().optional().describe('extra detail (what you saw / why it failed)'),
|
|
19
|
-
},
|
|
20
|
-
}, async ({ sessionId, assertion, pass = true, reason }) => {
|
|
21
|
-
const session = sessions.get(sessionId);
|
|
22
|
-
const { driver } = session ? await getDriver(session) : { driver: undefined };
|
|
23
|
-
if (!session || !driver) {
|
|
24
|
-
return qaError({
|
|
25
|
-
what: 'No device attached to this session',
|
|
26
|
-
changedState: false,
|
|
27
|
-
retrySafe: true,
|
|
28
|
-
nextSteps: ['Call qa_prepare_target first.'],
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
if (session.sensitive)
|
|
32
|
-
return sensitiveRefusal('Visual assertion (screenshot)');
|
|
33
|
-
let uri;
|
|
34
|
-
let coordinateSpace;
|
|
35
|
-
try {
|
|
36
|
-
const png = await driver.screenshot();
|
|
37
|
-
uri = sessions.saveArtifact(session, 'screenshot', `visual-${Date.now()}.png`, png, 'image/png', `visual assertion: ${assertion}`);
|
|
38
|
-
sessions.bump(session, 'screenshots');
|
|
39
|
-
coordinateSpace = await captureCoordinateSpace(driver, png);
|
|
40
|
-
}
|
|
41
|
-
catch (e) {
|
|
42
|
-
return qaError({
|
|
43
|
-
what: `Could not capture the screenshot evidence: ${String(e)}`,
|
|
44
|
-
changedState: false,
|
|
45
|
-
retrySafe: true,
|
|
46
|
-
nextSteps: ['Confirm the device is online (qa_doctor), then retry.'],
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
sessions.addNote(session, {
|
|
50
|
-
at: Date.now(),
|
|
51
|
-
workflow: assertion,
|
|
52
|
-
outcome: pass ? 'pass' : 'fail',
|
|
53
|
-
reason,
|
|
54
|
-
method: 'visual',
|
|
55
|
-
evidenceKind: 'visual_match',
|
|
56
|
-
artifactUris: [uri],
|
|
57
|
-
verifiedVisually: true,
|
|
58
|
-
});
|
|
59
|
-
if (pass) {
|
|
60
|
-
const screenshotCrop = coordinateSpace?.screenshot
|
|
61
|
-
? { x: 0, y: 0, width: coordinateSpace.screenshot.width, height: coordinateSpace.screenshot.height }
|
|
62
|
-
: undefined;
|
|
63
|
-
sessions.addRecordedAction(session, {
|
|
64
|
-
at: Date.now(),
|
|
65
|
-
action: 'assert_visual',
|
|
66
|
-
assertion,
|
|
67
|
-
exportability: 'semantic',
|
|
68
|
-
provenance: {
|
|
69
|
-
screenshotUri: uri,
|
|
70
|
-
selectorKind: 'visual_region',
|
|
71
|
-
selectorValue: assertion,
|
|
72
|
-
visual: {
|
|
73
|
-
screenshotCrop,
|
|
74
|
-
confidence: 1,
|
|
75
|
-
density: coordinateSpace?.density ?? null,
|
|
76
|
-
orientation: coordinateSpace?.orientation,
|
|
77
|
-
},
|
|
78
|
-
},
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
return qaOk({ assertion, pass, verifiedVisually: true, method: 'visual', screenshotUri: uri, coordinateSpace }, `visual assertion ${pass ? '✅ PASS' : '❌ FAIL'}: "${assertion}"\nevidence: ${uri}`);
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=assertVisual.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assertVisual.js","sourceRoot":"","sources":["../../src/tools/assertVisual.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"automationGenerate.js","sourceRoot":"","sources":["../../src/tools/automationGenerate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { qaOk } from '../lib/result.js';
|
|
3
|
-
import { SWIPIUM_VERSION, TOOL_COUNT } from '../version.js';
|
|
4
|
-
export const CAPABILITY_GROUPS = [
|
|
5
|
-
{
|
|
6
|
-
group: 'start',
|
|
7
|
-
purpose: 'Start a simulator QA run and recover from blockers.',
|
|
8
|
-
tools: [
|
|
9
|
-
{ name: 'qa_agent_brief', summary: 'Brief for agent orchestration: first call, polling, report fetch, and blocker rules.' },
|
|
10
|
-
{ name: 'qa_capabilities', summary: 'Grouped overview of the public tool surface.' },
|
|
11
|
-
{ name: 'qa_test_this', summary: 'Autopilot for "test it": resolve, prepare, smoke, explore, report, and optional suite output.' },
|
|
12
|
-
{ name: 'qa_job_status', summary: 'Poll long-running jobs started by macro tools.' },
|
|
13
|
-
{ name: 'qa_job_cancel', summary: 'Cancel a running job; aborts spawned children.' },
|
|
14
|
-
{ name: 'qa_status', summary: 'Compact session status and current next action.' },
|
|
15
|
-
{ name: 'qa_explain_blocker', summary: 'Explain a typed blocker and the owner of the fix.' },
|
|
16
|
-
{ name: 'qa_continue_from_blocker', summary: 'Resume after user input, with secret redaction.' },
|
|
17
|
-
{ name: 'qa_next_best_action', summary: 'Deterministic recommendation of the single best next tool to call, and why.' },
|
|
18
|
-
{ name: 'qa_get_artifact', summary: 'Fetch Swipium artifact metadata or contents by URI.' },
|
|
19
|
-
],
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
group: 'setup',
|
|
23
|
-
purpose: 'Resolve the project, create a session, and prepare Android Emulator or iOS Simulator targets.',
|
|
24
|
-
tools: [
|
|
25
|
-
{ name: 'qa_doctor', summary: 'Check local toolchain readiness.' },
|
|
26
|
-
{ name: 'qa_start_session', summary: 'Open a project session with budget and response mode.' },
|
|
27
|
-
{ name: 'qa_detect_context', summary: 'Detect project framework, artifacts, devices, and blockers.' },
|
|
28
|
-
{ name: 'qa_plan', summary: 'Propose safe workflows before acting.' },
|
|
29
|
-
{ name: 'qa_prepare_target', summary: 'Prepare Android Emulator target and launch an APK.' },
|
|
30
|
-
{ name: 'qa_prepare_ios_target', summary: 'Prepare iOS Simulator target and launch a simulator .app.' },
|
|
31
|
-
{ name: 'qa_ios', summary: 'iOS Simulator operations: boot, install, launch, screenshot, logs, and reset.' },
|
|
32
|
-
{ name: 'qa_wda', summary: 'WebDriverAgent attach/build/start for structured iOS Simulator automation.' },
|
|
33
|
-
],
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
group: 'build',
|
|
37
|
-
purpose: 'Resolve a device and an installable artifact, or build one from source locally.',
|
|
38
|
-
tools: [
|
|
39
|
-
{ name: 'qa_resolve_target', summary: 'Pick the best device/simulator (online > boot; honors platform/device).' },
|
|
40
|
-
{ name: 'qa_resolve_artifact', summary: 'Find the best installable .apk/.aab/.ipa/.app and explain where it looked.' },
|
|
41
|
-
{
|
|
42
|
-
name: 'qa_build',
|
|
43
|
-
summary: 'mode:"plan" (default) proposes exact build commands (side-effect free); mode:"run" builds from source as a consent-gated job, captures a log, and re-resolves the artifact.',
|
|
44
|
-
},
|
|
45
|
-
{ name: 'qa_bundletool', summary: 'Convert an .aab to an installable APK (universal or device-specific set).' },
|
|
46
|
-
],
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
group: 'device',
|
|
50
|
-
purpose: 'Inspect and control the device/app environment without raw adb or simctl.',
|
|
51
|
-
tools: [
|
|
52
|
-
{ name: 'qa_device_info', summary: 'Model/SDK/ABIs/locale/screen/orientation + installed apps (read-only).' },
|
|
53
|
-
{ name: 'qa_orientation', summary: 'Set portrait / landscape / auto (logged).' },
|
|
54
|
-
{ name: 'qa_geolocation', summary: 'Spoof GPS location (emulator; consent-gated) for map/location apps.' },
|
|
55
|
-
{ name: 'qa_network', summary: 'airplane-mode status/offline/online/restore (consent-gated; auto-restored).' },
|
|
56
|
-
{ name: 'qa_metro', summary: 'RN/Expo Metro status/start/stop/diagnose (RedBox detection + logcat).' },
|
|
57
|
-
{ name: 'qa_app_control', summary: 'launch/foreground/background/force_stop/restart/clear_data/fresh_start.' },
|
|
58
|
-
{ name: 'qa_screen_record', summary: 'Record a screen video to an mp4 artifact (start/stop; consent-gated).' },
|
|
59
|
-
],
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
group: 'drive',
|
|
63
|
-
purpose: 'Observe, act, and make deterministic health assertions.',
|
|
64
|
-
tools: [
|
|
65
|
-
{ name: 'qa_snapshot', summary: 'Capture compact structured UI elements.' },
|
|
66
|
-
{ name: 'qa_inspect', summary: 'Return the full attributes of a single @eN element from the latest snapshot.' },
|
|
67
|
-
{ name: 'qa_act', summary: 'Tap, type, clear, swipe, scroll, press, open URL, or wait, then observe.' },
|
|
68
|
-
{ name: 'qa_clear_overlay', summary: 'Dismiss common overlays blocking a target.' },
|
|
69
|
-
{ name: 'qa_check_health', summary: 'Detect crash, ANR, error boundaries, and foreground health.' },
|
|
70
|
-
{ name: 'qa_screenshot', summary: 'Capture a screenshot artifact.' },
|
|
71
|
-
{ name: 'qa_note', summary: 'Record a structured QA outcome.' },
|
|
72
|
-
{ name: 'qa_assert_visual', summary: 'Capture a visual assertion with evidence.' },
|
|
73
|
-
{ name: 'qa_wait', summary: 'Non-shell wait for device_online / metro_ready / job_done.' },
|
|
74
|
-
],
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
group: 'run',
|
|
78
|
-
purpose: 'Run smoke checks, exploration, and reports.',
|
|
79
|
-
tools: [
|
|
80
|
-
{ name: 'qa_smoke', summary: 'Run launch smoke and saved flows.' },
|
|
81
|
-
{ name: 'qa_explore', summary: 'Guided simulator exploration with evidence and graph output.' },
|
|
82
|
-
{ name: 'qa_report', summary: 'Summarize findings, blockers, evidence, and next actions.' },
|
|
83
|
-
],
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
group: 'app-map',
|
|
87
|
-
purpose: 'Maintain the app knowledge map used as Swipium project memory.',
|
|
88
|
-
tools: [
|
|
89
|
-
{ name: 'qa_app_map_build', summary: 'Build or update the app map from static analysis and exploration.' },
|
|
90
|
-
{ name: 'qa_app_map_read', summary: 'Read compact app map sections.' },
|
|
91
|
-
{ name: 'qa_app_map_query', summary: 'Search screens, features, tests, and code links.' },
|
|
92
|
-
{
|
|
93
|
-
name: 'qa_app_map_feature_scope',
|
|
94
|
-
summary: 'Resolve a feature (id or free text) to a focused test scope + objective + candidates (read-only; works without a map).',
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
name: 'qa_app_map_update',
|
|
98
|
-
summary: 'Targeted provenance-tracked map updates: note, test cases, automation suite, environment, coverage.',
|
|
99
|
-
},
|
|
100
|
-
],
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
group: 'feature',
|
|
104
|
-
purpose: 'Test a specific feature by name, backed by the app knowledge map.',
|
|
105
|
-
tools: [
|
|
106
|
-
{
|
|
107
|
-
name: 'qa_test_feature',
|
|
108
|
-
summary: 'Focused feature test: mode:"plan" for the read-only test plan; mode:"execute" explores toward the feature, records cases, updates the map and report.',
|
|
109
|
-
},
|
|
110
|
-
],
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
group: 'flows',
|
|
114
|
-
purpose: 'Create, plan, run, compile, and repair durable simulator flows.',
|
|
115
|
-
tools: [
|
|
116
|
-
{ name: 'qa_flow_check', summary: 'Parse and statically validate a Swipium flow (static lint of the YAML).' },
|
|
117
|
-
{
|
|
118
|
-
name: 'qa_flow_run',
|
|
119
|
-
summary: 'mode:"run" (default) executes a flow against a prepared session; mode:"plan" previews the execution against backend capabilities without a device.',
|
|
120
|
-
},
|
|
121
|
-
{ name: 'qa_flow_compile', summary: 'Compile a generated POM suite into runnable Flow V2 for qa_flow_run.' },
|
|
122
|
-
{ name: 'qa_flow_repair', summary: 'Suggest or patch a stronger locator for a failed flow step from the current screen.' },
|
|
123
|
-
],
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
group: 'generate',
|
|
127
|
-
purpose: 'Generate per-run test assets (flow, page objects, POM suite, test cases, Appium code) from recorded actions.',
|
|
128
|
-
tools: [{ name: 'qa_generate', summary: 'One entry point: target flow / pom / suite / testcases / appium; mode:"plan" previews.' }],
|
|
129
|
-
},
|
|
130
|
-
{
|
|
131
|
-
group: 'test-suite',
|
|
132
|
-
purpose: 'Grow and maintain a canonical, persistent test suite across runs (.swipium/test-suite.json).',
|
|
133
|
-
tools: [
|
|
134
|
-
{ name: 'qa_suite_read', summary: 'Read the canonical suite: filter by functionality/status; summary/json/markdown.' },
|
|
135
|
-
{ name: 'qa_suite_update', summary: 'Merge cases into the persistent suite (dedupe by feature+objective+steps).' },
|
|
136
|
-
{ name: 'qa_suite_generate', summary: 'Generate or refresh canonical cases from a recorded run and exploration.' },
|
|
137
|
-
{ name: 'qa_suite_export', summary: 'Export the persistent suite to markdown, yaml dir, json, or junit.' },
|
|
138
|
-
{ name: 'qa_suite_lint', summary: 'Validate the durable suite AND generated page objects (when present) in one lint.' },
|
|
139
|
-
],
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
group: 'issues',
|
|
143
|
-
purpose: 'Durable issue memory and executable mobile-QA audit profiles.',
|
|
144
|
-
tools: [
|
|
145
|
-
{ name: 'qa_issue_log', summary: 'List the durable project issue ledger: records, counts, recurrence, linked evidence.' },
|
|
146
|
-
{
|
|
147
|
-
name: 'qa_mobile_audit',
|
|
148
|
-
summary: 'Plan or execute a named mobile-QA profile (smoke / account_cycle / store_compliance / resilience / release_gate).',
|
|
149
|
-
},
|
|
150
|
-
],
|
|
151
|
-
},
|
|
152
|
-
{
|
|
153
|
-
group: 'first-run',
|
|
154
|
-
purpose: 'Handle login, account creation, onboarding, and paywall first-run screens safely.',
|
|
155
|
-
tools: [
|
|
156
|
-
{
|
|
157
|
-
name: 'qa_first_run',
|
|
158
|
-
summary: 'mode:"plan" (default) classifies the current first-run screen and produces a safe plan; mode:"continue" executes bounded first-run steps with safe generated test data when allowed.',
|
|
159
|
-
},
|
|
160
|
-
],
|
|
161
|
-
},
|
|
162
|
-
];
|
|
163
|
-
const groupNames = CAPABILITY_GROUPS.map((g) => g.group);
|
|
164
|
-
export function registerCapabilities(server, _sessions) {
|
|
165
|
-
server.registerTool('qa_capabilities', {
|
|
166
|
-
title: 'List Swipium capabilities',
|
|
167
|
-
description: 'The full public tool catalog, grouped by purpose with a one-line summary per tool. USE WHEN you need to discover which Swipium tool covers a task (or answer "what can Swipium do?"); pass `group` to fetch one group cheaply. Read-only, deterministic, needs no session or device. Returns { swipiumVersion, totalTools, groups: [{ group, purpose, tools: [{ name, summary }] }] }. Orientation: call qa_agent_brief first for HOW to drive Swipium; qa_status for the current session/device state; qa_next_best_action for the single next tool to call.',
|
|
168
|
-
inputSchema: {
|
|
169
|
-
group: z.enum(groupNames).optional().describe('Return only this group.'),
|
|
170
|
-
},
|
|
171
|
-
}, async ({ group }) => {
|
|
172
|
-
const groups = group ? CAPABILITY_GROUPS.filter((g) => g.group === group) : CAPABILITY_GROUPS;
|
|
173
|
-
const summary = `Swipium v${SWIPIUM_VERSION}: ${TOOL_COUNT} public tools in ${CAPABILITY_GROUPS.length} groups.\n` +
|
|
174
|
-
groups.map((g) => `\n[${g.group}] ${g.purpose}\n` + g.tools.map((t) => ` - ${t.name}: ${t.summary}`).join('\n')).join('\n') +
|
|
175
|
-
'\n\nStart with qa_test_this for low-context "test it" requests.';
|
|
176
|
-
return qaOk({ swipiumVersion: SWIPIUM_VERSION, totalTools: TOOL_COUNT, groups }, summary);
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
//# sourceMappingURL=capabilities.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/tools/capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
// qa_detect_context — scan the resolved projectRoot and report what we're looking at.
|
|
2
|
-
import { z } from 'zod';
|
|
3
|
-
import { qaOk, qaError } from '../lib/result.js';
|
|
4
|
-
import { resolveProjectRoot } from '../context/projectRoot.js';
|
|
5
|
-
import { detectContext } from '../context/detect.js';
|
|
6
|
-
export function registerDetectContext(server, sessions) {
|
|
7
|
-
server.registerTool('qa_detect_context', {
|
|
8
|
-
title: 'Detect project context',
|
|
9
|
-
description: 'Scan the resolved project root (a session root, an explicit projectRoot, or MCP workspace roots — never the server cwd) and report: framework (expo/bare-rn/native-android/native-ios/flutter), monorepo, prebuilt artifacts (apk/ipa/.app), online devices + AVDs, toolchain, and blockers. Use this to decide what qa_prepare_target needs.',
|
|
10
|
-
inputSchema: {
|
|
11
|
-
sessionId: z.string().optional().describe("Use this session's projectRoot if given."),
|
|
12
|
-
projectRoot: z.string().optional().describe('Absolute path; else resolved via MCP roots.'),
|
|
13
|
-
},
|
|
14
|
-
}, async ({ sessionId, projectRoot }) => {
|
|
15
|
-
let root;
|
|
16
|
-
if (sessionId)
|
|
17
|
-
root = sessions.get(sessionId)?.root;
|
|
18
|
-
if (!root) {
|
|
19
|
-
const resolved = await resolveProjectRoot(server, projectRoot);
|
|
20
|
-
if (!resolved.root) {
|
|
21
|
-
return qaError({
|
|
22
|
-
what: 'Could not resolve a project root to scan',
|
|
23
|
-
changedState: false,
|
|
24
|
-
retrySafe: true,
|
|
25
|
-
nextSteps: ['Pass projectRoot="/abs/path", or call qa_start_session first.'],
|
|
26
|
-
clientHint: resolved.hint,
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
root = resolved.root;
|
|
30
|
-
}
|
|
31
|
-
const ctx = await detectContext(root);
|
|
32
|
-
const summary = `root=${ctx.projectRoot}\n` +
|
|
33
|
-
`framework=${ctx.framework} location=${ctx.location} monorepo=${ctx.monorepo}\n` +
|
|
34
|
-
`artifacts: ${ctx.artifacts.apks.length} apk, ${ctx.artifacts.ipas.length} ipa, ${ctx.artifacts.appBundles.length} .app\n` +
|
|
35
|
-
`devices: online=[${ctx.devices.androidOnline.join(', ')}] avds=[${ctx.devices.avds.join(', ')}]\n` +
|
|
36
|
-
`toolchain: adb=${ctx.toolchain.adb} emulator=${ctx.toolchain.emulator} java=${ctx.toolchain.java} aapt2=${ctx.toolchain.aapt2} xcodebuild=${ctx.toolchain.xcodebuild}\n` +
|
|
37
|
-
(ctx.blockers.length ? `blockers:\n - ${ctx.blockers.join('\n - ')}` : 'no blockers');
|
|
38
|
-
return qaOk(ctx, summary);
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=detectContext.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"detectContext.js","sourceRoot":"","sources":["../../src/tools/detectContext.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAEtF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,QAAsB;IAC7E,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EACT,+UAA+U;QACjV,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;YACrF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;SAC3F;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAE;QACnC,IAAI,IAAwB,CAAC;QAC7B,IAAI,SAAS;YAAE,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;QACpD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC/D,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnB,OAAO,OAAO,CAAC;oBACb,IAAI,EAAE,0CAA0C;oBAChD,YAAY,EAAE,KAAK;oBACnB,SAAS,EAAE,IAAI;oBACf,SAAS,EAAE,CAAC,+DAA+D,CAAC;oBAC5E,UAAU,EAAE,QAAQ,CAAC,IAAI;iBAC1B,CAAC,CAAC;YACL,CAAC;YACD,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,GACX,QAAQ,GAAG,CAAC,WAAW,IAAI;YAC3B,aAAa,GAAG,CAAC,SAAS,aAAa,GAAG,CAAC,QAAQ,aAAa,GAAG,CAAC,QAAQ,IAAI;YAChF,cAAc,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,SAAS;YAC1H,oBAAoB,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YACnG,kBAAkB,GAAG,CAAC,SAAS,CAAC,GAAG,aAAa,GAAG,CAAC,SAAS,CAAC,QAAQ,SAAS,GAAG,CAAC,SAAS,CAAC,IAAI,UAAU,GAAG,CAAC,SAAS,CAAC,KAAK,eAAe,GAAG,CAAC,SAAS,CAAC,UAAU,IAAI;YACzK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QACxF,OAAO,IAAI,CAAC,GAAyC,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flowGenerate.js","sourceRoot":"","sources":["../../src/tools/flowGenerate.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,8FAA8F;AAC9F,4FAA4F;AAC5F,6FAA6F;AAE7F,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAUnD,uGAAuG;AACvG,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAsB,EACtB,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAoB;IAE1D,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,OAAO,CAAC;YACb,IAAI,EAAE,qBAAqB,SAAS,EAAE;YACtC,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,CAAC,8BAA8B,CAAC;SAC5C,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QACpC,OAAO,OAAO,CAAC;YACb,IAAI,EAAE,yCAAyC;YAC/C,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,CAAC,4FAA4F,CAAC;SAC1G,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAK,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAA4B,IAAI,SAAS,CAAC;IAC3G,MAAM,QAAQ,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAClG,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;IAE5F,oFAAoF;IACpF,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CACvC,OAAO,EACP,MAAM,EACN,GAAG,QAAQ,OAAO,EAClB,GAAG,CAAC,IAAI,EACR,WAAW,EACX,8BAA8B,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,CACtD,CAAC;IACF,IAAI,OAA2B,CAAC;IAChC,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACpD,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;QACxC,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,OAAO,GACX,mBAAmB,QAAQ,kBAAkB,GAAG,CAAC,UAAU,CAAC,KAAK,KAAK,GAAG,CAAC,UAAU,CAAC,WAAW,cAAc;QAC9G,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,gBAAgB,GAAG,CAAC,UAAU,CAAC,cAAc,uBAAuB,GAAG,CAAC,SAAS,SAAS;QACtH,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC,EAAE,CAAC;QACjH,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,0BAA0B,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC,CAAC,yEAAyE,CAAC;QAC7G,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IAEpB,OAAO,IAAI,CACT;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,KAAK,IAAI,IAAI;QACpB,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,WAAW;QACX,OAAO,EAAE,OAAO,IAAI,IAAI;QACxB,IAAI,EAAE,GAAG,CAAC,IAAI;KACf,EACD,OAAO,CACR,CAAC;AACJ,CAAC"}
|
package/dist/tools/history.js
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { qaError, qaOk } from '../lib/result.js';
|
|
3
|
-
import { compareReports, trendForRoot } from '../report/history.js';
|
|
4
|
-
export function registerHistory(server, sessions) {
|
|
5
|
-
server.registerTool('qa_report_compare', {
|
|
6
|
-
title: 'Compare Swipium reports',
|
|
7
|
-
description: 'Compare a current Swipium report.json against a baseline report.json. Reports new failures, fixed failures, changed screenshots, outcome changes, runtime regression, and optional flake status from local trend history.',
|
|
8
|
-
inputSchema: {
|
|
9
|
-
current: z.string().describe('Path to current report.json.'),
|
|
10
|
-
baseline: z.string().describe('Path to baseline report.json.'),
|
|
11
|
-
trendRoot: z
|
|
12
|
-
.string()
|
|
13
|
-
.optional()
|
|
14
|
-
.describe('Optional project root containing .swipium/runs or legacy .swipium/ci history for known-flaky classification.'),
|
|
15
|
-
},
|
|
16
|
-
}, async ({ current, baseline, trendRoot }) => {
|
|
17
|
-
try {
|
|
18
|
-
const cmp = compareReports(current, baseline, { trendRoot });
|
|
19
|
-
return qaOk(cmp, cmp.summary);
|
|
20
|
-
}
|
|
21
|
-
catch (e) {
|
|
22
|
-
return qaError({
|
|
23
|
-
what: `Could not compare reports: ${String(e.message ?? e)}`,
|
|
24
|
-
changedState: false,
|
|
25
|
-
retrySafe: true,
|
|
26
|
-
nextSteps: ['Pass readable Swipium report.json files for current and baseline.'],
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
server.registerTool('qa_run_history', {
|
|
31
|
-
title: 'Summarize Swipium run history',
|
|
32
|
-
description: 'Read local .swipium/runs/**/report.json files (and legacy .swipium/ci/**) and summarize pass rate, median runtime, top failures, environment failures, flaky flows, confidence calibration, and slowest runs.',
|
|
33
|
-
inputSchema: {
|
|
34
|
-
sessionId: z.string().optional(),
|
|
35
|
-
projectRoot: z.string().optional().describe('Project root. Defaults to the session root when sessionId is provided.'),
|
|
36
|
-
},
|
|
37
|
-
}, async ({ sessionId, projectRoot }) => {
|
|
38
|
-
const session = sessionId ? sessions.get(sessionId) : undefined;
|
|
39
|
-
if (sessionId && !session)
|
|
40
|
-
return qaError({
|
|
41
|
-
what: `Unknown sessionId ${sessionId}`,
|
|
42
|
-
changedState: false,
|
|
43
|
-
retrySafe: true,
|
|
44
|
-
nextSteps: ['Call qa_start_session first, or pass projectRoot.'],
|
|
45
|
-
});
|
|
46
|
-
const root = projectRoot ?? session?.root;
|
|
47
|
-
if (!root)
|
|
48
|
-
return qaError({
|
|
49
|
-
what: 'qa_run_history needs projectRoot or sessionId',
|
|
50
|
-
changedState: false,
|
|
51
|
-
retrySafe: true,
|
|
52
|
-
nextSteps: ['Pass projectRoot, or call qa_start_session first.'],
|
|
53
|
-
});
|
|
54
|
-
try {
|
|
55
|
-
const trend = trendForRoot(root);
|
|
56
|
-
const calibration = trend.confidenceCalibration;
|
|
57
|
-
const blockers = trend.releaseGateSignals.filter((s) => s.level === 'block').reduce((sum, s) => sum + s.count, 0);
|
|
58
|
-
const warnings = trend.releaseGateSignals.filter((s) => s.level === 'warn').reduce((sum, s) => sum + s.count, 0);
|
|
59
|
-
const locatorTrend = trend.locatorReadinessTrend;
|
|
60
|
-
const asSec = (ms) => (ms == null ? 'n/a' : `${Math.round(ms / 100) / 10}s`);
|
|
61
|
-
const summary = `history: ${trend.reports} report(s), median ${asSec(trend.medianRuntimeMs)}\n` +
|
|
62
|
-
`timing: avg setup ${asSec(trend.averageSetupMs)}, avg active ${asSec(trend.averageActiveMs)}\n` +
|
|
63
|
-
(locatorTrend.runsWithReadiness
|
|
64
|
-
? `locator readiness: latest durable ${locatorTrend.latestDurablePct ?? 'n/a'}%, average ${locatorTrend.averageDurablePct ?? 'n/a'}%\n`
|
|
65
|
-
: '') +
|
|
66
|
-
Object.entries(trend.passRate)
|
|
67
|
-
.map(([flow, rate]) => ` ${flow}: ${(rate * 100).toFixed(1)}% pass`)
|
|
68
|
-
.join('\n') +
|
|
69
|
-
`\nrelease gate signals: ${blockers} block, ${warnings} warn` +
|
|
70
|
-
`\ncalibration: ${calibration.status} (${calibration.confidenceSamples}/${calibration.probabilisticEvidence} confidence sample(s), ${calibration.outcomeSamples} outcome sample(s))` +
|
|
71
|
-
(trend.slowestSteps.length
|
|
72
|
-
? `\nslowest step: ${trend.slowestSteps[0].workflow}#${trend.slowestSteps[0].index} ${trend.slowestSteps[0].kind} ${asSec(trend.slowestSteps[0].durationMs)}`
|
|
73
|
-
: '');
|
|
74
|
-
return qaOk({ root, ...trend }, summary);
|
|
75
|
-
}
|
|
76
|
-
catch (e) {
|
|
77
|
-
return qaError({
|
|
78
|
-
what: `Could not read run history: ${String(e.message ?? e)}`,
|
|
79
|
-
changedState: false,
|
|
80
|
-
retrySafe: true,
|
|
81
|
-
nextSteps: ['Confirm .swipium/runs or .swipium/ci contains report.json files.'],
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
//# sourceMappingURL=history.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/tools/history.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/locator.js
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
// qa_locator_suggest (NEXT-PLAN: Locator And Maintainability) — for the current screen, recommend
|
|
2
|
-
// the most durable locator for each element + score it, and grade the screen's "automation
|
|
3
|
-
// readiness" (how much of the interactive UI has a durable testID/accessibility handle). This
|
|
4
|
-
// tells a developer exactly which controls need testIDs to make flows non-brittle.
|
|
5
|
-
import { z } from 'zod';
|
|
6
|
-
import { qaOk, qaError } from '../lib/result.js';
|
|
7
|
-
import { parseSnapshot, signature } from '../snapshot/parse.js';
|
|
8
|
-
import { suggestLocator, automationReadiness, locatorReadinessIssues } from '../oracle/locator.js';
|
|
9
|
-
import { getDriver } from '../session/attach.js';
|
|
10
|
-
export function registerLocator(server, sessions) {
|
|
11
|
-
server.registerTool('qa_locator_suggest', {
|
|
12
|
-
title: 'Suggest durable locators',
|
|
13
|
-
description: "For the current screen, recommend the most durable locator for each element (priority: accessibility/content-desc > resource-id/testID > visible text > structure > coordinate) with a durability score, and grade the screen's automation readiness — listing exactly which interactive controls need a testID. Use this to make generated flows non-brittle and to hand developers an actionable testID to-do list. Needs a structured UI tree (not the iOS simulator / visual-fallback).",
|
|
14
|
-
inputSchema: {
|
|
15
|
-
sessionId: z.string(),
|
|
16
|
-
interactiveOnly: z.boolean().optional().describe('Only score clickable elements (default false → all addressable elements).'),
|
|
17
|
-
},
|
|
18
|
-
}, async ({ sessionId, interactiveOnly }) => {
|
|
19
|
-
const session = sessions.get(sessionId);
|
|
20
|
-
const { driver } = session ? await getDriver(session) : { driver: undefined };
|
|
21
|
-
if (!session || !driver) {
|
|
22
|
-
return qaError({
|
|
23
|
-
what: 'No device attached to this session',
|
|
24
|
-
changedState: false,
|
|
25
|
-
retrySafe: true,
|
|
26
|
-
nextSteps: ['Call qa_prepare_target first.'],
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
if (driver.kind === 'simulator' || session.mode === 'visual-fallback') {
|
|
30
|
-
return qaError({
|
|
31
|
-
what: 'Locator suggestions need a structured UI tree, which this backend/screen lacks',
|
|
32
|
-
changedState: false,
|
|
33
|
-
retrySafe: false,
|
|
34
|
-
failureCode: 'BACKEND_UNSUPPORTED',
|
|
35
|
-
nextSteps: [
|
|
36
|
-
'On the iOS simulator or a visual-only screen there is no a11y tree to score. Use qa_visual / qa_assert_visual instead.',
|
|
37
|
-
],
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
let xml;
|
|
41
|
-
try {
|
|
42
|
-
xml = await driver.dumpXml();
|
|
43
|
-
}
|
|
44
|
-
catch (e) {
|
|
45
|
-
return qaError({
|
|
46
|
-
what: `Could not read the UI tree: ${String(e)}`,
|
|
47
|
-
changedState: false,
|
|
48
|
-
retrySafe: true,
|
|
49
|
-
failureCode: 'SNAPSHOT_FAILED',
|
|
50
|
-
nextSteps: ['Retry on a settled screen.'],
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
const parsed = parseSnapshot(xml, { interactiveOnly: interactiveOnly ?? false });
|
|
54
|
-
session.lastSnapshot = {
|
|
55
|
-
fullByRef: parsed.fullByRef,
|
|
56
|
-
signatures: new Set(parsed.elements.map(signature)),
|
|
57
|
-
allNodes: parsed.allNodes,
|
|
58
|
-
};
|
|
59
|
-
const platform = driver.kind === 'wda' ? 'ios' : driver.kind === 'direct' || driver.kind === 'remote' ? 'android' : 'generic';
|
|
60
|
-
const suggestions = parsed.elements.map((el) => suggestLocator(el, { platform }));
|
|
61
|
-
const readiness = automationReadiness(suggestions, parsed.elements, { platform });
|
|
62
|
-
const issues = locatorReadinessIssues(suggestions, parsed.elements, { platform });
|
|
63
|
-
const tierTally = suggestions.reduce((a, s) => ((a[s.tier] = (a[s.tier] ?? 0) + 1), a), {});
|
|
64
|
-
const summary = `automation readiness: ${readiness.grade} (${readiness.durablePct}% of ${readiness.interactiveCount} interactive controls have a durable ${platform === 'ios' ? 'accessibilityIdentifier' : 'testID/a11y'} handle)\n` +
|
|
65
|
-
`platform: ${platform}\n` +
|
|
66
|
-
`locator tiers: ${Object.entries(tierTally)
|
|
67
|
-
.map(([t, n]) => `${t}=${n}`)
|
|
68
|
-
.join(' ')}\n` +
|
|
69
|
-
(issues.length
|
|
70
|
-
? `issues:\n${issues
|
|
71
|
-
.slice(0, 8)
|
|
72
|
-
.map((i) => ` - ${i.code}: ${i.message}`)
|
|
73
|
-
.join('\n')}\n`
|
|
74
|
-
: '') +
|
|
75
|
-
(readiness.needTestIds.length
|
|
76
|
-
? `needs a testID (${readiness.needTestIds.length}):\n` +
|
|
77
|
-
readiness.needTestIds
|
|
78
|
-
.slice(0, 15)
|
|
79
|
-
.map((n) => ` - ${n.ref} [${n.role}] — ${n.hint}${n.suggestedTestId ? `; suggested ${platform === 'ios' ? 'accessibilityIdentifier' : 'testID'}: ${n.suggestedTestId}` : ''}`)
|
|
80
|
-
.join('\n')
|
|
81
|
-
: 'every interactive control already has a durable locator ✅');
|
|
82
|
-
return qaOk({ platform, readiness, suggestions, tierTally, issues }, summary);
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=locator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"locator.js","sourceRoot":"","sources":["../../src/tools/locator.ts"],"names":[],"mappings":"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"}
|