diff --git a/package-lock.json b/package-lock.json index 1635cae..1da6f92 100644 --- a/package-lock.json +++ b/package-lock.json @@ -960,6 +960,18 @@ "resolved": "packages/test", "link": true }, + "node_modules/@nodable/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/nodable" + } + ], + "license": "MIT" + }, "node_modules/@playwright/test": { "version": "1.58.2", "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.58.2.tgz", @@ -1090,9 +1102,9 @@ } }, "node_modules/fast-xml-builder": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz", - "integrity": "sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.5.tgz", + "integrity": "sha512-4TJn/8FKLeslLAH3dnohXqE3QSoxkhvaMzepOIZytwJXZO69Bfz0HBdDHzOTOon6G59Zrk6VQ2bEiv1t61rfkA==", "funding": [ { "type": "github", @@ -1105,9 +1117,9 @@ } }, "node_modules/fast-xml-parser": { - "version": "5.5.9", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.9.tgz", - "integrity": "sha512-jldvxr1MC6rtiZKgrFnDSvT8xuH+eJqxqOBThUVjYrxssYTo1avZLGql5l0a0BAERR01CadYzZ83kVEkbyDg+g==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.1.tgz", + "integrity": "sha512-8Cc3f8GUGUULg34pBch/KGyPLglS+OFs05deyOlY7fL2MTagYPKrVQNmR1fLF/yJ9PH5ZSTd3YDF6pnmeZU+zA==", "funding": [ { "type": "github", @@ -1116,9 +1128,10 @@ ], "license": "MIT", "dependencies": { - "fast-xml-builder": "^1.1.4", - "path-expression-matcher": "^1.2.0", - "strnum": "^2.2.2" + "@nodable/entities": "^2.1.0", + "fast-xml-builder": "^1.1.5", + "path-expression-matcher": "^1.5.0", + "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" @@ -1172,9 +1185,9 @@ "license": "MIT" }, "node_modules/path-expression-matcher": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.2.0.tgz", - "integrity": "sha512-DwmPWeFn+tq7TiyJ2CxezCAirXjFxvaiD03npak3cRjlP9+OjTmSy1EpIrEbh+l6JgUundniloMLDQ/6VTdhLQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz", + "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==", "funding": [ { "type": "github", @@ -1297,9 +1310,9 @@ } }, "node_modules/strnum": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.2.tgz", - "integrity": "sha512-DnR90I+jtXNSTXWdwrEy9FakW7UX+qUZg28gj5fk2vxxl7uS/3bpI4fjFYVmdK9etptYBPNkpahuQnEwhwECqA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.3.tgz", + "integrity": "sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg==", "funding": [ { "type": "github", @@ -1401,7 +1414,7 @@ "dependencies": { "@mobilewright/protocol": "^0.0.1", "debug": "^4.4.3", - "fast-xml-parser": "^5.0.0", + "fast-xml-parser": "^5.7.0", "mobilecli": "0.3.66", "ws": "^8.18.0" }, diff --git a/packages/driver-mobile-use/src/driver.ts b/packages/driver-mobile-use/src/driver.ts index a8af9c6..05a5041 100644 --- a/packages/driver-mobile-use/src/driver.ts +++ b/packages/driver-mobile-use/src/driver.ts @@ -32,6 +32,7 @@ export const DEFAULT_URL = 'wss://api.mobilenexthq.com/ws'; interface MobileUseElement { type: string; + text?: string; label?: string; name?: string; value?: string; @@ -115,7 +116,7 @@ function elementToViewNode(el: MobileUseElement): ViewNode { label: el.label || undefined, identifier: el.identifier || el.name || undefined, value: el.value || undefined, - text: el.label || undefined, + text: el.text || undefined, isVisible: typeof el.visible === 'boolean' ? el.visible : bounds.width > 0 && bounds.height > 0, isEnabled: el.enabled ?? true, bounds, diff --git a/packages/driver-mobilecli/package.json b/packages/driver-mobilecli/package.json index fbeb46d..b59b391 100644 --- a/packages/driver-mobilecli/package.json +++ b/packages/driver-mobilecli/package.json @@ -31,7 +31,7 @@ "dependencies": { "@mobilewright/protocol": "^0.0.1", "debug": "^4.4.3", - "fast-xml-parser": "^5.0.0", + "fast-xml-parser": "^5.7.0", "mobilecli": "0.3.66", "ws": "^8.18.0" }, diff --git a/packages/driver-mobilecli/src/driver.ts b/packages/driver-mobilecli/src/driver.ts index 9170691..7da06e6 100644 --- a/packages/driver-mobilecli/src/driver.ts +++ b/packages/driver-mobilecli/src/driver.ts @@ -32,6 +32,7 @@ export const DEFAULT_URL = 'ws://localhost:12000/ws'; /** Element shape returned by mobilecli's device.dump.ui JSON response */ interface MobilecliElement { type: string; + text?: string; label?: string; name?: string; value?: string; @@ -111,7 +112,7 @@ function elementToViewNode(el: MobilecliElement): ViewNode { label: el.label || undefined, identifier: el.identifier || el.name || undefined, value: el.value || undefined, - text: el.label || undefined, + text: el.text || undefined, isVisible: typeof el.visible === 'boolean' ? el.visible : bounds.width > 0 && bounds.height > 0, isEnabled: el.enabled ?? true, bounds,