diff --git a/.ado/compliance.yml b/.ado/compliance.yml index 3831667368b..415cf0e0ba5 100644 --- a/.ado/compliance.yml +++ b/.ado/compliance.yml @@ -6,10 +6,10 @@ parameters: default: Medium: name: rnw-pool-4-microsoft - demands: ImageOverride -equals rnw-img-vs2022-node18 + demands: ImageOverride -equals rnw-img-vs2022-node22 Large: name: rnw-pool-8-microsoft - demands: ImageOverride -equals rnw-img-vs2022-node18 + demands: ImageOverride -equals rnw-img-vs2022-node22 - name: forceCodeQL displayName: Force CodeQL to rebuild databases type: boolean diff --git a/.ado/continuous.yml b/.ado/continuous.yml index 9d916c4ddf9..f20e680ad11 100644 --- a/.ado/continuous.yml +++ b/.ado/continuous.yml @@ -13,13 +13,13 @@ parameters: default: Small: name: rnw-pool-2 - demands: ImageOverride -equals rnw-img-vs2022-node18 + demands: ImageOverride -equals rnw-img-vs2022-node22 Medium: name: rnw-pool-4 - demands: ImageOverride -equals rnw-img-vs2022-node18 + demands: ImageOverride -equals rnw-img-vs2022-node22 Large: name: rnw-pool-8 - demands: ImageOverride -equals rnw-img-vs2022-node18 + demands: ImageOverride -equals rnw-img-vs2022-node22 stages: - template: stages.yml diff --git a/.ado/jobs/macos-tests.yml b/.ado/jobs/macos-tests.yml index e18ab775dbf..d6c57809455 100644 --- a/.ado/jobs/macos-tests.yml +++ b/.ado/jobs/macos-tests.yml @@ -14,6 +14,7 @@ jobs: - template: ../templates/prepare-js-env.yml parameters: agentImage: HostedImage + fixupCommands: false - script: yarn test displayName: yarn test diff --git a/.ado/jobs/node-tests.yml b/.ado/jobs/node-tests.yml index 2ca57e4495d..ef1167cefa2 100644 --- a/.ado/jobs/node-tests.yml +++ b/.ado/jobs/node-tests.yml @@ -12,7 +12,7 @@ parameters: - name: versions type: object - default: [18] + default: [22] jobs: - ${{ each nodeVersion in parameters.versions }}: diff --git a/.ado/jobs/setup.yml b/.ado/jobs/setup.yml index 2a22ebf0103..adcfab566c3 100644 --- a/.ado/jobs/setup.yml +++ b/.ado/jobs/setup.yml @@ -14,6 +14,11 @@ jobs: pool: {vmImage: ubuntu-latest} steps: + - task: UseNode@1 + inputs: + version: '22.14.0' + displayName: 'Use Node.js 22.14.0' + - template: ../templates/checkout-full.yml parameters: persistCredentials: true # Git creds needed for beachball diff --git a/.ado/publish.yml b/.ado/publish.yml index b5663b3c8f7..dafc177afd4 100644 --- a/.ado/publish.yml +++ b/.ado/publish.yml @@ -22,10 +22,10 @@ parameters: default: Medium: name: rnw-pool-4-microsoft - demands: ImageOverride -equals rnw-img-vs2022-node18 + demands: ImageOverride -equals rnw-img-vs2022-node22 Large: name: rnw-pool-8-microsoft - demands: ImageOverride -equals rnw-img-vs2022-node18 + demands: ImageOverride -equals rnw-img-vs2022-node22 - name: desktopBuildMatrix type: object diff --git a/.ado/scripts/npmAddUser.js b/.ado/scripts/npmAddUser.js index d8e77ee4099..c9f7f769f5e 100644 --- a/.ado/scripts/npmAddUser.js +++ b/.ado/scripts/npmAddUser.js @@ -2,6 +2,9 @@ // @ts-check const child_process = require("child_process"); +const fs = require("fs"); +const path = require("path"); +const os = require("os"); const username = process.argv[2]; const password = process.argv[3]; @@ -23,18 +26,54 @@ if (!email) { process.exit(1); } -const child = child_process.exec(`npm adduser${registry? (' --registry ' + registry) :''}` ); - -child.stdout.on("data", d => { - const data = d.toString(); - process.stdout.write(d + "\n"); - if (data.match(/username/i)) { - child.stdin.write(username + "\n"); - } else if (data.match(/password/i)) { - child.stdin.write(password + "\n"); - } else if (data.match(/email/i)) { - child.stdin.write(email + "\n"); - } else if (data.match(/logged in as/i)) { - child.stdin.end(); - } +const registryUrl = registry || "http://localhost:4873"; + +// First set the registry +console.log(`Setting npm registry to ${registryUrl}`); +const setRegistry = child_process.spawnSync('npm', ['config', 'set', 'registry', registryUrl], { + stdio: 'inherit', + shell: true }); + +if (setRegistry.status !== 0) { + console.error('Failed to set registry'); + process.exit(1); +} + +// Create auth token for verdaccio +const authString = Buffer.from(`${username}:${password}`).toString('base64'); +const registryPath = registryUrl.replace(/^https?:/, ''); + +// Set auth in npm config +console.log('Setting authentication...'); +const setAuth = child_process.spawnSync('npm', ['config', 'set', `${registryPath}/:_auth`, authString], { + stdio: 'inherit', + shell: true +}); + +if (setAuth.status !== 0) { + console.error('Failed to set auth'); + process.exit(1); +} + +// Set email +const setEmail = child_process.spawnSync('npm', ['config', 'set', 'email', email], { + stdio: 'inherit', + shell: true +}); + +// Verify authentication +console.log('Verifying authentication...'); +const whoami = child_process.spawnSync('npm', ['whoami', '--registry', registryUrl], { + encoding: 'utf8', + shell: true +}); + +if (whoami.status === 0 && whoami.stdout.trim()) { + console.log(`Logged in as ${whoami.stdout.trim()} on ${registryUrl}`); + process.exit(0); +} else { + console.error('Authentication verification failed'); + if (whoami.stderr) console.error('Error:', whoami.stderr); + process.exit(1); +} diff --git a/.ado/templates/prepare-js-env.yml b/.ado/templates/prepare-js-env.yml index 46dd12a4cf4..7719c91f5dc 100644 --- a/.ado/templates/prepare-js-env.yml +++ b/.ado/templates/prepare-js-env.yml @@ -5,17 +5,20 @@ parameters: values: - ManagedImage - HostedImage - + - name: fixupCommands + type: boolean + default: true steps: - ${{ if eq(parameters.agentImage, 'HostedImage') }}: - task: NodeTool@0 displayName: Set Node Version inputs: - versionSpec: '18.x' + versionSpec: '22.x' - template: yarn-install.yml parameters: agentImage: ${{ parameters.agentImage }} + fixupCommands: ${{ parameters.fixupCommands }} - script: yarn build displayName: yarn build diff --git a/.ado/templates/yarn-install.yml b/.ado/templates/yarn-install.yml index 74d3d6757dc..03da09b8b1f 100644 --- a/.ado/templates/yarn-install.yml +++ b/.ado/templates/yarn-install.yml @@ -8,6 +8,9 @@ parameters: values: - ManagedImage - HostedImage +- name: fixupCommands + type: boolean + default: true steps: # When using our own images, prefer the machine-installed version of @@ -21,3 +24,6 @@ steps: - ${{ else }}: - script: npx --yes midgard-yarn@1.23.34 --ignore-scripts --frozen-lockfile --cwd ${{ parameters.workingDirectory }} displayName: midgard-yarn (faster yarn install) + + - ${{ if eq(parameters.fixupCommands, true) }}: + - script: npx -y yarn-fix-bin-cmds@1.0.3 --path vnext/node_modules/.bin diff --git a/.ado/windows-vs-pr-secure.yml b/.ado/windows-vs-pr-secure.yml index 6ae1ac5c4c1..3601bce96c8 100644 --- a/.ado/windows-vs-pr-secure.yml +++ b/.ado/windows-vs-pr-secure.yml @@ -16,13 +16,13 @@ parameters: default: Small: name: rnw-pool-2 - demands: ImageOverride -equals rnw-img-vs2022-node18 + demands: ImageOverride -equals rnw-img-vs2022-node22 Medium: name: rnw-pool-4 - demands: ImageOverride -equals rnw-img-vs2022-node18 + demands: ImageOverride -equals rnw-img-vs2022-node22 Large: name: rnw-pool-8 - demands: ImageOverride -equals rnw-img-vs2022-node18 + demands: ImageOverride -equals rnw-img-vs2022-node22 stages: - template: stages.yml diff --git a/.ado/windows-vs-pr.yml b/.ado/windows-vs-pr.yml index d4ba949f7a7..ae79db81131 100644 --- a/.ado/windows-vs-pr.yml +++ b/.ado/windows-vs-pr.yml @@ -16,13 +16,13 @@ parameters: default: Small: name: rnw-pool-2 - demands: ImageOverride -equals rnw-img-vs2022-node18 + demands: ImageOverride -equals rnw-img-vs2022-node22 Medium: name: rnw-pool-4 - demands: ImageOverride -equals rnw-img-vs2022-node18 + demands: ImageOverride -equals rnw-img-vs2022-node22 Large: name: rnw-pool-8 - demands: ImageOverride -equals rnw-img-vs2022-node18 + demands: ImageOverride -equals rnw-img-vs2022-node22 stages: - template: stages.yml diff --git a/.unbroken_exclusions b/.unbroken_exclusions index ebdbc8ea753..1e736d3db8f 100644 --- a/.unbroken_exclusions +++ b/.unbroken_exclusions @@ -2,6 +2,7 @@ URL not found https://docs.github.com/pull-requests/collaborating-with-pull-requ URL not found https://docs.github.com/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks while parsing CONTRIBUTING.md (HTTP 403) URL not found https://docs.github.com/get-started/quickstart while parsing CONTRIBUTING.md (HTTP 403) File not found edge:/inspect while parsing packages/playground/README_composition.md +File not found ./edge:/inspect while parsing packages/playground/README_composition.md !**/node_modules !vnext/packages !vnext/ReactCopies diff --git a/change/@office-iss-react-native-win32-ec84cc30-559c-4cb8-ae7b-94815d6f195a.json b/change/@office-iss-react-native-win32-ec84cc30-559c-4cb8-ae7b-94815d6f195a.json new file mode 100644 index 00000000000..1a4a618de95 --- /dev/null +++ b/change/@office-iss-react-native-win32-ec84cc30-559c-4cb8-ae7b-94815d6f195a.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "Bump flow-bin", + "packageName": "@office-iss/react-native-win32", + "email": "30809111+acoates-ms@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change/@react-native-windows-cli-e061ce36-6ba5-4936-9e88-d2d10574fc2f.json b/change/@react-native-windows-cli-e061ce36-6ba5-4936-9e88-d2d10574fc2f.json new file mode 100644 index 00000000000..ce4b52cc810 --- /dev/null +++ b/change/@react-native-windows-cli-e061ce36-6ba5-4936-9e88-d2d10574fc2f.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "Upgrade dotnet version", + "packageName": "@react-native-windows/cli", + "email": "30809111+acoates-ms@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-1efdb03b-a0af-4ffa-a274-a0c43f757681.json b/change/react-native-windows-1efdb03b-a0af-4ffa-a274-a0c43f757681.json new file mode 100644 index 00000000000..a4bd58f9a3b --- /dev/null +++ b/change/react-native-windows-1efdb03b-a0af-4ffa-a274-a0c43f757681.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "updated ellipsis to respect tail and clip behaviour , for head , middle follow defaulty tail behaviour", + "packageName": "react-native-windows", + "email": "74712637+iamAbhi-916@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-1ff7a358-a5fe-45d6-8df4-ecd913ae9509.json b/change/react-native-windows-1ff7a358-a5fe-45d6-8df4-ecd913ae9509.json new file mode 100644 index 00000000000..0bc83ccc34c --- /dev/null +++ b/change/react-native-windows-1ff7a358-a5fe-45d6-8df4-ecd913ae9509.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "PointerEvent fixes", + "packageName": "react-native-windows", + "email": "30809111+acoates-ms@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-262555bf-8b8f-4511-b814-9ed70a0cb8b4.json b/change/react-native-windows-262555bf-8b8f-4511-b814-9ed70a0cb8b4.json new file mode 100644 index 00000000000..23ab17fba1e --- /dev/null +++ b/change/react-native-windows-262555bf-8b8f-4511-b814-9ed70a0cb8b4.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Implementation of adjustFontSizeToFit for Text in Fabric", + "packageName": "react-native-windows", + "email": "kvineeth@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-4046d3e2-cc00-459e-b62d-4489b3ef14d1.json b/change/react-native-windows-4046d3e2-cc00-459e-b62d-4489b3ef14d1.json new file mode 100644 index 00000000000..d16b5587b17 --- /dev/null +++ b/change/react-native-windows-4046d3e2-cc00-459e-b62d-4489b3ef14d1.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "[Fabric] Fix for Text and TextInput focus issue with screen readers.", + "packageName": "react-native-windows", + "email": "kvineeth@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-47643b4d-f7e0-4d08-9fa1-f3612b5a39db.json b/change/react-native-windows-47643b4d-f7e0-4d08-9fa1-f3612b5a39db.json new file mode 100644 index 00000000000..9d8c311271e --- /dev/null +++ b/change/react-native-windows-47643b4d-f7e0-4d08-9fa1-f3612b5a39db.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "TextInput should capture mouse on mouse down", + "packageName": "react-native-windows", + "email": "30809111+acoates-ms@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-595c068c-640d-4645-a3e4-d6d23bf99c79.json b/change/react-native-windows-595c068c-640d-4645-a3e4-d6d23bf99c79.json new file mode 100644 index 00000000000..91ab9678287 --- /dev/null +++ b/change/react-native-windows-595c068c-640d-4645-a3e4-d6d23bf99c79.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "[Fabric] Implement maxFontSizeMultiplier in Text Input", + "packageName": "react-native-windows", + "email": "54227869+anupriya13@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-82bcd92e-18b7-42d0-b6f0-dc428b565d5d.json b/change/react-native-windows-82bcd92e-18b7-42d0-b6f0-dc428b565d5d.json new file mode 100644 index 00000000000..96c1bac678b --- /dev/null +++ b/change/react-native-windows-82bcd92e-18b7-42d0-b6f0-dc428b565d5d.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "[Fabric] Implementation of accessibilityDescription", + "packageName": "react-native-windows", + "email": "kvineeth@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-99f88013-45df-4134-99df-b0fb86dc5e88.json b/change/react-native-windows-99f88013-45df-4134-99df-b0fb86dc5e88.json new file mode 100644 index 00000000000..88a4d392a1f --- /dev/null +++ b/change/react-native-windows-99f88013-45df-4134-99df-b0fb86dc5e88.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Implement SpellCheck and AutoCorrect for TextInput", + "packageName": "react-native-windows", + "email": "54227869+anupriya13@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-ab19ebb9-8059-4b42-81a2-08dbc6639dfc.json b/change/react-native-windows-ab19ebb9-8059-4b42-81a2-08dbc6639dfc.json new file mode 100644 index 00000000000..bdcd92c1c5c --- /dev/null +++ b/change/react-native-windows-ab19ebb9-8059-4b42-81a2-08dbc6639dfc.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "updated adjustsFontSizeToFit textlayout to nullptr", + "packageName": "react-native-windows", + "email": "74712637+iamAbhi-916@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-b21e071e-d9f2-45d1-92d6-b65b6246555b.json b/change/react-native-windows-b21e071e-d9f2-45d1-92d6-b65b6246555b.json new file mode 100644 index 00000000000..c3022810b3e --- /dev/null +++ b/change/react-native-windows-b21e071e-d9f2-45d1-92d6-b65b6246555b.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "adding UIA event handler changes for navigator", + "packageName": "react-native-windows", + "email": "protikbiswas100@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-b47cf142-681b-41f5-8ac6-d07b04f55165.json b/change/react-native-windows-b47cf142-681b-41f5-8ac6-d07b04f55165.json new file mode 100644 index 00000000000..8bf6a73898e --- /dev/null +++ b/change/react-native-windows-b47cf142-681b-41f5-8ac6-d07b04f55165.json @@ -0,0 +1,7 @@ +{ + "type": "none", + "comment": "Added support for selectionColor for textInput", + "packageName": "react-native-windows", + "email": "74712637+iamAbhi-916@users.noreply.github.com", + "dependentChangeType": "none" +} diff --git a/change/react-native-windows-bcf77be5-d1cd-4b1a-9756-3de4607890e5.json b/change/react-native-windows-bcf77be5-d1cd-4b1a-9756-3de4607890e5.json new file mode 100644 index 00000000000..6ebe164b659 --- /dev/null +++ b/change/react-native-windows-bcf77be5-d1cd-4b1a-9756-3de4607890e5.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "[Fabric] Raising UIA Event if Toggle State Changes in Switch Component", + "packageName": "react-native-windows", + "email": "kvineeth@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-c4bfd448-6ad1-4e13-a027-b84c8a29a5e4.json b/change/react-native-windows-c4bfd448-6ad1-4e13-a027-b84c8a29a5e4.json new file mode 100644 index 00000000000..575e08fca39 --- /dev/null +++ b/change/react-native-windows-c4bfd448-6ad1-4e13-a027-b84c8a29a5e4.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": " Changes for updating accessibilityValue prop in UIA", + "packageName": "react-native-windows", + "email": "kvineeth@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-d334336e-c641-4b9e-bbd3-9c6dd4f5b228.json b/change/react-native-windows-d334336e-c641-4b9e-bbd3-9c6dd4f5b228.json new file mode 100644 index 00000000000..f68dfc5830b --- /dev/null +++ b/change/react-native-windows-d334336e-c641-4b9e-bbd3-9c6dd4f5b228.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "ITextProvider Implementation", + "packageName": "react-native-windows", + "email": "34109996+chiaramooney@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-db520a88-144d-4212-8c94-89bf7aa0fbff.json b/change/react-native-windows-db520a88-144d-4212-8c94-89bf7aa0fbff.json new file mode 100644 index 00000000000..1654012e887 --- /dev/null +++ b/change/react-native-windows-db520a88-144d-4212-8c94-89bf7aa0fbff.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Added fix for AutoFocus", + "packageName": "react-native-windows", + "email": "hmalothu@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-f1078f0f-499f-408a-acd3-e969096b6dea.json b/change/react-native-windows-f1078f0f-499f-408a-acd3-e969096b6dea.json new file mode 100644 index 00000000000..8921202ec9e --- /dev/null +++ b/change/react-native-windows-f1078f0f-499f-408a-acd3-e969096b6dea.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "[Fabric] Implement onContentSizeChange in TextInput", + "packageName": "react-native-windows", + "email": "54227869+anupriya13@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/package.json b/package.json index 277fd78adbd..8c22dbbdf45 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "doc": "doxysaurus --config vnext/doxysaurus.json", "format": "format-files -i -style=file", "format:verify": "format-files -i -style=file -verify", - "postinstall": "yarn build", + "postinstall": "npx -y yarn-fix-bin-cmds --path vnext\\node_modules\\.bin && yarn build", "spellcheck": "npx cspell", "test": "lage test --verbose", "validate-overrides": "react-native-platform-override validate" diff --git a/packages/@office-iss/react-native-win32/package.json b/packages/@office-iss/react-native-win32/package.json index 3eb9a904a26..eb0beacb61a 100644 --- a/packages/@office-iss/react-native-win32/package.json +++ b/packages/@office-iss/react-native-win32/package.json @@ -81,7 +81,7 @@ "@types/prop-types": "15.7.1", "@types/react": "^18.2.6", "eslint": "^8.19.0", - "flow-bin": "^0.217.2", + "flow-bin": "^0.228.0", "jscodeshift": "^0.14.0", "just-scripts": "^1.3.3", "prettier": "2.8.8", diff --git a/packages/@react-native-windows/cli/src/commands/healthCheck/healthCheckList.ts b/packages/@react-native-windows/cli/src/commands/healthCheck/healthCheckList.ts index 1cf697bfe9f..4c2b7d56552 100644 --- a/packages/@react-native-windows/cli/src/commands/healthCheck/healthCheckList.ts +++ b/packages/@react-native-windows/cli/src/commands/healthCheck/healthCheckList.ts @@ -14,5 +14,5 @@ export const HealthCheckList = [ [true, 'VSUWP', 'Visual Studio 2022 (>= 17.11.0) & req. components'], [true, 'Node', 'Node.js (LTS, >= 18.0)'], [true, 'Yarn', 'Yarn'], - [true, 'DotNetCore', '.NET SDK (LTS, = 6.0)'], + [true, 'DotNetCore', '.NET SDK (LTS, = 8.0)'], ]; diff --git a/packages/@react-native-windows/tester/src/js/examples-win/Accessibility/AccessibilityExampleWindows.tsx b/packages/@react-native-windows/tester/src/js/examples-win/Accessibility/AccessibilityExampleWindows.tsx index 2c3ffef60bb..39761f9f94f 100644 --- a/packages/@react-native-windows/tester/src/js/examples-win/Accessibility/AccessibilityExampleWindows.tsx +++ b/packages/@react-native-windows/tester/src/js/examples-win/Accessibility/AccessibilityExampleWindows.tsx @@ -24,6 +24,17 @@ class AccessibilityBaseExample extends React.Component { style={{width: 50, height: 50, backgroundColor: 'blue'}} accessibilityLabel="A blue box" accessibilityHint="A hint for the blue box." + accessibilityLevel={1} + accessibilityItemType="comment" + accessibilityAccessKey="accessKey" + accessibilityDescription="Sample Description" + accessibilityAnnotation={{ + typeID: 'Comment', + typeName: 'Check Comment', + author: 'Clint Westwood', + dateTime: '3/19/2025 1:03 PM', + }} + testID="accessibility-base-view-1" /> The following has accessible and accessibilityLabel: { await app.waitUntil( async () => { await searchBox.setValue(input); - return (await searchBox.getText()) === input; + if (input === '') { + return (await searchBox.getText()) === 'Search...'; + } else { + return (await searchBox.getText()) === input; + } }, { interval: 1500, diff --git a/packages/e2e-test-app-fabric/test/PressableComponentTest.test.ts b/packages/e2e-test-app-fabric/test/PressableComponentTest.test.ts index 6993b7c8898..962cfda5420 100644 --- a/packages/e2e-test-app-fabric/test/PressableComponentTest.test.ts +++ b/packages/e2e-test-app-fabric/test/PressableComponentTest.test.ts @@ -45,7 +45,7 @@ describe('Pressable Tests', () => { await app.waitUntil( async () => { await searchBox.setValue(['Backspace', 'Backspace', 'Backspace']); - return (await searchBox.getText()) === ''; + return (await searchBox.getText()) === 'Search...'; }, { interval: 1500, @@ -84,7 +84,7 @@ describe('Pressable Tests', () => { await app.waitUntil( async () => { await searchBox.setValue(['Backspace', 'Backspace', 'Backspace']); - return (await searchBox.getText()) === ''; + return (await searchBox.getText()) === 'Search...'; }, { interval: 1500, @@ -118,7 +118,7 @@ describe('Pressable Tests', () => { await app.waitUntil( async () => { await searchBox.setValue(['Backspace', 'Backspace', 'Backspace']); - return (await searchBox.getText()) === ''; + return (await searchBox.getText()) === 'Search...'; }, { interval: 1500, @@ -152,7 +152,7 @@ describe('Pressable Tests', () => { await app.waitUntil( async () => { await searchBox.setValue(['Backspace', 'Backspace', 'Backspace']); - return (await searchBox.getText()) === ''; + return (await searchBox.getText()) === 'Search...'; }, { interval: 1500, @@ -181,7 +181,7 @@ describe('Pressable Tests', () => { await app.waitUntil( async () => { await searchBox.setValue(['Backspace', 'Backspace', 'Backspace']); - return (await searchBox.getText()) === ''; + return (await searchBox.getText()) === 'Search...'; }, { interval: 1500, @@ -210,7 +210,7 @@ describe('Pressable Tests', () => { await app.waitUntil( async () => { await searchBox.setValue(['Backspace', 'Backspace', 'Backspace']); - return (await searchBox.getText()) === ''; + return (await searchBox.getText()) === 'Search...'; }, { interval: 1500, diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/AccessibilityTest.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/AccessibilityTest.test.ts.snap index b70e1b1ac77..41968769ec3 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/AccessibilityTest.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/AccessibilityTest.test.ts.snap @@ -17,6 +17,7 @@ exports[`Accessibility Tests Components can store range data by setting the min, "ControlType": 50020, "LocalizedControlType": "text", "Name": "The View's (accessibilityRole == adjustable, ie. Slider) properties should be the following according to UIA: Min- 5Max- 125Now- 10", + "TextRangePattern.GetText": "The View's (accessibilityRole == adjustable, ie. Slider) properties should be the following according to UIA: Min- 5Max- 125Now- 10", }, ], }, @@ -73,6 +74,7 @@ exports[`Accessibility Tests Components can store value data by setting the text "ControlType": 50020, "LocalizedControlType": "text", "Name": "The View's properties should be the following according to UIA: Text- testText", + "TextRangePattern.GetText": "The View's properties should be the following according to UIA: Text- testText", }, ], }, @@ -129,6 +131,7 @@ exports[`Accessibility Tests Elements can set accessibilityState:selected to fal "ControlType": 50020, "LocalizedControlType": "text", "Name": "Unselected", + "TextRangePattern.GetText": "Unselected", }, ], }, @@ -187,6 +190,7 @@ exports[`Accessibility Tests Elements can set accessibilityState:selected to tru "ControlType": 50020, "LocalizedControlType": "text", "Name": "Selected", + "TextRangePattern.GetText": "Selected", }, ], }, @@ -252,6 +256,7 @@ exports[`Accessibility Tests Selectable items must have a Selection Container. E "ControlType": 50020, "LocalizedControlType": "text", "Name": "Unselected", + "TextRangePattern.GetText": "Unselected", }, ], }, @@ -267,6 +272,7 @@ exports[`Accessibility Tests Selectable items must have a Selection Container. E "ControlType": 50020, "LocalizedControlType": "text", "Name": "Unselected", + "TextRangePattern.GetText": "Unselected", }, ], }, @@ -282,6 +288,7 @@ exports[`Accessibility Tests Selectable items must have a Selection Container. E "ControlType": 50020, "LocalizedControlType": "text", "Name": "Unselected", + "TextRangePattern.GetText": "Unselected", }, ], }, diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/ButtonComponentTest.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/ButtonComponentTest.test.ts.snap index 88c0c104b4c..2fb2a911fef 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/ButtonComponentTest.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/ButtonComponentTest.test.ts.snap @@ -16,6 +16,7 @@ exports[`Button Tests Buttons can be disabled 1`] = ` "IsEnabled": false, "LocalizedControlType": "text", "Name": "Submit Application", + "TextRangePattern.GetText": "Submit Application", }, ], }, @@ -163,6 +164,7 @@ exports[`Button Tests Buttons can have accessibility labels 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Submit Application", + "TextRangePattern.GetText": "Submit Application", }, ], }, @@ -311,6 +313,7 @@ exports[`Button Tests Buttons can have accessibility props 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Submit Application", + "TextRangePattern.GetText": "Submit Application", }, ], }, @@ -442,6 +445,7 @@ exports[`Button Tests Buttons can have accessibility states 1`] = ` "IsEnabled": false, "LocalizedControlType": "text", "Name": "Submit Application", + "TextRangePattern.GetText": "Submit Application", }, ], }, @@ -589,6 +593,7 @@ exports[`Button Tests Buttons can have custom colors 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Cancel Application", + "TextRangePattern.GetText": "Cancel Application", }, ], }, @@ -851,6 +856,7 @@ exports[`Button Tests Buttons can have custom focusable and accessible props 2`] "ControlType": 50020, "LocalizedControlType": "text", "Name": "Button with focusable=false", + "TextRangePattern.GetText": "Button with focusable=false", }, ], }, @@ -1100,6 +1106,7 @@ exports[`Button Tests Buttons can have flexbox styling 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Cancel", + "TextRangePattern.GetText": "Cancel", }, ], }, @@ -1115,6 +1122,7 @@ exports[`Button Tests Buttons can have flexbox styling 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Submit", + "TextRangePattern.GetText": "Submit", }, ], }, @@ -1426,6 +1434,7 @@ exports[`Button Tests Buttons can have flexbox styling with three buttons 1`] = "ControlType": 50020, "LocalizedControlType": "text", "Name": "Cancel", + "TextRangePattern.GetText": "Cancel", }, ], }, @@ -1441,6 +1450,7 @@ exports[`Button Tests Buttons can have flexbox styling with three buttons 1`] = "ControlType": 50020, "LocalizedControlType": "text", "Name": "Save For Later", + "TextRangePattern.GetText": "Save For Later", }, ], }, @@ -1456,6 +1466,7 @@ exports[`Button Tests Buttons can have flexbox styling with three buttons 1`] = "ControlType": 50020, "LocalizedControlType": "text", "Name": "Submit", + "TextRangePattern.GetText": "Submit", }, ], }, @@ -1896,6 +1907,7 @@ exports[`Button Tests Buttons have default styling 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Submit Application", + "TextRangePattern.GetText": "Submit Application", }, ], }, diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/HomeUIADump.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/HomeUIADump.test.ts.snap index da3f507c5fe..02e656b38f7 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/HomeUIADump.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/HomeUIADump.test.ts.snap @@ -13,6 +13,7 @@ exports[`Home UIA Tree Dump APIs Tab 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "APIs", + "TextRangePattern.GetText": "APIs", }, ], }, @@ -113,30 +114,35 @@ exports[`Home UIA Tree Dump Accessibility 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Accessibility", + "TextRangePattern.GetText": "Accessibility", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Examples of using Accessibility APIs.", + "TextRangePattern.GetText": "Examples of using Accessibility APIs.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Other", + "TextRangePattern.GetText": "Other", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -258,30 +264,35 @@ exports[`Home UIA Tree Dump Accessibility Windows 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Accessibility Windows", + "TextRangePattern.GetText": "Accessibility Windows", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Usage of accessibility properties.", + "TextRangePattern.GetText": "Usage of accessibility properties.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -403,30 +414,35 @@ exports[`Home UIA Tree Dump AccessibilityInfo 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "AccessibilityInfo", + "TextRangePattern.GetText": "AccessibilityInfo", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Examples of using AccessibilityInfo APIs.", + "TextRangePattern.GetText": "Examples of using AccessibilityInfo APIs.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -548,30 +564,35 @@ exports[`Home UIA Tree Dump ActivityIndicator 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "ActivityIndicator", + "TextRangePattern.GetText": "ActivityIndicator", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Animated loading indicators.", + "TextRangePattern.GetText": "Animated loading indicators.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -693,30 +714,35 @@ exports[`Home UIA Tree Dump Alerts 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Alerts", + "TextRangePattern.GetText": "Alerts", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Alerts display a concise and informative message and prompt the user to make a decision.", + "TextRangePattern.GetText": "Alerts display a concise and informative message and prompt the user to make a decision.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -838,30 +864,35 @@ exports[`Home UIA Tree Dump Animated - Gratuitous App 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Animated - Gratuitous App", + "TextRangePattern.GetText": "Animated - Gratuitous App", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Bunch of Animations - tap a circle to open a view with more animations, or longPress and drag to reorder circles.", + "TextRangePattern.GetText": "Bunch of Animations - tap a circle to open a view with more animations, or longPress and drag to reorder circles.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Other", + "TextRangePattern.GetText": "Other", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -983,30 +1014,35 @@ exports[`Home UIA Tree Dump Animated 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Animated", + "TextRangePattern.GetText": "Animated", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Library designed to make animations fluid, powerful, and painless to build and maintain.", + "TextRangePattern.GetText": "Library designed to make animations fluid, powerful, and painless to build and maintain.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -1128,30 +1164,35 @@ exports[`Home UIA Tree Dump AppState 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "AppState", + "TextRangePattern.GetText": "AppState", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "app background status", + "TextRangePattern.GetText": "app background status", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -1273,30 +1314,35 @@ exports[`Home UIA Tree Dump Appearance 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Appearance", + "TextRangePattern.GetText": "Appearance", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Light and dark user interface examples.", + "TextRangePattern.GetText": "Light and dark user interface examples.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -1418,30 +1464,35 @@ exports[`Home UIA Tree Dump Border 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Border", + "TextRangePattern.GetText": "Border", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Demonstrates some of the border styles available to Views.", + "TextRangePattern.GetText": "Demonstrates some of the border styles available to Views.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -1563,30 +1614,35 @@ exports[`Home UIA Tree Dump Button 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Button", + "TextRangePattern.GetText": "Button", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Simple React Native button component.", + "TextRangePattern.GetText": "Simple React Native button component.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -1707,6 +1763,7 @@ exports[`Home UIA Tree Dump Components Tab 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Components", + "TextRangePattern.GetText": "Components", }, ], }, @@ -1847,30 +1904,35 @@ exports[`Home UIA Tree Dump Composition Bugs Example 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Composition Bugs Example", + "TextRangePattern.GetText": "Composition Bugs Example", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "See bugs in UI.Composition driven native animations", + "TextRangePattern.GetText": "See bugs in UI.Composition driven native animations", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -1992,30 +2054,35 @@ exports[`Home UIA Tree Dump Crash 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Crash", + "TextRangePattern.GetText": "Crash", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Crash examples.", + "TextRangePattern.GetText": "Crash examples.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -2137,30 +2204,35 @@ exports[`Home UIA Tree Dump Cxx TurboModule 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Cxx TurboModule", + "TextRangePattern.GetText": "Cxx TurboModule", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Usage of Cxx TurboModule", + "TextRangePattern.GetText": "Usage of Cxx TurboModule", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -2282,30 +2354,35 @@ exports[`Home UIA Tree Dump DevSettings 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "DevSettings", + "TextRangePattern.GetText": "DevSettings", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Customize the development settings", + "TextRangePattern.GetText": "Customize the development settings", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -2427,30 +2504,35 @@ exports[`Home UIA Tree Dump Dimensions 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Dimensions", + "TextRangePattern.GetText": "Dimensions", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Dimensions of the viewport", + "TextRangePattern.GetText": "Dimensions of the viewport", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -2572,30 +2654,35 @@ exports[`Home UIA Tree Dump Display:none Style 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Display:none Style", + "TextRangePattern.GetText": "Display:none Style", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Style prop which will collapse the element in XAML tree.", + "TextRangePattern.GetText": "Style prop which will collapse the element in XAML tree.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Other", + "TextRangePattern.GetText": "Other", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -2717,30 +2804,35 @@ exports[`Home UIA Tree Dump Fabric Native Component 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Fabric Native Component", + "TextRangePattern.GetText": "Fabric Native Component", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Sample Fabric Native Component that sizes based on max desired size of native XAML contained within", + "TextRangePattern.GetText": "Sample Fabric Native Component that sizes based on max desired size of native XAML contained within", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -2862,30 +2954,35 @@ exports[`Home UIA Tree Dump Fabric Native Component Yoga 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Fabric Native Component Yoga", + "TextRangePattern.GetText": "Fabric Native Component Yoga", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Sample Fabric Native Component that places native XAML inside a container sized by yoga", + "TextRangePattern.GetText": "Sample Fabric Native Component that places native XAML inside a container sized by yoga", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -3007,30 +3104,35 @@ exports[`Home UIA Tree Dump Fast Path Texts 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Fast Path Texts", + "TextRangePattern.GetText": "Fast Path Texts", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Examples of performant fast path texts, turn on IsTextPerformanceVisualizationEnabled to visualize examples", + "TextRangePattern.GetText": "Examples of performant fast path texts, turn on IsTextPerformanceVisualizationEnabled to visualize examples", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -3152,30 +3254,35 @@ exports[`Home UIA Tree Dump FlatList 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "FlatList", + "TextRangePattern.GetText": "FlatList", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Performant, scrollable list of data.", + "TextRangePattern.GetText": "Performant, scrollable list of data.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "ListView", + "TextRangePattern.GetText": "ListView", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -3297,30 +3404,35 @@ exports[`Home UIA Tree Dump Flyout 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Flyout", + "TextRangePattern.GetText": "Flyout", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Displays content on top of existing content, within the bounds of the application window.", + "TextRangePattern.GetText": "Displays content on top of existing content, within the bounds of the application window.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -3442,30 +3554,35 @@ exports[`Home UIA Tree Dump Glyph UWP 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Glyph UWP", + "TextRangePattern.GetText": "Glyph UWP", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Usage of Glyph control.", + "TextRangePattern.GetText": "Usage of Glyph control.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -3587,30 +3704,35 @@ exports[`Home UIA Tree Dump Image 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Image", + "TextRangePattern.GetText": "Image", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Base component for displaying different types of images.", + "TextRangePattern.GetText": "Base component for displaying different types of images.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -3732,30 +3854,35 @@ exports[`Home UIA Tree Dump Keyboard 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Keyboard", + "TextRangePattern.GetText": "Keyboard", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Demonstrates usage of the "Keyboard" static API", + "TextRangePattern.GetText": "Demonstrates usage of the "Keyboard" static API", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -3877,30 +4004,35 @@ exports[`Home UIA Tree Dump Keyboard 2`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Keyboard", + "TextRangePattern.GetText": "Keyboard", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Demonstrates usage of the "Keyboard" static API", + "TextRangePattern.GetText": "Demonstrates usage of the "Keyboard" static API", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -4022,30 +4154,35 @@ exports[`Home UIA Tree Dump Keyboard Focus Example 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Keyboard Focus Example", + "TextRangePattern.GetText": "Keyboard Focus Example", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Demo of keyboard focus.", + "TextRangePattern.GetText": "Demo of keyboard focus.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -4167,30 +4304,35 @@ exports[`Home UIA Tree Dump Keyboard extension Example 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Keyboard extension Example", + "TextRangePattern.GetText": "Keyboard extension Example", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Demo of keyboard properties.", + "TextRangePattern.GetText": "Demo of keyboard properties.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -4312,30 +4454,35 @@ exports[`Home UIA Tree Dump Layout - Flexbox 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Layout - Flexbox", + "TextRangePattern.GetText": "Layout - Flexbox", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Examples of using the flexbox API to layout views.", + "TextRangePattern.GetText": "Examples of using the flexbox API to layout views.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -4457,30 +4604,35 @@ exports[`Home UIA Tree Dump Layout Events 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Layout Events", + "TextRangePattern.GetText": "Layout Events", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Examples that show how Layout events can be used to measure view size and position.", + "TextRangePattern.GetText": "Examples that show how Layout events can be used to measure view size and position.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -4602,30 +4754,35 @@ exports[`Home UIA Tree Dump Legacy Native Module 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Legacy Native Module", + "TextRangePattern.GetText": "Legacy Native Module", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Usage of legacy Native Module", + "TextRangePattern.GetText": "Usage of legacy Native Module", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -4747,30 +4904,35 @@ exports[`Home UIA Tree Dump LegacyControlStyleTest 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "LegacyControlStyleTest", + "TextRangePattern.GetText": "LegacyControlStyleTest", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Legacy e2e test for Control Styles", + "TextRangePattern.GetText": "Legacy e2e test for Control Styles", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Other", + "TextRangePattern.GetText": "Other", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -4892,30 +5054,35 @@ exports[`Home UIA Tree Dump LegacyImageTest 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "LegacyImageTest", + "TextRangePattern.GetText": "LegacyImageTest", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Legacy e2e test for Image", + "TextRangePattern.GetText": "Legacy e2e test for Image", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Other", + "TextRangePattern.GetText": "Other", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -5037,30 +5204,35 @@ exports[`Home UIA Tree Dump LegacyLoginTest 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "LegacyLoginTest", + "TextRangePattern.GetText": "LegacyLoginTest", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Legacy e2e test for TextInput with password", + "TextRangePattern.GetText": "Legacy e2e test for TextInput with password", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Other", + "TextRangePattern.GetText": "Other", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -5182,30 +5354,35 @@ exports[`Home UIA Tree Dump LegacySelectableTextTest 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "LegacySelectableTextTest", + "TextRangePattern.GetText": "LegacySelectableTextTest", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Legacy e2e test for selectable Text hit testing", + "TextRangePattern.GetText": "Legacy e2e test for selectable Text hit testing", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Other", + "TextRangePattern.GetText": "Other", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -5327,30 +5504,35 @@ exports[`Home UIA Tree Dump LegacyTextHitTestTest 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "LegacyTextHitTestTest", + "TextRangePattern.GetText": "LegacyTextHitTestTest", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Legacy e2e test for Text hit testing", + "TextRangePattern.GetText": "Legacy e2e test for Text hit testing", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Other", + "TextRangePattern.GetText": "Other", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -5472,30 +5654,35 @@ exports[`Home UIA Tree Dump LegacyTextInputTest 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "LegacyTextInputTest", + "TextRangePattern.GetText": "LegacyTextInputTest", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Legacy e2e test for TextInput", + "TextRangePattern.GetText": "Legacy e2e test for TextInput", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Other", + "TextRangePattern.GetText": "Other", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -5617,30 +5804,35 @@ exports[`Home UIA Tree Dump Linking 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Linking", + "TextRangePattern.GetText": "Linking", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Shows how to use Linking to open URLs.", + "TextRangePattern.GetText": "Shows how to use Linking to open URLs.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -5762,30 +5954,35 @@ exports[`Home UIA Tree Dump Modal 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Modal", + "TextRangePattern.GetText": "Modal", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Component for presenting modal views.", + "TextRangePattern.GetText": "Component for presenting modal views.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -5907,30 +6104,35 @@ exports[`Home UIA Tree Dump Mouse Click Events 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Mouse Click Events", + "TextRangePattern.GetText": "Mouse Click Events", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Tests that mouse click events work on intended components", + "TextRangePattern.GetText": "Tests that mouse click events work on intended components", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -6052,30 +6254,35 @@ exports[`Home UIA Tree Dump Mouse Events 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Mouse Events", + "TextRangePattern.GetText": "Mouse Events", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Tests that mouse events can be observed", + "TextRangePattern.GetText": "Tests that mouse events can be observed", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -6197,30 +6404,35 @@ exports[`Home UIA Tree Dump Native Animated Example 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Native Animated Example", + "TextRangePattern.GetText": "Native Animated Example", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Test out Native Animations", + "TextRangePattern.GetText": "Test out Native Animations", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -6342,30 +6554,35 @@ exports[`Home UIA Tree Dump New App Screen 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "New App Screen", + "TextRangePattern.GetText": "New App Screen", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Displays the content of the new app screen", + "TextRangePattern.GetText": "Displays the content of the new app screen", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Other", + "TextRangePattern.GetText": "Other", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -6487,30 +6704,35 @@ exports[`Home UIA Tree Dump PanResponder Sample 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "PanResponder Sample", + "TextRangePattern.GetText": "PanResponder Sample", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Shows the Use of PanResponder to provide basic gesture handling", + "TextRangePattern.GetText": "Shows the Use of PanResponder to provide basic gesture handling", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -6632,30 +6854,35 @@ exports[`Home UIA Tree Dump Performance API Examples 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Performance API Examples", + "TextRangePattern.GetText": "Performance API Examples", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Shows the performance API provided in React Native", + "TextRangePattern.GetText": "Shows the performance API provided in React Native", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -6777,30 +7004,35 @@ exports[`Home UIA Tree Dump Performance Comparison Examples 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Performance Comparison Examples", + "TextRangePattern.GetText": "Performance Comparison Examples", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Compare performance with bad and good examples. Use React DevTools to highlight re-renders is recommended.", + "TextRangePattern.GetText": "Compare performance with bad and good examples. Use React DevTools to highlight re-renders is recommended.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -6922,30 +7154,35 @@ exports[`Home UIA Tree Dump PlatformColor 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "PlatformColor", + "TextRangePattern.GetText": "PlatformColor", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Examples that show how PlatformColors may be used in an app.", + "TextRangePattern.GetText": "Examples that show how PlatformColors may be used in an app.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -7067,30 +7304,35 @@ exports[`Home UIA Tree Dump Pointer Events 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pointer Events", + "TextRangePattern.GetText": "Pointer Events", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Demonstrates the use of the pointerEvents prop of a View to control how touches should be handled.", + "TextRangePattern.GetText": "Demonstrates the use of the pointerEvents prop of a View to control how touches should be handled.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -7212,30 +7454,35 @@ exports[`Home UIA Tree Dump Popup 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Popup", + "TextRangePattern.GetText": "Popup", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Displays content on top of existing content, within the bounds of the application window.", + "TextRangePattern.GetText": "Displays content on top of existing content, within the bounds of the application window.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -7357,30 +7604,35 @@ exports[`Home UIA Tree Dump Pressable 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressable", + "TextRangePattern.GetText": "Pressable", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Component for making views pressable.", + "TextRangePattern.GetText": "Component for making views pressable.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -7502,30 +7754,35 @@ exports[`Home UIA Tree Dump RTLExample 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "RTLExample", + "TextRangePattern.GetText": "RTLExample", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Examples to show how to apply components to RTL layout.", + "TextRangePattern.GetText": "Examples to show how to apply components to RTL layout.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -7647,30 +7904,35 @@ exports[`Home UIA Tree Dump ScrollView 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "ScrollView", + "TextRangePattern.GetText": "ScrollView", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Component that enables scrolling through child components", + "TextRangePattern.GetText": "Component that enables scrolling through child components", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -7792,30 +8054,35 @@ exports[`Home UIA Tree Dump ScrollViewAnimated 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "ScrollViewAnimated", + "TextRangePattern.GetText": "ScrollViewAnimated", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Component that is animated when ScrollView is offset.", + "TextRangePattern.GetText": "Component that is animated when ScrollView is offset.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -7937,30 +8204,35 @@ exports[`Home UIA Tree Dump ScrollViewSimpleExample 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "ScrollViewSimpleExample", + "TextRangePattern.GetText": "ScrollViewSimpleExample", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Component that enables scrolling through child components.", + "TextRangePattern.GetText": "Component that enables scrolling through child components.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -8077,6 +8349,7 @@ exports[`Home UIA Tree Dump Search Bar 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "Search...", + "TextRangePattern.GetText": "Search...", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -8191,30 +8464,35 @@ exports[`Home UIA Tree Dump SectionList 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "SectionList", + "TextRangePattern.GetText": "SectionList", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Performant, scrollable list of data.", + "TextRangePattern.GetText": "Performant, scrollable list of data.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "ListView", + "TextRangePattern.GetText": "ListView", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -8336,30 +8614,35 @@ exports[`Home UIA Tree Dump Share 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Share", + "TextRangePattern.GetText": "Share", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Share data with other Apps.", + "TextRangePattern.GetText": "Share data with other Apps.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Other", + "TextRangePattern.GetText": "Other", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -8481,30 +8764,35 @@ exports[`Home UIA Tree Dump SwipeableCard 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "SwipeableCard", + "TextRangePattern.GetText": "SwipeableCard", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Example of a swipeable card with scrollable content to test PanResponder and JSResponderHandler interaction.", + "TextRangePattern.GetText": "Example of a swipeable card with scrollable content to test PanResponder and JSResponderHandler interaction.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -8626,30 +8914,35 @@ exports[`Home UIA Tree Dump Switch 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Switch", + "TextRangePattern.GetText": "Switch", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Native boolean input", + "TextRangePattern.GetText": "Native boolean input", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -8771,30 +9064,35 @@ exports[`Home UIA Tree Dump Text 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Text", + "TextRangePattern.GetText": "Text", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Base component for rendering styled text.", + "TextRangePattern.GetText": "Base component for rendering styled text.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -8916,30 +9214,35 @@ exports[`Home UIA Tree Dump TextInput 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "TextInput", + "TextRangePattern.GetText": "TextInput", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Single and multi-line text inputs.", + "TextRangePattern.GetText": "Single and multi-line text inputs.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -9061,30 +9364,35 @@ exports[`Home UIA Tree Dump TextInputs with key prop 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "TextInputs with key prop", + "TextRangePattern.GetText": "TextInputs with key prop", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Periodically render large number of TextInputs with key prop without a Runtime Error", + "TextRangePattern.GetText": "Periodically render large number of TextInputs with key prop without a Runtime Error", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Other", + "TextRangePattern.GetText": "Other", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -9206,30 +9514,35 @@ exports[`Home UIA Tree Dump Timers 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Timers", + "TextRangePattern.GetText": "Timers", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "A demonstration of Timers in React Native.", + "TextRangePattern.GetText": "A demonstration of Timers in React Native.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -9351,30 +9664,35 @@ exports[`Home UIA Tree Dump Touchable* and onPress 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Touchable* and onPress", + "TextRangePattern.GetText": "Touchable* and onPress", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Touchable and onPress examples.", + "TextRangePattern.GetText": "Touchable and onPress examples.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -9496,30 +9814,35 @@ exports[`Home UIA Tree Dump TransferProperties 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "TransferProperties", + "TextRangePattern.GetText": "TransferProperties", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Some tests that change the backing XAML element to see if transfer properties is working.", + "TextRangePattern.GetText": "Some tests that change the backing XAML element to see if transfer properties is working.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -9641,30 +9964,35 @@ exports[`Home UIA Tree Dump Transforms 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Transforms", + "TextRangePattern.GetText": "Transforms", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "View transforms", + "TextRangePattern.GetText": "View transforms", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -9786,30 +10114,35 @@ exports[`Home UIA Tree Dump TransparentHitTestExample 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "TransparentHitTestExample", + "TextRangePattern.GetText": "TransparentHitTestExample", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Transparent view receiving touch events", + "TextRangePattern.GetText": "Transparent view receiving touch events", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -9931,30 +10264,35 @@ exports[`Home UIA Tree Dump TurboModule 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "TurboModule", + "TextRangePattern.GetText": "TurboModule", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Usage of TurboModule", + "TextRangePattern.GetText": "Usage of TurboModule", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -10076,30 +10414,35 @@ exports[`Home UIA Tree Dump View 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "View", + "TextRangePattern.GetText": "View", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic building block of all UI, examples that demonstrate some of the many styles available.", + "TextRangePattern.GetText": "Basic building block of all UI, examples that demonstrate some of the many styles available.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -10221,30 +10564,35 @@ exports[`Home UIA Tree Dump WebSocket 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "WebSocket", + "TextRangePattern.GetText": "WebSocket", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "WebSocket API", + "TextRangePattern.GetText": "WebSocket API", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -10366,30 +10714,35 @@ exports[`Home UIA Tree Dump XAML 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "XAML", + "TextRangePattern.GetText": "XAML", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Usage of react-native-xaml controls", + "TextRangePattern.GetText": "Usage of react-native-xaml controls", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "UI", + "TextRangePattern.GetText": "UI", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, @@ -10511,30 +10864,35 @@ exports[`Home UIA Tree Dump XMLHttpRequest 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "XMLHttpRequest", + "TextRangePattern.GetText": "XMLHttpRequest", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Example that demonstrates upload and download requests using XMLHttpRequest.", + "TextRangePattern.GetText": "Example that demonstrates upload and download requests using XMLHttpRequest.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Basic", + "TextRangePattern.GetText": "Basic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "iOS", + "TextRangePattern.GetText": "iOS", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Android", + "TextRangePattern.GetText": "Android", }, ], }, diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/LegacySelectableTextTest.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/LegacySelectableTextTest.test.ts.snap index ce6e3103926..c42747b7cf3 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/LegacySelectableTextTest.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/LegacySelectableTextTest.test.ts.snap @@ -7,6 +7,7 @@ exports[`LegacySelectableTextTest DoubleClickWhenNotSelectable 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressed: 2 times.", + "TextRangePattern.GetText": "Pressed: 2 times.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -30,6 +31,7 @@ exports[`LegacySelectableTextTest DoubleClickWhenSelectable 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressed: 2 times.", + "TextRangePattern.GetText": "Pressed: 2 times.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -53,6 +55,7 @@ exports[`LegacySelectableTextTest PressableWhenNotSelectable 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressed: 1 times.", + "TextRangePattern.GetText": "Pressed: 1 times.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -76,6 +79,7 @@ exports[`LegacySelectableTextTest PressableWhenSelectable 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressed: 1 times.", + "TextRangePattern.GetText": "Pressed: 1 times.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/LegacyTextHitTestTest.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/LegacyTextHitTestTest.test.ts.snap index 7e960e55cf3..7053c9e22c3 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/LegacyTextHitTestTest.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/LegacyTextHitTestTest.test.ts.snap @@ -7,6 +7,7 @@ exports[`LegacyTextHitTestTest BidirectionalTextPressable 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressed: 2 times.", + "TextRangePattern.GetText": "Pressed: 2 times.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -30,6 +31,7 @@ exports[`LegacyTextHitTestTest BidirectionalTextPressableEdgeCaseNotPressable 1` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressed: 1 times.", + "TextRangePattern.GetText": "Pressed: 1 times.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -53,6 +55,7 @@ exports[`LegacyTextHitTestTest BidirectionalTextSeparateRunsEdgeCasePressable 1` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressed: 1 times.", + "TextRangePattern.GetText": "Pressed: 1 times.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -76,6 +79,7 @@ exports[`LegacyTextHitTestTest BidirectionalTextSeparateRunsPressable 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressed: 2 times.", + "TextRangePattern.GetText": "Pressed: 2 times.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -99,6 +103,7 @@ exports[`LegacyTextHitTestTest InsertedVirtualTextPressable 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressed: 1 times.", + "TextRangePattern.GetText": "Pressed: 1 times.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -122,6 +127,7 @@ exports[`LegacyTextHitTestTest LTRTextInRTLFlowPressable 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressed: 1 times.", + "TextRangePattern.GetText": "Pressed: 1 times.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -145,6 +151,7 @@ exports[`LegacyTextHitTestTest MultilineRTLTextEdgeCaseNotPressable 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressed: 1 times.", + "TextRangePattern.GetText": "Pressed: 1 times.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -168,6 +175,7 @@ exports[`LegacyTextHitTestTest MultilineRTLTextPressable 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressed: 2 times.", + "TextRangePattern.GetText": "Pressed: 2 times.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -191,6 +199,7 @@ exports[`LegacyTextHitTestTest MultilineTextPressable 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressed: 1 times.", + "TextRangePattern.GetText": "Pressed: 1 times.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -214,6 +223,7 @@ exports[`LegacyTextHitTestTest RTLTextInRTLFlowPressable 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressed: 1 times.", + "TextRangePattern.GetText": "Pressed: 1 times.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -237,6 +247,7 @@ exports[`LegacyTextHitTestTest RTLTextPressable 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressed: 1 times.", + "TextRangePattern.GetText": "Pressed: 1 times.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -260,6 +271,7 @@ exports[`LegacyTextHitTestTest TextPressableWithVirtualText 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressed: 1 times.", + "TextRangePattern.GetText": "Pressed: 1 times.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -283,6 +295,7 @@ exports[`LegacyTextHitTestTest ToggleVirtualTextPressable 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressed: 1 times.", + "TextRangePattern.GetText": "Pressed: 1 times.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -306,6 +319,7 @@ exports[`LegacyTextHitTestTest VirtualTextPressable 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressed: 1 times.", + "TextRangePattern.GetText": "Pressed: 1 times.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -328,7 +342,8 @@ exports[`LegacyTextHitTestTest WrappedLTRInRTLFlowEdgeCaseNotPressable 1`] = ` "AutomationId": "pressed-state", "ControlType": 50020, "LocalizedControlType": "text", - "Name": "Pressed: 1 times.", + "Name": "Pressed: 0 times.", + "TextRangePattern.GetText": "Pressed: 0 times.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/LegacyTextInputTest.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/LegacyTextInputTest.test.ts.snap index c0322d06b38..f0208b453be 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/LegacyTextInputTest.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/LegacyTextInputTest.test.ts.snap @@ -7,6 +7,8 @@ exports[`LegacyTextInputTest Click on TextInput to focus 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "onFocus +", + "TextRangePattern.GetText": "onFocus ", }, "Component Tree": { @@ -32,6 +34,9 @@ exports[`LegacyTextInputTest Click on multiline TextInput to move focus away fro "LocalizedControlType": "text", "Name": "onBlur onFocus +", + "TextRangePattern.GetText": "onBlur +onFocus ", }, "Component Tree": { @@ -98,6 +103,50 @@ onKeyPress key: a onFocus onBlur onFocus +", + "TextRangePattern.GetText": "onChange text: a +onSelectionChange range: 1,1 +onKeyPress key: a +onChange text: +onSelectionChange range: 0,0 +onFocus +onBlur +onSubmitEditing text: abc +onChange text: abc +onSelectionChange range: 3,3 +onKeyPress key: c +onChange text: ab +onSelectionChange range: 2,2 +onKeyPress key: b +onChange text: a +onSelectionChange range: 1,1 +onKeyPress key: a +onChange text: +onSelectionChange range: 0,0 +onChange text: def +onSelectionChange range: 3,3 +onKeyPress key: f +onChange text: de +onSelectionChange range: 2,2 +onKeyPress key: e +onChange text: d +onSelectionChange range: 1,1 +onKeyPress key: d +onChange text: +onSelectionChange range: 0,0 +onChange text: abc +onSelectionChange range: 3,3 +onKeyPress key: c +onChange text: ab +onSelectionChange range: 2,2 +onKeyPress key: b +onChange text: a +onChange text: a +onSelectionChange range: 1,1 +onKeyPress key: a +onFocus +onBlur +onFocus ", }, "Component Tree": { @@ -109,7 +158,7 @@ onFocus "Visual Tree": { "Comment": "textinput-log", "Offset": "0, 0, 0", - "Size": "998, 820", + "Size": "998, 616", "Visual Type": "SpriteVisual", }, } @@ -134,6 +183,20 @@ onKeyPress key: a onFocus onBlur onFocus +", + "TextRangePattern.GetText": "onChange text: abc +onSelectionChange range: 3,3 +onKeyPress key: c +onChange text: ab +onSelectionChange range: 2,2 +onKeyPress key: b +onChange text: a +onChange text: a +onSelectionChange range: 1,1 +onKeyPress key: a +onFocus +onBlur +onFocus ", }, "Component Tree": { @@ -193,6 +256,43 @@ onKeyPress key: a onFocus onBlur onFocus +", + "TextRangePattern.GetText": "onSubmitEditing text: abc +onChange text: abc +onSelectionChange range: 3,3 +onKeyPress key: c +onChange text: ab +onSelectionChange range: 2,2 +onKeyPress key: b +onChange text: a +onSelectionChange range: 1,1 +onKeyPress key: a +onChange text: +onSelectionChange range: 0,0 +onChange text: def +onSelectionChange range: 3,3 +onKeyPress key: f +onChange text: de +onSelectionChange range: 2,2 +onKeyPress key: e +onChange text: d +onSelectionChange range: 1,1 +onKeyPress key: d +onChange text: +onSelectionChange range: 0,0 +onChange text: abc +onSelectionChange range: 3,3 +onKeyPress key: c +onChange text: ab +onSelectionChange range: 2,2 +onKeyPress key: b +onChange text: a +onChange text: a +onSelectionChange range: 1,1 +onKeyPress key: a +onFocus +onBlur +onFocus ", }, "Component Tree": { @@ -204,7 +304,7 @@ onFocus "Visual Tree": { "Comment": "textinput-log", "Offset": "0, 0, 0", - "Size": "998, 690", + "Size": "998, 616", "Visual Type": "SpriteVisual", }, } diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/PressableComponentTest.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/PressableComponentTest.test.ts.snap index cc6cccbd4fb..a1b66b73e0e 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/PressableComponentTest.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/PressableComponentTest.test.ts.snap @@ -13,6 +13,7 @@ exports[`Pressable Tests Pressables can be disabled, disabled = {false} 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Enabled Pressable", + "TextRangePattern.GetText": "Enabled Pressable", }, ], }, @@ -65,6 +66,7 @@ exports[`Pressable Tests Pressables can be disabled, disabled = {true} 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Disabled Pressable", + "TextRangePattern.GetText": "Disabled Pressable", }, ], }, @@ -119,6 +121,7 @@ exports[`Pressable Tests Pressables can change style when pressed 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Press Me", + "TextRangePattern.GetText": "Press Me", }, ], }, @@ -168,6 +171,7 @@ exports[`Pressable Tests Pressables can change text on press/rest, state rest 1` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Press Me", + "TextRangePattern.GetText": "Press Me", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -191,6 +195,7 @@ exports[`Pressable Tests Pressables can change text on press/rest, state rest 2` "ControlType": 50020, "LocalizedControlType": "text", "Name": "onPress", + "TextRangePattern.GetText": "onPress", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -220,6 +225,7 @@ exports[`Pressable Tests Pressables can have advanced borders 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Press Outside This View", + "TextRangePattern.GetText": "Press Outside This View", }, ], }, @@ -275,6 +281,7 @@ exports[`Pressable Tests Pressables can have delayed event handlers 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Press Me", + "TextRangePattern.GetText": "Press Me", }, ], }, @@ -325,12 +332,14 @@ exports[`Pressable Tests Pressables can have delayed event handlers 2`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "pressOut", + "TextRangePattern.GetText": "pressOut", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "pressIn", + "TextRangePattern.GetText": "pressIn", }, ], }, @@ -443,6 +452,7 @@ exports[`Pressable Tests Pressables can have event handlers 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Press Me", + "TextRangePattern.GetText": "Press Me", }, ], }, @@ -494,24 +504,28 @@ exports[`Pressable Tests Pressables can have event handlers 2`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "pressOut", + "TextRangePattern.GetText": "pressOut", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "press", + "TextRangePattern.GetText": "press", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "pressIn", + "TextRangePattern.GetText": "pressIn", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "hover in", + "TextRangePattern.GetText": "hover in", }, ], }, @@ -655,6 +669,7 @@ exports[`Pressable Tests Pressables can have hit slop functionality 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Press Outside This View", + "TextRangePattern.GetText": "Press Outside This View", }, ], }, @@ -1059,6 +1074,7 @@ exports[`Pressable Tests Pressables can have their accessibility and keyboard fo "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressable with accessible=true and focusable=true", + "TextRangePattern.GetText": "Pressable with accessible=true and focusable=true", }, ], }, @@ -1067,6 +1083,7 @@ exports[`Pressable Tests Pressables can have their accessibility and keyboard fo "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressable with accessible=false", + "TextRangePattern.GetText": "Pressable with accessible=false", }, { "AutomationId": "", @@ -1078,6 +1095,7 @@ exports[`Pressable Tests Pressables can have their accessibility and keyboard fo "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressable with focusable=false", + "TextRangePattern.GetText": "Pressable with focusable=false", }, ], }, @@ -1086,6 +1104,7 @@ exports[`Pressable Tests Pressables can have their accessibility and keyboard fo "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressable with accessible=false and focusable=false", + "TextRangePattern.GetText": "Pressable with accessible=false and focusable=false", }, ], }, @@ -1265,6 +1284,7 @@ exports[`Pressable Tests Pressables can have tooltips 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Pressable with ToolTip "Pressable"", + "TextRangePattern.GetText": "Pressable with ToolTip "Pressable"", }, ], }, @@ -1315,6 +1335,7 @@ exports[`Pressable Tests Pressables can hide their backface 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "View #1, front is visible, back is hidden.", + "TextRangePattern.GetText": "View #1, front is visible, back is hidden.", }, { "AutomationId": "", @@ -1327,6 +1348,7 @@ exports[`Pressable Tests Pressables can hide their backface 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Front", + "TextRangePattern.GetText": "Front", }, ], }, @@ -1341,6 +1363,7 @@ exports[`Pressable Tests Pressables can hide their backface 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Back (You should not see this)", + "TextRangePattern.GetText": "Back (You should not see this)", }, ], }, @@ -1349,6 +1372,7 @@ exports[`Pressable Tests Pressables can hide their backface 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "View #2, front is hidden, back is visible.", + "TextRangePattern.GetText": "View #2, front is hidden, back is visible.", }, { "AutomationId": "", @@ -1361,6 +1385,7 @@ exports[`Pressable Tests Pressables can hide their backface 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Front (You should not see this)", + "TextRangePattern.GetText": "Front (You should not see this)", }, ], }, @@ -1375,6 +1400,7 @@ exports[`Pressable Tests Pressables can hide their backface 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Back", + "TextRangePattern.GetText": "Back", }, ], }, @@ -1598,6 +1624,7 @@ exports[`Pressable Tests Text can have pressable behavior 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Text has built-in onPress handling", + "TextRangePattern.GetText": "Text has built-in onPress handling", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -1621,6 +1648,7 @@ exports[`Pressable Tests Text can have pressable behavior 2`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "2x text onPress", + "TextRangePattern.GetText": "2x text onPress", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/ScrollViewComponentTest.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/ScrollViewComponentTest.test.ts.snap index a7ba4d2a645..f3bb0cfe118 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/ScrollViewComponentTest.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/ScrollViewComponentTest.test.ts.snap @@ -13,6 +13,7 @@ exports[`ScrollView Tests ScrollView has scrollTo method, scroll to bottom butto "ControlType": 50020, "LocalizedControlType": "text", "Name": "Scroll to bottom", + "TextRangePattern.GetText": "Scroll to bottom", }, ], }, @@ -68,6 +69,7 @@ exports[`ScrollView Tests ScrollView has scrollTo method, scroll to end button 1 "ControlType": 50020, "LocalizedControlType": "text", "Name": "Scroll to end", + "TextRangePattern.GetText": "Scroll to end", }, ], }, @@ -123,6 +125,7 @@ exports[`ScrollView Tests ScrollView has scrollTo method, scroll to start button "ControlType": 50020, "LocalizedControlType": "text", "Name": "Scroll to start", + "TextRangePattern.GetText": "Scroll to start", }, ], }, @@ -178,6 +181,7 @@ exports[`ScrollView Tests ScrollView has scrollTo method, scroll to top button 1 "ControlType": 50020, "LocalizedControlType": "text", "Name": "Scroll to top", + "TextRangePattern.GetText": "Scroll to top", }, ], }, @@ -233,6 +237,7 @@ exports[`ScrollView Tests ScrollViews has flash scroll indicators 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Flash scroll indicators", + "TextRangePattern.GetText": "Flash scroll indicators", }, ], }, diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/TextComponentTest.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/TextComponentTest.test.ts.snap index a4705382ab9..ac66934effe 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/TextComponentTest.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/TextComponentTest.test.ts.snap @@ -7,6 +7,7 @@ exports[`Text Tests Padding can be added to Text 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "This text is indented by 10px padding on all sides.", + "TextRangePattern.GetText": "This text is indented by 10px padding on all sides.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -17,7 +18,7 @@ exports[`Text Tests Padding can be added to Text 1`] = ` "Visual Tree": { "Comment": "text-padding", "Offset": "0, 0, 0", - "Size": "834, 39", + "Size": "834, 40", "Visual Type": "SpriteVisual", }, } @@ -30,6 +31,7 @@ exports[`Text Tests Text can be restricted to one line 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Maximum of one line no matter now much I write here. If I keep writing it'll just truncate after one line. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed dapibus felis eget augue condimentum suscipit. Suspendisse hendrerit, libero aliquet malesuada tempor, urna nibh consectetur tellus, vitae efficitur quam erat non mi. Maecenas vitae eros sit amet quam vestibulum porta sed sit amet tellus. Fusce quis lectus congue, fringilla arcu id, luctus urna. Cras sagittis ornare mauris sit amet dictum. Vestibulum feugiat laoreet fringilla. Vivamus ac diam vehicula felis venenatis sagittis vitae ultrices elit. Curabitur libero augue, laoreet quis orci vitae, congue euismod massa. Aenean nec odio sed urna vehicula fermentum non a magna. Quisque ut commodo neque, eget eleifend odio. Sed sit amet lacinia sem. Suspendisse in metus in purus scelerisque vestibulum. Nam metus dui, efficitur nec metus non, tincidunt pharetra sapien. Praesent id convallis metus, ut malesuada arcu. Quisque quam libero, pharetra eu tellus ac, aliquam fringilla erat. Quisque tempus in lorem ac suscipit.", + "TextRangePattern.GetText": "Maximum of one line no matter now much I write here. If I keep writing it'll just truncate after one line. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed dapibus felis eget augue condimentum suscipit. Suspendisse hendrerit, libero aliquet malesuada tempor, urna nibh consectetur tellus, vitae efficitur quam erat non mi. Maecenas vitae eros sit amet quam vestibulum porta sed sit amet tellus. Fusce quis lectus congue, fringilla arcu id, luctus urna. Cras sagittis ornare mauris sit amet dictum. Vestibulum feugiat laoreet fringilla. Vivamus ac diam vehicula felis venenatis sagittis vitae ultrices elit. Curabitur libero augue, laoreet quis orci vitae, congue euismod massa. Aenean nec odio sed urna vehicula fermentum non a magna. Quisque ut commodo neque, eget eleifend odio. Sed sit amet lacinia sem. Suspendisse in metus in purus scelerisque vestibulum. Nam metus dui, efficitur nec metus non, tincidunt pharetra sapien. Praesent id convallis metus, ut malesuada arcu. Quisque quam libero, pharetra eu tellus ac, aliquam fringilla erat. Quisque tempus in lorem ac suscipit.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -40,7 +42,7 @@ exports[`Text Tests Text can be restricted to one line 1`] = ` "Visual Tree": { "Comment": "text-one-line", "Offset": "0, 0, 0", - "Size": "834, 19", + "Size": "834, 20", "Visual Type": "SpriteVisual", }, } @@ -53,6 +55,7 @@ exports[`Text Tests Text can be selectable 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "This text is selectable if you click-and-hold, and will offer the native Android selection menus.", + "TextRangePattern.GetText": "This text is selectable if you click-and-hold, and will offer the native Android selection menus.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -63,7 +66,7 @@ exports[`Text Tests Text can be selectable 1`] = ` "Visual Tree": { "Comment": "text-selectable", "Offset": "0, 0, 0", - "Size": "834, 20", + "Size": "834, 19", "Visual Type": "SpriteVisual", }, } @@ -76,6 +79,7 @@ exports[`Text Tests Text can have a color 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Red color", + "TextRangePattern.GetText": "Red color", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -86,7 +90,7 @@ exports[`Text Tests Text can have a color 1`] = ` "Visual Tree": { "Comment": "text-color", "Offset": "0, 0, 0", - "Size": "834, 20", + "Size": "834, 19", "Visual Type": "SpriteVisual", }, } @@ -99,6 +103,7 @@ exports[`Text Tests Text can have a customized selection color 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "This text will have a orange highlight on selection.", + "TextRangePattern.GetText": "This text will have a orange highlight on selection.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -109,7 +114,7 @@ exports[`Text Tests Text can have a customized selection color 1`] = ` "Visual Tree": { "Comment": "text-selection-color", "Offset": "0, 0, 0", - "Size": "834, 19", + "Size": "834, 20", "Visual Type": "SpriteVisual", }, } @@ -122,6 +127,7 @@ exports[`Text Tests Text can have a size 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Size 23", + "TextRangePattern.GetText": "Size 23", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -132,7 +138,7 @@ exports[`Text Tests Text can have a size 1`] = ` "Visual Tree": { "Comment": "text-size", "Offset": "0, 0, 0", - "Size": "834, 32", + "Size": "834, 31", "Visual Type": "SpriteVisual", }, } @@ -145,6 +151,7 @@ exports[`Text Tests Text can have an outer color 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "(Normal text,(R)red(G)green(B)blue(C)cyan(M)magenta(Y)yellow(K)black(and bold(and tiny bold italic blue(and tiny normal blue))))", + "TextRangePattern.GetText": "(Normal text,(R)red(G)green(B)blue(C)cyan(M)magenta(Y)yellow(K)black(and bold(and tiny bold italic blue(and tiny normal blue))))", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -155,7 +162,7 @@ exports[`Text Tests Text can have an outer color 1`] = ` "Visual Tree": { "Comment": "text-outer-color", "Offset": "0, 0, 0", - "Size": "834, 20", + "Size": "834, 19", "Visual Type": "SpriteVisual", }, } @@ -168,6 +175,7 @@ exports[`Text Tests Text can have decoration lines: Solid Line Through 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Solid line-through", + "TextRangePattern.GetText": "Solid line-through", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -191,6 +199,7 @@ exports[`Text Tests Text can have decoration lines: Underline 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Solid underline", + "TextRangePattern.GetText": "Solid underline", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -201,7 +210,7 @@ exports[`Text Tests Text can have decoration lines: Underline 1`] = ` "Visual Tree": { "Comment": "text-decoration-underline", "Offset": "0, 0, 0", - "Size": "834, 20", + "Size": "834, 19", "Visual Type": "SpriteVisual", }, } @@ -214,6 +223,7 @@ exports[`Text Tests Text can have shadows 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Demo text shadow", + "TextRangePattern.GetText": "Demo text shadow", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -224,7 +234,7 @@ exports[`Text Tests Text can have shadows 1`] = ` "Visual Tree": { "Comment": "text-shadow", "Offset": "0, 0, 0", - "Size": "834, 27", + "Size": "834, 28", "Visual Type": "SpriteVisual", }, } @@ -237,6 +247,7 @@ exports[`Text Tests Text can wrap 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "The text should wrap if it goes on multiple lines. See, this is going to the next line. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed dapibus felis eget augue condimentum suscipit. Suspendisse hendrerit, libero aliquet malesuada tempor, urna nibh consectetur tellus, vitae efficitur quam erat non mi. Maecenas vitae eros sit amet quam vestibulum porta sed sit amet tellus. Fusce quis lectus congue, fringilla arcu id, luctus urna. Cras sagittis ornare mauris sit amet dictum. Vestibulum feugiat laoreet fringilla. Vivamus ac diam vehicula felis venenatis sagittis vitae ultrices elit. Curabitur libero augue, laoreet quis orci vitae, congue euismod massa. Aenean nec odio sed urna vehicula fermentum non a magna. Quisque ut commodo neque, eget eleifend odio. Sed sit amet lacinia sem. Suspendisse in metus in purus scelerisque vestibulum. Nam metus dui, efficitur nec metus non, tincidunt pharetra sapien. Praesent id convallis metus, ut malesuada arcu. Quisque quam libero, pharetra eu tellus ac, aliquam fringilla erat. Quisque tempus in lorem ac suscipit.", + "TextRangePattern.GetText": "The text should wrap if it goes on multiple lines. See, this is going to the next line. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed dapibus felis eget augue condimentum suscipit. Suspendisse hendrerit, libero aliquet malesuada tempor, urna nibh consectetur tellus, vitae efficitur quam erat non mi. Maecenas vitae eros sit amet quam vestibulum porta sed sit amet tellus. Fusce quis lectus congue, fringilla arcu id, luctus urna. Cras sagittis ornare mauris sit amet dictum. Vestibulum feugiat laoreet fringilla. Vivamus ac diam vehicula felis venenatis sagittis vitae ultrices elit. Curabitur libero augue, laoreet quis orci vitae, congue euismod massa. Aenean nec odio sed urna vehicula fermentum non a magna. Quisque ut commodo neque, eget eleifend odio. Sed sit amet lacinia sem. Suspendisse in metus in purus scelerisque vestibulum. Nam metus dui, efficitur nec metus non, tincidunt pharetra sapien. Praesent id convallis metus, ut malesuada arcu. Quisque quam libero, pharetra eu tellus ac, aliquam fringilla erat. Quisque tempus in lorem ac suscipit.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/TextInputComponentTest.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/TextInputComponentTest.test.ts.snap index 72173d3a1c2..7ed479a2935 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/TextInputComponentTest.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/TextInputComponentTest.test.ts.snap @@ -7,6 +7,8 @@ exports[`TextInput Tests Multi-line TextInputs can enable text selection (Impera "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "multiline text selection +can also be changed imperatively", "ValuePattern.Value": "multiline text selection can also be changed imperatively", }, @@ -84,6 +86,8 @@ exports[`TextInput Tests Multi-line TextInputs can enable text selection 1`] = ` "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "multiline text selection +can also be changed", "ValuePattern.Value": "multiline text selection can also be changed", }, @@ -161,6 +165,7 @@ exports[`TextInput Tests Single-line TextInputs can enable text selection (Imper "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "text selection can be changed imperatively", "ValuePattern.Value": "text selection can be changed imperatively", }, "Component Tree": { @@ -237,6 +242,7 @@ exports[`TextInput Tests Single-line TextInputs can enable text selection 1`] = "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "text selection can be changed", "ValuePattern.Value": "text selection can be changed", }, "Component Tree": { @@ -315,6 +321,7 @@ exports[`TextInput Tests Text have cursorColor 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "cursorColor={"green"}", + "TextRangePattern.GetText": "Hello World", "ValuePattern.Value": "Hello World", }, "Component Tree": { @@ -503,6 +510,7 @@ exports[`TextInput Tests TextInputs can autocomplete, address country 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "postal-address-country", + "TextRangePattern.GetText": "postal-address-country", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -580,6 +588,7 @@ exports[`TextInput Tests TextInputs can autocomplete, country 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "country", + "TextRangePattern.GetText": "country", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -657,6 +666,7 @@ exports[`TextInput Tests TextInputs can autocomplete, one-time-code 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "one-time-code", + "TextRangePattern.GetText": "one-time-code", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -734,6 +744,7 @@ exports[`TextInput Tests TextInputs can autocomplete, sms-otp 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "sms-otp", + "TextRangePattern.GetText": "sms-otp", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -809,6 +820,7 @@ exports[`TextInput Tests TextInputs can autogrow 1`] = ` "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "small small small small small small", "ValuePattern.Value": "small small small small small small", }, "Component Tree": { @@ -847,6 +859,7 @@ exports[`TextInput Tests TextInputs can be editable 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "editable text input using editable prop", + "TextRangePattern.GetText": "editable text input using editable prop", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -922,6 +935,7 @@ exports[`TextInput Tests TextInputs can be multiline, bottomright alignment 1`] "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "multiline with children, aligned bottom-right", "ValuePattern.Value": "multiline with children, aligned bottom-right", }, "Component Tree": { @@ -960,6 +974,7 @@ exports[`TextInput Tests TextInputs can be multiline, center alignment 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "multiline, aligned center", + "TextRangePattern.GetText": "multiline, aligned center", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -997,6 +1012,7 @@ exports[`TextInput Tests TextInputs can be multiline, topleft alignment 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "multiline, aligned top-left", + "TextRangePattern.GetText": "multiline, aligned top-left", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -1032,6 +1048,7 @@ exports[`TextInput Tests TextInputs can be set to not editable 1`] = ` "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "Can't touch this! (>'-')> ^(' - ')^ <('-'<) (>'-')> ^(' - ')^", "ValuePattern.Value": "Can't touch this! (>'-')> ^(' - ')^ <('-'<) (>'-')> ^(' - ')^", }, "Component Tree": { @@ -1070,6 +1087,7 @@ exports[`TextInput Tests TextInputs can be set to not editable 2 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "uneditable text input using editable prop", + "TextRangePattern.GetText": "uneditable text input using editable prop", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -1287,6 +1305,7 @@ exports[`TextInput Tests TextInputs can enable spellcheck 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "Type text to test spell check functionality.", + "TextRangePattern.GetText": "Type text to test spell check functionality.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -1322,6 +1341,7 @@ exports[`TextInput Tests TextInputs can have a background color 1`] = ` "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "He", "ValuePattern.Value": "He", }, "Component Tree": { @@ -1398,6 +1418,7 @@ exports[`TextInput Tests TextInputs can have a color 1`] = ` "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "He", "ValuePattern.Value": "He", }, "Component Tree": { @@ -1474,6 +1495,7 @@ exports[`TextInput Tests TextInputs can have a font family 1`] = ` "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "He", "ValuePattern.Value": "He", }, "Component Tree": { @@ -1550,6 +1572,7 @@ exports[`TextInput Tests TextInputs can have a font size 1`] = ` "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "He", "ValuePattern.Value": "He", }, "Component Tree": { @@ -1626,6 +1649,7 @@ exports[`TextInput Tests TextInputs can have a font style 1`] = ` "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "He", "ValuePattern.Value": "He", }, "Component Tree": { @@ -1702,6 +1726,7 @@ exports[`TextInput Tests TextInputs can have a font weight 1`] = ` "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "He", "ValuePattern.Value": "He", }, "Component Tree": { @@ -1778,6 +1803,7 @@ exports[`TextInput Tests TextInputs can have attributed text 1`] = ` "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "Hello", "ValuePattern.Value": "Hello", }, "Component Tree": { @@ -1856,6 +1882,7 @@ exports[`TextInput Tests TextInputs can have caretHidden 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "caretHidden={true}", + "TextRangePattern.GetText": "Hello World", "ValuePattern.Value": "Hello World", }, "Component Tree": { @@ -1894,6 +1921,7 @@ exports[`TextInput Tests TextInputs can have custom return key label, Compile 1` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "returnKeyLabel: Compile", + "TextRangePattern.GetText": "returnKeyLabel: Compile", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -1931,6 +1959,7 @@ exports[`TextInput Tests TextInputs can have custom return key label, React Nati "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "returnKeyLabel: React Native", + "TextRangePattern.GetText": "returnKeyLabel: React Native", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -1968,6 +1997,7 @@ exports[`TextInput Tests TextInputs can have custom return key type, done 1`] = "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "returnKeyType: done", + "TextRangePattern.GetText": "returnKeyType: done", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -2005,6 +2035,7 @@ exports[`TextInput Tests TextInputs can have custom return key type, go 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "returnKeyType: go", + "TextRangePattern.GetText": "returnKeyType: go", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -2042,6 +2073,7 @@ exports[`TextInput Tests TextInputs can have custom return key type, next 1`] = "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "returnKeyType: next", + "TextRangePattern.GetText": "returnKeyType: next", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -2079,6 +2111,7 @@ exports[`TextInput Tests TextInputs can have custom return key type, none 1`] = "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "returnKeyType: none", + "TextRangePattern.GetText": "returnKeyType: none", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -2116,6 +2149,7 @@ exports[`TextInput Tests TextInputs can have custom return key type, previous 1` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "returnKeyType: previous", + "TextRangePattern.GetText": "returnKeyType: previous", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -2153,6 +2187,7 @@ exports[`TextInput Tests TextInputs can have custom return key type, search 1`] "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "returnKeyType: search", + "TextRangePattern.GetText": "returnKeyType: search", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -2190,6 +2225,7 @@ exports[`TextInput Tests TextInputs can have custom return key type, send 1`] = "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "returnKeyType: send", + "TextRangePattern.GetText": "returnKeyType: send", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -2227,6 +2263,7 @@ exports[`TextInput Tests TextInputs can have customer letter spacing, spacing=-1 "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "letterSpacing = -1", + "TextRangePattern.GetText": "letterSpacing = -1", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -2264,6 +2301,7 @@ exports[`TextInput Tests TextInputs can have customer letter spacing, spacing=0 "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "letterSpacing = 0", + "TextRangePattern.GetText": "letterSpacing = 0", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -2301,6 +2339,7 @@ exports[`TextInput Tests TextInputs can have customer letter spacing, spacing=2 "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "letterSpacing = 2", + "TextRangePattern.GetText": "letterSpacing = 2", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -2338,6 +2377,7 @@ exports[`TextInput Tests TextInputs can have customer letter spacing, spacing=9 "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "letterSpacing = 9", + "TextRangePattern.GetText": "letterSpacing = 9", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -2469,6 +2509,7 @@ exports[`TextInput Tests TextInputs can have customized letter spacing 1`] = ` "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "He", "ValuePattern.Value": "He", }, "Component Tree": { @@ -2545,6 +2586,7 @@ exports[`TextInput Tests TextInputs can have customized line height 1`] = ` "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "Hel", "ValuePattern.Value": "Hel", }, "Component Tree": { @@ -2623,6 +2665,7 @@ exports[`TextInput Tests TextInputs can have inline images 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "This has drawableLeft set", + "TextRangePattern.GetText": "This has drawableLeft set", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -2660,6 +2703,7 @@ exports[`TextInput Tests TextInputs can have inline images, drawable props not s "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "This does not have drawable props set", + "TextRangePattern.GetText": "This does not have drawable props set", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -2697,6 +2741,7 @@ exports[`TextInput Tests TextInputs can have inline images, drawableLeft and dra "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "This has drawableLeft and drawablePadding set", + "TextRangePattern.GetText": "This has drawableLeft and drawablePadding set", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -2734,6 +2779,7 @@ exports[`TextInput Tests TextInputs can have shadows 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "shadowColor: purple", + "TextRangePattern.GetText": "shadowColor: purple", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -2769,6 +2815,7 @@ exports[`TextInput Tests TextInputs can have text decoration lines 1`] = ` "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "He", "ValuePattern.Value": "He", }, "Component Tree": { @@ -2845,6 +2892,7 @@ exports[`TextInput Tests TextInputs can have text shadows 1`] = ` "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "He", "ValuePattern.Value": "He", }, "Component Tree": { @@ -2923,6 +2971,7 @@ exports[`TextInput Tests TextInputs can propagate events 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "Click inside the box to observe events being fired.", + "TextRangePattern.GetText": "Click inside the box to observe events being fired.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -2960,6 +3009,7 @@ exports[`TextInput Tests TextInputs can register press events 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "Click inside the box to observe events being fired.", + "TextRangePattern.GetText": "Click inside the box to observe events being fired.", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -3222,6 +3272,7 @@ exports[`TextInput Tests TextInputs can set their readOnly prop to false 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "editable text input using readOnly prop", + "TextRangePattern.GetText": "editable text input using readOnly prop", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -3299,6 +3350,7 @@ exports[`TextInput Tests TextInputs can set their readOnly prop to true 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "uneditable text input using readOnly prop", + "TextRangePattern.GetText": "uneditable text input using readOnly prop", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -3409,6 +3461,7 @@ exports[`TextInput Tests TextInputs have a custom background color 1`] = ` "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "Same BackgroundColor as View ", "ValuePattern.Value": "Same BackgroundColor as View ", }, "Component Tree": { @@ -3445,6 +3498,7 @@ exports[`TextInput Tests TextInputs have a custom highlight color 1`] = ` "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "Selection Color is red", "ValuePattern.Value": "Selection Color is red", }, "Component Tree": { @@ -3483,6 +3537,7 @@ exports[`TextInput Tests TextInputs have a custom placeholder text color 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "Red placeholder text color", + "TextRangePattern.GetText": "Red placeholder text color", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -3518,6 +3573,7 @@ exports[`TextInput Tests TextInputs have a custom text color 1`] = ` "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "Green Text", "ValuePattern.Value": "Green Text", }, "Component Tree": { @@ -3556,6 +3612,7 @@ exports[`TextInput Tests TextInputs have a custom underline color 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "Blue underline color", + "TextRangePattern.GetText": "Blue underline color", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -3593,6 +3650,7 @@ exports[`TextInput Tests TextInputs have a default placeholder text color 1`] = "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "Default placeholder text color", + "TextRangePattern.GetText": "Default placeholder text color", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -3628,6 +3686,7 @@ exports[`TextInput Tests TextInputs have a default text color 1`] = ` "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "Default color text", "ValuePattern.Value": "Default color text", }, "Component Tree": { @@ -3666,6 +3725,7 @@ exports[`TextInput Tests TextInputs have a default underline color 1`] = ` "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "Default underline color", + "TextRangePattern.GetText": "Default underline color", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -3701,6 +3761,7 @@ exports[`TextInput Tests TextInputs support secure entry 1`] = ` "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "iloveturtles", "ValuePattern.Value": "iloveturtles", }, "Component Tree": { @@ -3739,6 +3800,7 @@ exports[`TextInput Tests TextInputs support secure entry, with placeholder text "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "color is supported too", + "TextRangePattern.GetText": "color is supported too", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -3776,6 +3838,7 @@ exports[`TextInput Tests TextInputs with set height and padding from theme 1`] = "IsKeyboardFocusable": true, "LocalizedControlType": "edit", "Name": "If you set height, beware of padding set from themes", + "TextRangePattern.GetText": "If you set height, beware of padding set from themes", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.WindowsTextInputComponentView", @@ -3811,6 +3874,7 @@ exports[`TextInput Tests Uncontrolled TextInput 1`] = ` "ControlType": 50004, "IsKeyboardFocusable": true, "LocalizedControlType": "edit", + "TextRangePattern.GetText": "Hello World!", "ValuePattern.Value": "Hello World!", }, "Component Tree": { diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/TouchableComponentTest.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/TouchableComponentTest.test.ts.snap index 34526e4305c..6f0bff23477 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/TouchableComponentTest.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/TouchableComponentTest.test.ts.snap @@ -7,6 +7,7 @@ exports[`Touchable Tests Text components can be tappable 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Text has built-in onPress handling", + "TextRangePattern.GetText": "Text has built-in onPress handling", }, "Component Tree": { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -36,6 +37,7 @@ exports[`Touchable Tests TouchableWithoutFeedback components should not give vis "ControlType": 50020, "LocalizedControlType": "text", "Name": "Tap Here For No Feedback!", + "TextRangePattern.GetText": "Tap Here For No Feedback!", }, ], }, @@ -87,6 +89,7 @@ exports[`Touchable Tests Touchables can contain a Text component 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Tap Here For Custom Highlight!", + "TextRangePattern.GetText": "Tap Here For Custom Highlight!", }, ], }, @@ -188,6 +191,7 @@ exports[`Touchable Tests Touchables can delay events 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Press Me", + "TextRangePattern.GetText": "Press Me", }, ], }, @@ -239,6 +243,7 @@ exports[`Touchable Tests Touchables can enable a hit slop region 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Press Outside This View", + "TextRangePattern.GetText": "Press Outside This View", }, ], }, @@ -295,6 +300,7 @@ exports[`Touchable Tests Touchables can register feedback events 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Press Me", + "TextRangePattern.GetText": "Press Me", }, ], }, diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/ViewComponentTest.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/ViewComponentTest.test.ts.snap index 6e7c1fec89f..e05ea882571 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/ViewComponentTest.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/ViewComponentTest.test.ts.snap @@ -41,6 +41,7 @@ exports[`View Tests Views can have a nativeid 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "A View with a nativeID "native-id-view"", + "TextRangePattern.GetText": "A View with a nativeID "native-id-view"", }, ], }, @@ -93,30 +94,35 @@ exports[`View Tests Views can have a z-index 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "ZIndex -1", + "TextRangePattern.GetText": "ZIndex -1", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Tap to flip sorting order", + "TextRangePattern.GetText": "Tap to flip sorting order", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "ZIndex 0", + "TextRangePattern.GetText": "ZIndex 0", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "ZIndex 1", + "TextRangePattern.GetText": "ZIndex 1", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "ZIndex 2", + "TextRangePattern.GetText": "ZIndex 2", }, ], }, @@ -328,6 +334,7 @@ exports[`View Tests Views can have aria-labels 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Blue background", + "TextRangePattern.GetText": "Blue background", }, ], }, @@ -384,36 +391,42 @@ exports[`View Tests Views can have backface visibility 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "View #1, front is visible, back is hidden.", + "TextRangePattern.GetText": "View #1, front is visible, back is hidden.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Front", + "TextRangePattern.GetText": "Front", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Back (You should not see this)", + "TextRangePattern.GetText": "Back (You should not see this)", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "View #2, front is hidden, back is visible.", + "TextRangePattern.GetText": "View #2, front is hidden, back is visible.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Front (You should not see this)", + "TextRangePattern.GetText": "Front (You should not see this)", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Back", + "TextRangePattern.GetText": "Back", }, ], }, @@ -630,6 +643,7 @@ exports[`View Tests Views can have background color 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Blue background", + "TextRangePattern.GetText": "Blue background", }, ], }, @@ -686,12 +700,14 @@ exports[`View Tests Views can have border styles 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Dashed border style", + "TextRangePattern.GetText": "Dashed border style", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Dotted border style", + "TextRangePattern.GetText": "Dotted border style", }, ], }, @@ -875,6 +891,7 @@ exports[`View Tests Views can have borders 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "5px blue border", + "TextRangePattern.GetText": "5px blue border", }, ], }, @@ -975,12 +992,14 @@ exports[`View Tests Views can have customized accessibility 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "A View with accessibility values.", + "TextRangePattern.GetText": "A View with accessibility values.", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Current Number of Accessibility Taps: 0", + "TextRangePattern.GetText": "Current Number of Accessibility Taps: 0", }, ], }, @@ -1065,42 +1084,49 @@ exports[`View Tests Views can have customized opacity 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Opacity 0", + "TextRangePattern.GetText": "Opacity 0", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Opacity 0.1", + "TextRangePattern.GetText": "Opacity 0.1", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Opacity 0.3", + "TextRangePattern.GetText": "Opacity 0.3", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Opacity 0.5", + "TextRangePattern.GetText": "Opacity 0.5", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Opacity 0.7", + "TextRangePattern.GetText": "Opacity 0.7", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Opacity 0.9", + "TextRangePattern.GetText": "Opacity 0.9", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Opacity 1", + "TextRangePattern.GetText": "Opacity 1", }, ], }, @@ -1387,24 +1413,28 @@ exports[`View Tests Views can have customized pasdding and margins 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "5px padding", + "TextRangePattern.GetText": "5px padding", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "5px margin", + "TextRangePattern.GetText": "5px margin", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "5px margin and padding,", + "TextRangePattern.GetText": "5px margin and padding,", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "widthAutonomous=true", + "TextRangePattern.GetText": "widthAutonomous=true", }, ], }, @@ -1731,6 +1761,7 @@ exports[`View Tests Views can have display: none 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Press to toggle \`display: none\`", + "TextRangePattern.GetText": "Press to toggle \`display: none\`", }, ], }, @@ -2069,42 +2100,49 @@ exports[`View Tests Views can have insets 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "inset 10", + "TextRangePattern.GetText": "inset 10", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "insetBlock 5", + "TextRangePattern.GetText": "insetBlock 5", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "insetBlockEnd 5", + "TextRangePattern.GetText": "insetBlockEnd 5", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "insetBlockStart 5", + "TextRangePattern.GetText": "insetBlockStart 5", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "insetInline 5", + "TextRangePattern.GetText": "insetInline 5", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "insetInlineEnd 5", + "TextRangePattern.GetText": "insetInlineEnd 5", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "insetInlineStart 5", + "TextRangePattern.GetText": "insetInlineStart 5", }, ], }, @@ -2798,18 +2836,21 @@ exports[`View Tests Views can have layout conformance 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Unset", + "TextRangePattern.GetText": "Unset", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Classic", + "TextRangePattern.GetText": "Classic", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Strict", + "TextRangePattern.GetText": "Strict", }, ], }, @@ -3014,18 +3055,21 @@ exports[`View Tests Views can have logical border colors 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "borderBlockColor orange", + "TextRangePattern.GetText": "borderBlockColor orange", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "borderBlockStartColor purple", + "TextRangePattern.GetText": "borderBlockStartColor purple", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "borderBlockEndColor green", + "TextRangePattern.GetText": "borderBlockEndColor green", }, ], }, @@ -3342,18 +3386,21 @@ exports[`View Tests Views can have offscreen alpha compositing 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "Blobs", + "TextRangePattern.GetText": "Blobs", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Same blobs, but their shared container have 0.5 opacity", + "TextRangePattern.GetText": "Same blobs, but their shared container have 0.5 opacity", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "Tap to deactivate needsOffscreenAlphaCompositing", + "TextRangePattern.GetText": "Tap to deactivate needsOffscreenAlphaCompositing", }, ], }, @@ -3540,18 +3587,21 @@ exports[`View Tests Views can have overflow 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "undefined", + "TextRangePattern.GetText": "undefined", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "hidden", + "TextRangePattern.GetText": "hidden", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "visible", + "TextRangePattern.GetText": "visible", }, ], }, @@ -5350,18 +5400,21 @@ exports[`View Tests Views can have tooltips 1`] = ` "ControlType": 50020, "LocalizedControlType": "text", "Name": "This Parent View has tooltip "Parent View"", + "TextRangePattern.GetText": "This Parent View has tooltip "Parent View"", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "This view has tooltip "Child View 1"", + "TextRangePattern.GetText": "This view has tooltip "Child View 1"", }, { "AutomationId": "", "ControlType": 50020, "LocalizedControlType": "text", "Name": "This view has tooltip "Child View 2"", + "TextRangePattern.GetText": "This view has tooltip "Child View 2"", }, ], }, diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/snapshotPages.test.js.snap b/packages/e2e-test-app-fabric/test/__snapshots__/snapshotPages.test.js.snap index d450e0df189..dc3d41610ac 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/snapshotPages.test.js.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/snapshotPages.test.js.snap @@ -8,8 +8,20 @@ exports[`snapshotAllPages Accessibility Windows 1`] = ` The following has accessibilityLabel and accessibilityHint: The following has accessible and accessibilityLabel: @@ -30301,8 +30314,10 @@ exports[`snapshotAllPages LegacyTextInputTest 1`] = ` testID="textinput-field" /> Release(); } + // Dump ITextRangeProvider Information + winrt::com_ptr textPattern; + hr = pTarget->GetCurrentPattern(UIA_TextPatternId, reinterpret_cast(textPattern.put())); + if (SUCCEEDED(hr) && textPattern) { + winrt::com_ptr textRangePattern; + hr = textPattern->get_DocumentRange(textRangePattern.put()); + if (SUCCEEDED(hr) && textRangePattern) { + textRangePattern->GetText(20, &text); + if (SUCCEEDED(hr)) { + InsertStringValueIfNotEmpty(result, L"TextRangePattern.GetText", text); + } + } + } + + ::SysFreeString(text); ::SysFreeString(value); } @@ -464,6 +480,7 @@ winrt::Windows::Data::Json::JsonObject DumpUIATreeRecurse( int sizeOfSet = 0; LiveSetting liveSetting = LiveSetting::Off; BSTR itemStatus; + BSTR description = nullptr; pTarget->get_CurrentAutomationId(&automationId); pTarget->get_CurrentControlType(&controlType); @@ -481,6 +498,11 @@ winrt::Windows::Data::Json::JsonObject DumpUIATreeRecurse( pTarget4->get_CurrentLiveSetting(&liveSetting); pTarget4->Release(); } + IUIAutomationElement6 *pTarget6; + hr = pTarget->QueryInterface(__uuidof(IUIAutomationElement6), reinterpret_cast(&pTarget6)); + if (SUCCEEDED(hr) && pTarget6) { + pTarget6->get_CurrentFullDescription(&description); + } result.Insert(L"AutomationId", winrt::Windows::Data::Json::JsonValue::CreateStringValue(automationId)); result.Insert(L"ControlType", winrt::Windows::Data::Json::JsonValue::CreateNumberValue(controlType)); InsertStringValueIfNotEmpty(result, L"HelpText", helpText); @@ -493,6 +515,7 @@ winrt::Windows::Data::Json::JsonObject DumpUIATreeRecurse( InsertIntValueIfNotDefault(result, L"SizeofSet", sizeOfSet); InsertLiveSettingValueIfNotDefault(result, L"LiveSetting", liveSetting); InsertStringValueIfNotEmpty(result, L"ItemStatus", itemStatus); + InsertStringValueIfNotEmpty(result, L"Description", description); DumpUIAPatternInfo(pTarget, result); IUIAutomationElement *pChild; @@ -513,6 +536,7 @@ winrt::Windows::Data::Json::JsonObject DumpUIATreeRecurse( ::SysFreeString(localizedControlType); ::SysFreeString(name); ::SysFreeString(itemStatus); + ::SysFreeString(description); return result; } diff --git a/packages/playground/Samples/text.tsx b/packages/playground/Samples/text.tsx index 54ce125b651..08fe7bf4cfd 100644 --- a/packages/playground/Samples/text.tsx +++ b/packages/playground/Samples/text.tsx @@ -12,6 +12,21 @@ export default class Bootstrap extends React.Component { return ( Welcome to React Native! + + Click here : This is a text with a tooltip. + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim + ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut + aliquip ex ea commodo consequat. + + ); } @@ -24,6 +39,13 @@ const styles = StyleSheet.create({ alignItems: 'center', backgroundColor: '#C5CCFF', }, + container2: { + backgroundColor: 'lightcoral', + padding: 10, + marginBottom: 10, + width: 500, + height: 100, + }, welcome: { fontSize: 20, textAlign: 'center', diff --git a/packages/playground/Samples/textinput.tsx b/packages/playground/Samples/textinput.tsx index 8f0c2f69001..390d5cb17e7 100644 --- a/packages/playground/Samples/textinput.tsx +++ b/packages/playground/Samples/textinput.tsx @@ -14,6 +14,7 @@ import { View, KeyboardAvoidingView, ScrollView, + TouchableWithoutFeedback, } from 'react-native'; import type {EventSubscription} from 'react-native/Libraries/vendor/emitter/EventEmitter'; @@ -49,6 +50,7 @@ export default class Bootstrap extends React.Component<{}, any> { state = { passwordHidden: true, text: '', + endEditingText: '', }; onPressShowPassword = () => { @@ -56,155 +58,232 @@ export default class Bootstrap extends React.Component<{}, any> { this.setState({passwordHidden: !previousState}); }; + handleEndEditing = (event: any) => { + const text = event.nativeEvent.text; + this.setState({endEditingText: text}); + console.log('Text input focus lost:', text); + }; + + getHeightAndWidth = (height: number, width: number) => { + console.log(' onContentSizeChange height: ' + height + ' width: ' + width); + }; + render() { let textInputRef: TextInput | null; return ( - - - - - - - - - - - - - - (textInputRef = ref)} - onFocus={() => setTimeout(() => textInputRef?.blur(), 5000)} - placeholder={'blurs after 5 seconds'} - style={styles.input} - /> - { - this.setState({text}); - }} - value={this.state.text} - selectionColor="red" - maxLength={10} - keyboardType="numeric" - /> -