Skip to content

Commit 9ee5f80

Browse files
rachelthecodesmithJakub Miarka
and
Jakub Miarka
committed
HUB-97: Log choice of verify users
We'd like to see what choices exisiting Verify users make on the service sign-in page. Therefore we're calling a Verify endpoint using an ajax call and based on the user cookie to decide whether it's a Verify user and report accordingly. This is a baseline test to learn about the users' behaviour. Co-Authored-by: Jakub Miarka <[email protected]>
1 parent d8a3794 commit 9ee5f80

File tree

2 files changed

+127
-8
lines changed

2 files changed

+127
-8
lines changed

app/assets/javascripts/modules/track-radio-group.js

+29-5
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,45 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
88

99
GOVUK.Modules.TrackRadioGroup = function () {
1010
this.start = function (element) {
11-
element.on('submit', function (event) {
11+
track(element)
12+
13+
checkVerifyUser(element)
14+
}
15+
16+
function track (element, withHint) {
17+
element.on('submit', function (event) {
18+
1219
var options = { transport: 'beacon' }
1320

1421
var $submittedForm = $(event.target)
1522

1623
var $checkedOption = $submittedForm.find('input:checked')
1724

18-
var checkedValue = $checkedOption.val()
25+
var checkedValue = $checkedOption.val();
1926

2027
if (typeof checkedValue === 'undefined') {
2128
checkedValue = 'submitted-without-choosing'
2229
}
23-
24-
GOVUK.analytics.trackEvent('Radio button chosen', checkedValue, options)
30+
GOVUK.analytics.trackEvent('Radio button chosen', checkedValue + (withHint ? '-with-hint' : ''), options)
2531
})
2632
}
33+
34+
function checkVerifyUser (element) {
35+
$.ajax({
36+
url: 'https://www.signin.service.gov.uk/hint',
37+
cache: false,
38+
dataType: 'jsonp',
39+
timeout: 3000
40+
}).then(function(data){
41+
GOVUK.Modules.TrackRadioGroup.trackVerifyUser(element, data);
42+
}, function(e){console.log("error", e)})
43+
}
44+
45+
this.trackVerifyUser = function (element, data) {
46+
if (data != null && data.value === true) {
47+
GOVUK.analytics.trackEvent('verify-hint', 'shown', { transport: 'beacon'});
48+
track(element, data.value);
49+
}
50+
}
2751
}
28-
})(window, window.GOVUK)
52+
})(window, window.GOVUK);

spec/javascripts/track-radio-group.spec.js

+98-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
var $ = window.jQuery
44

