Skip to content

Conversation

@mikescamell
Copy link
Contributor

@mikescamell mikescamell commented Aug 5, 2025

Task/Issue URL: https://app.asana.com/1/137249556945/project/1207908166761516/task/1210983806890977?focus=true

Description

This PR refactors the onboarding design experiment implementation by introducing a new OnboardingDesignExperimentManager that centralizes experiment-related logic. The manager handles enrollment, cohort determination, and firing experiment-specific pixels for tracking user interactions throughout the onboarding flow.

Key changes include:

  • Added a data store to track site and SERP visit counts
  • Implemented comprehensive pixel tracking for onboarding interactions
  • Replaced direct toggle checks with manager methods for better abstraction
  • Added support for tracking user interactions with onboarding dialogs and options

Steps to test this PR

Onboarding Experience

  • Verify new users see the appropriate onboarding experience based on experiment cohort
  • Confirm that navigating through onboarding flows works correctly
  • Test that site suggestions and search options function properly
  • Verify fire animations display correctly based on experiment cohort

Pixels

Use Logcat to check for Pixels firing.

When there are multiple options you'll need to clear data and get back to the same position.

Variant – Modified Control

Filter logs using: experiment_metrics_onboardingDesignExperimentAug25_modifiedControl

  • Intro screen shown → introScreenDisplayed

  • Comparison screen shown → comparisonScreenDisplayed

  • Tap “Choose Browser”chooseBrowser

  • Accept system Set as default dialog → setDefaultRate

  • Address-bar-position sheet displayed → setAddressBarDisplayed

    • Select TopaddressBarSetTop
    • Select BottomaddressBarSetBottom
  • “Try a search” bubble appears → tryASearchDisplayed

    • Tap first suggestion → firstSearchSuggestion
    • Tap second suggestion → secondSearchSuggestion
    • Tap third suggestion → thirdSearchSuggestion
    • Enter any other query → searchOrNavCustom
  • SERP message dialog appears → messageOnSerpDisplayed

  • Site-suggestion bubble (adjacent) appears → visitSitePromptDisplayedAdjacent

    • Tap first site → firstSiteSuggestion
    • Tap second site → secondSiteSuggestion
    • Tap third site → thirdSiteSuggestion
  • (Clear data, get back to "Try a search" dialog, dismiss and then open a new tab) Site-suggestion bubble appears → visitSitePromptDisplayedNewTab

    • Tap first site → firstSiteSuggestion
    • Tap second site → secondSiteSuggestion
    • Tap third site → thirdSiteSuggestion
  • Trackers-blocked dialog shown → trackersBlockedMessageDisplayed

  • No-trackers dialog shown → noTrackersMessageDisplayed

  • Tracker-network dialog shown → trackerNetworkMessageDisplayed

  • From a blockers dialog, tap privacy-shield → privacyDashClickedFromOnboarding

  • Fire-button education prompt displayed → fireButtonPromptDisplayed

    • Trigger Fire action from that prompt → fireButtonClickedFromOnboarding
  • End-of-journey screen shown → finalOnboardingScreenDisplayed

  • Second non-DDG site loads → secondSiteVisit

  • Second DDG SERP loads → secondSerpVisit


Variant – Buck

Filter logs using: experiment_metrics_onboardingDesignExperimentAug25_buck

  • Intro screen shown → introScreenDisplayed

  • Comparison screen shown → comparisonScreenDisplayed

  • Tap “Choose Browser”chooseBrowser

  • Accept system Set as default dialog → setDefaultRate

  • Address-bar-position sheet displayed → setAddressBarDisplayed

    • Select TopaddressBarSetTop
    • Select BottomaddressBarSetBottom
  • “Try a search” bubble appears → tryASearchDisplayed

    • Tap first suggestion → firstSearchSuggestion
    • Tap second suggestion → secondSearchSuggestion
    • Tap third suggestion → thirdSearchSuggestion
    • Enter any other query → searchOrNavCustom
  • SERP message dialog appears → messageOnSerpDisplayed

  • Site-suggestion bubble (adjacent) appears → visitSitePromptDisplayedAdjacent

    • Tap first site → firstSiteSuggestion
    • Tap second site → secondSiteSuggestion
    • Tap third site → thirdSiteSuggestion
  • (Clear data, get back to "Try a search" dialog, dismiss and then open a new tab) Site-suggestion bubble appears → visitSitePromptDisplayedNewTab

    • Tap first site → firstSiteSuggestion
    • Tap second site → secondSiteSuggestion
    • Tap third site → thirdSiteSuggestion
  • Trackers-blocked dialog shown → trackersBlockedMessageDisplayed

  • No-trackers dialog shown → noTrackersMessageDisplayed

  • Tracker-network dialog shown → trackerNetworkMessageDisplayed

  • From a blockers dialog, tap privacy-shield → privacyDashClickedFromOnboarding

  • Fire-button education prompt displayed → fireButtonPromptDisplayed

    • Trigger Fire action from that prompt → fireButtonClickedFromOnboarding
  • End-of-journey screen shown → finalOnboardingScreenDisplayed

  • Second non-DDG site loads → secondSiteVisit

  • Second DDG SERP loads → secondSerpVisit


