also looking at this
feat(maps): add key-free native Android maps and shared map controls
#363
28 files
+1857
-481
Review threads live on the whole diff, not on one commit, so none are shown here - a thread's line means something in the branch's final form, and painting it into an intermediate step would put it on code it is not about.
| @@ -74,7 +74,7 @@ on: | ||
| 74 | 74 | android_suite: |
| 75 | 75 | description: Android native fixture coverage for the android-navigation scope |
| 76 | 76 | type: choice |
| 77 | options: [focused, full, system-bars, maps] | |
| 77 | options: [focused, full, system-bars, maps, accessibility] | |
| 78 | 78 | default: focused |
| 79 | 79 | selectors: |
| 80 | 80 | description: Optional XCTest selector for focused native iOS rendering or navigation |
| @@ -607,7 +607,7 @@ jobs: | ||
| 607 | 607 | api-level: ${{ fromJSON((inputs.scope != 'android-navigation' || inputs.android_suite == 'full') && '[34,35]' || inputs.android_suite == 'system-bars' && '[35]' || '[34]') }} |
| 608 | 608 | env: |
| 609 | 609 | CRAFT_ANDROID_NATIVE_SUITE: ${{ inputs.scope != 'android-navigation' && 'full' || inputs.android_suite || 'focused' }} |
| 610 | CRAFT_ANDROID_TEST_CLASS: ${{ inputs.scope == 'android-navigation' && inputs.android_suite == 'maps' && 'dev.craft.navigationtest.NativeMapTest#keyFreeBasemapsKeepTheRecordedRouteAndDirectionSignsVisible,dev.craft.navigationtest.NativeMapTest#nativeMapMutationsUpdateThePinAndCameraWithoutReloadingTheStyle,dev.craft.navigationtest.NativeMapTest#showingTheLocationDotDoesNotRequestPermissionDuringRendering,dev.craft.navigationtest.NativeMapTest#controlledRegionEchoPreservesTheCameraAfterANativeDrag,dev.craft.navigationtest.NativeMapTest#backgroundAndResumeKeepTheNativeMapAndCamera' || inputs.scope == 'android-navigation' && inputs.android_suite == 'system-bars' && 'dev.craft.navigationtest.NativeNavigationTest#nativeScreenBackgroundOptionAppliesAndResets' || inputs.scope == 'android-navigation' && inputs.android_suite != 'full' && 'dev.craft.navigationtest.NativeNavigationTest#outgoingTabTapWinsOverSettlingSwipe,dev.craft.navigationtest.NativeNavigationTest#thirdTabTapWinsOverSettlingSwipe,dev.craft.navigationtest.NativeNavigationTest#cancelledSwipeTargetIsVisibleWhenSelectedLater,dev.craft.navigationtest.NativeNavigationTest#completedReverseSwipeKeepsRetainedTabVisible,dev.craft.navigationtest.NativeNavigationTest#nativePullToRefreshSurvivesViewReattachment,dev.craft.navigationtest.NativeNavigationTest#pushedScreenTabAccessoryOpensNativeRouteAndClearsOnBack,dev.craft.navigationtest.NativeFlatListTest#refreshAppearanceUsesTheScreenContrastFallback,dev.craft.navigationtest.NativeNavigationTest#nativeDatePickerKeepsFollowingControlsMounted' || '' }} | |
| 610 | CRAFT_ANDROID_TEST_CLASS: ${{ inputs.scope == 'android-navigation' && inputs.android_suite == 'accessibility' && 'dev.craft.navigationtest.NativeNavigationTest#nativeTestIdsRemainQueryableWithoutReplacingVisibleLabels' || inputs.scope == 'android-navigation' && inputs.android_suite == 'maps' && 'dev.craft.navigationtest.NativeMapTest#keyFreeBasemapsKeepTheRecordedRouteAndDirectionSignsVisible,dev.craft.navigationtest.NativeMapTest#nativeMapMutationsUpdateThePinAndCameraWithoutReloadingTheStyle,dev.craft.navigationtest.NativeMapTest#showingTheLocationDotDoesNotRequestPermissionDuringRendering,dev.craft.navigationtest.NativeMapTest#controlledRegionEchoPreservesTheCameraAfterANativeDrag,dev.craft.navigationtest.NativeMapTest#backgroundAndResumeKeepTheNativeMapAndCamera' || inputs.scope == 'android-navigation' && inputs.android_suite == 'system-bars' && 'dev.craft.navigationtest.NativeNavigationTest#nativeScreenBackgroundOptionAppliesAndResets' || inputs.scope == 'android-navigation' && inputs.android_suite != 'full' && 'dev.craft.navigationtest.NativeNavigationTest#outgoingTabTapWinsOverSettlingSwipe,dev.craft.navigationtest.NativeNavigationTest#thirdTabTapWinsOverSettlingSwipe,dev.craft.navigationtest.NativeNavigationTest#cancelledSwipeTargetIsVisibleWhenSelectedLater,dev.craft.navigationtest.NativeNavigationTest#completedReverseSwipeKeepsRetainedTabVisible,dev.craft.navigationtest.NativeNavigationTest#nativePullToRefreshSurvivesViewReattachment,dev.craft.navigationtest.NativeNavigationTest#pushedScreenTabAccessoryOpensNativeRouteAndClearsOnBack,dev.craft.navigationtest.NativeFlatListTest#refreshAppearanceUsesTheScreenContrastFallback,dev.craft.navigationtest.NativeNavigationTest#nativeDatePickerKeepsFollowingControlsMounted' || '' }} | |
| 611 | 611 | if: ${{ inputs.scope != 'ios-navigation' && inputs.scope != 'ios-render' }} |
| 612 | 612 | runs-on: ubuntu-latest |
| 613 | 613 | timeout-minutes: 35 |
| @@ -6575,6 +6575,7 @@ class MainActivity : AppCompatActivity() { | ||
| 6575 | 6575 | val label = craftNativeOptionalString(props.opt("accessibilityLabel")) |
| 6576 | 6576 | ?: craftNativeOptionalString(props.opt("alt"))?.takeIf { type == "Image" || type == "ImageBackground" } |
| 6577 | 6577 | val value = craftNativeOptionalString(props.opt("accessibilityValue")) |
| 6578 | val testId = craftNativeOptionalString(props.opt("testID")) | |
| 6578 | 6579 | view.contentDescription = when { |
| 6579 | 6580 | label != null && value != null -> "$label, $value" |
| 6580 | 6581 | label != null -> label |
| @@ -6599,6 +6600,9 @@ class MainActivity : AppCompatActivity() { | ||
| 6599 | 6600 | ViewCompat.setAccessibilityDelegate(view, object : AccessibilityDelegateCompat() { |
| 6600 | 6601 | override fun onInitializeAccessibilityNodeInfo(host: View, info: AccessibilityNodeInfoCompat) { |
| 6601 | 6602 | super.onInitializeAccessibilityNodeInfo(host, info) |
| 6603 | // Expose STX test identities to Android's native automation | |
| 6604 | // tree without replacing the label read by TalkBack. | |
| 6605 | info.viewIdResourceName = testId | |
| 6602 | 6606 | info.className = when (role) { |
| 6603 | 6607 | "button" -> Button::class.java.name |
| 6604 | 6608 | "image" -> ImageView::class.java.name |