Skip to content

Add Merge request performance survey

Stanislav Lashmanov requested to merge slashmanov/mr-survey into master

What does this MR do and why?

Closes #362389 (closed)

Specs

Details
  1. Show conditions:
    1. If the instance is GitLab.com (SaaS).
    2. If the user is logged-in.
    3. If Snowplow is not blocked by the browser. The browser may be using an ad-blocker or sending the “Do Not Track” signal.
    4. If the user has not dismissed this survey in the last 90 days.
    5. If no notification broadcast message (example) was visible on page load. For example, if I close a notification broadcast message, the survey would only appear on reload/when visiting another MR. This is because the proposal has a similar design and placement to notification broadcast messages.
    6. If 10 seconds have passed after page load. This is to avoid asking users about their satisfaction immediately after the MR page is loaded.
    7. If the user has only answered the first question (overall satisfaction), keep showing the second question (speed/performance) until they answer it or dismiss the survey.
  2. Dismissal: When the survey is completed or the user dismisses it (clicks the X button), the survey doesn't appear again to that user for the next 90 days (that should be possible using UserCallout).
  3. Animations:
    1. The survey moves in from the bottom of the screen (just like a toast), as seen in the prototype: ease-in 200ms This helps make it noticeable and less jarring.
    2. Dismissing (click the X button) or moving between steps doesn't have any animation.
    3. The final “thanks” step fades out after 5 seconds (just like a toast).
  4. Legal disclaimer: Links to https://about.gitlab.com/privacy/
  5. Questions:
    1. Overall, how satisfied are you with merge requests?
    2. How satisfied are you with the speed/performance of merge requests?
  6. Data automatically collected (see technical details):
    1. MR days: Number of days in the last 30 days that the user visited an MR page.
      1. This is already collected today through Snowplow.
    2. Paid plan: Whether the user is a member of 1+ paid group(s) or not.
      1. This is also already collected.
    3. Account age: Number of days since user's account creation.
      1. This is not collected today, but will be once the survey is implemented.

Screenshots or screen recordings

Screen_Recording_2022-06-17_at_16.06.24

How to set up and validate locally

  1. Set up Snowplow Micro
  2. Enable Snowplow in the GDK
  3. Enable the mr_experience_survey feature flag
  4. Disable 'Do Not Track' header in your browser settings (for Chrome: chrome://settings/cookies)
  5. Open any merge request and wait for 10 seconds to see the survey

Tip: you can revert your click on a close button to test this again by writing this in Ruby console: Users::Callout.last.destroy.

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Mark Florian

Merge request reports