Skip to content

[Segmented Onboarding] Local config update and E2E tests support - #9810

Open
LukasPaczos wants to merge 2 commits into
developfrom
feature/lpaczos/segmented-onboarding/enable-local-config
Open

LukasPaczos wants to merge 2 commits into
developfrom
feature/lpaczos/segmented-onboarding/enable-local-config

Conversation

@LukasPaczos

@LukasPaczos LukasPaczos commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

Task/Issue URL: https://app.asana.com/1/137249556945/project/1208671518894266/task/1218619864333941?focus=true
Tech Design URL (if applicable):
API Proposals URL(s) (if applicable):

Description

  • Updates the config to start enrollment for the segmented onboarding experiment.
  • Introduces a single segmented E2E test path (the one that diverges least from production, "block ads") so that we don't start seeing failures when a test run gets enrolled into the treatment cohort.

Before merging, the target version needs to be verified/updated.

Steps to test this PR

control

  • Create privacy-config/privacy-config-internal/local-config-patches/review_patch.json:
[
  {
    "op": "add",
    "path": "/features/segmentedOnboarding",
    "value": {
      "state": "enabled",
      "features": {
        "onboardingFlowByDownloadReasonExperiment": {
          "state": "enabled",
          "cohorts": [
            {
              "name": "control",
              "weight": 1
            },
            {
              "name": "treatment",
              "weight": 0
            }
          ]
        }
      }
    }
  },
  {
    "op": "replace",
    "path": "/features/onboardingPrompts/features/addToDockAndWidgetExperimentJul25/state",
    "value": "disabled"
  },
  {
    "op": "add",
    "path": "/features/onboardingPrompts/hash",
    "value": "patched"
  },
  {
    "op": "replace",
    "path": "/version",
    "value": "90000000000001"
  }
]
  • Create privacy-config/privacy-config-internal/local.properties:
config_patches=privacy-config/privacy-config-internal/local-config-patches/review_patch.json
  • Apply below diff:
diff --git a/privacy-config/privacy-config-impl/src/main/res/raw/privacy_config.json b/privacy-config/privacy-config-impl/src/main/res/raw/privacy_config.json
index 3aa4d13ed4..9500e40af6 100644
--- a/privacy-config/privacy-config-impl/src/main/res/raw/privacy_config.json
+++ b/privacy-config/privacy-config-impl/src/main/res/raw/privacy_config.json
@@ -954,3 +954,3 @@
                 "addToDockAndWidgetExperimentJul25": {
-                    "state": "enabled",
+                    "state": "disabled",
                     "cohorts": [
@@ -981,3 +981,3 @@
                     "state": "enabled",
-                    "minSupportedVersion": 52960000,
+                    "minSupportedVersion": 52952000,
                     "targets": [
@@ -996,3 +996,3 @@
                             "name": "treatment",
-                            "weight": 1
+                            "weight": 0
                         }
  • Clear downloads dir (replace the rm command with a path and device ID you're testing on.):
adb -s emulator-5554 shell rm -rf /storage/emulated/0/Download/DuckDuckGo
  • Run tests:
./gradlew installInternalRelease && for t in \
  .maestro/onboarding/onboarding.yaml \
  .maestro/onboarding/onboarding_dismiss_all_dialogs.yaml \
  .maestro/onboarding/onboarding_dismiss_try_a_search_dialog.yaml \
  .maestro/custom_tabs/custom_tabs_navigation.yaml \
  .maestro/custom_tabs/custom_tabs_navigation_new_tab.yaml \
  .maestro/fire_button/fire_during_onboarding.yaml \
  .maestro/fire_button/dimiss_fire_during_onboarding.yaml; do
  adb -s emulator-5554 shell rm -rf /storage/emulated/0/Download/DuckDuckGo
  maestro test "$t" || echo "FAILED: $t"
done

treatment

  • Update privacy_config.json and review_patch.json:
    • control to 0
    • treatment to 1
  • Clear downloads dir (replace the rm command with a path and device ID you're testing on.):
adb -s emulator-5554 shell rm -rf /storage/emulated/0/Download/DuckDuckGo
  • Run tests:
./gradlew installInternalRelease && for t in \
  .maestro/onboarding/onboarding.yaml \
  .maestro/onboarding/onboarding_dismiss_all_dialogs.yaml \
  .maestro/onboarding/onboarding_dismiss_try_a_search_dialog.yaml \
  .maestro/custom_tabs/custom_tabs_navigation.yaml \
  .maestro/custom_tabs/custom_tabs_navigation_new_tab.yaml \
  .maestro/fire_button/fire_during_onboarding.yaml \
  .maestro/fire_button/dimiss_fire_during_onboarding.yaml; do
  adb -s emulator-5554 shell rm -rf /storage/emulated/0/Download/DuckDuckGo
  maestro test "$t" || echo "FAILED: $t"
done

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

This repository is configured for manual code reviews. Comment @claude review for a one-time review, or @claude review always to subscribe this PR to a review on every future push.

Tip: disable this comment in your organization's Code Review settings.

@LukasPaczos LukasPaczos changed the title update local config to enroll for segmented onboarding experiment [Segmented Onboarding] Local config update and E2E tests support Sep 18, 2026
@LukasPaczos
LukasPaczos force-pushed the feature/lpaczos/segmented-onboarding/enable-local-config branch from ff79fe9 to 7fc08c8 Compare September 18, 2026 19:20

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant