Skip to content

Commit 297cf04

Browse files
committed
AB test!
1 parent d6faab3 commit 297cf04

3 files changed

Lines changed: 26 additions & 10 deletions

File tree

javascripts/experiment.js

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import murmur from 'imurmurhash'
22
import { getUserEventsId, sendEvent } from './events'
3+
import toggleImages from './toggle-images'
34
// import h from './hyperscript'
45

56
const TREATMENT = 'TREATMENT'
@@ -20,11 +21,21 @@ export function sendSuccess (test) {
2021
})
2122
}
2223

24+
function applyTreatment (toggleButton) {
25+
// Treatment-specific options.
26+
const hideImagesByDefault = true
27+
const focusButtonByDefault = true
28+
29+
toggleImages(hideImagesByDefault, focusButtonByDefault)
30+
}
31+
2332
export default function () {
2433
// *** Example test code ***
25-
// const testName = '$test-name$'
26-
// const xbucket = bucket(testName)
27-
// const x = document.querySelector(...)
28-
// x.addEventListener('click', () => { sendSuccess(testName) })
29-
// if (xbucket === TREATMENT) applyTreatment(x)
34+
const testName = 'toggle-images'
35+
const xbucket = bucket(testName)
36+
const x = document.getElementById('js-toggle-images')
37+
if (!x) return
38+
39+
x.addEventListener('click', () => { sendSuccess(testName) })
40+
if (xbucket === TREATMENT) applyTreatment(x)
3041
}

javascripts/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ document.addEventListener('DOMContentLoaded', async () => {
4141
airgapLinks()
4242
releaseNotes()
4343
initializeEvents()
44-
experiment()
4544
helpfulness()
4645
toggleImages()
46+
experiment()
4747
})

javascripts/toggle-images.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
// import { sendEvent } from './events'
22
import Cookies from 'js-cookie'
33

4-
// Determines whether images are hidden or displayed on first visit.
5-
const hideImagesByDefault = false
64

75
// Set the image placeholder icon here.
86
const placeholderImagePath = '/assets/images/octicons/image.svg'
@@ -11,7 +9,7 @@ const placeholderImagePath = '/assets/images/octicons/image.svg'
119
* This module adds a new icon button in the margin to toggle all images on the page.
1210
* It uses cookies to keep track of a user's selected image preference.
1311
*/
14-
export default function () {
12+
export default function (hideImagesByDefault = false, focusButtonByDefault = false) {
1513
const toggleImagesBtn = document.getElementById('js-toggle-images')
1614
if (!toggleImagesBtn) return
1715

@@ -25,7 +23,7 @@ export default function () {
2523
toggleImagesBtn.removeAttribute('hidden')
2624

2725
// Look for a cookie with image visibility preference; otherwise, use the default.
28-
const hideImagesPreferred = (Cookies.get('hideImagesPreferred') === 'true') || hideImagesByDefault
26+
const hideImagesPreferred = hideImagesByDefault || (Cookies.get('hideImagesPreferred') === 'true')
2927

3028
// Hide the images if that is the preference.
3129
if (hideImagesPreferred) {
@@ -42,10 +40,17 @@ export default function () {
4240

4341
// Set the starting state depending on user preferences.
4442
if (hideImagesPreferred) {
43+
onIcon.setAttribute('hidden', true)
4544
offIcon.removeAttribute('hidden')
4645
toggleImagesBtn.setAttribute('aria-label', tooltipImagesOff)
46+
// Show the tooltip if images are hidden by default to help users see the toggle button.
47+
// Downside: the button will begin with focus whenever the user goes to a new page.
48+
if (focusButtonByDefault) {
49+
toggleImagesBtn.focus({ preventScroll: true })
50+
}
4751
} else {
4852
onIcon.removeAttribute('hidden')
53+
offIcon.setAttribute('hidden', true)
4954
toggleImagesBtn.setAttribute('aria-label', tooltipImagesOn)
5055
}
5156

0 commit comments

Comments
 (0)