Variant – BB

Filter logs using: experiment_metrics_onboardingDesignExperimentAug25_bb

  • Intro screen shown → introScreenDisplayed

  • Comparison screen shown → comparisonScreenDisplayed

  • Tap “Choose Browser”chooseBrowser

  • Accept system Set as default dialog → setDefaultRate

  • Address-bar-position sheet displayed → setAddressBarDisplayed

    • Select TopaddressBarSetTop
    • Select BottomaddressBarSetBottom
  • “Try a search” bubble appears → tryASearchDisplayed

    • Tap first suggestion → firstSearchSuggestion
    • Tap second suggestion → secondSearchSuggestion
    • Tap third suggestion → thirdSearchSuggestion
    • Enter any other query → searchOrNavCustom
  • SERP message dialog appears → messageOnSerpDisplayed

  • Site-suggestion bubble (adjacent) appears → visitSitePromptDisplayedAdjacent

    • Tap first site → firstSiteSuggestion
    • Tap second site → secondSiteSuggestion
    • Tap third site → thirdSiteSuggestion
  • (Clear data, get back to "Try a search" dialog, dismiss and then open a new tab) Site-suggestion bubble appears → visitSitePromptDisplayedNewTab

    • Tap first site → firstSiteSuggestion
    • Tap second site → secondSiteSuggestion
    • Tap third site → thirdSiteSuggestion
  • Trackers-blocked dialog shown → trackersBlockedMessageDisplayed

  • No-trackers dialog shown → noTrackersMessageDisplayed

  • Tracker-network dialog shown → trackerNetworkMessageDisplayed

  • From a blockers dialog, tap privacy-shield → privacyDashClickedFromOnboarding

  • Fire-button education prompt displayed → fireButtonPromptDisplayed

    • Trigger Fire action from that prompt → fireButtonClickedFromOnboarding
  • End-of-journey screen shown → finalOnboardingScreenDisplayed

  • Second non-DDG site loads → secondSiteVisit

  • Second DDG SERP loads → secondSerpVisit

UI changes

No UI changes in this PR - this is an internal refactoring of the experiment implementation.

@mikescamell mikescamell force-pushed the feature/mike/onboarding-test/experiment_setup branch 2 times, most recently from 5df882e to 49ffdf3 Compare August 7, 2025 10:55
@mikescamell mikescamell force-pushed the feature/mike/onboarding-test/experiment_setup branch from 49ffdf3 to 39e4693 Compare August 7, 2025 11:00
@mikescamell mikescamell force-pushed the feature/mike/onboarding-test/experiment_setup branch from 39e4693 to 4fc9c46 Compare August 7, 2025 13:14
@marcosholgado marcosholgado force-pushed the feature/mike/onboarding-test/experiment_setup branch from 4fc9c46 to b10b580 Compare August 7, 2025 13:41
Copy link
Contributor

marcosholgado commented Aug 7, 2025

@mikescamell mikescamell force-pushed the feature/mike/onboarding-test/experiment_setup branch from b10b580 to 19c27c6 Compare August 8, 2025 10:15
@marcosholgado marcosholgado force-pushed the feature/mike/onboarding-test/experiment_setup branch from 19c27c6 to 647aaa7 Compare August 8, 2025 15:01
This functionality was moved the omnibar last year but never removed from the BrowserTabViewModel, it actually caused me some confusion as I didn't see it fire when pressing the shield so removing this now so others don't have the same problem
Caching isExperimentEnabled and onboardingDesignExperimentCohort means we don't have to litter UI building callsites with coroutine scopes and launches. It would be a pervasive change and calling this synchronously gives me confidence.

Using both app launch and onPrivacyConfigDownloaded should cover cases where we turn the experiment off.
want to make sure we have this covered
@mikescamell mikescamell force-pushed the feature/mike/onboarding-test/experiment_setup branch from 647aaa7 to 12d997c Compare August 8, 2025 15:28
@mikescamell mikescamell changed the title [WIP] Onboarding Design Experiment Setup Onboarding Design Experiment Setup Aug 11, 2025
@mikescamell mikescamell marked this pull request as ready for review August 11, 2025 09:27
Looks like we switched to the experiment search options but forgot to update the code after.

This takes care of that and ensures that our pixel tracking is now correct and does not report as a user making a custom search on the "Try a search" onboarding dialog option
Copy link
Contributor

@marcosholgado marcosholgado left a comment

Choose a reason for hiding this comment

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

LGTM

@mikescamell mikescamell merged commit ea7f906 into develop Aug 11, 2025
18 of 19 checks passed
@mikescamell mikescamell deleted the feature/mike/onboarding-test/experiment_setup branch August 11, 2025 11:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants