Skip to content
Snippets Groups Projects
Commit 4724a778 authored by Axel Garcia's avatar Axel Garcia
Browse files

Add standard schema for tracking on frontend

parent 59ab13ac
No related branches found
No related tags found
No related merge requests found
import { omitBy, isUndefined } from 'lodash';
 
export const STANDARD_CONTEXT = {
schema: 'iglu:com.gitlab/gitlab_standard/jsonschema/1-0-3',
data: {
environment: process.env.NODE_ENV === 'production' ? 'production' : 'staging',
source: 'gitlab-javascript',
},
};
const DEFAULT_SNOWPLOW_OPTIONS = {
namespace: 'gl',
hostname: window.location.hostname,
Loading
Loading
@@ -67,8 +75,13 @@ export default class Tracking {
// eslint-disable-next-line @gitlab/require-i18n-strings
if (!category) throw new Error('Tracking: no category provided for tracking.');
 
const { label, property, value, context } = data;
const contexts = context ? [context] : undefined;
const { label, property, value } = data;
const contexts = [STANDARD_CONTEXT];
if (data.context) {
contexts.push(data.context);
}
return window.snowplow('trackStructEvent', category, action, label, property, value, contexts);
}
 
Loading
Loading
@@ -134,7 +147,9 @@ export function initDefaultTrackers() {
if (!Tracking.enabled()) return;
 
window.snowplow('enableActivityTracking', 30, 30);
window.snowplow('trackPageView'); // must be after enableActivityTracking
// must be after enableActivityTracking
const contexts = [STANDARD_CONTEXT];
window.snowplow('trackPageView', null, contexts);
 
if (window.snowplowOptions.formTracking) window.snowplow('enableFormTracking');
if (window.snowplowOptions.linkClickTracking) window.snowplow('enableLinkClickTracking');
Loading
Loading
import { setHTMLFixture } from 'helpers/fixtures';
import Tracking, { initUserTracking, initDefaultTrackers } from '~/tracking';
import Tracking, { initUserTracking, initDefaultTrackers, STANDARD_CONTEXT } from '~/tracking';
 
describe('Tracking', () => {
let snowplowSpy;
Loading
Loading
@@ -45,7 +45,7 @@ describe('Tracking', () => {
it('should activate features based on what has been enabled', () => {
initDefaultTrackers();
expect(snowplowSpy).toHaveBeenCalledWith('enableActivityTracking', 30, 30);
expect(snowplowSpy).toHaveBeenCalledWith('trackPageView');
expect(snowplowSpy).toHaveBeenCalledWith('trackPageView', null, [STANDARD_CONTEXT]);
expect(snowplowSpy).not.toHaveBeenCalledWith('enableFormTracking');
expect(snowplowSpy).not.toHaveBeenCalledWith('enableLinkClickTracking');
 
Loading
Loading
@@ -88,7 +88,7 @@ describe('Tracking', () => {
'_label_',
undefined,
undefined,
undefined,
[STANDARD_CONTEXT],
);
});
 
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment