swipium 1.4.0 → 2.0.0
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 +313 -0
- package/README.md +175 -219
- package/THREAT_MODEL.md +223 -47
- package/dist/appMap/automationLink.js +39 -26
- package/dist/appMap/automationLink.js.map +1 -1
- package/dist/appMap/build.js +68 -20
- package/dist/appMap/build.js.map +1 -1
- package/dist/appMap/codeIndex.js +31 -5
- package/dist/appMap/codeIndex.js.map +1 -1
- package/dist/appMap/featureIndex.js +23 -5
- package/dist/appMap/featureIndex.js.map +1 -1
- package/dist/appMap/featureModel.js +44 -8
- package/dist/appMap/featureModel.js.map +1 -1
- package/dist/appMap/firstRunApply.js +24 -6
- package/dist/appMap/firstRunApply.js.map +1 -1
- package/dist/appMap/fsWalk.js +19 -2
- package/dist/appMap/fsWalk.js.map +1 -1
- package/dist/appMap/issues.js +10 -30
- package/dist/appMap/issues.js.map +1 -1
- package/dist/appMap/migrations.js +6 -6
- 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 +83 -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 +21 -5
- package/dist/appMap/query.js.map +1 -1
- package/dist/appMap/runtimeMerge.js +12 -5
- 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 +6 -2
- package/dist/appMap/screenMatch.js.map +1 -1
- package/dist/appMap/staticScan.js +151 -39
- package/dist/appMap/staticScan.js.map +1 -1
- package/dist/appMap/store.js +58 -85
- package/dist/appMap/store.js.map +1 -1
- package/dist/appMap/tsAstScan.js +34 -12
- package/dist/appMap/tsAstScan.js.map +1 -1
- package/dist/artifacts/bundletool.js +49 -12
- package/dist/artifacts/bundletool.js.map +1 -1
- package/dist/artifacts/resolve.js +41 -14
- package/dist/artifacts/resolve.js.map +1 -1
- package/dist/automation/capabilities.js +112 -30
- package/dist/automation/capabilities.js.map +1 -1
- package/dist/automation/gestures.js +6 -2
- package/dist/automation/gestures.js.map +1 -1
- package/dist/automation/plan.js +71 -23
- package/dist/automation/plan.js.map +1 -1
- package/dist/automation/report.js +15 -5
- package/dist/automation/report.js.map +1 -1
- package/dist/automation/selectors.js +22 -28
- 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 +14 -8
- package/dist/automation/waits.js.map +1 -1
- package/dist/automation/webview.js +9 -3
- package/dist/automation/webview.js.map +1 -1
- package/dist/automationGen/appiumModel.js +16 -8
- package/dist/automationGen/appiumModel.js.map +1 -1
- package/dist/automationGen/ciEmitter.js +6 -6
- 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 +288 -121
- 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 +76 -27
- package/dist/automationGen/projectProfile.js.map +1 -1
- package/dist/automationGen/pythonEmitter.js +278 -107
- 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/automationGen/run.js +388 -0
- package/dist/automationGen/run.js.map +1 -0
- package/dist/automationGen/suitePlan.js +17 -10
- package/dist/automationGen/suitePlan.js.map +1 -1
- package/dist/automationGen/validation.js +52 -12
- package/dist/automationGen/validation.js.map +1 -1
- package/dist/build/parseBuildLog.js +235 -31
- package/dist/build/parseBuildLog.js.map +1 -1
- package/dist/build/plan.js +39 -18
- 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 +36 -15
- package/dist/cli/scan.js.map +1 -1
- package/dist/cli/suite.js +7 -7
- 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 +55 -18
- package/dist/context/detect.js.map +1 -1
- package/dist/context/findApps.js +22 -8
- 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 +10 -8
- package/dist/core/target.js.map +1 -1
- package/dist/core/targetPlan.js +160 -39
- package/dist/core/targetPlan.js.map +1 -1
- package/dist/drivers/DirectDriver.js +317 -43
- package/dist/drivers/DirectDriver.js.map +1 -1
- package/dist/drivers/SimctlDriver.js +124 -8
- package/dist/drivers/SimctlDriver.js.map +1 -1
- package/dist/drivers/WdaDriver.js +365 -55
- package/dist/drivers/WdaDriver.js.map +1 -1
- package/dist/explore/candidates.js +7 -3
- package/dist/explore/candidates.js.map +1 -1
- package/dist/explore/graph.js +15 -6
- package/dist/explore/graph.js.map +1 -1
- package/dist/explore/memory.js +4 -1
- package/dist/explore/memory.js.map +1 -1
- package/dist/explore/planner.js +54 -9
- package/dist/explore/planner.js.map +1 -1
- package/dist/explore/policy.js +11 -6
- package/dist/explore/policy.js.map +1 -1
- package/dist/explore/runner.js +363 -190
- package/dist/explore/runner.js.map +1 -1
- package/dist/explore/signatures.js +4 -2
- package/dist/explore/signatures.js.map +1 -1
- package/dist/explore/suite.js +3 -1
- package/dist/explore/suite.js.map +1 -1
- package/dist/featureTesting/executionBootstrap.js +137 -29
- package/dist/featureTesting/executionBootstrap.js.map +1 -1
- package/dist/featureTesting/featureMap.js +6 -3
- package/dist/featureTesting/featureMap.js.map +1 -1
- package/dist/featureTesting/featureScope.js +101 -20
- package/dist/featureTesting/featureScope.js.map +1 -1
- package/dist/featureTesting/mapFeatureScope.js +44 -15
- package/dist/featureTesting/mapFeatureScope.js.map +1 -1
- package/dist/featureTesting/objectiveModel.js +15 -11
- package/dist/featureTesting/objectiveModel.js.map +1 -1
- package/dist/featureTesting/resultMerge.js +16 -8
- package/dist/featureTesting/resultMerge.js.map +1 -1
- package/dist/featureTesting/sources.js +8 -5
- package/dist/featureTesting/sources.js.map +1 -1
- package/dist/featureTesting/suiteBridge.js +8 -2
- package/dist/featureTesting/suiteBridge.js.map +1 -1
- package/dist/featureTesting/synonyms.js +32 -4
- package/dist/featureTesting/synonyms.js.map +1 -1
- package/dist/featureTesting/testCaseFactory.js +27 -15
- package/dist/featureTesting/testCaseFactory.js.map +1 -1
- package/dist/featureTesting/testPlan.js +34 -12
- 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 +9 -6
- package/dist/firstRun/classifyScreen.js.map +1 -1
- package/dist/firstRun/firstRunPlanner.js +16 -13
- package/dist/firstRun/firstRunPlanner.js.map +1 -1
- package/dist/firstRun/firstRunRunner.js +92 -31
- package/dist/firstRun/firstRunRunner.js.map +1 -1
- package/dist/firstRun/generatedDataPolicy.js +25 -15
- package/dist/firstRun/generatedDataPolicy.js.map +1 -1
- package/dist/firstRun/inputPlanner.js +45 -11
- 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 +72 -9
- 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 +68 -17
- package/dist/flows/generate.js.map +1 -1
- package/dist/flows/lint.js +88 -14
- package/dist/flows/lint.js.map +1 -1
- package/dist/flows/pack.js +21 -5
- 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 +176 -37
- package/dist/flows/repair.js.map +1 -1
- package/dist/flows/run.js +308 -99
- package/dist/flows/run.js.map +1 -1
- package/dist/flows/schema.js +107 -25
- package/dist/flows/schema.js.map +1 -1
- package/dist/flows/seedExec.js +8 -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/ios/signing.js +32 -3
- package/dist/ios/signing.js.map +1 -1
- package/dist/issues/classify.js +28 -20
- package/dist/issues/classify.js.map +1 -1
- package/dist/issues/fingerprint.js +35 -9
- package/dist/issues/fingerprint.js.map +1 -1
- package/dist/issues/index.js +93 -46
- package/dist/issues/index.js.map +1 -1
- package/dist/issues/metrics.js +6 -5
- 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 +12 -8
- package/dist/issues/report.js.map +1 -1
- package/dist/issues/reportBridge.js +40 -9
- 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 +84 -8
- 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 +53 -12
- 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 +12 -3
- package/dist/lib/image.js.map +1 -1
- package/dist/lib/lockfile.js +399 -0
- package/dist/lib/lockfile.js.map +1 -0
- package/dist/lib/needsInput.js +9 -6
- package/dist/lib/needsInput.js.map +1 -1
- package/dist/lib/png.js +4 -3
- 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 +94 -10
- package/dist/lib/result.js.map +1 -1
- package/dist/lib/schemaHash.js +7 -5
- package/dist/lib/schemaHash.js.map +1 -1
- package/dist/lib/sensitive.js +6 -3
- 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 +78 -17
- 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 +321 -25
- package/dist/lib/wda.js.map +1 -1
- package/dist/lib/wdaConfig.js +12 -5
- package/dist/lib/wdaConfig.js.map +1 -1
- package/dist/lib/wdaTune.js +52 -23
- package/dist/lib/wdaTune.js.map +1 -1
- package/dist/mobileAudit/checks.js +150 -28
- 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 +121 -20
- package/dist/mobileAudit/profiles.js.map +1 -1
- package/dist/mobileAudit/results.js +9 -4
- package/dist/mobileAudit/results.js.map +1 -1
- package/dist/mobileAudit/runner.js +214 -35
- 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 +1085 -145
- package/dist/oracle/failures.js.map +1 -1
- package/dist/oracle/health.js +148 -26
- package/dist/oracle/health.js.map +1 -1
- package/dist/oracle/locator.js +148 -19
- 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 +7 -13
- package/dist/orchestration/goal.js.map +1 -1
- package/dist/orchestration/testThis/execute.js +167 -0
- package/dist/orchestration/testThis/execute.js.map +1 -0
- package/dist/orchestration/testThis/pipeline.js +413 -0
- package/dist/orchestration/testThis/pipeline.js.map +1 -0
- package/dist/orchestration/testThis/plan.js +519 -0
- package/dist/orchestration/testThis/plan.js.map +1 -0
- package/dist/orchestration/testThis/sessionIntent.js +72 -0
- package/dist/orchestration/testThis/sessionIntent.js.map +1 -0
- package/dist/orchestration/testThis/terminal.js +136 -0
- package/dist/orchestration/testThis/terminal.js.map +1 -0
- package/dist/orchestration/testThis/types.js +12 -0
- package/dist/orchestration/testThis/types.js.map +1 -0
- package/dist/plan/plan.js +9 -9
- package/dist/plan/plan.js.map +1 -1
- package/dist/prompts/index.js +24 -24
- package/dist/prompts/index.js.map +1 -1
- package/dist/report/coverage.js +0 -1
- package/dist/report/coverage.js.map +1 -1
- package/dist/report/evidence.js.map +1 -1
- package/dist/report/export.js +449 -72
- 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/flake.js +13 -14
- package/dist/report/flake.js.map +1 -1
- package/dist/report/history.js +72 -38
- package/dist/report/history.js.map +1 -1
- package/dist/report/policy.js +18 -7
- package/dist/report/policy.js.map +1 -1
- package/dist/report/qaLevel.js +10 -16
- package/dist/report/qaLevel.js.map +1 -1
- package/dist/report/readiness.js +42 -12
- package/dist/report/readiness.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/timing.js +23 -23
- package/dist/report/timing.js.map +1 -1
- package/dist/report/toolHealth.js +124 -0
- package/dist/report/toolHealth.js.map +1 -0
- package/dist/server.js +501 -69
- 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 +10 -4
- package/dist/services/build.js.map +1 -1
- package/dist/services/flowGenerate.js +75 -0
- package/dist/services/flowGenerate.js.map +1 -0
- package/dist/services/preflight.js +40 -8
- package/dist/services/preflight.js.map +1 -1
- package/dist/services/prepareAndroid.js +92 -18
- package/dist/services/prepareAndroid.js.map +1 -1
- package/dist/services/prepareIos.js +94 -17
- package/dist/services/prepareIos.js.map +1 -1
- package/dist/services/report.js +271 -80
- package/dist/services/report.js.map +1 -1
- package/dist/services/smoke.js +68 -22
- package/dist/services/smoke.js.map +1 -1
- package/dist/services/suiteGenerate.js +43 -6
- package/dist/services/suiteGenerate.js.map +1 -1
- package/dist/services/testSuiteKnowledge.js +78 -33
- package/dist/services/testSuiteKnowledge.js.map +1 -1
- package/dist/session/attach.js +284 -4
- package/dist/session/attach.js.map +1 -1
- package/dist/session/processRegistry.js +433 -0
- package/dist/session/processRegistry.js.map +1 -0
- package/dist/session/progress.js +1 -1
- package/dist/session/progress.js.map +1 -1
- package/dist/session/retention.js +201 -0
- package/dist/session/retention.js.map +1 -0
- package/dist/session/store.js +459 -59
- package/dist/session/store.js.map +1 -1
- package/dist/snapshot/overlays.js +60 -10
- package/dist/snapshot/overlays.js.map +1 -1
- package/dist/snapshot/parse.js +30 -12
- package/dist/snapshot/parse.js.map +1 -1
- package/dist/snapshot/present.js +36 -6
- 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 +82 -11
- package/dist/state/profile.js.map +1 -1
- package/dist/suite/compile.js +15 -6
- package/dist/suite/compile.js.map +1 -1
- package/dist/suite/lint.js +22 -4
- package/dist/suite/lint.js.map +1 -1
- package/dist/suite/pom.js +75 -44
- 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 +15 -11
- package/dist/suite/testcase.js.map +1 -1
- package/dist/testSuite/exporter.js +7 -3
- package/dist/testSuite/exporter.js.map +1 -1
- package/dist/testSuite/generator.js +43 -14
- 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 +13 -7
- package/dist/testSuite/merge.js.map +1 -1
- package/dist/testSuite/schema.js +21 -16
- package/dist/testSuite/schema.js.map +1 -1
- package/dist/testSuite/store.js +12 -4
- 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 +868 -174
- package/dist/tools/act.js.map +1 -1
- package/dist/tools/agent.js +521 -112
- package/dist/tools/agent.js.map +1 -1
- package/dist/tools/appControl.js +82 -19
- package/dist/tools/appControl.js.map +1 -1
- package/dist/tools/appMap.js +393 -189
- package/dist/tools/appMap.js.map +1 -1
- package/dist/tools/build.js +92 -51
- package/dist/tools/build.js.map +1 -1
- package/dist/tools/bundletool.js +141 -40
- package/dist/tools/bundletool.js.map +1 -1
- package/dist/tools/clearOverlay.js +98 -18
- package/dist/tools/clearOverlay.js.map +1 -1
- package/dist/tools/device.js +108 -19
- package/dist/tools/device.js.map +1 -1
- package/dist/tools/doctor.js +98 -35
- package/dist/tools/doctor.js.map +1 -1
- package/dist/tools/explore.js +110 -42
- package/dist/tools/explore.js.map +1 -1
- package/dist/tools/featureTesting.js +152 -130
- package/dist/tools/featureTesting.js.map +1 -1
- package/dist/tools/firstRun.js +94 -66
- package/dist/tools/firstRun.js.map +1 -1
- package/dist/tools/flow.js +347 -132
- package/dist/tools/flow.js.map +1 -1
- package/dist/tools/flowRepair.js +42 -10
- package/dist/tools/flowRepair.js.map +1 -1
- package/dist/tools/generate.js +199 -0
- package/dist/tools/generate.js.map +1 -0
- package/dist/tools/getArtifact.js +37 -8
- package/dist/tools/getArtifact.js.map +1 -1
- package/dist/tools/health.js +17 -12
- package/dist/tools/health.js.map +1 -1
- package/dist/tools/ios.js +148 -194
- package/dist/tools/ios.js.map +1 -1
- package/dist/tools/issues.js +256 -171
- package/dist/tools/issues.js.map +1 -1
- package/dist/tools/jobs.js +55 -11
- package/dist/tools/jobs.js.map +1 -1
- package/dist/tools/metro.js +84 -38
- package/dist/tools/metro.js.map +1 -1
- package/dist/tools/mobileAudit.js +83 -26
- package/dist/tools/mobileAudit.js.map +1 -1
- package/dist/tools/network.js +36 -14
- package/dist/tools/network.js.map +1 -1
- package/dist/tools/note.js +31 -17
- package/dist/tools/note.js.map +1 -1
- package/dist/tools/prepareIosTarget.js +31 -14
- package/dist/tools/prepareIosTarget.js.map +1 -1
- package/dist/tools/prepareTarget.js +193 -47
- package/dist/tools/prepareTarget.js.map +1 -1
- package/dist/tools/report.js +16 -8
- package/dist/tools/report.js.map +1 -1
- package/dist/tools/resolveArtifact.js +12 -12
- package/dist/tools/resolveArtifact.js.map +1 -1
- package/dist/tools/resolveTarget.js +81 -18
- package/dist/tools/resolveTarget.js.map +1 -1
- package/dist/tools/screenRecord.js +85 -20
- package/dist/tools/screenRecord.js.map +1 -1
- package/dist/tools/screenshot.js +42 -18
- package/dist/tools/screenshot.js.map +1 -1
- package/dist/tools/smoke.js +29 -12
- package/dist/tools/smoke.js.map +1 -1
- package/dist/tools/snapshot.js +157 -107
- package/dist/tools/snapshot.js.map +1 -1
- package/dist/tools/startSession.js +117 -84
- package/dist/tools/startSession.js.map +1 -1
- package/dist/tools/suite.js +391 -310
- package/dist/tools/suite.js.map +1 -1
- package/dist/tools/testSuite.js +112 -36
- package/dist/tools/testSuite.js.map +1 -1
- package/dist/tools/testThis.js +35 -802
- package/dist/tools/testThis.js.map +1 -1
- package/dist/tools/visual.js +698 -116
- package/dist/tools/visual.js.map +1 -1
- package/dist/tools/wait.js +9 -23
- package/dist/tools/wait.js.map +1 -1
- package/dist/tools/wda.js +312 -54
- package/dist/tools/wda.js.map +1 -1
- package/dist/version.js +37 -64
- package/dist/version.js.map +1 -1
- package/dist/visual/ocr.js +65 -8
- package/dist/visual/ocr.js.map +1 -1
- package/dist/visual/provider.js +87 -15
- 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 +210 -104
- package/docs/physical-devices.md +84 -0
- package/docs/tools.md +808 -217
- package/package.json +16 -6
- package/dist/appMap/diff.js +0 -60
- package/dist/appMap/diff.js.map +0 -1
- package/dist/automation/maestroIr.js +0 -282
- package/dist/automation/maestroIr.js.map +0 -1
- package/dist/interop/maestro.js +0 -151
- package/dist/interop/maestro.js.map +0 -1
- package/dist/tools/assertVisual.js +0 -74
- package/dist/tools/assertVisual.js.map +0 -1
- package/dist/tools/automationGenerate.js +0 -394
- package/dist/tools/automationGenerate.js.map +0 -1
- package/dist/tools/capabilities.js +0 -209
- 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 +0 -55
- package/dist/tools/flowGenerate.js.map +0 -1
- package/dist/tools/history.js +0 -56
- package/dist/tools/history.js.map +0 -1
- package/dist/tools/idling.js +0 -104
- package/dist/tools/idling.js.map +0 -1
- package/dist/tools/inputCapabilities.js +0 -30
- package/dist/tools/inputCapabilities.js.map +0 -1
- package/dist/tools/locator.js +0 -57
- package/dist/tools/locator.js.map +0 -1
- package/dist/tools/maestro.js +0 -78
- package/dist/tools/maestro.js.map +0 -1
- package/dist/tools/permissions.js +0 -149
- package/dist/tools/permissions.js.map +0 -1
- package/dist/tools/plan.js +0 -49
- package/dist/tools/plan.js.map +0 -1
- package/dist/tools/screenInfo.js +0 -70
- package/dist/tools/screenInfo.js.map +0 -1
- package/dist/tools/seed.js +0 -101
- package/dist/tools/seed.js.map +0 -1
- package/dist/tools/state.js +0 -170
- package/dist/tools/state.js.map +0 -1
- package/dist/tools/visualText.js +0 -61
- package/dist/tools/visualText.js.map +0 -1
package/dist/tools/ios.js
CHANGED
|
@@ -1,21 +1,30 @@
|
|
|
1
|
-
// qa_ios
|
|
2
|
-
// installs a .app, launches/terminates, opens deep links, resets privacy, erases
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
1
|
+
// qa_ios: iOS Simulator control via simctl. Boots/selects a simulator,
|
|
2
|
+
// installs a .app, launches/terminates, opens deep links, resets privacy, and erases. Booting/
|
|
3
|
+
// launching binds a SimctlDriver into the session so the shared visual tools (qa_screenshot,
|
|
4
|
+
// qa_visual, qa_report) work on iOS unchanged. Screenshots go through qa_screenshot (secure-field
|
|
5
|
+
// guard + budget) and WebDriverAgent through qa_wda. qa_ios no longer duplicates either.
|
|
6
6
|
import { z } from 'zod';
|
|
7
7
|
import { existsSync } from 'node:fs';
|
|
8
8
|
import { isAbsolute, join } from 'node:path';
|
|
9
|
-
import { qaOk, qaError } from '../lib/result.js';
|
|
9
|
+
import { qaOk, qaError, unknownSessionError } from '../lib/result.js';
|
|
10
10
|
import { requireConsent, consumeConsent } from '../consent/consent.js';
|
|
11
11
|
import { sensitiveRefusal } from '../lib/sensitive.js';
|
|
12
|
-
import { captureCoordinateSpace } from '../lib/coordSpace.js';
|
|
13
12
|
import { SimctlDriver } from '../drivers/SimctlDriver.js';
|
|
14
|
-
import { WdaDriver } from '../drivers/WdaDriver.js';
|
|
15
|
-
import { checkWda, classifyWdaConnectionFailure, createWdaSession, wdaSessionUdidMismatch } from '../lib/wda.js';
|
|
16
|
-
import { loadWdaConfig, wdaUrlAllowedByConfig } from '../lib/wdaConfig.js';
|
|
17
|
-
import { recordWdaTiming } from '../lib/wdaTune.js';
|
|
18
13
|
import * as sim from '../lib/simctl.js';
|
|
14
|
+
import { WdaDriver, invalidateWdaPageSource } from '../drivers/WdaDriver.js';
|
|
15
|
+
import { isSimulatorUdid } from '../session/attach.js';
|
|
16
|
+
/** The simulator UDID this session drives, whatever the iOS backend (SimctlDriver, or WdaDriver
|
|
17
|
+
* after qa_wda attach): session.device, else the driver's own device. Undefined when nothing is
|
|
18
|
+
* bound, or the bound device is not a simulator (an adb serial / a physical iOS device; simctl
|
|
19
|
+
* cannot drive either). Exported for tests. */
|
|
20
|
+
export function boundSimulatorUdid(session) {
|
|
21
|
+
const driver = session.driver;
|
|
22
|
+
const iosDriver = driver instanceof SimctlDriver || driver instanceof WdaDriver;
|
|
23
|
+
const udid = session.device ?? (iosDriver ? driver.currentDevice() : undefined);
|
|
24
|
+
if (!udid)
|
|
25
|
+
return undefined;
|
|
26
|
+
return isSimulatorUdid(udid) ? udid : undefined;
|
|
27
|
+
}
|
|
19
28
|
/** Ensure a SimctlDriver is bound for `udid` and recorded on the session. */
|
|
20
29
|
function bind(sessions, session, udid) {
|
|
21
30
|
const driver = session.driver instanceof SimctlDriver ? session.driver : new SimctlDriver(udid);
|
|
@@ -25,28 +34,19 @@ function bind(sessions, session, udid) {
|
|
|
25
34
|
sessions.persist(session);
|
|
26
35
|
return driver;
|
|
27
36
|
}
|
|
28
|
-
function isLoopback(raw) {
|
|
29
|
-
try {
|
|
30
|
-
const u = new URL(raw);
|
|
31
|
-
return u.protocol === 'http:' && ['127.0.0.1', 'localhost', '::1'].includes(u.hostname);
|
|
32
|
-
}
|
|
33
|
-
catch {
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
37
|
export function registerIos(server, sessions) {
|
|
38
38
|
server.registerTool('qa_ios', {
|
|
39
39
|
title: 'iOS simulator control',
|
|
40
|
-
description: 'Control an iOS Simulator (macOS only)
|
|
40
|
+
description: 'Control an iOS Simulator (macOS only). actions: list, boot (binds it to the session), install (.app, consent-gated), launch, ' +
|
|
41
|
+
'terminate, openurl (deep link), logs, privacy_reset (consent-gated), erase (consent-gated, wipes the simulator). Screenshots: ' +
|
|
42
|
+
'qa_screenshot; WebDriverAgent (structured tap/type/snapshot): qa_wda.',
|
|
41
43
|
inputSchema: {
|
|
42
44
|
sessionId: z.string(),
|
|
43
|
-
action: z.enum(['list', 'boot', 'install', 'launch', 'terminate', 'openurl', '
|
|
44
|
-
device: z.string().optional().describe('Simulator udid or name substring (for boot/erase)
|
|
45
|
+
action: z.enum(['list', 'boot', 'install', 'launch', 'terminate', 'openurl', 'logs', 'privacy_reset', 'erase']),
|
|
46
|
+
device: z.string().optional().describe('Simulator udid or name substring (for boot/erase).'),
|
|
45
47
|
app: z.string().optional().describe('Path to a .app bundle (for install); absolute or relative to the project root.'),
|
|
46
|
-
bundleId: z.string().optional().describe('App bundle id (for launch/terminate/privacy_reset
|
|
48
|
+
bundleId: z.string().optional().describe('App bundle id (for launch/terminate/privacy_reset).'),
|
|
47
49
|
url: z.string().optional().describe('Deep link (for openurl).'),
|
|
48
|
-
webDriverAgentUrl: z.string().optional().describe('External WebDriverAgent base URL for wda_status/wda_attach. Defaults to http://127.0.0.1:8100.'),
|
|
49
|
-
allowNonLoopback: z.boolean().optional().describe('Required to use a non-loopback WDA URL.'),
|
|
50
50
|
last: z.string().optional().describe('Time range for logs, e.g. 5m, 30m, 1h. Defaults to 5m.'),
|
|
51
51
|
service: z.string().optional().describe('Privacy service for privacy_reset (e.g. location, photos, camera, all).'),
|
|
52
52
|
consentId: z.string().optional(),
|
|
@@ -56,137 +56,7 @@ export function registerIos(server, sessions) {
|
|
|
56
56
|
const { sessionId, action } = args;
|
|
57
57
|
const session = sessions.get(sessionId);
|
|
58
58
|
if (!session) {
|
|
59
|
-
return
|
|
60
|
-
}
|
|
61
|
-
if (action === 'wda_status' || action === 'wda_attach') {
|
|
62
|
-
const wdaConfig = loadWdaConfig(session.root);
|
|
63
|
-
const url = (args.webDriverAgentUrl ?? wdaConfig.url).replace(/\/+$/, '');
|
|
64
|
-
const loopback = isLoopback(url);
|
|
65
|
-
const configAllowed = !loopback && wdaUrlAllowedByConfig(wdaConfig, url);
|
|
66
|
-
if (!loopback && !args.allowNonLoopback && !configAllowed) {
|
|
67
|
-
return qaError({
|
|
68
|
-
what: 'Refused non-loopback WDA URL',
|
|
69
|
-
changedState: false,
|
|
70
|
-
retrySafe: false,
|
|
71
|
-
failureCode: 'DESTRUCTIVE_REFUSED',
|
|
72
|
-
nextSteps: ['Use a localhost WDA URL, pass allowNonLoopback with explicit consent, or add this exact URL to ios.wda.allowNonLoopbackUrls for a trusted isolated automation network.'],
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
if (!loopback && !configAllowed) {
|
|
76
|
-
const gate = consumeConsent(args.consentId, args.approve, { action: 'wda_non_loopback', affects: { url } });
|
|
77
|
-
if (!gate.approved) {
|
|
78
|
-
return requireConsent({
|
|
79
|
-
action: 'wda_non_loopback',
|
|
80
|
-
risk: 'medium',
|
|
81
|
-
affects: { url },
|
|
82
|
-
explain: `Use non-loopback WebDriverAgent URL ${url}? WDA is an automation server; only approve this on a trusted, isolated network.`,
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
const status = await checkWda(url);
|
|
87
|
-
const targetUdid = args.device ?? session.device;
|
|
88
|
-
const base = {
|
|
89
|
-
webDriverAgentUrl: url,
|
|
90
|
-
wda: status,
|
|
91
|
-
device: targetUdid ?? null,
|
|
92
|
-
sessionActive: session.driver instanceof WdaDriver,
|
|
93
|
-
driverKind: session.driver?.kind ?? null,
|
|
94
|
-
};
|
|
95
|
-
if (action === 'wda_status') {
|
|
96
|
-
return qaOk(base, `iOS WDA status: ${status.reachable ? 'reachable' : 'unreachable'} at ${url}${targetUdid ? ` device=${targetUdid}` : ''}`);
|
|
97
|
-
}
|
|
98
|
-
if (!targetUdid) {
|
|
99
|
-
return qaError({
|
|
100
|
-
what: 'Refused ambiguous WDA attach without a device UDID',
|
|
101
|
-
changedState: false,
|
|
102
|
-
retrySafe: true,
|
|
103
|
-
failureCode: 'MULTIPLE_DEVICES',
|
|
104
|
-
nextSteps: ['Pass device with the simulator/device UDID, or bind the session to a simulator first.'],
|
|
105
|
-
}, base);
|
|
106
|
-
}
|
|
107
|
-
if (session.device && session.device !== targetUdid) {
|
|
108
|
-
return qaError({
|
|
109
|
-
what: `Refused ambiguous WDA/device mapping: session is bound to ${session.device}, but qa_ios wda_attach was asked to use ${targetUdid}`,
|
|
110
|
-
changedState: false,
|
|
111
|
-
retrySafe: false,
|
|
112
|
-
failureCode: 'STALE_WDA_DEVICE',
|
|
113
|
-
nextSteps: ['Use the session-bound device, or start a new session for the other WDA/device pair.'],
|
|
114
|
-
}, base);
|
|
115
|
-
}
|
|
116
|
-
if (!status.reachable) {
|
|
117
|
-
return qaError({
|
|
118
|
-
what: `WDA server unavailable at ${url}`,
|
|
119
|
-
changedState: false,
|
|
120
|
-
retrySafe: true,
|
|
121
|
-
failureCode: classifyWdaConnectionFailure(status.error ?? 'unreachable'),
|
|
122
|
-
nextSteps: ['Start WebDriverAgent externally, confirm /status responds, then retry qa_ios wda_attach.'],
|
|
123
|
-
}, base);
|
|
124
|
-
}
|
|
125
|
-
try {
|
|
126
|
-
const bundleId = args.bundleId ?? session.appId ?? undefined;
|
|
127
|
-
const sessionOptions = { bundleId, udid: targetUdid, capabilities: wdaConfig.capabilities, settings: wdaConfig.settings };
|
|
128
|
-
const createStarted = Date.now();
|
|
129
|
-
let created;
|
|
130
|
-
try {
|
|
131
|
-
created = await createWdaSession(url, sessionOptions);
|
|
132
|
-
}
|
|
133
|
-
finally {
|
|
134
|
-
recordWdaTiming(session, 'session_create', Date.now() - createStarted, sessions);
|
|
135
|
-
}
|
|
136
|
-
const mismatchedUdid = wdaSessionUdidMismatch(created.capabilities, targetUdid);
|
|
137
|
-
if (mismatchedUdid) {
|
|
138
|
-
sessions.recordMutation(session, {
|
|
139
|
-
tool: 'qa_ios',
|
|
140
|
-
action: 'wda_attach',
|
|
141
|
-
risk: 'medium',
|
|
142
|
-
target: { webDriverAgentUrl: url, device: targetUdid, bundleId: bundleId ?? null, reportedDevice: mismatchedUdid },
|
|
143
|
-
consent: { required: !loopback && !configAllowed, approved: !!configAllowed || loopback || !!args.approve },
|
|
144
|
-
status: 'blocked',
|
|
145
|
-
detail: 'WDA reported a different device',
|
|
146
|
-
});
|
|
147
|
-
return qaError({
|
|
148
|
-
what: `Refused stale WDA session: WDA reported device ${mismatchedUdid}, but qa_ios wda_attach requested ${targetUdid}`,
|
|
149
|
-
changedState: false,
|
|
150
|
-
retrySafe: false,
|
|
151
|
-
failureCode: 'STALE_WDA_DEVICE',
|
|
152
|
-
nextSteps: ['Stop the stale WDA process or start a new WDA session for the intended UDID.'],
|
|
153
|
-
}, { ...base, capabilities: created.capabilities ?? null, wdaSessionId: created.sessionId });
|
|
154
|
-
}
|
|
155
|
-
session.driver = new WdaDriver(url, { ...sessionOptions, sessionId: created.sessionId, onTiming: (kind, ms) => recordWdaTiming(session, kind, ms, sessions) });
|
|
156
|
-
session.device = targetUdid;
|
|
157
|
-
if (bundleId)
|
|
158
|
-
session.appId = bundleId;
|
|
159
|
-
sessions.persist(session);
|
|
160
|
-
sessions.addEnvChange(session, `ios wda attach ${url} ${targetUdid}`);
|
|
161
|
-
sessions.recordMutation(session, {
|
|
162
|
-
tool: 'qa_ios',
|
|
163
|
-
action: 'wda_attach',
|
|
164
|
-
risk: 'medium',
|
|
165
|
-
target: { webDriverAgentUrl: url, device: targetUdid, bundleId: bundleId ?? null, wdaSessionId: created.sessionId, capabilities: created.capabilities ?? null },
|
|
166
|
-
consent: { required: !loopback && !configAllowed, consentId: args.consentId, approved: true },
|
|
167
|
-
status: 'executed',
|
|
168
|
-
});
|
|
169
|
-
return qaOk({ ...base, sessionActive: true, wdaSessionId: created.sessionId, capabilities: created.capabilities ?? null }, `attached WDA structured iOS backend at ${url}\nNext: qa_snapshot / qa_act / qa_flow_run can use WDA-backed structured operations.`);
|
|
170
|
-
}
|
|
171
|
-
catch (e) {
|
|
172
|
-
const failureCode = classifyWdaConnectionFailure(String(e.message ?? e));
|
|
173
|
-
sessions.recordMutation(session, {
|
|
174
|
-
tool: 'qa_ios',
|
|
175
|
-
action: 'wda_attach',
|
|
176
|
-
risk: 'medium',
|
|
177
|
-
target: { webDriverAgentUrl: url, device: targetUdid, bundleId: args.bundleId ?? session.appId ?? null },
|
|
178
|
-
consent: { required: !loopback && !configAllowed, consentId: args.consentId, approved: !!configAllowed || loopback || !!args.approve },
|
|
179
|
-
status: 'blocked',
|
|
180
|
-
detail: String(e.message ?? e),
|
|
181
|
-
});
|
|
182
|
-
return qaError({
|
|
183
|
-
what: `WDA session creation failed: ${String(e.message ?? e)}`,
|
|
184
|
-
changedState: false,
|
|
185
|
-
retrySafe: true,
|
|
186
|
-
failureCode,
|
|
187
|
-
nextSteps: ['Confirm WDA is paired with the intended simulator/device and that the app bundle id is installed.'],
|
|
188
|
-
}, base);
|
|
189
|
-
}
|
|
59
|
+
return unknownSessionError(sessionId);
|
|
190
60
|
}
|
|
191
61
|
if (!(await sim.simctlAvailable())) {
|
|
192
62
|
return qaError({
|
|
@@ -194,14 +64,20 @@ export function registerIos(server, sessions) {
|
|
|
194
64
|
changedState: false,
|
|
195
65
|
retrySafe: false,
|
|
196
66
|
failureCode: 'BACKEND_UNSUPPORTED',
|
|
197
|
-
nextSteps: [
|
|
67
|
+
nextSteps: [
|
|
68
|
+
'iOS support needs a macOS host with the `xcrun simctl` command-line tools. On Linux/Windows use the Android backend.',
|
|
69
|
+
],
|
|
198
70
|
});
|
|
199
71
|
}
|
|
200
72
|
// ---- read-only ----
|
|
201
73
|
if (action === 'list') {
|
|
202
74
|
const sims = await sim.listSimulators();
|
|
203
75
|
const booted = sims.filter((s) => s.state === 'Booted');
|
|
204
|
-
return qaOk({ simulators: sims, bootedCount: booted.length }, `${sims.length} available simulators (${booted.length} booted):\n` +
|
|
76
|
+
return qaOk({ simulators: sims, bootedCount: booted.length }, `${sims.length} available simulators (${booted.length} booted):\n` +
|
|
77
|
+
sims
|
|
78
|
+
.slice(0, 25)
|
|
79
|
+
.map((s) => ` ${s.state === 'Booted' ? '▶' : '·'} ${s.name} [${s.runtime}] ${s.udid}`)
|
|
80
|
+
.join('\n'));
|
|
205
81
|
}
|
|
206
82
|
const need = (v, what) => v ? null : qaError({ what: `${action} requires ${what}`, changedState: false, retrySafe: true, nextSteps: [`Pass ${what}.`] });
|
|
207
83
|
if (action === 'boot') {
|
|
@@ -210,16 +86,31 @@ export function registerIos(server, sessions) {
|
|
|
210
86
|
sims.find((s) => s.state === 'Booted') ||
|
|
211
87
|
sims.find((s) => /iphone/i.test(s.name));
|
|
212
88
|
if (!pick)
|
|
213
|
-
return qaError({
|
|
89
|
+
return qaError({
|
|
90
|
+
what: 'No matching simulator',
|
|
91
|
+
changedState: false,
|
|
92
|
+
retrySafe: true,
|
|
93
|
+
failureCode: 'SIMULATOR_RUNTIME_MISSING',
|
|
94
|
+
nextSteps: ['qa_ios { action: "list" } to see available simulators, or install an iOS simulator runtime in Xcode.'],
|
|
95
|
+
});
|
|
214
96
|
try {
|
|
215
97
|
sessions.milestone(session, 'simulator_boot_start');
|
|
98
|
+
invalidateWdaPageSource(pick.udid); // the screen changes outside WDA: drop cached page sources
|
|
216
99
|
await sim.boot(pick.udid);
|
|
217
100
|
sessions.milestone(session, 'simulator_boot_end');
|
|
218
101
|
}
|
|
219
102
|
catch (e) {
|
|
220
103
|
const msg = String(e);
|
|
221
104
|
const failureCode = /timed out|timeout/i.test(msg) ? 'SIMULATOR_BOOT_TIMEOUT' : 'SIMULATOR_BOOT_FAILED';
|
|
222
|
-
return qaError({
|
|
105
|
+
return qaError({
|
|
106
|
+
what: `Boot failed: ${msg}`,
|
|
107
|
+
changedState: false,
|
|
108
|
+
retrySafe: true,
|
|
109
|
+
failureCode,
|
|
110
|
+
nextSteps: [
|
|
111
|
+
'Try another simulator from qa_ios list, erase the simulator if policy allows it, or boot a known-good simulator from Xcode.',
|
|
112
|
+
],
|
|
113
|
+
});
|
|
223
114
|
}
|
|
224
115
|
bind(sessions, session, pick.udid);
|
|
225
116
|
sessions.addEnvChange(session, `ios boot ${pick.name} (${pick.udid})`);
|
|
@@ -231,12 +122,20 @@ export function registerIos(server, sessions) {
|
|
|
231
122
|
consent: { required: false, approved: true },
|
|
232
123
|
status: 'executed',
|
|
233
124
|
});
|
|
234
|
-
return qaOk({ udid: pick.udid, name: pick.name, runtime: pick.runtime, bound: true }, `booted + bound ${pick.name} [${pick.runtime}]\nNext: qa_ios install/launch, then qa_screenshot /
|
|
125
|
+
return qaOk({ udid: pick.udid, name: pick.name, runtime: pick.runtime, bound: true }, `booted + bound ${pick.name} [${pick.runtime}]\nNext: qa_ios install/launch, then qa_screenshot / qa_visual.`);
|
|
235
126
|
}
|
|
236
127
|
// everything below needs a bound simulator
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
128
|
+
// Any iOS backend works here: simctl drives the SIMULATOR, not the automation backend, so a
|
|
129
|
+
// session attached to WebDriverAgent (qa_wda attach) keeps launch/terminate/openurl/…
|
|
130
|
+
const udid = boundSimulatorUdid(session);
|
|
131
|
+
if (!udid) {
|
|
132
|
+
return qaError({
|
|
133
|
+
what: 'No simulator bound to this session',
|
|
134
|
+
changedState: false,
|
|
135
|
+
retrySafe: true,
|
|
136
|
+
failureCode: 'NO_DEVICE',
|
|
137
|
+
nextSteps: ['Call qa_ios { action: "boot" } first.'],
|
|
138
|
+
});
|
|
240
139
|
}
|
|
241
140
|
if (action === 'install') {
|
|
242
141
|
const e = need(args.app, 'app (a .app path)');
|
|
@@ -244,7 +143,12 @@ export function registerIos(server, sessions) {
|
|
|
244
143
|
return e;
|
|
245
144
|
const appPath = isAbsolute(args.app) ? args.app : join(session.root, args.app);
|
|
246
145
|
if (!existsSync(appPath))
|
|
247
|
-
return qaError({
|
|
146
|
+
return qaError({
|
|
147
|
+
what: `.app not found: ${appPath}`,
|
|
148
|
+
changedState: false,
|
|
149
|
+
retrySafe: true,
|
|
150
|
+
nextSteps: ['Provide an existing .app bundle path.'],
|
|
151
|
+
});
|
|
248
152
|
const gate = consumeConsent(args.consentId, args.approve, { action: 'install_app', affects: { appPath } });
|
|
249
153
|
if (!gate.approved) {
|
|
250
154
|
sessions.recordMutation(session, {
|
|
@@ -255,7 +159,13 @@ export function registerIos(server, sessions) {
|
|
|
255
159
|
consent: { required: true, approved: false },
|
|
256
160
|
status: 'requested',
|
|
257
161
|
});
|
|
258
|
-
return requireConsent({
|
|
162
|
+
return requireConsent({
|
|
163
|
+
action: 'install_app',
|
|
164
|
+
risk: 'medium',
|
|
165
|
+
exactCommand: `xcrun simctl install ${udid} ${appPath}`,
|
|
166
|
+
affects: { appPath },
|
|
167
|
+
explain: `Install ${appPath} onto the simulator? It runs third-party app code.`,
|
|
168
|
+
});
|
|
259
169
|
}
|
|
260
170
|
sessions.recordMutation(session, {
|
|
261
171
|
tool: 'qa_ios',
|
|
@@ -267,6 +177,7 @@ export function registerIos(server, sessions) {
|
|
|
267
177
|
});
|
|
268
178
|
try {
|
|
269
179
|
sessions.milestone(session, 'app_install_start');
|
|
180
|
+
invalidateWdaPageSource(udid); // the screen changes outside WDA: drop cached page sources
|
|
270
181
|
await sim.installApp(udid, appPath);
|
|
271
182
|
sessions.milestone(session, 'app_install_end');
|
|
272
183
|
}
|
|
@@ -281,7 +192,17 @@ export function registerIos(server, sessions) {
|
|
|
281
192
|
status: 'blocked',
|
|
282
193
|
detail: `${failureCode}: ${String(err)}`,
|
|
283
194
|
});
|
|
284
|
-
return qaError({
|
|
195
|
+
return qaError({
|
|
196
|
+
what: `Install failed: ${String(err)}`,
|
|
197
|
+
changedState: false,
|
|
198
|
+
retrySafe: true,
|
|
199
|
+
failureCode,
|
|
200
|
+
nextSteps: [
|
|
201
|
+
failureCode === 'WRONG_ARCH'
|
|
202
|
+
? 'Rebuild the .app for the iOS Simulator SDK, not a physical device SDK.'
|
|
203
|
+
: 'Confirm the .app is valid, signed as needed, and built for a simulator (not a device) SDK.',
|
|
204
|
+
],
|
|
205
|
+
});
|
|
285
206
|
}
|
|
286
207
|
const bundleId = await sim.bundleIdFromApp(appPath);
|
|
287
208
|
if (bundleId)
|
|
@@ -304,11 +225,19 @@ export function registerIos(server, sessions) {
|
|
|
304
225
|
return e;
|
|
305
226
|
try {
|
|
306
227
|
sessions.milestone(session, 'app_launch_start');
|
|
228
|
+
invalidateWdaPageSource(udid); // the screen changes outside WDA: drop cached page sources
|
|
307
229
|
await sim.launchApp(udid, bundleId);
|
|
230
|
+
invalidateWdaPageSource(udid); // …and anything a concurrent read cached mid-launch
|
|
308
231
|
sessions.milestone(session, 'app_launch_end');
|
|
309
232
|
}
|
|
310
233
|
catch (err) {
|
|
311
|
-
return qaError({
|
|
234
|
+
return qaError({
|
|
235
|
+
what: `Launch failed: ${String(err)}`,
|
|
236
|
+
changedState: false,
|
|
237
|
+
retrySafe: true,
|
|
238
|
+
failureCode: 'BUNDLE_ID_NOT_FOUND',
|
|
239
|
+
nextSteps: ['Confirm the app is installed (qa_ios install) and that bundleId is correct.'],
|
|
240
|
+
});
|
|
312
241
|
}
|
|
313
242
|
session.appId = bundleId;
|
|
314
243
|
sessions.persist(session);
|
|
@@ -320,14 +249,16 @@ export function registerIos(server, sessions) {
|
|
|
320
249
|
consent: { required: false, approved: true },
|
|
321
250
|
status: 'executed',
|
|
322
251
|
});
|
|
323
|
-
return qaOk({ launched: true, bundleId }, `launched ${bundleId}. Use qa_screenshot /
|
|
252
|
+
return qaOk({ launched: true, bundleId }, `launched ${bundleId}. Use qa_screenshot / qa_visual to verify.`);
|
|
324
253
|
}
|
|
325
254
|
if (action === 'terminate') {
|
|
326
255
|
const bundleId = args.bundleId ?? session.appId;
|
|
327
256
|
const e = need(bundleId ?? undefined, 'bundleId');
|
|
328
257
|
if (e)
|
|
329
258
|
return e;
|
|
259
|
+
invalidateWdaPageSource(udid); // the screen changes outside WDA: drop cached page sources
|
|
330
260
|
await sim.terminateApp(udid, bundleId);
|
|
261
|
+
invalidateWdaPageSource(udid);
|
|
331
262
|
sessions.recordMutation(session, {
|
|
332
263
|
tool: 'qa_ios',
|
|
333
264
|
action: 'ios_terminate',
|
|
@@ -343,10 +274,16 @@ export function registerIos(server, sessions) {
|
|
|
343
274
|
if (e)
|
|
344
275
|
return e;
|
|
345
276
|
try {
|
|
277
|
+
invalidateWdaPageSource(udid); // the screen changes outside WDA: drop cached page sources
|
|
346
278
|
await sim.openUrl(udid, args.url);
|
|
347
279
|
}
|
|
348
280
|
catch (err) {
|
|
349
|
-
return qaError({
|
|
281
|
+
return qaError({
|
|
282
|
+
what: `openurl failed: ${String(err)}`,
|
|
283
|
+
changedState: false,
|
|
284
|
+
retrySafe: true,
|
|
285
|
+
nextSteps: ['Check the deep-link scheme is registered by an installed app.'],
|
|
286
|
+
});
|
|
350
287
|
}
|
|
351
288
|
sessions.addEnvChange(session, `ios openurl ${args.url}`);
|
|
352
289
|
sessions.recordMutation(session, {
|
|
@@ -359,21 +296,6 @@ export function registerIos(server, sessions) {
|
|
|
359
296
|
});
|
|
360
297
|
return qaOk({ opened: args.url }, `opened deep link ${args.url}`);
|
|
361
298
|
}
|
|
362
|
-
if (action === 'screenshot') {
|
|
363
|
-
if (session.sensitive)
|
|
364
|
-
return sensitiveRefusal('Screenshot');
|
|
365
|
-
try {
|
|
366
|
-
const png = await sim.screenshot(udid);
|
|
367
|
-
const n = ++session.screenshotCount;
|
|
368
|
-
const uri = sessions.saveArtifact(session, 'screenshot', `ios-${n}.png`, png, 'image/png', 'iOS simulator screenshot');
|
|
369
|
-
sessions.bump(session, 'screenshots');
|
|
370
|
-
const coordinateSpace = await captureCoordinateSpace(session.driver, png);
|
|
371
|
-
return qaOk({ uri, bytes: png.length, coordinateSpace }, `screenshot → ${uri} (${coordinateSpace.screenshot?.width}x${coordinateSpace.screenshot?.height})`);
|
|
372
|
-
}
|
|
373
|
-
catch (err) {
|
|
374
|
-
return qaError({ what: `Screenshot failed: ${String(err)}`, changedState: false, retrySafe: true, nextSteps: ['Confirm the simulator is booted (qa_ios list).'] });
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
299
|
if (action === 'logs') {
|
|
378
300
|
if (session.sensitive)
|
|
379
301
|
return sensitiveRefusal('iOS simulator logs');
|
|
@@ -381,10 +303,15 @@ export function registerIos(server, sessions) {
|
|
|
381
303
|
try {
|
|
382
304
|
const text = await sim.simulatorLogs(udid, { last: args.last, bundleId });
|
|
383
305
|
const uri = sessions.saveArtifact(session, 'logs', `ios-simulator-${Date.now()}.log`, text.slice(-120_000), 'text/plain', `iOS simulator logs${bundleId ? ` for ${bundleId}` : ''}`);
|
|
384
|
-
return qaOk({ uri, bytes: text.length, last: args.last ?? '5m', bundleId: bundleId ?? null }, `captured iOS simulator logs
|
|
306
|
+
return qaOk({ uri, bytes: text.length, last: args.last ?? '5m', bundleId: bundleId ?? null }, `captured iOS simulator logs > ${uri}`);
|
|
385
307
|
}
|
|
386
308
|
catch (err) {
|
|
387
|
-
return qaError({
|
|
309
|
+
return qaError({
|
|
310
|
+
what: `log capture failed: ${String(err)}`,
|
|
311
|
+
changedState: false,
|
|
312
|
+
retrySafe: true,
|
|
313
|
+
nextSteps: ['Confirm the simulator is booted and try a shorter last range such as last:"1m".'],
|
|
314
|
+
});
|
|
388
315
|
}
|
|
389
316
|
}
|
|
390
317
|
if (action === 'privacy_reset') {
|
|
@@ -392,7 +319,10 @@ export function registerIos(server, sessions) {
|
|
|
392
319
|
if (e)
|
|
393
320
|
return e;
|
|
394
321
|
const bundleId = args.bundleId ?? session.appId ?? undefined;
|
|
395
|
-
const gate = consumeConsent(args.consentId, args.approve, {
|
|
322
|
+
const gate = consumeConsent(args.consentId, args.approve, {
|
|
323
|
+
action: 'privacy_reset',
|
|
324
|
+
affects: { service: args.service, bundleId },
|
|
325
|
+
});
|
|
396
326
|
if (!gate.approved) {
|
|
397
327
|
sessions.recordMutation(session, {
|
|
398
328
|
tool: 'qa_ios',
|
|
@@ -402,7 +332,13 @@ export function registerIos(server, sessions) {
|
|
|
402
332
|
consent: { required: true, approved: false },
|
|
403
333
|
status: 'requested',
|
|
404
334
|
});
|
|
405
|
-
return requireConsent({
|
|
335
|
+
return requireConsent({
|
|
336
|
+
action: 'privacy_reset',
|
|
337
|
+
risk: 'low',
|
|
338
|
+
exactCommand: `xcrun simctl privacy ${udid} reset ${args.service}${bundleId ? ` ${bundleId}` : ''}`,
|
|
339
|
+
affects: { service: args.service, bundleId },
|
|
340
|
+
explain: `Reset the "${args.service}" privacy permission${bundleId ? ` for ${bundleId}` : ''} on the simulator?`,
|
|
341
|
+
});
|
|
406
342
|
}
|
|
407
343
|
sessions.recordMutation(session, {
|
|
408
344
|
tool: 'qa_ios',
|
|
@@ -413,6 +349,7 @@ export function registerIos(server, sessions) {
|
|
|
413
349
|
status: 'approved',
|
|
414
350
|
});
|
|
415
351
|
try {
|
|
352
|
+
invalidateWdaPageSource(udid); // the screen changes outside WDA: drop cached page sources
|
|
416
353
|
await sim.privacyReset(udid, args.service, bundleId);
|
|
417
354
|
}
|
|
418
355
|
catch (err) {
|
|
@@ -425,7 +362,12 @@ export function registerIos(server, sessions) {
|
|
|
425
362
|
status: 'blocked',
|
|
426
363
|
detail: String(err),
|
|
427
364
|
});
|
|
428
|
-
return qaError({
|
|
365
|
+
return qaError({
|
|
366
|
+
what: `privacy reset failed: ${String(err)}`,
|
|
367
|
+
changedState: false,
|
|
368
|
+
retrySafe: true,
|
|
369
|
+
nextSteps: ['Check the service name (location/photos/camera/contacts/all).'],
|
|
370
|
+
});
|
|
429
371
|
}
|
|
430
372
|
sessions.addEnvChange(session, `ios privacy reset ${args.service}${bundleId ? ` ${bundleId}` : ''}`);
|
|
431
373
|
sessions.recordMutation(session, {
|
|
@@ -451,7 +393,13 @@ export function registerIos(server, sessions) {
|
|
|
451
393
|
consent: { required: true, approved: false },
|
|
452
394
|
status: 'requested',
|
|
453
395
|
});
|
|
454
|
-
return requireConsent({
|
|
396
|
+
return requireConsent({
|
|
397
|
+
action: 'erase_device',
|
|
398
|
+
risk: 'high',
|
|
399
|
+
exactCommand: `xcrun simctl erase ${target}`,
|
|
400
|
+
affects: { udid: target },
|
|
401
|
+
explain: `Erase all content and settings on simulator ${target}? This wipes installed apps and data.`,
|
|
402
|
+
});
|
|
455
403
|
}
|
|
456
404
|
sessions.recordMutation(session, {
|
|
457
405
|
tool: 'qa_ios',
|
|
@@ -462,6 +410,7 @@ export function registerIos(server, sessions) {
|
|
|
462
410
|
status: 'approved',
|
|
463
411
|
});
|
|
464
412
|
try {
|
|
413
|
+
invalidateWdaPageSource(); // the screen changes outside WDA: drop cached page sources
|
|
465
414
|
await sim.erase(target);
|
|
466
415
|
}
|
|
467
416
|
catch (err) {
|
|
@@ -474,7 +423,12 @@ export function registerIos(server, sessions) {
|
|
|
474
423
|
status: 'blocked',
|
|
475
424
|
detail: String(err),
|
|
476
425
|
});
|
|
477
|
-
return qaError({
|
|
426
|
+
return qaError({
|
|
427
|
+
what: `erase failed: ${String(err)}`,
|
|
428
|
+
changedState: true,
|
|
429
|
+
retrySafe: true,
|
|
430
|
+
nextSteps: ['Shut the simulator down and retry.'],
|
|
431
|
+
});
|
|
478
432
|
}
|
|
479
433
|
sessions.addEnvChange(session, `ios erase ${target}`);
|
|
480
434
|
sessions.recordMutation(session, {
|
|
@@ -485,7 +439,7 @@ export function registerIos(server, sessions) {
|
|
|
485
439
|
consent: { required: true, consentId: args.consentId, approved: true },
|
|
486
440
|
status: 'executed',
|
|
487
441
|
});
|
|
488
|
-
return qaOk({ erased: target }, `erased simulator ${target} (it is now shut down
|
|
442
|
+
return qaOk({ erased: target }, `erased simulator ${target} (it is now shut down; qa_ios boot to use it again).`);
|
|
489
443
|
}
|
|
490
444
|
});
|
|
491
445
|
}
|
package/dist/tools/ios.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ios.js","sourceRoot":"","sources":["../../src/tools/ios.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ios.js","sourceRoot":"","sources":["../../src/tools/ios.ts"],"names":[],"mappings":"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"}
|