Skip to content
This repository has been archived by the owner on Apr 4, 2018. It is now read-only.

Commit

Permalink
Add bold testing files
Browse files Browse the repository at this point in the history
  • Loading branch information
alextea committed Jan 23, 2013
1 parent d66abac commit 2735d3a
Show file tree
Hide file tree
Showing 119 changed files with 21,625 additions and 0 deletions.
226 changes: 226 additions & 0 deletions bold-testing/index.html

Large diffs are not rendered by default.

323 changes: 323 additions & 0 deletions bold-testing/passport-fees.html

Large diffs are not rendered by default.

290 changes: 290 additions & 0 deletions bold-testing/running-a-limited-company.html

Large diffs are not rendered by default.

13 changes: 13 additions & 0 deletions bold-testing/static.dev.gov.uk/robots.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
User-agent: *
Disallow: /*/print
# Don't allow indexing of search results
Disallow: /search?
# We only allow indexing of the licence-finder landing page
Disallow: /licence-finder/
Allow: /licence-finder
# We only allow indexing of the finance finder landing page
Disallow: /business-finance-support-finder/*
Allow: /business-finance-support-finder
Disallow: /apply-for-a-licence
Sitemap: https://www.gov.uk/sitemap.xml
Crawl-delay: 0.5
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions bold-testing/static.dev.gov.uk/static/analytics.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@



Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
var GOVUK = GOVUK || {};
GOVUK.Analytics = GOVUK.Analytics || {};

GOVUK.Analytics.internalSiteEvents = function () {

var COOKIE_NAME = "GDS_successEvents";
var eventQueue = [];

var loadCookie = function () {
var value = Alphagov.read_cookie(COOKIE_NAME);
if (value) {
value = jQuery.parseJSON(jQuery.base64Decode(value));
} else {
value = [];
}
eventQueue = value;
};

var sendCookieEvents = function () {
loadCookie();
$(eventQueue).each(function () {
GOVUK.sendToAnalytics(this);
});
eventQueue = [];
Alphagov.delete_cookie(COOKIE_NAME);
};

var pushCookieEvent = function (event) {
eventQueue.push(event);
Alphagov.write_cookie(COOKIE_NAME, jQuery.base64Encode(JSON.stringify(eventQueue)));
};

return {
push:pushCookieEvent,
sendAll:sendCookieEvents
};
}();

GOVUK.Analytics.entryTokens = function () {

var COOKIE_NAME = "GDS_analyticsTokens";

var valueIsInArray = function (value, arr) {
return $.inArray(value, arr) !== -1;
};

var uniqueIdentifierOfArtifact = function () {
return GOVUK.Analytics.getSlug(document.URL, GOVUK.Analytics.Trackers[GOVUK.Analytics.Format].slugLocation);
};

var assignToken = function () {
var tokens = JSON.parse(Alphagov.read_cookie(COOKIE_NAME));
if (!tokens) tokens = [];
if (!valueIsInArray(uniqueIdentifierOfArtifact(), tokens))
{
tokens.push(uniqueIdentifierOfArtifact());
Alphagov.write_cookie(COOKIE_NAME, JSON.stringify(tokens));
}
};

var revokeToken = function () {
var tokens = JSON.parse(Alphagov.read_cookie(COOKIE_NAME));
var positionOfToken = $.inArray(uniqueIdentifierOfArtifact(),tokens);
if (positionOfToken !== -1) {
tokens.splice(positionOfToken,1);
Alphagov.write_cookie(COOKIE_NAME, JSON.stringify(tokens));
}
};

var tokenExists = function () {
var tokens = JSON.parse(Alphagov.read_cookie(COOKIE_NAME));
return valueIsInArray(uniqueIdentifierOfArtifact(), tokens);
};

return {
assignToken:assignToken,
revokeToken:revokeToken,
tokenExists:tokenExists
};
}();
141 changes: 141 additions & 0 deletions bold-testing/static.dev.gov.uk/static/analytics/tracking-strategies.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
var GOVUK = GOVUK || {};
GOVUK.Analytics = GOVUK.Analytics || {};
GOVUK.Analytics.Trackers = {};

/*
* Available methods on control:
* - trackTimeBasedSuccess(millisecondsUntilSuccess)
* - trackLinks(linkSelector)
* - trackSuccess(isNonInteraction) (see: https://developers.google.com/analytics/devguides/collection/gajs/eventTrackerGuide#non-interaction)
*
* Additional methods:
* Trackers can optionally add functions to override control over whether we fire
* entry or success events.
*
* - shouldTrackEntry() bool
* - shouldTrackSuccess() bool
*/

GOVUK.Analytics.trackingPrefixes = {
MAINSTREAM: 'MS_',
INSIDE_GOV: 'IG_'
};

GOVUK.Analytics.Tracker = function (prefix, slugLocation, trackingSpecification) {
var tracker = trackingSpecification;
tracker.prefix = prefix;
tracker.slugLocation = slugLocation;
return tracker;
};

