Skip to content

Commit 9a10e88

Browse files
committed
fix(tracker): add enableJSErrorTracking as configuration option
cherry-picked from 1586d78
1 parent 234ea16 commit 9a10e88

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

projects/tracker/src/lib/configuration.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export const INTERNAL_MATOMO_CONFIGURATION = new InjectionToken<InternalMatomoCo
2121
enableLinkTracking: true,
2222
trackAppInitialLoad: false,
2323
requireConsent: MatomoConsentMode.NONE,
24+
enableJSErrorTracking: false,
2425
...requireNonNull(inject(MATOMO_CONFIGURATION, InjectFlags.Optional), CONFIG_NOT_FOUND),
2526
} as InternalMatomoConfiguration),
2627
}
@@ -102,6 +103,9 @@ export interface BaseMatomoConfiguration {
102103
* See Matomo guide: {@link https://developer.matomo.org/guides/tracking-consent}
103104
*/
104105
requireConsent?: MatomoConsentMode;
106+
107+
/** Set to `true` to enable Javascript errors tracking as <i>events</i> (with category <i>JavaScript Errors</i>) */
108+
enableJSErrorTracking?: boolean;
105109
}
106110

107111
export interface BaseAutoMatomoConfiguration {

projects/tracker/src/lib/matomo-initializer.service.spec.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,27 @@ describe('MatomoInitializerService', () => {
153153
expect(tracker.requireCookieConsent).toHaveBeenCalledBefore(tracker.trackPageView);
154154
});
155155

156+
it('should enable JS errors tracking if enabled', () => {
157+
// Given
158+
const service = instantiate({
159+
mode: MatomoInitializationMode.MANUAL,
160+
trackAppInitialLoad: true,
161+
enableJSErrorTracking: true,
162+
});
163+
const tracker = TestBed.inject(MatomoTracker);
164+
165+
spyOn(tracker, 'trackPageView');
166+
spyOn(tracker, 'enableJSErrorTracking');
167+
168+
// When
169+
service.init();
170+
171+
// Then
172+
expect(tracker.trackPageView).toHaveBeenCalledTimes(1);
173+
expect(tracker.enableJSErrorTracking).toHaveBeenCalledTimes(1);
174+
expect(tracker.enableJSErrorTracking).toHaveBeenCalledBefore(tracker.trackPageView);
175+
});
176+
156177
function setUpScriptInjection(cb: (injectedScript: HTMLScriptElement) => void): void {
157178
const mockContainer = jasmine.createSpyObj<HTMLElement>('FakeContainer', ['insertBefore']);
158179
const mockExistingScript = jasmine.createSpyObj<HTMLScriptElement>('FakeExistingScript', [], {

projects/tracker/src/lib/matomo-initializer.service.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,10 @@ export class MatomoInitializerService {
109109
tracker.requireConsent();
110110
}
111111

112+
if (this.config.enableJSErrorTracking) {
113+
tracker.enableJSErrorTracking();
114+
}
115+
112116
if (this.config.trackAppInitialLoad) {
113117
tracker.trackPageView();
114118
}

0 commit comments

Comments
 (0)