55
describe('A radio group tracker', function () {
6-
'use strict'
6+
77

88
var GOVUK = window.GOVUK
99
var tracker
@@ -20,7 +20,7 @@ describe('A radio group tracker', function () {
2020
'<form onsubmit="event.preventDefault()">' +
2121
'<input type="radio" name="sign-in-option" value="government-gateway">' +
2222
'<input type="radio" name="sign-in-option" value="govuk-verify">' +
23-
'<input type="radio" name="sign-in-option" value="lost-account-details">' +
23+
'<input type="radio" name="sign-in-option" value="create-an-account">' +
2424
'<button>Submit</button>' +
2525
'</form>' +
2626
'</div>'
@@ -30,6 +30,7 @@ describe('A radio group tracker', function () {
3030
tracker.start(element)
3131
})
3232

33+
3334
it('tracks government-gateway checked radio when clicking submit', function () {
3435
element.find('input[value="government-gateway"]').trigger('click')
3536
element.find('form').trigger('submit')
@@ -46,7 +47,101 @@ describe('A radio group tracker', function () {
4647
expect(GOVUK.analytics.trackEvent).toHaveBeenCalledWith(
4748
'Radio button chosen', 'govuk-verify', { transport: 'beacon' }
4849
)
49-
})
50+
});
51+
52+
it('tracks govuk-verify-with-hint event when clicking submit if user has visited verify', function () {
53+
var data = {
54+
status: 'OK',
55+
value: true
56+
}
57+
tracker.trackVerifyUser(element, data)
58+
element.find('input[value="govuk-verify"]').trigger('click')
59+
element.find('form').trigger('submit')
60+
61+
expect(GOVUK.analytics.trackEvent).toHaveBeenCalledWith(
62+
'verify-hint', 'shown', { transport: 'beacon' }
63+
)
64+
expect(GOVUK.analytics.trackEvent).toHaveBeenCalledWith(
65+
'Radio button chosen', 'govuk-verify', { transport: 'beacon' }
66+
)
67+
expect(GOVUK.analytics.trackEvent).toHaveBeenCalledWith(
68+
'Radio button chosen', 'govuk-verify-with-hint', { transport: 'beacon' }
69+
)
70+
});
71+
72+
it('does not track govuk-verify-with-hint event when clicking submit if user has not visited verify', function () {
73+
var data = {
74+
status: 'OK',
75+
value: false
76+
}
77+
tracker.trackVerifyUser(element, data)
78+
expect(GOVUK.analytics.trackEvent).not.toHaveBeenCalledWith(
79+
'verify-hint', 'shown', { transport: 'beacon' }
80+
)
81+
element.find('input[value="govuk-verify"]').trigger('click')
82+
element.find('form').trigger('submit')
83+
84+
expect(GOVUK.analytics.trackEvent).toHaveBeenCalledWith(
85+
'Radio button chosen', 'govuk-verify', { transport: 'beacon' }
86+
)
87+
expect(GOVUK.analytics.trackEvent).not.toHaveBeenCalledWith(
88+
'Radio button chosen', 'govuk-verify-with-hint', { transport: 'beacon' }
89+
)
90+
});
91+
92+
it('does not track govuk-verify-with-hint event when clicking submit if verify value is not boolean', function () {
93+
var data = {
94+
status: 'OK',
95+
value: 'bar'
96+
}
97+
tracker.trackVerifyUser(element, data)
98+
element.find('input[value="govuk-verify"]').trigger('click')
99+
element.find('form').trigger('submit')
100+
101+
expect(GOVUK.analytics.trackEvent).not.toHaveBeenCalledWith(
102+
'verify-hint', 'shown', { transport: 'beacon' }
103+
)
104+
expect(GOVUK.analytics.trackEvent).toHaveBeenCalledWith(
105+
'Radio button chosen', 'govuk-verify', { transport: 'beacon' }
106+
)
107+
expect(GOVUK.analytics.trackEvent).not.toHaveBeenCalledWith(
108+
'Radio button chosen', 'govuk-verify-with-hint', { transport: 'beacon' }
109+
)
110+
});
111+
112+
it('does not track govuk-verify-with-hint event when clicking submit if verify response is null', function () {
113+
var data = null
114+
tracker.trackVerifyUser(element, data)
115+
element.find('input[value="govuk-verify"]').trigger('click')
116+
element.find('form').trigger('submit')
117+
118+
expect(GOVUK.analytics.trackEvent).not.toHaveBeenCalledWith(
119+
'verify-hint', 'shown', { transport: 'beacon' }
120+
)
121+
expect(GOVUK.analytics.trackEvent).toHaveBeenCalledWith(
122+
'Radio button chosen', 'govuk-verify', { transport: 'beacon' }
123+
)
124+
expect(GOVUK.analytics.trackEvent).not.toHaveBeenCalledWith(
125+
'Radio button chosen', 'govuk-verify-with-hint', { transport: 'beacon' }
126+
)
127+
});
128+
129+
it('does not track govuk-verify-with-hint event when clicking submit if verify response is not an object', function () {
130+
var data = 'string'
131+
tracker.trackVerifyUser(element, data)
132+
element.find('input[value="govuk-verify"]').trigger('click')
133+
element.find('form').trigger('submit')
134+
135+
expect(GOVUK.analytics.trackEvent).not.toHaveBeenCalledWith(
136+
'verify-hint', 'shown', { transport: 'beacon' }
137+
)
138+
expect(GOVUK.analytics.trackEvent).toHaveBeenCalledWith(
139+
'Radio button chosen', 'govuk-verify', { transport: 'beacon' }
140+
)
141+
expect(GOVUK.analytics.trackEvent).not.toHaveBeenCalledWith(
142+
'Radio button chosen', 'govuk-verify-with-hint', { transport: 'beacon' }
143+
)
144+
});
50145

51146
it('tracks no choice when clicking submit and checked nothing', function () {
52147
element.find('form').trigger('submit')

0 commit comments

Comments
 (0)