Skip to content

Commit 75b4fc6

Browse files
David Gonzalezclaude
authored andcommitted
Enable native input for internal builds
Flip the nativeInputField feature flag default to INTERNAL and remove the now-redundant user toggle from AI Features settings. Widget visibility is driven by the feature flag, with the existing observer API in DuckChat backed by the cached flag value so all consumers (omnibar, NTP, system search, native and contextual input managers, JS helper) pick it up unchanged. Adjust the Maestro flows that run on the internal binary so the NTP omnibar — which now starts behind the native input widget — is dismissable before the menu / address bar is needed: - Add a shared ../shared/dismiss_native_input.yaml helper that taps the widget's back arrow (inputModeUnifiedBack) when visible. - Have shared/browser_screen/click_on_menu_button.yaml dismiss the widget first, so any flow tapping the menu through the helper (custom tabs, ADS, sync) keeps working. - Route privacy_tests_internal and duckplayer_settings through the same helper instead of tapping the menu directly. - Dismiss the widget before tapping omnibarTextInput in the duckplayer direct/common flows and in sync's add_bookmarks step. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent c571fbb commit 75b4fc6

26 files changed

Lines changed: 62 additions & 302 deletions

.maestro/duckplayer/common/input_search.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
appId: com.duckduckgo.mobile.android
22
---
33
# Select a YouTube video from SERP
4+
- runFlow: ../../shared/dismiss_native_input.yaml
45
- tapOn:
56
id: "omnibarTextInput"
67
- inputText: "https://duckduckgo.com/?q=DuckDuckGo%20vs%20Google%3A%205%20Reasons%20You%20Should%20Switch%20video%20site%3Ayoutube.com&ko=-1&ia=web"

.maestro/duckplayer/common/load_youtube_video.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ appId: com.duckduckgo.mobile.android
33
androidWebViewHierarchy: devtools
44
---
55
# Navigate to a YouTube video
6+
- runFlow: ../../shared/dismiss_native_input.yaml
67
- tapOn:
78
id: "omnibarTextInput"
89
- inputText: "https://m.youtube.com/@duckduckgo2597/search?query=DuckDuckGo%20vs%20Google%3A%205%20Reasons%20You%20Should%20Switch"

.maestro/duckplayer/direct_duckplayer.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ tags:
1111

1212
- runFlow: ../shared/skip_all_onboarding.yaml
1313

14+
- runFlow: ../shared/dismiss_native_input.yaml
1415
- tapOn:
1516
id: "omnibarTextInput"
1617
- inputText: "duck://player/3ml7yeKBUhc"

.maestro/duckplayer/direct_duckplayer_playback.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ tags:
1111

1212
- runFlow: ../shared/skip_all_onboarding.yaml
1313

14+
- runFlow: ../shared/dismiss_native_input.yaml
1415
- tapOn:
1516
id: "omnibarTextInput"
1617
- inputText: "duck://player/3ml7yeKBUhc"

.maestro/duckplayer/direct_duckplayer_youtube.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ tags:
1212

1313
- runFlow: ../shared/skip_all_onboarding.yaml
1414

15+
- runFlow: ../shared/dismiss_native_input.yaml
1516
- tapOn:
1617
id: "omnibarTextInput"
1718
- inputText: "duck://player/3ml7yeKBUhc"

.maestro/duckplayer/duckplayer_settings.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ tags:
1111

1212
- runFlow: ../shared/skip_all_onboarding.yaml
1313

14-
- tapOn:
15-
id: "com.duckduckgo.mobile.android:id/browserMenuImageView"
14+
- runFlow: ../shared/browser_screen/click_on_menu_button.yaml
1615

1716
- scrollUntilVisible:
1817
element:

.maestro/privacy_tests_internal/1_-_Api_manipulation.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ tags:
88
- launchApp:
99
clearState: true
1010
- runFlow: ../shared/skip_all_onboarding.yaml
11-
- tapOn:
12-
id: "com.duckduckgo.mobile.android:id/browserMenu"
11+
- runFlow: ../shared/browser_screen/click_on_menu_button.yaml
1312
- tapOn:
1413
id: "com.duckduckgo.mobile.android:id/settingsMenuItem"
1514
- scrollUntilVisible:
@@ -43,6 +42,7 @@ tags:
4342
- pressKey: Back
4443
- pressKey: Back
4544
- pressKey: Back
45+
- runFlow: ../shared/dismiss_native_input.yaml
4646
- assertVisible:
4747
id: "com.duckduckgo.mobile.android:id/omnibarTextInput"
4848
- inputText: "https://privacy-test-pages.site/content-scope-scripts/infra/pages/conditional-matching-experiments.html?automation=1"

.maestro/shared/browser_screen/click_on_menu_button.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
appId: com.duckduckgo.mobile.android
22
---
3+
# With the native input field enabled, the NTP shows the native input widget
4+
# over the omnibar (no browser menu visible). Dismiss it first so the menu
5+
# is exposed before we try to use it.
6+
- runFlow: ../dismiss_native_input.yaml
7+
38
- runFlow:
49
when:
510
notVisible:
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
appId: com.duckduckgo.mobile.android
2+
---
3+
# With the native input field enabled, the NTP shows the native input widget
4+
# over the omnibar. Tap its back arrow when visible so the regular omnibar
5+
# (and its menu / text input / icons) is reachable by subsequent steps.
6+
- runFlow:
7+
when:
8+
visible:
9+
id: 'com.duckduckgo.mobile.android:id/inputModeUnifiedBack'
10+
commands:
11+
- tapOn:
12+
id: 'com.duckduckgo.mobile.android:id/inputModeUnifiedBack'

.maestro/sync_flows/steps/action_add_bookmarks_and_folders.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ appId: com.duckduckgo.mobile.android
44
- runScript: script_add_bookmark_domains.js
55
# Until here we've joined an account that has predefined data
66
# Now, we add a couple bookmarks
7+
- runFlow: ../../shared/dismiss_native_input.yaml
78
- tapOn:
89
id: "omnibarTextInput"
910
- inputText: "${output.bookmarks.domains[0]}"

0 commit comments

Comments
 (0)