To validate tracking of Custom Events, use the following Array in your Jasmine expectations:
['send', 'event', 'Button', 'Click', 'Jumbotron CTA']
│ │ │ │ └──> 5. Event Label
│ │ │ └───────────> 4. Event Action
│ │ └─────────────────────> 3. Event Category
│ └──────────────────────────────> 2. (Standard Google Analytics parameter)
└──────────────────────────────────────> 1. (Standard Google Analytics parameter)
Using direct ga()
calls, checking proper tracking of Events could be done in the following manner:
describe('The Google Analytics "click" tracking', function () {
beforeEach(function () {
// Load the page to test:
browser.get('index.html');
// Register the Google Analytics Event Data Interceptor:
browser.driver.registerGoogleAnalyticsEventDataInterceptor();
});
it('should fire an Event when clicking on the Jumbotron CTA', function (done) {
// Click on the "Jumbotron" CTA:
element( by.css('#jumbotronCTA') ).click();
// Get the "LastEvent" object back from the browser:
browser.driver.executeScript(function () {
return window.GAWebTester.getLastEvent();
})
.then(
// Validate the content of the "LastData" object:
function successCallback (LastData) {
expect( LastData ).toEqual( ['send', 'event', 'Button', 'Click', 'Jumbotron CTA'] );
},
// If there was an error getting back the "LastData" object from the browser, fail the test:
function errorCallback (error) {
fail('Should not have received Error: ' + JSON.stringify(error));
}
)
.then(done);
});
});