From 8910b79ebb1a445c006c15ebc4923e373a218c0c Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Mon, 18 Mar 2024 13:38:22 -0600 Subject: [PATCH 01/11] Instrument the "User comments" MR filter toggle --- .../notes/components/mr_discussion_filter.vue | 19 +++++++++++++++++-- app/assets/javascripts/notes/constants.js | 1 + 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/notes/components/mr_discussion_filter.vue b/app/assets/javascripts/notes/components/mr_discussion_filter.vue index a98e5975c27043..cfcf4d5900a694 100644 --- a/app/assets/javascripts/notes/components/mr_discussion_filter.vue +++ b/app/assets/javascripts/notes/components/mr_discussion_filter.vue @@ -5,7 +5,15 @@ import { mapActions, mapState } from 'vuex'; import { InternalEvents } from '~/tracking'; import LocalStorageSync from '~/vue_shared/components/local_storage_sync.vue'; import { __ } from '~/locale'; -import { MR_FILTER_OPTIONS, MR_FILTER_TRACKING_OPENED } from '~/notes/constants'; +import { + MR_FILTER_OPTIONS, + MR_FILTER_TRACKING_OPENED, + MR_FILTER_TRACKING_USER_COMMENTS, +} from '~/notes/constants'; + +const filterOptionToTrackingEventMap = { + comments: MR_FILTER_TRACKING_USER_COMMENTS, +}; export default { components: { @@ -62,6 +70,13 @@ export default { filterListShown() { this.trackEvent(MR_FILTER_TRACKING_OPENED); }, + trackDropdownSelection(selectedItem) { + const trackingEvent = filterOptionToTrackingEventMap[selectedItem]; + + if (trackingEvent) { + this.trackEvent(trackingEvent); + } + }, applyFilters() { this.updateMergeRequestFilters(this.selectedFilters); }, @@ -119,7 +134,7 @@ export default { diff --git a/app/assets/javascripts/notes/constants.js b/app/assets/javascripts/notes/constants.js index 32923d56c7964c..943281f6a382f6 100644 --- a/app/assets/javascripts/notes/constants.js +++ b/app/assets/javascripts/notes/constants.js @@ -128,3 +128,4 @@ export const MR_FILTER_OPTIONS = [ }, ]; export const MR_FILTER_TRACKING_OPENED = 'user_clicks_comment_filter_dropdown'; +export const MR_FILTER_TRACKING_USER_COMMENTS = 'user_clicks_comment_filter_toggle_user_comments'; -- GitLab From 6b421824fb14313287bc5047887981e41aae63c8 Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Mon, 18 Mar 2024 13:49:56 -0600 Subject: [PATCH 02/11] Add events for toggling user comments in the MR filter dropdown - Monthly & Weekly - Unique user & total --- ...ks_comment_filter_toggle_user_comments.yml | 20 ++++++++++++++++ ...nt_filter_toggle_user_comments_monthly.yml | 24 +++++++++++++++++++ ...nt_filter_toggle_user_comments_monthly.yml | 23 ++++++++++++++++++ ...ent_filter_toggle_user_comments_weekly.yml | 24 +++++++++++++++++++ ...ent_filter_toggle_user_comments_weekly.yml | 23 ++++++++++++++++++ 5 files changed, 114 insertions(+) create mode 100644 config/events/user_clicks_comment_filter_toggle_user_comments.yml create mode 100644 config/metrics/counts_28d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_monthly.yml create mode 100644 config/metrics/counts_28d/count_total_user_clicks_comment_filter_toggle_user_comments_monthly.yml create mode 100644 config/metrics/counts_7d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_weekly.yml create mode 100644 config/metrics/counts_7d/count_total_user_clicks_comment_filter_toggle_user_comments_weekly.yml diff --git a/config/events/user_clicks_comment_filter_toggle_user_comments.yml b/config/events/user_clicks_comment_filter_toggle_user_comments.yml new file mode 100644 index 00000000000000..881a8bbdd603d0 --- /dev/null +++ b/config/events/user_clicks_comment_filter_toggle_user_comments.yml @@ -0,0 +1,20 @@ +--- +description: A user clicks the merge request comment filter dropdown option to toggle comments from users +internal_events: true +action: user_clicks_comment_filter_toggle_user_comments +identifiers: +- project +- namespace +- user +product_section: dev +product_stage: create +product_group: code_review +milestone: '16.10' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/146939 +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate diff --git a/config/metrics/counts_28d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_monthly.yml b/config/metrics/counts_28d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_monthly.yml new file mode 100644 index 00000000000000..8d15a894ec3ac9 --- /dev/null +++ b/config/metrics/counts_28d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_monthly.yml @@ -0,0 +1,24 @@ +--- +key_path: redis_hll_counters.count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_monthly +description: Monthly count of unique users who toggled the user comments option in the MR comment filter dropdown +product_section: dev +product_stage: create +product_group: code_review +performance_indicator_type: [] +value_type: number +status: active +milestone: '16.10' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/146939 +time_frame: 28d +data_source: internal_events +data_category: optional +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +events: +- name: user_clicks_comment_filter_toggle_user_comments + unique: user.id diff --git a/config/metrics/counts_28d/count_total_user_clicks_comment_filter_toggle_user_comments_monthly.yml b/config/metrics/counts_28d/count_total_user_clicks_comment_filter_toggle_user_comments_monthly.yml new file mode 100644 index 00000000000000..0439b4ceae5d60 --- /dev/null +++ b/config/metrics/counts_28d/count_total_user_clicks_comment_filter_toggle_user_comments_monthly.yml @@ -0,0 +1,23 @@ +--- +key_path: counts.count_total_user_clicks_comment_filter_toggle_user_comments_monthly +description: Monthly count of times the user comments option in the MR comment filter dropdown was toggled +product_section: dev +product_stage: create +product_group: code_review +performance_indicator_type: [] +value_type: number +status: active +milestone: '16.10' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/146939 +time_frame: 28d +data_source: internal_events +data_category: optional +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +events: +- name: user_clicks_comment_filter_toggle_user_comments diff --git a/config/metrics/counts_7d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_weekly.yml b/config/metrics/counts_7d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_weekly.yml new file mode 100644 index 00000000000000..5c124d7050b532 --- /dev/null +++ b/config/metrics/counts_7d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_weekly.yml @@ -0,0 +1,24 @@ +--- +key_path: redis_hll_counters.count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_weekly +description: Weekly count of unique users who toggled the user comments option in the MR comment filter dropdown +product_section: dev +product_stage: create +product_group: code_review +performance_indicator_type: [] +value_type: number +status: active +milestone: '16.10' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/146939 +time_frame: 7d +data_source: internal_events +data_category: optional +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +events: +- name: user_clicks_comment_filter_toggle_user_comments + unique: user.id diff --git a/config/metrics/counts_7d/count_total_user_clicks_comment_filter_toggle_user_comments_weekly.yml b/config/metrics/counts_7d/count_total_user_clicks_comment_filter_toggle_user_comments_weekly.yml new file mode 100644 index 00000000000000..feb36eebb744a9 --- /dev/null +++ b/config/metrics/counts_7d/count_total_user_clicks_comment_filter_toggle_user_comments_weekly.yml @@ -0,0 +1,23 @@ +--- +key_path: counts.count_total_user_clicks_comment_filter_toggle_user_comments_weekly +description: Weekly count of times the user comments option in the MR comment filter dropdown was toggled +product_section: dev +product_stage: create +product_group: code_review +performance_indicator_type: [] +value_type: number +status: active +milestone: '16.10' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/146939 +time_frame: 7d +data_source: internal_events +data_category: optional +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +events: +- name: user_clicks_comment_filter_toggle_user_comments -- GitLab From 14b6203e498c12aa8ed0cac814ce5bc2ce916f86 Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Mon, 18 Mar 2024 14:19:44 -0600 Subject: [PATCH 03/11] Test that the user comment filter toggle is instrumented --- .../components/mr_discussion_filter_spec.js | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/spec/frontend/notes/components/mr_discussion_filter_spec.js b/spec/frontend/notes/components/mr_discussion_filter_spec.js index a01c886381a921..bbc8135e577422 100644 --- a/spec/frontend/notes/components/mr_discussion_filter_spec.js +++ b/spec/frontend/notes/components/mr_discussion_filter_spec.js @@ -5,7 +5,11 @@ import Vue, { nextTick } from 'vue'; import Vuex from 'vuex'; import { mockTracking } from 'helpers/tracking_helper'; import DiscussionFilter from '~/notes/components/mr_discussion_filter.vue'; -import { MR_FILTER_OPTIONS, MR_FILTER_TRACKING_OPENED } from '~/notes/constants'; +import { + MR_FILTER_OPTIONS, + MR_FILTER_TRACKING_OPENED, + MR_FILTER_TRACKING_USER_COMMENTS, +} from '~/notes/constants'; Vue.use(Vuex); @@ -39,6 +43,14 @@ describe('Merge request discussion filter component', () => { }); } + function findDropdownItem({ value }) { + const matchingItems = wrapper + .findAllComponents(GlListboxItem) + .filter((entry) => entry.html().includes(`js-data-item="${value}"`)).wrappers; + + return matchingItems.length ? matchingItems[0] : null; + } + afterEach(() => { localStorage.removeItem('mr_activity_filters'); localStorage.removeItem('sort_direction_merge_request'); @@ -154,5 +166,22 @@ describe('Merge request discussion filter component', () => { expect.any(Object), ); }); + + it.each` + item | trackingEvent + ${'comments'} | ${MR_FILTER_TRACKING_USER_COMMENTS} + `( + 'Send the correct event ($trackingEvent) for clicks on the filter item "$item"', + async ({ item, trackingEvent }) => { + const entry = findDropdownItem({ value: item }); + + if (entry) { + await entry.find('div').element.click(); + } + + expect(trackingSpy).toHaveBeenCalledTimes(1); + expect(trackingSpy).toHaveBeenCalledWith(undefined, trackingEvent, expect.any(Object)); + }, + ); }); }); -- GitLab From c06ee45e53821fcce4ba5691b7eb980fea319c50 Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Tue, 19 Mar 2024 21:00:07 -0600 Subject: [PATCH 04/11] Switch event name to have `in_mr` and remove `user` prefix --- app/assets/javascripts/notes/constants.js | 2 +- .../user_clicks_comment_filter_toggle_user_comments.yml | 2 +- ...ser_clicks_comment_filter_toggle_user_comments_monthly.yml | 4 ++-- ...ser_clicks_comment_filter_toggle_user_comments_monthly.yml | 4 ++-- ...user_clicks_comment_filter_toggle_user_comments_weekly.yml | 4 ++-- ...user_clicks_comment_filter_toggle_user_comments_weekly.yml | 4 ++-- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/assets/javascripts/notes/constants.js b/app/assets/javascripts/notes/constants.js index 943281f6a382f6..4d07039dbafc8c 100644 --- a/app/assets/javascripts/notes/constants.js +++ b/app/assets/javascripts/notes/constants.js @@ -128,4 +128,4 @@ export const MR_FILTER_OPTIONS = [ }, ]; export const MR_FILTER_TRACKING_OPENED = 'user_clicks_comment_filter_dropdown'; -export const MR_FILTER_TRACKING_USER_COMMENTS = 'user_clicks_comment_filter_toggle_user_comments'; +export const MR_FILTER_TRACKING_USER_COMMENTS = 'click_comment_filter_toggle_user_comments_in_mr'; diff --git a/config/events/user_clicks_comment_filter_toggle_user_comments.yml b/config/events/user_clicks_comment_filter_toggle_user_comments.yml index 881a8bbdd603d0..e688e797719895 100644 --- a/config/events/user_clicks_comment_filter_toggle_user_comments.yml +++ b/config/events/user_clicks_comment_filter_toggle_user_comments.yml @@ -1,7 +1,7 @@ --- description: A user clicks the merge request comment filter dropdown option to toggle comments from users internal_events: true -action: user_clicks_comment_filter_toggle_user_comments +action: click_comment_filter_toggle_user_comments_in_mr identifiers: - project - namespace diff --git a/config/metrics/counts_28d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_monthly.yml b/config/metrics/counts_28d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_monthly.yml index 8d15a894ec3ac9..6f94554aa4daeb 100644 --- a/config/metrics/counts_28d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_monthly.yml +++ b/config/metrics/counts_28d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_monthly.yml @@ -1,5 +1,5 @@ --- -key_path: redis_hll_counters.count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_monthly +key_path: redis_hll_counters.count_distinct_user_id_from_click_comment_filter_toggle_user_comments_in_mr_monthly description: Monthly count of unique users who toggled the user comments option in the MR comment filter dropdown product_section: dev product_stage: create @@ -20,5 +20,5 @@ tier: - premium - ultimate events: -- name: user_clicks_comment_filter_toggle_user_comments +- name: click_comment_filter_toggle_user_comments_in_mr unique: user.id diff --git a/config/metrics/counts_28d/count_total_user_clicks_comment_filter_toggle_user_comments_monthly.yml b/config/metrics/counts_28d/count_total_user_clicks_comment_filter_toggle_user_comments_monthly.yml index 0439b4ceae5d60..5f67c3909a91b2 100644 --- a/config/metrics/counts_28d/count_total_user_clicks_comment_filter_toggle_user_comments_monthly.yml +++ b/config/metrics/counts_28d/count_total_user_clicks_comment_filter_toggle_user_comments_monthly.yml @@ -1,5 +1,5 @@ --- -key_path: counts.count_total_user_clicks_comment_filter_toggle_user_comments_monthly +key_path: counts.count_total_click_comment_filter_toggle_user_comments_in_mr_monthly description: Monthly count of times the user comments option in the MR comment filter dropdown was toggled product_section: dev product_stage: create @@ -20,4 +20,4 @@ tier: - premium - ultimate events: -- name: user_clicks_comment_filter_toggle_user_comments +- name: click_comment_filter_toggle_user_comments_in_mr diff --git a/config/metrics/counts_7d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_weekly.yml b/config/metrics/counts_7d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_weekly.yml index 5c124d7050b532..2a3971ce507be6 100644 --- a/config/metrics/counts_7d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_weekly.yml +++ b/config/metrics/counts_7d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_weekly.yml @@ -1,5 +1,5 @@ --- -key_path: redis_hll_counters.count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_weekly +key_path: redis_hll_counters.count_distinct_user_id_from_click_comment_filter_toggle_user_comments_in_mr_weekly description: Weekly count of unique users who toggled the user comments option in the MR comment filter dropdown product_section: dev product_stage: create @@ -20,5 +20,5 @@ tier: - premium - ultimate events: -- name: user_clicks_comment_filter_toggle_user_comments +- name: click_comment_filter_toggle_user_comments_in_mr unique: user.id diff --git a/config/metrics/counts_7d/count_total_user_clicks_comment_filter_toggle_user_comments_weekly.yml b/config/metrics/counts_7d/count_total_user_clicks_comment_filter_toggle_user_comments_weekly.yml index feb36eebb744a9..9e3ff017cd0b44 100644 --- a/config/metrics/counts_7d/count_total_user_clicks_comment_filter_toggle_user_comments_weekly.yml +++ b/config/metrics/counts_7d/count_total_user_clicks_comment_filter_toggle_user_comments_weekly.yml @@ -1,5 +1,5 @@ --- -key_path: counts.count_total_user_clicks_comment_filter_toggle_user_comments_weekly +key_path: counts.count_total_click_comment_filter_toggle_user_comments_in_mr_weekly description: Weekly count of times the user comments option in the MR comment filter dropdown was toggled product_section: dev product_stage: create @@ -20,4 +20,4 @@ tier: - premium - ultimate events: -- name: user_clicks_comment_filter_toggle_user_comments +- name: click_comment_filter_toggle_user_comments_in_mr -- GitLab From 0dee208d940ba4f315db711b39314116aa55a462 Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Tue, 19 Mar 2024 21:47:31 -0600 Subject: [PATCH 05/11] Switch to current milestone --- .../events/user_clicks_comment_filter_toggle_user_comments.yml | 2 +- ..._user_clicks_comment_filter_toggle_user_comments_monthly.yml | 2 +- ..._user_clicks_comment_filter_toggle_user_comments_monthly.yml | 2 +- ...m_user_clicks_comment_filter_toggle_user_comments_weekly.yml | 2 +- ...l_user_clicks_comment_filter_toggle_user_comments_weekly.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/config/events/user_clicks_comment_filter_toggle_user_comments.yml b/config/events/user_clicks_comment_filter_toggle_user_comments.yml index e688e797719895..d09c2e849cd165 100644 --- a/config/events/user_clicks_comment_filter_toggle_user_comments.yml +++ b/config/events/user_clicks_comment_filter_toggle_user_comments.yml @@ -9,7 +9,7 @@ identifiers: product_section: dev product_stage: create product_group: code_review -milestone: '16.10' +milestone: '17.0' introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/146939 distributions: - ce diff --git a/config/metrics/counts_28d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_monthly.yml b/config/metrics/counts_28d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_monthly.yml index 6f94554aa4daeb..552ed459443a5a 100644 --- a/config/metrics/counts_28d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_monthly.yml +++ b/config/metrics/counts_28d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_monthly.yml @@ -7,7 +7,7 @@ product_group: code_review performance_indicator_type: [] value_type: number status: active -milestone: '16.10' +milestone: '17.0' introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/146939 time_frame: 28d data_source: internal_events diff --git a/config/metrics/counts_28d/count_total_user_clicks_comment_filter_toggle_user_comments_monthly.yml b/config/metrics/counts_28d/count_total_user_clicks_comment_filter_toggle_user_comments_monthly.yml index 5f67c3909a91b2..f8640c6c211b1e 100644 --- a/config/metrics/counts_28d/count_total_user_clicks_comment_filter_toggle_user_comments_monthly.yml +++ b/config/metrics/counts_28d/count_total_user_clicks_comment_filter_toggle_user_comments_monthly.yml @@ -7,7 +7,7 @@ product_group: code_review performance_indicator_type: [] value_type: number status: active -milestone: '16.10' +milestone: '17.0' introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/146939 time_frame: 28d data_source: internal_events diff --git a/config/metrics/counts_7d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_weekly.yml b/config/metrics/counts_7d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_weekly.yml index 2a3971ce507be6..558a08398acb54 100644 --- a/config/metrics/counts_7d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_weekly.yml +++ b/config/metrics/counts_7d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_weekly.yml @@ -7,7 +7,7 @@ product_group: code_review performance_indicator_type: [] value_type: number status: active -milestone: '16.10' +milestone: '17.0' introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/146939 time_frame: 7d data_source: internal_events diff --git a/config/metrics/counts_7d/count_total_user_clicks_comment_filter_toggle_user_comments_weekly.yml b/config/metrics/counts_7d/count_total_user_clicks_comment_filter_toggle_user_comments_weekly.yml index 9e3ff017cd0b44..b97d408792b15d 100644 --- a/config/metrics/counts_7d/count_total_user_clicks_comment_filter_toggle_user_comments_weekly.yml +++ b/config/metrics/counts_7d/count_total_user_clicks_comment_filter_toggle_user_comments_weekly.yml @@ -7,7 +7,7 @@ product_group: code_review performance_indicator_type: [] value_type: number status: active -milestone: '16.10' +milestone: '17.0' introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/146939 time_frame: 7d data_source: internal_events -- GitLab From a2618f613552bae47a64e7c96dbd5fb9fcccd40c Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Wed, 20 Mar 2024 12:56:40 -0600 Subject: [PATCH 06/11] Rename event and metric files to match event name --- ...ts.yml => click_comment_filter_toggle_user_comments_in_mr.yml} | 0 ...m_click_comment_filter_toggle_user_comments_in_mr_monthly.yml} | 0 ...l_click_comment_filter_toggle_user_comments_in_mr_monthly.yml} | 0 ...om_click_comment_filter_toggle_user_comments_in_mr_weekly.yml} | 0 ...al_click_comment_filter_toggle_user_comments_in_mr_weekly.yml} | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename config/events/{user_clicks_comment_filter_toggle_user_comments.yml => click_comment_filter_toggle_user_comments_in_mr.yml} (100%) rename config/metrics/counts_28d/{count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_monthly.yml => count_distinct_user_id_from_click_comment_filter_toggle_user_comments_in_mr_monthly.yml} (100%) rename config/metrics/counts_28d/{count_total_user_clicks_comment_filter_toggle_user_comments_monthly.yml => count_total_click_comment_filter_toggle_user_comments_in_mr_monthly.yml} (100%) rename config/metrics/counts_7d/{count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_weekly.yml => count_distinct_user_id_from_click_comment_filter_toggle_user_comments_in_mr_weekly.yml} (100%) rename config/metrics/counts_7d/{count_total_user_clicks_comment_filter_toggle_user_comments_weekly.yml => count_total_click_comment_filter_toggle_user_comments_in_mr_weekly.yml} (100%) diff --git a/config/events/user_clicks_comment_filter_toggle_user_comments.yml b/config/events/click_comment_filter_toggle_user_comments_in_mr.yml similarity index 100% rename from config/events/user_clicks_comment_filter_toggle_user_comments.yml rename to config/events/click_comment_filter_toggle_user_comments_in_mr.yml diff --git a/config/metrics/counts_28d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_monthly.yml b/config/metrics/counts_28d/count_distinct_user_id_from_click_comment_filter_toggle_user_comments_in_mr_monthly.yml similarity index 100% rename from config/metrics/counts_28d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_monthly.yml rename to config/metrics/counts_28d/count_distinct_user_id_from_click_comment_filter_toggle_user_comments_in_mr_monthly.yml diff --git a/config/metrics/counts_28d/count_total_user_clicks_comment_filter_toggle_user_comments_monthly.yml b/config/metrics/counts_28d/count_total_click_comment_filter_toggle_user_comments_in_mr_monthly.yml similarity index 100% rename from config/metrics/counts_28d/count_total_user_clicks_comment_filter_toggle_user_comments_monthly.yml rename to config/metrics/counts_28d/count_total_click_comment_filter_toggle_user_comments_in_mr_monthly.yml diff --git a/config/metrics/counts_7d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_weekly.yml b/config/metrics/counts_7d/count_distinct_user_id_from_click_comment_filter_toggle_user_comments_in_mr_weekly.yml similarity index 100% rename from config/metrics/counts_7d/count_distinct_user_id_from_user_clicks_comment_filter_toggle_user_comments_weekly.yml rename to config/metrics/counts_7d/count_distinct_user_id_from_click_comment_filter_toggle_user_comments_in_mr_weekly.yml diff --git a/config/metrics/counts_7d/count_total_user_clicks_comment_filter_toggle_user_comments_weekly.yml b/config/metrics/counts_7d/count_total_click_comment_filter_toggle_user_comments_in_mr_weekly.yml similarity index 100% rename from config/metrics/counts_7d/count_total_user_clicks_comment_filter_toggle_user_comments_weekly.yml rename to config/metrics/counts_7d/count_total_click_comment_filter_toggle_user_comments_in_mr_weekly.yml -- GitLab From ae719b8f251cd79fd3506f291da25c4893dda85c Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Wed, 20 Mar 2024 13:04:54 -0600 Subject: [PATCH 07/11] Simplify test setup based on review feedback --- .../notes/components/mr_discussion_filter_spec.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/spec/frontend/notes/components/mr_discussion_filter_spec.js b/spec/frontend/notes/components/mr_discussion_filter_spec.js index bbc8135e577422..7a652e049b859e 100644 --- a/spec/frontend/notes/components/mr_discussion_filter_spec.js +++ b/spec/frontend/notes/components/mr_discussion_filter_spec.js @@ -44,11 +44,7 @@ describe('Merge request discussion filter component', () => { } function findDropdownItem({ value }) { - const matchingItems = wrapper - .findAllComponents(GlListboxItem) - .filter((entry) => entry.html().includes(`js-data-item="${value}"`)).wrappers; - - return matchingItems.length ? matchingItems[0] : null; + return wrapper.findComponent(GlCollapsibleListbox).find(`[js-data-item=${value}]`); } afterEach(() => { @@ -172,11 +168,11 @@ describe('Merge request discussion filter component', () => { ${'comments'} | ${MR_FILTER_TRACKING_USER_COMMENTS} `( 'Send the correct event ($trackingEvent) for clicks on the filter item "$item"', - async ({ item, trackingEvent }) => { + ({ item, trackingEvent }) => { const entry = findDropdownItem({ value: item }); if (entry) { - await entry.find('div').element.click(); + entry.element.click(); } expect(trackingSpy).toHaveBeenCalledTimes(1); -- GitLab From 0b1acd3f0407b1e22c390f20a53f5391477d0a6d Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Thu, 18 Apr 2024 13:05:50 -0600 Subject: [PATCH 08/11] Map the filters to their string values in one place --- .../javascripts/notes/components/mr_discussion_filter.vue | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/notes/components/mr_discussion_filter.vue b/app/assets/javascripts/notes/components/mr_discussion_filter.vue index cfcf4d5900a694..b813cc091caa47 100644 --- a/app/assets/javascripts/notes/components/mr_discussion_filter.vue +++ b/app/assets/javascripts/notes/components/mr_discussion_filter.vue @@ -14,6 +14,7 @@ import { const filterOptionToTrackingEventMap = { comments: MR_FILTER_TRACKING_USER_COMMENTS, }; +const allFilters = MR_FILTER_OPTIONS.map((f) => f.value); export default { components: { @@ -27,7 +28,7 @@ export default { mixins: [InternalEvents.mixin()], data() { return { - selectedFilters: MR_FILTER_OPTIONS.map((f) => f.value), + selectedFilters: allFilters, }; }, computed: { @@ -88,7 +89,7 @@ export default { this.selectedFilters = []; }, selectAll() { - this.selectedFilters = MR_FILTER_OPTIONS.map((f) => f.value); + this.selectedFilters = allFilters; }, }, MR_FILTER_OPTIONS, -- GitLab From 97fd321aff834eb6f23920147fe3142ca4f89884 Mon Sep 17 00:00:00 2001 From: Thomas Randolph Date: Thu, 18 Apr 2024 13:11:16 -0600 Subject: [PATCH 09/11] Diff the selections to determine user interactions - Find items that only exist in the previous selection - Find items that only exist in the new selection - Trigger a "click" instrumentation event - We can assume the user interacted with the unique values t:pd#-1,wt#tel --- .../notes/components/mr_discussion_filter.vue | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/app/assets/javascripts/notes/components/mr_discussion_filter.vue b/app/assets/javascripts/notes/components/mr_discussion_filter.vue index b813cc091caa47..ebf7065d61913e 100644 --- a/app/assets/javascripts/notes/components/mr_discussion_filter.vue +++ b/app/assets/javascripts/notes/components/mr_discussion_filter.vue @@ -29,6 +29,7 @@ export default { data() { return { selectedFilters: allFilters, + previousFilters: allFilters, }; }, computed: { @@ -84,12 +85,30 @@ export default { localSyncFilters(filters) { this.updateMergeRequestFilters(filters); this.selectedFilters = filters; + this.previousFilters = filters; }, deselectAll() { this.selectedFilters = []; + this.previousFilters = []; }, selectAll() { this.selectedFilters = allFilters; + this.previousFilters = allFilters; + }, + select(newFilters) { + const previousDiff = this.previousFilters.filter( + (filterValue) => !newFilters.includes(filterValue), + ); + const newDiff = newFilters.filter( + (filterValue) => !this.previousFilters.includes(filterValue), + ); + const symmetricDifference = previousDiff.concat(newDiff); + + symmetricDifference.forEach((filterValue) => { + this.trackDropdownSelection(filterValue); + }); + + this.previousFilters = newFilters; }, }, MR_FILTER_OPTIONS, @@ -122,6 +141,7 @@ export default { @hidden="applyFilters" @reset="deselectAll" @select-all="selectAll" + @select="select" > diff --git a/spec/frontend/notes/components/mr_discussion_filter_spec.js b/spec/frontend/notes/components/mr_discussion_filter_spec.js index 7a652e049b859e..8f712e2af9054a 100644 --- a/spec/frontend/notes/components/mr_discussion_filter_spec.js +++ b/spec/frontend/notes/components/mr_discussion_filter_spec.js @@ -44,7 +44,7 @@ describe('Merge request discussion filter component', () => { } function findDropdownItem({ value }) { - return wrapper.findComponent(GlCollapsibleListbox).find(`[js-data-item=${value}]`); + return wrapper.findComponent(GlCollapsibleListbox).find(`[data-testid=listbox-item-${value}]`); } afterEach(() => { -- GitLab