Skip to content

Conversation

@cmonfortep
Copy link
Contributor

@cmonfortep cmonfortep commented Feb 19, 2020

Task/Issue URL: https://app.asana.com/0/488551667048375/1161278038072567/f
Tech Design URL:
CC:

Description:
In this experiment we are going to place our CTAs inside our Dax Journey. Our CTAs will match the style/tone of the existing Dax dialogs.

  • Default Browser CTA: After the user visits a site with trackers, we prompt a Dax dialog to tell the user that we blocked all the trackers in that site. After showing that dialog we will ask the user to set us as Default browser.

  • Search Widget CTA: When the user visits DuckDuckGo, a Dax dialog will appear informing our users that all their searches are private. After showing that dialog we will ask the user to add our search widget to protect their future searches.

Concept test variant mj: Vanila concept test

  1. Hardcode into variantManager variant "mj"
  2. Perform a fresh install
  3. Run the app and ensure onboarding doesn't show any cta
  4. Visit a web with trackers like cnn.com
  5. Ensure dax dialog appears informing about trackers found
  6. Click on "High five!"
  7. Ensure no more Ctas are shown
  8. Visit duckduckgo.com
  9. Ensure dax dialog appears
  10. Click on "Phew!"
  11. Ensure no more Ctas are shown

Concept test variant ml: Concept test with old ctas

  1. Hardcode into variantManager variant "ml"
  2. Perform a fresh install
  3. Run the app and ensure during the onboarding Default browser cta appears
  4. Visit a web with trackers like cnn.com
  5. Ensure dax dialog appears informing about trackers found
  6. Click on "High five!"
  7. Ensure no more Ctas are shown
  8. Visit duckduckgo.com
  9. Ensure dax dialog appears
  10. Click on "Phew!"
  11. Ensure no more Ctas are shown
  12. Continue the Dax journey till the end (open new tab, visit a website, open a new tab)
  13. Ensure Search widget cta appears in home screen

Concept test variant mh: concept test with ctas as dax dialogs:

Dax Default Browser cta:

  • Test-1
  1. Hardcode into variantManager variant "mh"
  2. Perform a fresh install
  3. Run the app and ensure onboarding doesn't show any default browser cta
  4. Visit a web with trackers like cnn.com
  5. Ensure dax dialog appears informing about trackers found
  6. Click on "High five!"
  7. Ensure DefaultBrowser cta appears
  8. Ensure pixel "m_odc_s" is fired with "dbd" as param
  9. Click on "Ok"
  10. Ensure pixel "m_odc_ok" is fired with "dbd" as param
  11. Ensure Dialog asking to set ddg as default browser appears

Repeat each of the following scenarios with previous steps:

a)
12. Click on "just once"
13. Ensure dialog appears again
14. Ensure no pixel is fired
14. Click on "always"
15. Ensure dialog dissapears
16. Ensure pixel "m_db_s" is fired with "dbo=d" as param

b)
12. Click on "just once"
13. Ensure dialog appears again
14. Click on "always"
15. Ensure dialog dissapears
16. Ensure pixel "m_db_ns" is fired with "dbo=jom" as param

c)
12. press back
13. Ensure dialog is dismissed
14. Ensure pixel "m_db_ns" is fired with "dbo=dd" as param

d)
12. select another browser and click "always"
13. Go back to DDG app
14. Ensure dialog is dismissed
14. Ensure pixel "m_db_ns" is fired with "dbo=e" as param

  • Test-2
  1. Hardcode into variantManager variant "mh"
  2. Perform a fresh install
  3. Go to settings and set as another browser as default
  4. Run the app and ensure onboarding doesn't show any default browser cta
  5. Visit a web with trackers like cnn.com
  6. Ensure dax dialog appears informing about trackers found
  7. Click on "High five!"
  8. Ensure DefaultBrowser cta appears
  9. Ensure pixel "m_odc_s" is fired with "dbs" as param

Repeat each of the following scenarios with previous steps:

a)
10. Click on "Go to settings"
11. Ensure pixel "m_odc_ok" is fired with "dbs" as param
12. Ensure user navigates to settings
13. Select ddg as default browser
14. Go back to the app
15. Ensure pixel "m_db_s" is fired with "fo=false, dbo=s" as param
16. Ensure cta is gone

b)
10. Click on "Maybe later"
11. Ensure pixel "m_odc_c" is fired with "dbs" as param
12. Ensure cta is gone

Dax Search widget cta:

  • Test-1
  1. Hardcode into variantManager variant "mh"
  2. Perform a fresh install
  3. Run the app and ensure onboarding doesn't show any default browser cta
  4. Visit duckduckgo.com
  5. Ensure dax dialog appears
  6. Click on "Phew!"
  7. Ensure SearchWidget cta appears
  8. Ensure pixel "m_odc_s" is fired with "wa" as param
  9. Click on "Add"
  10. Ensure pixel "m_odc_ok" is fired with "wa" as param
  11. Ensure cta is gone
  12. Ensure dialog appears asking the user to add the search widget
  • Test-2
  1. Hardcode into variantManager variant "mh"
  2. Perform a fresh install
  3. Run the app and ensure onboarding doesn't show any default browser cta
  4. Visit duckduckgo.com
  5. Ensure dax dialog appears
  6. Click on "Phew!"
  7. Ensure SearchWidget cta appears
  8. Ensure pixel "m_odc_s" is fired with "wa" as param
  9. Click on "Maybe later"
  10. Ensure pixel "m_odc_c" is fired with "wa" as param
  11. Ensure cta is gone
  • Test-3 (device running api < 23)
  1. Hardcode into variantManager variant "mh"
  2. Perform a fresh install
  3. Run the app and ensure onboarding doesn't show any default browser cta
  4. Visit duckduckgo.com
  5. Ensure dax dialog appears
  6. Click on "Phew!"
  7. Ensure no cta appears
  • Test-4 (device running api 23/24/26)
  1. Hardcode into variantManager variant "mh"
  2. Perform a fresh install
  3. Run the app and ensure onboarding doesn't show any default browser cta
  4. Visit duckduckgo.com
  5. Ensure dax dialog appears
  6. Click on "Phew!"
  7. Ensure SearchWidget cta appears
  8. Ensure pixel "m_odc_s" is fired with "wm" as param
  9. Click on "Add"
  10. Ensure pixel "m_odc_ok" is fired with "wm" as param
  11. Ensure cta is gone
  12. Ensure dialog appears showing the user how to add the search widget

