Skip to content

Commit b412fe9

Browse files
committed
Added tests for detectors.js (snowplow#95)
1 parent 8f2bf23 commit b412fe9

5 files changed

Lines changed: 89 additions & 13 deletions

File tree

CHANGELOG

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ Version 2.0.0 (2014-03-XX)
33
Moved fixUpUrl into its own file, called lib/proxies.js (#112)
44
Fixed duplication of querystring parameter lookup (#111)
55
Tried running Snowplow JS Tracker from PhoneGap (#107) (TODO)
6-
Added tests for helpers.js (#96) (TODO)
7-
Added tests for detectors.js (#95) (TODO)
6+
Added tests for helpers.js (#96)
7+
Added tests for detectors.js (#95)
88
Replaced cookie.js with browser-cookie-lite (#88)
99
Added ad conversion tracking (#60)
1010
Added ad click tracking (#59)

Gruntfile.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,5 +232,5 @@ module.exports = function(grunt) {
232232
grunt.registerTask('publish', 'Upload to S3 and invalidate Cloudfront (full semantic version only)', ['upload_setup', 'concat', 'min', 's3:not_pinned', 'invalidate_cloudfront:not_pinned']);
233233
grunt.registerTask('publish-pinned', 'Upload to S3 and invalidate Cloudfront (full semantic version and semantic major version)', ['upload_setup', 'concat', 'min', 's3', 'invalidate_cloudfront']);
234234
grunt.registerTask('test', 'Intern tests', ['browserify:test', 'intern']);
235-
grunt.registerTask('travis', 'Intern tests for Travis CI', ['lodash','browserify:tests','intern']);
235+
grunt.registerTask('travis', 'Intern tests for Travis CI', ['lodash','browserify:test','intern']);
236236
}

tests/functional/detectors.js

Lines changed: 74 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,26 +38,92 @@ define([
3838
'intern/dojo/node!../../src/js/lib/helpers'
3939
], function(registerSuite, assert, helpers) {
4040

41-
// Expected viewport dimensions vary based on browser
42-
var expectedWidths = [980, 1024],
43-
expectedHeights = [636, 644, 670, 673, 684, 695, 705, 706, 712];
41+
var
42+
// Expected viewport dimensions vary based on browser
43+
expectedViewportWidths = [980, 1024],
44+
expectedViewportHeights = [636, 644, 670, 673, 684, 695, 705, 706, 712],
45+
46+
// User fingerprint varies based on browser features
47+
expectedSignatures = [
48+
90940656, 3343029130, 1101697779, 3900377526, 987357563,
49+
2536308034, 1421522027, 4288521977, 3773734853, 2744319702, 710620838];
4450

4551
registerSuite({
4652

4753
name: 'Detectors test',
4854

49-
'Get viewport': function() {
55+
'Get viewport dimensions': function() {
5056

5157
return this.remote
5258
.get(require.toUrl('tests/pages/detectors.html'))
5359
.waitForElementByCssSelector('body.loaded', 5000)
54-
.elementById('viewport')
60+
.elementById('detectViewport')
5561
.text()
5662
.then(function (text) {
5763
var dimensions = text.split('x');
58-
assert.include(expectedWidths, parseInt(dimensions[0]), 'Viewport width is valid');
59-
assert.include(expectedHeights, parseInt(dimensions[1]), 'Viewport height is valid');
64+
assert.include(expectedViewportWidths, parseInt(dimensions[0]), 'Viewport width is valid');
65+
assert.include(expectedViewportHeights, parseInt(dimensions[1]), 'Viewport height is valid');
66+
});
67+
},
68+
69+
'Check localStorage availability': function() {
70+
71+
return this.remote
72+
.get(require.toUrl('tests/pages/detectors.html'))
73+
.waitForElementByCssSelector('body.loaded', 5000)
74+
.elementById('localStorageAccessible')
75+
.text()
76+
.then(function (text) {
77+
assert.strictEqual(text, 'true', 'Detect localStorage accessibility');
78+
});
79+
},
80+
81+
'Check sessionStorage availability': function() {
82+
83+
return this.remote
84+
.get(require.toUrl('tests/pages/detectors.html'))
85+
.waitForElementByCssSelector('body.loaded', 5000)
86+
.elementById('hasSessionStorage')
87+
.text()
88+
.then(function (text) {
89+
assert.strictEqual(text, 'true', 'Detect sessionStorage');
90+
});
91+
},
92+
93+
'Check whether cookies are enabled availability': function() {
94+
95+
return this.remote
96+
.get(require.toUrl('tests/pages/detectors.html'))
97+
.waitForElementByCssSelector('body.loaded', 5000)
98+
.elementById('hasCookies')
99+
.text()
100+
.then(function (text) {
101+
assert.equal(text, '1', 'Detect whether cookies can be set');
102+
});
103+
},
104+
105+
'Detect timezone': function() {
106+
107+
return this.remote
108+
.get(require.toUrl('tests/pages/detectors.html'))
109+
.waitForElementByCssSelector('body.loaded', 5000)
110+
.elementById('detectTimezone')
111+
.text()
112+
.then(function (text) {
113+
assert.include(['UTC', 'America/Los_Angeles'], text, 'Detect the timezone');
114+
});
115+
},
116+
117+
'User fingerprinting': function() {
118+
119+
return this.remote
120+
.get(require.toUrl('tests/pages/detectors.html'))
121+
.waitForElementByCssSelector('body.loaded', 5000)
122+
.elementById('detectSignature')
123+
.text()
124+
.then(function (text) {
125+
assert.include(expectedSignatures, parseInt(text), 'Create a user fingerprint based on browser features');
60126
});
61127
}
62128
});
63-
});
129+
});

tests/pages/detectors.html

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@
44
<title>Detectors test page</title>
55
</head>
66
<body>
7-
<p id="viewport">Viewport here</p>
7+
<p id="detectViewport">Viewport dimensions here</p>
8+
<p id="localStorageAccessible">localStorage accessibility here</p>
9+
<p id="hasSessionStorage">sessionStorage here</p>
10+
<p id="hasCookies">hasCookies here</p>
11+
<p id="detectTimezone">Timezone here</p>
12+
<p id="detectSignature">User fingerprint here</p>
813

914
<script src="./detectors.js"></script>
1015

tests/scripts/detectors.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,9 @@
3434

3535
var detectors = require('../../src/js/lib/detectors.js');
3636

37-
document.getElementById('viewport').innerHTML = detectors.detectViewport();
37+
document.getElementById('detectViewport').innerHTML = detectors.detectViewport();
38+
document.getElementById('localStorageAccessible').innerHTML = detectors.localStorageAccessible();
39+
document.getElementById('hasSessionStorage').innerHTML = detectors.hasSessionStorage();
40+
document.getElementById('hasCookies').innerHTML = detectors.hasCookies();
41+
document.getElementById('detectTimezone').innerHTML = detectors.detectTimezone();
42+
document.getElementById('detectSignature').innerHTML = detectors.detectSignature();

0 commit comments

Comments
 (0)