/* Guide */
GOVUK.Analytics.Trackers.guide = new GOVUK.Analytics.Tracker(
GOVUK.Analytics.trackingPrefixes.MAINSTREAM,
0,
function (trackingApi) {
trackingApi.trackTimeBasedSuccess(7000);
trackingApi.trackInternalLinks($("#content a"));
});

/* Transaction (services) */
GOVUK.Analytics.Trackers.transaction = new GOVUK.Analytics.Tracker(
GOVUK.Analytics.trackingPrefixes.MAINSTREAM,
0,
function (trackingApi) {
trackingApi.trackInternalLinks($("#content a"));
trackingApi.trackLinks($("#get-started a"));
});

/* Benefit */
GOVUK.Analytics.Trackers.programme = new GOVUK.Analytics.Tracker(
GOVUK.Analytics.trackingPrefixes.MAINSTREAM,
0,
function (trackingApi) {
trackingApi.trackTimeBasedSuccess(7000);
trackingApi.trackInternalLinks($("#content a"));
});

/* Quick answer */
GOVUK.Analytics.Trackers.answer = new GOVUK.Analytics.Tracker(
GOVUK.Analytics.trackingPrefixes.MAINSTREAM,
0,
function (trackingApi) {
trackingApi.trackTimeBasedSuccess(7000);
trackingApi.trackInternalLinks($("#content a"));
});

/* Smart Answer */
/**
* The Entry event should only be fired on the first page of the smart answer (the one with the get started button).
* The Success event should only be fired if the user is coming from the first page and the 'smartanswerOutcome' custom
* event has been fired.
*
*/
GOVUK.Analytics.Trackers.smart_answer = new GOVUK.Analytics.Tracker(
GOVUK.Analytics.trackingPrefixes.MAINSTREAM,
0,
function (trackingApi) {
if (GOVUK.Analytics.Trackers.smart_answer.isAjaxNavigation()) {
// For AJAX navigation we expect an event on success
$(document).bind("smartanswerOutcome", trackingApi.trackSuccessFunc(false));
} else {
// For multi-page navigation, we need to check if this page has an outcome
$(function () {
if ($("article.outcome").length === 1) {
trackingApi.trackSuccess(true);
}
});
}
});

var browserSupportsHtml5HistoryApi = browserSupportsHtml5HistoryApi || function () {
return !!(history && history.replaceState && history.pushState);
};

GOVUK.Analytics.Trackers.smart_answer.isAjaxNavigation = browserSupportsHtml5HistoryApi;

GOVUK.Analytics.Trackers.smart_answer.shouldTrackEntry = function () {
return GOVUK.Analytics.isRootOfArtefact(document.URL, GOVUK.Analytics.Trackers.smart_answer.slugLocation);
};

GOVUK.Analytics.Trackers.smart_answer.shouldTrackSuccess = function () {
if (GOVUK.Analytics.Trackers.smart_answer.isAjaxNavigation()) {
// For AJAX navigation we should track success on the smart answers flow page (non-root page)
return GOVUK.Analytics.entryTokens.tokenExists() && !GOVUK.Analytics.isRootOfArtefact(document.URL, GOVUK.Analytics.Trackers.smart_answer.slugLocation);
} else {
// For multi-page navigation, we should track success if entry event has been fired (token exists)
return GOVUK.Analytics.entryTokens.tokenExists() && $("article.outcome").length === 1;
}
};


GOVUK.Analytics.Trackers.policy =
new GOVUK.Analytics.Tracker(
GOVUK.Analytics.trackingPrefixes.INSIDE_GOV,
2,
function (trackingApi) {
trackingApi.trackTimeBasedSuccess(30000);

trackingApi.trackInternalLinks($("#page a").filter(function () {
return !GOVUK.Analytics.isLinkToFragmentInCurrentDocument(this);
}));

}
);

GOVUK.Analytics.Trackers.detailed_guidance =
new GOVUK.Analytics.Tracker(
GOVUK.Analytics.trackingPrefixes.INSIDE_GOV,
0,
function (trackingApi) {
trackingApi.trackTimeBasedSuccess(30000);
trackingApi.trackInternalLinks($("#page a"));
});

GOVUK.Analytics.Trackers.news = new GOVUK.Analytics.Tracker(
GOVUK.Analytics.trackingPrefixes.INSIDE_GOV,
2,
function (trackingApi) {
trackingApi.trackInternalLinks($("#page a"));
trackingApi.trackTimeBasedSuccess(30000);
});
148 changes: 148 additions & 0 deletions bold-testing/static.dev.gov.uk/static/analytics/tracking.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
var GOVUK = GOVUK || {};
GOVUK.Analytics = GOVUK.Analytics || {};
var _gaq = _gaq || [];

GOVUK.sendToAnalytics = function (analyticsData) {
_gaq.push(analyticsData);
};