Internal references:

Software Engineering Expectations
Technical Design Template

…Livedata.

* This will remove a race condition bug when showing a new cta right after dismiss the previous one. Dismiss happens after a new cta has been emitted via livedata.
…alog class.

Not all Dax dialogs use view highlighting.
This hierarchy will be changed.
…ialog

Refacto dax dialog layout to use linearlayout instead of constraint layout
…n secondary button is clicked.

Use same dialog when it has one or two buttons. Segregated logic only applies for dialogs highlighting a view.
Removing one layer of ConstraintLayout for one LinearLayout to simplify working with margins between buttons.
* Introduce new logic to show/hide a secondaryButton on DaxDialogs.
* Change DaxDialog creation logic inside Cta.
* Adapt BrowserTabFragment listener logic to new chanes.
…ian/cta_concept_test_2

# Conflicts:
#	app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt
#	app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt
#	app/src/main/java/com/duckduckgo/app/cta/ui/Cta.kt
#	app/src/main/res/layout/content_dax_dialog.xml
#	app/src/main/res/values/attrs.xml
#	app/src/main/res/values/themes.xml
* show toast and background view to help user decide
* if user clicks just once, we prompt the dialog again
* navigation to settings extracted to a new class
* Toast instructions extracted to a new class
* Changed instructions card margins to mirror toolbar size
* Show card only if ddg is not default browser
* Remove allocating users before referrer delay
* Referrer variant is now based on DEFAULT_VARIANT
* Adapt tests to new changes
* Renamed some features making explicit to what part of the app they are related
* Update test accordingly
…xp2' into feature/cristian/cta_concept_test_2
@marcosholgado marcosholgado self-assigned this Feb 20, 2020
…feature/cristian/cta_concept_test_2

# Conflicts:
#	app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt
#	app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt
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.

Few things while testing this:

Dismissing the dialog sends dbo=dxdd but selecting another browser and coming back to DDG also sends dbo=dxdd. When analyzing this you won’t be able to know if the user selected a different browser or if they just dimissed the dialog. We used to send dbo=e for any external browser selected, you might want to consider this.

All the references in the description to m_db_s say the parameter sent should be dxdfs or dxdfd but we are sending dxs (no dx prefix), I guess is a typo in the description but better to double check.

This is my personal opinion so feel free to ignore this. I think the params being dxdfs, etc are a bit long. Consider shortening them to maybe ds for dialog settings, etc. I wrote a comment about it as well.

Tapping on the trackers blocked dialog while the typing animation is running dismisses the dialog instead of finishing the animation. This kills the default browser cta and probably got broken while doing the 2 buttons cta work.

There is a bug we talked about before where the instructions card is not aligned with the custom toast on the default browser page but we can ignore this until the experiment comes back with some results but we may want to keep a task to fix this in case we end up keeping that screen.

@cmonfortep
Copy link
Contributor Author

cmonfortep commented Feb 24, 2020

Thanks for the review @marcosholgado

  1. I added the logic to detect when the user has selected another browser from the dialog following your advice. Thanks, good point there.

  2. AND

  3. Changed the pixelName values to make them shorter, and also removed the ones I added. Now I use the existing ones from the onboarding. I updated the description fixing the cases I wrongly described and adding a new one for the external browser.

  4. Fixed dismissing the dialog when the user clicks before the animation is finished.

  5. The bug related to the instructions card I left it out of this scope and I will create a side task for that.

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.

Looking good! Thanks for the changes.

We discussed making another change for the dbo=e pixel to avoid a very edge case where the app gets backgrounded while the dialog is being shown and the user dismisses the dialog, in that case we receive dbo=e rather than dbo=dd but that can also happen with other edge cases and doesn't seem to be a clean solution when the user selects another browser as just once.

Feel free to merge once you figure out what you want to do with it, i.e remove dbo=e in the external browser just once scenario or any other solutions :)

@cmonfortep cmonfortep merged commit 77fe816 into feature/cristian/fb_insert_cta_concept_test_exp2 Feb 25, 2020
@cmonfortep cmonfortep deleted the feature/cristian/cta_concept_test_2 branch February 25, 2020 20:53
cmonfortep added a commit that referenced this pull request Feb 28, 2020
* Dax dialog with two buttons (#713)

* New variant: Showing DefaultBrowserCta and SearchWidgetCta as Dax dialogs (#714)

* Insert DefaultBrowser Cta and SearchWidget Cta as Dax dialog during Dax Journey (#716)

* New control group and changes on when to show search widget cta (#723)
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