mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-06 11:23:48 -05:00
Sets it on the tracker which means this value gets sent for each: - pageview - event See: https://developers.google.com/analytics/devguides/collection/analyticsjs/pages We can only test that this has been set on the tracker, not how that effects what is sent to GA, in the JS tests. This change has been tested in-browser with the Chrome Analytics Debugger. This revealed the contents of what is in the beacon sent to GA and allowed confirmation the title was being set correctly. See: https://chrome.google.com/webstore/detail/google-analytics-debugger/jnkmfdileelhofjcijamephohjechhna/related
124 lines
2.5 KiB
JavaScript
124 lines
2.5 KiB
JavaScript
const helpers = require('../support/helpers');
|
|
|
|
beforeAll(() => {
|
|
|
|
// add the script GA looks for in the document
|
|
document.body.appendChild(document.createElement('script'));
|
|
|
|
require('../../../app/assets/javascripts/govuk/cookie-functions.js');
|
|
require('../../../app/assets/javascripts/analytics/analytics.js');
|
|
require('../../../app/assets/javascripts/analytics/init.js');
|
|
|
|
});
|
|
|
|
afterAll(() => {
|
|
|
|
require('../support/teardown.js');
|
|
|
|
});
|
|
|
|
describe("Analytics init", () => {
|
|
|
|
beforeAll(() => {
|
|
|
|
window.ga = jest.fn();
|
|
jest.spyOn(window.GOVUK.Analytics, 'load');
|
|
|
|
// pretend we're on the /privacy page
|
|
jest.spyOn(window, 'location', 'get').mockImplementation(() => {
|
|
return {
|
|
'pathname': '/privacy',
|
|
'search': ''
|
|
};
|
|
});
|
|
|
|
});
|
|
|
|
afterEach(() => {
|
|
|
|
window.GOVUK.Analytics.load.mockClear();
|
|
window.ga.mockClear();
|
|
|
|
});
|
|
|
|
test("After the init.js script has been loaded, Google Analytics will be disabled", () => {
|
|
|
|
expect(window['ga-disable-UA-75215134-1']).toBe(true);
|
|
|
|
});
|
|
|
|
describe("If initAnalytics has already been called", () => {
|
|
|
|
beforeAll(() => {
|
|
|
|
// Fake a tracker instance
|
|
window.GOVUK.analytics = {};
|
|
|
|
});
|
|
|
|
beforeEach(() => {
|
|
|
|
window.GOVUK.initAnalytics();
|
|
|
|
});
|
|
|
|
afterAll(() => {
|
|
|
|
delete window.GOVUK.analytics;
|
|
|
|
});
|
|
|
|
test("The Google Analytics libraries will not be loaded", () => {
|
|
|
|
expect(window.GOVUK.Analytics.load).not.toHaveBeenCalled();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
describe("If initAnalytics has not been called", () => {
|
|
|
|
beforeEach(() => {
|
|
|
|
window.GOVUK.initAnalytics();
|
|
|
|
});
|
|
|
|
afterEach(() => {
|
|
|
|
// window.GOVUK.initAnalytics sets up a new window.GOVUK.analytics which needs clearing
|
|
delete window.GOVUK.analytics;
|
|
|
|
});
|
|
|
|
test("Google Analytics will not be disabled", () => {
|
|
|
|
expect(window['ga-disable-UA-75215134-1']).toBe(false);
|
|
|
|
});
|
|
|
|
test("The Google Analytics libraries will have been loaded", () => {
|
|
|
|
expect(window.GOVUK.Analytics.load).toHaveBeenCalled();
|
|
|
|
});
|
|
|
|
test("There will be an interface with the Google Analytics API", () => {
|
|
|
|
expect(window.GOVUK.analytics).toBeDefined();
|
|
|
|
});
|
|
|
|
test("A pageview will be registered", () => {
|
|
|
|
expect(window.ga.mock.calls.length).toEqual(6);
|
|
|
|
// The first 5 calls configure the analytics tracker. All subsequent calls send data
|
|
expect(window.ga.mock.calls[5]).toEqual(['send', 'pageview', '/privacy']);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|