Add logic for respecting browser DNT setting
This commit is contained in:
parent
e12f7fe062
commit
ca9598c1fb
|
@ -15,8 +15,14 @@ const extractData = (el, opts = {}) => {
|
|||
};
|
||||
|
||||
export default class Tracking {
|
||||
static trackable() {
|
||||
return !['1', 'yes'].includes(
|
||||
window.doNotTrack || navigator.doNotTrack || navigator.msDoNotTrack,
|
||||
);
|
||||
}
|
||||
|
||||
static enabled() {
|
||||
return typeof window.snowplow === 'function';
|
||||
return typeof window.snowplow === 'function' && this.trackable();
|
||||
}
|
||||
|
||||
static event(category = document.body.dataset.page, event = 'generic', data = {}) {
|
||||
|
|
|
@ -15,6 +15,12 @@ describe('Tracking', () => {
|
|||
snowplowSpy = jest.spyOn(window, 'snowplow');
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
window.doNotTrack = undefined;
|
||||
navigator.doNotTrack = undefined;
|
||||
navigator.msDoNotTrack = undefined;
|
||||
});
|
||||
|
||||
it('tracks to snowplow (our current tracking system)', () => {
|
||||
Tracking.event('_category_', '_eventName_', { label: '_label_' });
|
||||
|
||||
|
@ -31,6 +37,27 @@ describe('Tracking', () => {
|
|||
|
||||
expect(snowplowSpy).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('skips tracking if the user does not want to be tracked (general spec)', () => {
|
||||
window.doNotTrack = '1';
|
||||
Tracking.event('_category_', '_eventName_');
|
||||
|
||||
expect(snowplowSpy).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('skips tracking if the user does not want to be tracked (firefox legacy)', () => {
|
||||
navigator.doNotTrack = 'yes';
|
||||
Tracking.event('_category_', '_eventName_');
|
||||
|
||||
expect(snowplowSpy).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('skips tracking if the user does not want to be tracked (IE legacy)', () => {
|
||||
navigator.msDoNotTrack = '1';
|
||||
Tracking.event('_category_', '_eventName_');
|
||||
|
||||
expect(snowplowSpy).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
describe('tracking interface events', () => {
|
||||
|
|
Loading…
Reference in New Issue