diff --git a/app/assets/javascripts/comment_templates/components/form.vue b/app/assets/javascripts/comment_templates/components/form.vue index 334c67ca339d7ad3410e07a6053836d928c3b635..0dadec7a5c553c514dfb19f1de72f0a35d79f163 100644 --- a/app/assets/javascripts/comment_templates/components/form.vue +++ b/app/assets/javascripts/comment_templates/components/form.vue @@ -5,6 +5,7 @@ import MarkdownField from '~/vue_shared/components/markdown/field.vue'; import { helpPagePath } from '~/helpers/help_page_helper'; import { logError } from '~/lib/logger'; import { __ } from '~/locale'; +import { InternalEvents } from '~/tracking'; import createSavedReplyMutation from '../queries/create_saved_reply.mutation.graphql'; import updateSavedReplyMutation from '../queries/update_saved_reply.mutation.graphql'; @@ -17,6 +18,7 @@ export default { GlAlert, MarkdownField, }, + mixins: [InternalEvents.mixin()], props: { id: { type: String, @@ -91,6 +93,7 @@ export default { this.$emit('saved'); this.updateCommentTemplate = { name: '', content: '' }; this.showValidation = false; + this.track_event('i_code_review_saved_replies_create'); } }, }) diff --git a/config/metrics/counts_28d/20210427102618_code_review_category_monthly_active_users.yml b/config/metrics/counts_28d/20210427102618_code_review_category_monthly_active_users.yml index 51a688a5806f2e573fdae521b8e5efc1307e648e..b8c5169e93a0ca7c559e977ad680bf591f5c2992 100644 --- a/config/metrics/counts_28d/20210427102618_code_review_category_monthly_active_users.yml +++ b/config/metrics/counts_28d/20210427102618_code_review_category_monthly_active_users.yml @@ -139,3 +139,4 @@ options: - 'i_code_review_merge_request_widget_security_reports_expand_success' - 'i_code_review_merge_request_widget_security_reports_expand_warning' - 'i_code_review_merge_request_widget_security_reports_expand_failed' + - 'i_code_review_saved_replies_create' diff --git a/config/metrics/counts_28d/20210427103119_code_review_group_monthly_active_users.yml b/config/metrics/counts_28d/20210427103119_code_review_group_monthly_active_users.yml index 9140ab4cc5f901bf4990b27603d3ad5952471216..3ec0903e363eed8fb508b226b44c815fb69f31f7 100644 --- a/config/metrics/counts_28d/20210427103119_code_review_group_monthly_active_users.yml +++ b/config/metrics/counts_28d/20210427103119_code_review_group_monthly_active_users.yml @@ -144,3 +144,4 @@ options: - 'i_code_review_merge_request_widget_security_reports_expand_success' - 'i_code_review_merge_request_widget_security_reports_expand_warning' - 'i_code_review_merge_request_widget_security_reports_expand_failed' + - 'i_code_review_saved_replies_create' diff --git a/config/metrics/counts_28d/20230724140653_i_code_review_saved_replies_create_monthly.yml b/config/metrics/counts_28d/20230724140653_i_code_review_saved_replies_create_monthly.yml new file mode 100644 index 0000000000000000000000000000000000000000..ac891dcc18c1172396d70d65c43554dbd0c92238 --- /dev/null +++ b/config/metrics/counts_28d/20230724140653_i_code_review_saved_replies_create_monthly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_saved_replies_create_monthly +description: Monthly count of unique users who create a saved comment reply +product_section: dev +product_stage: create +product_group: code_review +value_type: number +status: active +milestone: "16.3" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/126884 +time_frame: 28d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - i_code_review_saved_replies_create diff --git a/config/metrics/counts_7d/20210427103328_code_review_group_monthly_active_users.yml b/config/metrics/counts_7d/20210427103328_code_review_group_monthly_active_users.yml index 7e209470ac9115c4b44643c36faf37a1dedfa6ed..6a0a14bdc2682044d8add37b90848feec01ae068 100644 --- a/config/metrics/counts_7d/20210427103328_code_review_group_monthly_active_users.yml +++ b/config/metrics/counts_7d/20210427103328_code_review_group_monthly_active_users.yml @@ -142,3 +142,4 @@ options: - 'i_code_review_merge_request_widget_security_reports_expand_success' - 'i_code_review_merge_request_widget_security_reports_expand_warning' - 'i_code_review_merge_request_widget_security_reports_expand_failed' + - 'i_code_review_saved_replies_create' diff --git a/config/metrics/counts_7d/20210427103407_code_review_category_monthly_active_users.yml b/config/metrics/counts_7d/20210427103407_code_review_category_monthly_active_users.yml index 343e0105bf7dc8b1f3755fce47a17c05df0e4d23..18d69d8e2f7ef00e852cca36c5ade867ee82e448 100644 --- a/config/metrics/counts_7d/20210427103407_code_review_category_monthly_active_users.yml +++ b/config/metrics/counts_7d/20210427103407_code_review_category_monthly_active_users.yml @@ -137,3 +137,4 @@ options: - 'i_code_review_merge_request_widget_security_reports_expand_success' - 'i_code_review_merge_request_widget_security_reports_expand_warning' - 'i_code_review_merge_request_widget_security_reports_expand_failed' + - 'i_code_review_saved_replies_create' diff --git a/config/metrics/counts_7d/20230724140652_i_code_review_saved_replies_create_weekly.yml b/config/metrics/counts_7d/20230724140652_i_code_review_saved_replies_create_weekly.yml new file mode 100644 index 0000000000000000000000000000000000000000..565b9292c017c6a23a5711307f564270b6c06074 --- /dev/null +++ b/config/metrics/counts_7d/20230724140652_i_code_review_saved_replies_create_weekly.yml @@ -0,0 +1,25 @@ +--- +key_path: redis_hll_counters.code_review.i_code_review_saved_replies_create_weekly +description: Weekly count of unique users who create a saved comment reply +product_section: dev +product_stage: create +product_group: code_review +value_type: number +status: active +milestone: "16.3" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/126884 +time_frame: 7d +data_source: redis_hll +data_category: optional +instrumentation_class: RedisHLLMetric +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + events: + - i_code_review_saved_replies_create diff --git a/config/metrics/counts_all/20230725200123_i_code_review_saved_replies_count_create.yml b/config/metrics/counts_all/20230725200123_i_code_review_saved_replies_count_create.yml new file mode 100644 index 0000000000000000000000000000000000000000..64cfcee0ef4037577bb39694719499f6eca586ad --- /dev/null +++ b/config/metrics/counts_all/20230725200123_i_code_review_saved_replies_count_create.yml @@ -0,0 +1,25 @@ +--- +key_path: counts.i_code_review_saved_replies_count_create +description: Total number of times a saved reply was created +product_section: dev +product_stage: create +product_group: code_review +value_type: number +status: active +milestone: "16.3" +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/126884 +time_frame: all +data_source: redis +data_category: optional +instrumentation_class: RedisMetric +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate +options: + event: create + prefix: i_code_review_saved_replies diff --git a/spec/frontend/comment_templates/components/form_spec.js b/spec/frontend/comment_templates/components/form_spec.js index 053a5099c37b335e78d41783436627089df050ad..b48feba5290d4baf38eac3947d317ec56f360d20 100644 --- a/spec/frontend/comment_templates/components/form_spec.js +++ b/spec/frontend/comment_templates/components/form_spec.js @@ -5,6 +5,7 @@ import VueApollo from 'vue-apollo'; import createdSavedReplyResponse from 'test_fixtures/graphql/comment_templates/create_saved_reply.mutation.graphql.json'; import createdSavedReplyErrorResponse from 'test_fixtures/graphql/comment_templates/create_saved_reply_with_errors.mutation.graphql.json'; import createMockApollo from 'helpers/mock_apollo_helper'; +import { mockTracking } from 'helpers/tracking_helper'; import waitForPromises from 'helpers/wait_for_promises'; import Form from '~/comment_templates/components/form.vue'; import createSavedReplyMutation from '~/comment_templates/queries/create_saved_reply.mutation.graphql'; @@ -52,6 +53,12 @@ const findSubmitBtn = () => wrapper.find('[data-testid="comment-template-form-su describe('Comment templates form component', () => { describe('creates comment template', () => { + let trackingSpy; + + beforeEach(() => { + trackingSpy = mockTracking(undefined, window.document, jest.spyOn); + }); + it('calls apollo mutation', async () => { wrapper = createComponent(); @@ -66,6 +73,11 @@ describe('Comment templates form component', () => { content: 'Test content', name: 'Test', }); + expect(trackingSpy).toHaveBeenCalledWith( + expect.any(String), + 'i_code_review_saved_replies_create', + expect.any(Object), + ); }); it('does not submit when form validation fails', async () => {