GOVUK.Analytics.isTheSameArtefact = function(currentUrl, previousUrl, slugLocation) {
var rootOfArtefact = function(url) {
return url.split("/").slice(0, 4 + slugLocation).join("/");
};

var currentSlug = rootOfArtefact(currentUrl).replace(/#.*$/, '');
var previousSlug = rootOfArtefact(previousUrl).replace(/#.*$/, '');
return currentSlug === previousSlug;
};

GOVUK.Analytics.getSlug = function(url, slugLocation) {
return url.split('/')[3 + slugLocation].split("#")[0].split("?")[0];
};

GOVUK.Analytics.isRootOfArtefact = function(url, slugLocation) {
return url.replace(/\/$/, "").split("/").slice(3 + slugLocation).length === 1;
};

GOVUK.Analytics.isLinkToFragmentInCurrentDocument = function(anchorElement) {
var linksToCurrentDocument = anchorElement.href.split("#")[0] === document.URL.split("#")[0];
var hasFragment = anchorElement.hash !== "";
return linksToCurrentDocument && hasFragment;
}

GOVUK.Analytics.startAnalytics = function () {
var ENTER_KEYCODE = 13;
var success = false;
var prefix = 'none';
var format = GOVUK.Analytics.Format,
trackingStrategy = GOVUK.Analytics.Trackers[format];

/**
* Decide whether we should track an event based on a condition function.
* If the condition function isn't defined then the default condition is used.
*
* @param condition, an optional function that returns a boolean
* @return bool
*/
var shouldTrackEvent = function(condition, defaultValue) {
if (typeof condition === "function") {
return condition();
} else {
return defaultValue;
}
};

var createEvent = function(type, isNonInteraction) {
var slug = GOVUK.Analytics.getSlug(document.URL, trackingStrategy.slugLocation);
return ['_trackEvent', prefix + GOVUK.Analytics.Format, slug, type, 0, isNonInteraction];
};

var handleExternalLink = function() {
if (success) return;
success = true;
var slug = encodeURIComponent(GOVUK.Analytics.getSlug(document.URL, trackingStrategy.slugLocation)),
exitLink = '/exit?slug=' + slug + '&format=' + GOVUK.Analytics.Format;

$(this).prop('href', exitLink);
};

var handleInternalLink = function () {
if (success) return;
success = true;
var event = createEvent("Success", false);
if (GOVUK.Analytics.isLinkToFragmentInCurrentDocument(this)) {
GOVUK.sendToAnalytics(event);
} else {
GOVUK.Analytics.internalSiteEvents.push(event);
}
};

var trackLinks = function(selection, trackExternal) {
// TODO: refactor this to use jQuery("#content").on("click", "a", fireFunction)
selection.each(function () {
var linkToTrack = $(this),
trackingFunction;

if (this.hostname === window.location.hostname) {
trackingFunction = handleInternalLink;
} else if (trackExternal) {
trackingFunction = handleExternalLink;
}
if (trackingFunction) {
linkToTrack.click(trackingFunction);
linkToTrack.keydown(function(e) {
if (e.which === ENTER_KEYCODE) {
trackingFunction.call(this, e);
}
});
}
});
};

var trackingApi = {
trackSuccessFunc: function(isNonInteraction) {
if (isNonInteraction === undefined) {
isNonInteraction = false;
}
return function() {
trackingApi.trackSuccess(isNonInteraction);
};
},
trackSuccess: function (isNonInteraction) {
if (isNonInteraction === undefined) {
isNonInteraction = false;
}
if (success) return;
success = true;
GOVUK.sendToAnalytics(createEvent("Success", isNonInteraction));
},
trackInternalLinks: function(selection) {
trackLinks(selection, false);
},
trackLinks:function (selection) {
trackLinks(selection, true);
},
trackTimeBasedSuccess:function (time) {
setTimeout(trackingApi.trackSuccessFunc(true), time);
}
};

if (GOVUK.Analytics.Trackers[format] !== undefined) prefix = GOVUK.Analytics.Trackers[format].prefix;
if (typeof trackingStrategy === "function") {
var isTheSameArtefact = GOVUK.Analytics.isTheSameArtefact(document.URL, document.referrer, trackingStrategy.slugLocation);
if (shouldTrackEvent(trackingStrategy.shouldTrackEntry, !isTheSameArtefact)) {
GOVUK.sendToAnalytics(createEvent("Entry", true));
GOVUK.Analytics.entryTokens.assignToken();
}
if (shouldTrackEvent(trackingStrategy.shouldTrackSuccess, !isTheSameArtefact)) {
trackingStrategy(trackingApi);
GOVUK.Analytics.entryTokens.revokeToken();
}
}

GOVUK.Analytics.internalSiteEvents.sendAll();

return trackingApi;
};

$(GOVUK.Analytics.startAnalytics);
Loading

0 comments on commit 2735d3a

Please sign in to comment.