Pulse Uptake Experiment
authorGregg Lind <glind@mozilla.com>
Fri, 12 Sep 2014 22:34:44 -0500
changeset 1039 cd8246ed882ed41e2957270d8586340718d929db
parent 1038 a836550e38d6846f148ddeb3b7249a7346308274
child 1040 010280c6160becf8d51e2dae7ff89a99490cd563
push id870
push userglind@mozilla.com
push dateSat, 13 Sep 2014 03:35:31 +0000
Pulse Uptake Experiment
testcases/pulse-response-tp-experiment-1a/README.html
testcases/pulse-response-tp-experiment-1a/README.md
testcases/pulse-response-tp-experiment-1a/deploy-howto.md
testcases/pulse-response-tp-experiment-1a/pulse-response-tp-experiment-1a.jar
testcases/pulse-response-tp-experiment-1a/pulse-response-tp-experiment-1a.js
new file mode 100644
--- /dev/null
+++ b/testcases/pulse-response-tp-experiment-1a/README.html
@@ -0,0 +1,1026 @@
+<!DOCTYPE html><html><head><meta charset="utf-8"><style>body {
+  width: 45em;
+  border: 1px solid #ddd;
+  outline: 1300px solid #fff;
+  margin: 16px auto;
+}
+
+body .markdown-body
+{
+  padding: 30px;
+}
+
+@font-face {
+  font-family: fontawesome-mini;
+  src: url(data:font/woff;charset=utf-8;base64,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) format('woff');
+}
+
+@font-face {
+  font-family: octicons-anchor;
+  src: url(data:font/woff;charset=utf-8;base64,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) format('woff');
+}
+
+.markdown-body {
+  font-family: sans-serif;
+  -ms-text-size-adjust: 100%;
+  -webkit-text-size-adjust: 100%;
+  color: #333333;
+  overflow: hidden;
+  font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif;
+  font-size: 16px;
+  line-height: 1.6;
+  word-wrap: break-word;
+}
+
+.markdown-body a {
+  background: transparent;
+}
+
+.markdown-body a:active,
+.markdown-body a:hover {
+  outline: 0;
+}
+
+.markdown-body b,
+.markdown-body strong {
+  font-weight: bold;
+}
+
+.markdown-body mark {
+  background: #ff0;
+  color: #000;
+  font-style: italic;
+  font-weight: bold;
+}
+
+.markdown-body sub,
+.markdown-body sup {
+  font-size: 75%;
+  line-height: 0;
+  position: relative;
+  vertical-align: baseline;
+}
+.markdown-body sup {
+  top: -0.5em;
+}
+.markdown-body sub {
+  bottom: -0.25em;
+}
+
+.markdown-body h1 {
+  font-size: 2em;
+  margin: 0.67em 0;
+}
+
+.markdown-body img {
+  border: 0;
+}
+
+.markdown-body hr {
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+  height: 0;
+}
+
+.markdown-body pre {
+  overflow: auto;
+}
+
+.markdown-body code,
+.markdown-body kbd,
+.markdown-body pre,
+.markdown-body samp {
+  font-family: monospace, monospace;
+  font-size: 1em;
+}
+
+.markdown-body input {
+  color: inherit;
+  font: inherit;
+  margin: 0;
+}
+
+.markdown-body html input[disabled] {
+  cursor: default;
+}
+
+.markdown-body input {
+  line-height: normal;
+}
+
+.markdown-body input[type="checkbox"] {
+  box-sizing: border-box;
+  padding: 0;
+}
+
+.markdown-body table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+.markdown-body td,
+.markdown-body th {
+  padding: 0;
+}
+
+.markdown-body .codehilitetable {
+  border: 0;
+  border-spacing: 0;
+}
+
+.markdown-body .codehilitetable tr {
+  border: 0;
+}
+
+.markdown-body .codehilitetable pre,
+.markdown-body div.codehilite {
+  margin: 0;
+}
+
+.markdown-body .linenos,
+.markdown-body .code,
+.markdown-body .codehilitetable td {
+  border: 0;
+  padding: 0;
+}
+
+.markdown-body td:not(.linenos) .linenodiv {
+  padding: 0 !important;
+}
+
+.markdown-body .code {
+  width: 100%;
+}
+
+.markdown-body .linenos div pre,
+.markdown-body .linenodiv pre,
+.markdown-body .linenodiv {
+  border: 0;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+  -webkit-border-top-left-radius: 3px;
+  -webkit-border-bottom-left-radius: 3px;
+  -moz-border-radius-topleft: 3px;
+  -moz-border-radius-bottomleft: 3px;
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+
+.markdown-body .code div pre,
+.markdown-body .code div {
+  border: 0;
+  -webkit-border-radius: 0;
+  -moz-border-radius: 0;
+  border-radius: 0;
+  -webkit-border-top-right-radius: 3px;
+  -webkit-border-bottom-right-radius: 3px;
+  -moz-border-radius-topright: 3px;
+  -moz-border-radius-bottomright: 3px;
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+
+.markdown-body * {
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+
+.markdown-body input {
+  font: 13px Helvetica, arial, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
+  line-height: 1.4;
+}
+
+.markdown-body a {
+  color: #4183c4;
+  text-decoration: none;
+}
+
+.markdown-body a:hover,
+.markdown-body a:focus,
+.markdown-body a:active {
+  text-decoration: underline;
+}
+
+.markdown-body hr {
+  height: 0;
+  margin: 15px 0;
+  overflow: hidden;
+  background: transparent;
+  border: 0;
+  border-bottom: 1px solid #ddd;
+}
+
+.markdown-body hr:before,
+.markdown-body hr:after {
+  display: table;
+  content: " ";
+}
+
+.markdown-body hr:after {
+  clear: both;
+}
+
+.markdown-body h1,
+.markdown-body h2,
+.markdown-body h3,
+.markdown-body h4,
+.markdown-body h5,
+.markdown-body h6 {
+  margin-top: 15px;
+  margin-bottom: 15px;
+  line-height: 1.1;
+}
+
+.markdown-body h1 {
+  font-size: 30px;
+}
+
+.markdown-body h2 {
+  font-size: 21px;
+}
+
+.markdown-body h3 {
+  font-size: 16px;
+}
+
+.markdown-body h4 {
+  font-size: 14px;
+}
+
+.markdown-body h5 {
+  font-size: 12px;
+}
+
+.markdown-body h6 {
+  font-size: 11px;
+}
+
+.markdown-body blockquote {
+  margin: 0;
+}
+
+.markdown-body ul,
+.markdown-body ol {
+  padding: 0;
+  margin-top: 0;
+  margin-bottom: 0;
+}
+
+.markdown-body ol ol,
+.markdown-body ul ol {
+  list-style-type: lower-roman;
+}
+
+.markdown-body ul ul ol,
+.markdown-body ul ol ol,
+.markdown-body ol ul ol,
+.markdown-body ol ol ol {
+  list-style-type: lower-alpha;
+}
+
+.markdown-body dd {
+  margin-left: 0;
+}
+
+.markdown-body code,
+.markdown-body pre,
+.markdown-body samp {
+  font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
+  font-size: 12px;
+}
+
+.markdown-body pre {
+  margin-top: 0;
+  margin-bottom: 0;
+}
+
+.markdown-body kbd {
+  background-color: #e7e7e7;
+  background-image: -moz-linear-gradient(#fefefe, #e7e7e7);
+  background-image: -webkit-linear-gradient(#fefefe, #e7e7e7);
+  background-image: linear-gradient(#fefefe, #e7e7e7);
+  background-repeat: repeat-x;
+  border-radius: 2px;
+  border: 1px solid #cfcfcf;
+  color: #000;
+  padding: 3px 5px;
+  line-height: 10px;
+  font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;
+  display: inline-block;
+}
+
+.markdown-body>*:first-child {
+  margin-top: 0 !important;
+}
+
+.markdown-body>*:last-child {
+  margin-bottom: 0 !important;
+}
+
+.markdown-body .headeranchor-link {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  display: block;
+  padding-right: 6px;
+  padding-left: 30px;
+  margin-left: -30px;
+}
+
+.markdown-body .headeranchor-link:focus {
+  outline: none;
+}
+
+.markdown-body h1,
+.markdown-body h2,
+.markdown-body h3,
+.markdown-body h4,
+.markdown-body h5,
+.markdown-body h6 {
+  position: relative;
+  margin-top: 1em;
+  margin-bottom: 16px;
+  font-weight: bold;
+  line-height: 1.4;
+}
+
+.markdown-body h1 .headeranchor,
+.markdown-body h2 .headeranchor,
+.markdown-body h3 .headeranchor,
+.markdown-body h4 .headeranchor,
+.markdown-body h5 .headeranchor,
+.markdown-body h6 .headeranchor {
+  display: none;
+  color: #000;
+  vertical-align: middle;
+}
+
+.markdown-body h1:hover .headeranchor-link,
+.markdown-body h2:hover .headeranchor-link,
+.markdown-body h3:hover .headeranchor-link,
+.markdown-body h4:hover .headeranchor-link,
+.markdown-body h5:hover .headeranchor-link,
+.markdown-body h6:hover .headeranchor-link {
+  height: 1em;
+  padding-left: 8px;
+  margin-left: -30px;
+  line-height: 1;
+  text-decoration: none;
+}
+
+.markdown-body h1:hover .headeranchor-link .headeranchor,
+.markdown-body h2:hover .headeranchor-link .headeranchor,
+.markdown-body h3:hover .headeranchor-link .headeranchor,
+.markdown-body h4:hover .headeranchor-link .headeranchor,
+.markdown-body h5:hover .headeranchor-link .headeranchor,
+.markdown-body h6:hover .headeranchor-link .headeranchor {
+  display: inline-block;
+}
+
+.markdown-body h1 {
+  padding-bottom: 0.3em;
+  font-size: 2.25em;
+  line-height: 1.2;
+  border-bottom: 1px solid #eee;
+}
+
+.markdown-body h2 {
+  padding-bottom: 0.3em;
+  font-size: 1.75em;
+  line-height: 1.225;
+  border-bottom: 1px solid #eee;
+}
+
+.markdown-body h3 {
+  font-size: 1.5em;
+  line-height: 1.43;
+}
+
+.markdown-body h4 {
+  font-size: 1.25em;
+}
+
+.markdown-body h5 {
+  font-size: 1em;
+}
+
+.markdown-body h6 {
+  font-size: 1em;
+  color: #777;
+}
+
+.markdown-body p,
+.markdown-body blockquote,
+.markdown-body ul,
+.markdown-body ol,
+.markdown-body dl,
+.markdown-body table,
+.markdown-body pre,
+.markdown-body .admonition {
+  margin-top: 0;
+  margin-bottom: 16px;
+}
+
+.markdown-body hr {
+  height: 4px;
+  padding: 0;
+  margin: 16px 0;
+  background-color: #e7e7e7;
+  border: 0 none;
+}
+
+.markdown-body ul,
+.markdown-body ol {
+  padding-left: 2em;
+}
+
+.markdown-body ul ul,
+.markdown-body ul ol,
+.markdown-body ol ol,
+.markdown-body ol ul {
+  margin-top: 0;
+  margin-bottom: 0;
+}
+
+.markdown-body li>p {
+  margin-top: 16px;
+}
+
+.markdown-body dl {
+  padding: 0;
+}
+
+.markdown-body dl dt {
+  padding: 0;
+  margin-top: 16px;
+  font-size: 1em;
+  font-style: italic;
+  font-weight: bold;
+}
+
+.markdown-body dl dd {
+  padding: 0 16px;
+  margin-bottom: 16px;
+}
+
+.markdown-body blockquote {
+  padding: 0 15px;
+  color: #777;
+  border-left: 4px solid #ddd;
+}
+
+.markdown-body blockquote>:first-child {
+  margin-top: 0;
+}
+
+.markdown-body blockquote>:last-child {
+  margin-bottom: 0;
+}
+
+.markdown-body table {
+  display: block;
+  width: 100%;
+  overflow: auto;
+  word-break: normal;
+  word-break: keep-all;
+}
+
+.markdown-body table th {
+  font-weight: bold;
+}
+
+.markdown-body table th,
+.markdown-body table td {
+  padding: 6px 13px;
+  border: 1px solid #ddd;
+}
+
+.markdown-body table tr {
+  background-color: #fff;
+  border-top: 1px solid #ccc;
+}
+
+.markdown-body table tr:nth-child(2n) {
+  background-color: #f8f8f8;
+}
+
+.markdown-body img {
+  max-width: 100%;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+
+.markdown-body code,
+.markdown-body samp {
+  padding: 0;
+  padding-top: 0.2em;
+  padding-bottom: 0.2em;
+  margin: 0;
+  font-size: 85%;
+  background-color: rgba(0,0,0,0.04);
+  border-radius: 3px;
+}
+
+.markdown-body code:before,
+.markdown-body code:after {
+  letter-spacing: -0.2em;
+  content: "\00a0";
+}
+
+.markdown-body pre>code {
+  padding: 0;
+  margin: 0;
+  font-size: 100%;
+  word-break: normal;
+  white-space: pre;
+  background: transparent;
+  border: 0;
+}
+
+.markdown-body .codehilite {
+  margin-bottom: 16px;
+}
+
+.markdown-body .codehilite pre,
+.markdown-body pre {
+  padding: 16px;
+  overflow: auto;
+  font-size: 85%;
+  line-height: 1.45;
+  background-color: #f7f7f7;
+  border-radius: 3px;
+}
+
+.markdown-body .codehilite pre {
+  margin-bottom: 0;
+  word-break: normal;
+}
+
+.markdown-body pre {
+  word-wrap: normal;
+}
+
+.markdown-body pre code {
+  display: inline;
+  max-width: initial;
+  padding: 0;
+  margin: 0;
+  overflow: initial;
+  line-height: inherit;
+  word-wrap: normal;
+  background-color: transparent;
+  border: 0;
+}
+
+.markdown-body pre code:before,
+.markdown-body pre code:after {
+  content: normal;
+}
+
+/* Admonition */
+.markdown-body .admonition {
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+  padding: 0.5em 1em 0.5em 1em;
+  color: #888888;
+  background-color: #F7F7F7;
+  border: 1px solid #888888;
+}
+
+.markdown-body .admonition blockquote {
+  color: rgba(136, 136, 136, 0.5);
+  border-left: 4px solid rgba(136, 136, 136, 0.5);
+}
+
+.markdown-body .admonition table {
+  color: #333;
+}
+
+.markdown-body .admonition p {
+  padding: 0;
+  margin: 0;
+}
+
+.markdown-body .admonition-title {
+  font-weight: bold;
+  margin: 0;
+}
+
+.markdown-body .admonition-icon {
+  font: normal normal 16px fontawesome-mini;
+  line-height: 1.5;
+  -moz-osx-font-smoothing: grayscale;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+  float: left;
+}
+
+.markdown-body .attention {
+  color: #4F8A10;
+  background-color: #DFF2BF;
+  border: 1px solid #4F8A10;
+}
+
+.markdown-body .caution {
+  color: #D63301;
+  background-color: #FFCCBA;
+  border: 1px solid #D63301;
+}
+
+.markdown-body .hint {
+  color: #00529B;
+  background-color: #BDE5F8;
+  border: 1px solid #00529B;
+}
+
+.markdown-body .danger {
+  color: #D8000C;
+  background-color: #FFBABA;
+  border: 1px solid #D8000C;
+}
+
+.markdown-body .question {
+  color: #00049b;
+  background-color: #BDC8F8;
+  border: 1px solid #00049b;
+}
+
+.markdown-body .note {
+  color: #9F6000;
+  background-color: #FEEFB3;
+  border: 1px solid #9F6000;
+}
+
+.markdown-body .attention {
+  color: #4F8A10;
+  background-color: #DFF2BF;
+  border: 1px solid #4F8A10;
+}
+
+.markdown-body .caution blockquote {
+  color: rgba(214, 51, 1, .5);
+  border-left: 4px solid rgba(214, 51, 1, .5);
+}
+
+.markdown-body .hint blockquote {
+  color: rgba(0, 82, 155, .5);
+  border-left: 4px solid rgba(0, 82, 155, .5);
+}
+
+.markdown-body .danger blockquote {
+  color: rgba(216, 0, 12, .5);
+  border-left: 4px solid rgba(216, 0, 12, .5);
+}
+
+.markdown-body .question blockquote {
+  color: rgba(0, 4, 155, .5);
+  border-left: 4px solid rgba(0, 4, 155, .5);;
+}
+
+.markdown-body .note blockquote {
+  color: rgba(159, 96, 0, .5);
+  border-left: 4px solid rgba(159, 96, 0, .5);
+}
+
+.markdown-body .admonition-icon:before {
+  content: "\f040\00a0";
+}
+
+.markdown-body .attention > .admonition-icon:before {
+  content: "\f058\00a0";
+}
+
+.markdown-body .caution > .admonition-icon:before {
+  content: "\f06a\00a0";
+}
+
+.markdown-body .hint > .admonition-icon:before {
+  content: "\f05a\00a0";
+}
+
+.markdown-body .danger > .admonition-icon:before {
+  content: "\f056\00a0";
+}
+
+.markdown-body .question > .admonition-icon:before {
+  content: "\f059\00a0";
+}
+
+.markdown-body .note > .admonition-icon:before {
+  content: "\f040\00a0";
+}
+
+/* progress bar*/
+.markdown-body .progress {
+  display: block;
+  width: 300px;
+  margin: 10px 0;
+  height: 24px;
+  border: 1px solid #ccc;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+  background-color: #F8F8F8;
+  position: relative;
+  box-shadow: inset -1px 1px 3px rgba(0, 0, 0, .1);
+}
+
+.markdown-body .progress-label {
+  position: absolute;
+  text-align: center;
+  font-weight: bold;
+  width: 100%; margin: 0;
+  line-height: 24px;
+  color: #333;
+  text-shadow: 1px 1px 0 #fefefe, -1px -1px 0 #fefefe, -1px 1px 0 #fefefe, 1px -1px 0 #fefefe, 0 1px 0 #fefefe, 0 -1px 0 #fefefe, 1px 0 0 #fefefe, -1px 0 0 #fefefe, 1px 1px 2px #000;
+  -webkit-font-smoothing: antialiased !important;
+  white-space: nowrap;
+  overflow: hidden;
+}
+
+.markdown-body .progress-bar {
+  height: 24px;
+  float: left;
+  border-right: 1px solid #ccc;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  border-radius: 3px;
+  background-color: #34c2e3;
+  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .5);
+  background-size: 30px 30px;
+  background-image: -webkit-linear-gradient(
+    135deg, rgba(255, 255, 255, .4) 27%,
+    transparent 27%,
+    transparent 53%, rgba(255, 255, 255, .4) 53%,
+    rgba(255, 255, 255, .4) 77%,
+    transparent 77%, transparent
+  );
+  background-image: -moz-linear-gradient(
+    135deg,
+    rgba(255, 255, 255, .4) 27%, transparent 27%,
+    transparent 53%, rgba(255, 255, 255, .4) 53%,
+    rgba(255, 255, 255, .4) 77%, transparent 77%,
+    transparent
+  );
+  background-image: -ms-linear-gradient(
+    135deg,
+    rgba(255, 255, 255, .4) 27%, transparent 27%,
+    transparent 53%, rgba(255, 255, 255, .4) 53%,
+    rgba(255, 255, 255, .4) 77%, transparent 77%,
+    transparent
+  );
+  background-image: -o-linear-gradient(
+    135deg,
+    rgba(255, 255, 255, .4) 27%, transparent 27%,
+    transparent 53%, rgba(255, 255, 255, .4) 53%,
+    rgba(255, 255, 255, .4) 77%, transparent 77%,
+    transparent
+  );
+  background-image: linear-gradient(
+    135deg,
+    rgba(255, 255, 255, .4) 27%, transparent 27%,
+    transparent 53%, rgba(255, 255, 255, .4) 53%,
+    rgba(255, 255, 255, .4) 77%, transparent 77%,
+    transparent
+  );
+}
+
+.markdown-body .progress-100plus .progress-bar {
+  background-color: #1ee038;
+}
+
+.markdown-body .progress-80plus .progress-bar {
+  background-color: #86e01e;
+}
+
+.markdown-body .progress-60plus .progress-bar {
+  background-color: #f2d31b;
+}
+
+.markdown-body .progress-40plus .progress-bar {
+  background-color: #f2b01e;
+}
+
+.markdown-body .progress-20plus .progress-bar {
+  background-color: #f27011;
+}
+
+.markdown-body .progress-0plus .progress-bar {
+  background-color: #f63a0f;
+}
+
+.markdown-body .gloss .progress-bar {
+  box-shadow:
+    inset -1px 1px 0 rgba(255, 255, 255, .5),
+    inset 0 -4px 12px rgba(255, 255, 255, .7),
+    inset 0 4px 12px rgba(255, 255, 255, .7),
+    inset 0 -12px 0 rgba(0, 0, 0, .05),
+    inset 1px -1px 0 rgba(255, 255, 255, .2);
+}
+
+.markdown-body .candystripe-animate .progress-bar{
+  -webkit-animation: animate-stripes 3s linear infinite;
+  -moz-animation: animate-stripes 3s linear infinite;
+  animation: animate-stripes 3s linear infinite;
+}
+
+@-webkit-keyframes animate-stripes {
+  0% {
+    background-position: 0 0;
+  }
+
+  100% {
+    background-position: 60px 0;
+  }
+}
+
+@-moz-keyframes animate-stripes {
+  0% {
+    background-position: 0 0;
+  }
+
+  100% {
+    background-position: 60px 0;
+  }
+}
+
+@keyframes animate-stripes {
+  0% {
+    background-position: 0 0;
+  }
+
+  100% {
+    background-position: 60px 0;
+  }
+}
+
+/* Multimarkdown Critic Blocks */
+.markdown-body .critic_mark {
+  background: #ff0;
+}
+
+.markdown-body .critic_delete {
+  color: #c82829;
+  text-decoration: line-through;
+}
+
+.markdown-body .critic_insert {
+  color: #718c00 ;
+  text-decoration: underline;
+}
+
+.markdown-body .critic_comment {
+  color: #8e908c;
+  font-style: italic;
+}
+
+.markdown-body .headeranchor {
+  font: normal normal 16px octicons-anchor;
+  line-height: 1;
+  display: inline-block;
+  text-decoration: none;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+.headeranchor:before {
+  content: '\f05c';
+}
+
+.markdown-body .task-list-item {
+  list-style-type: none;
+}
+
+.markdown-body .task-list-item+.task-list-item {
+  margin-top: 3px;
+}
+
+.markdown-body .task-list-item input {
+  margin: 0 4px 0.25em -20px;
+  vertical-align: middle;
+}
+
+/* Media */
+@media only screen and (min-width: 480px) {
+  .markdown-body {
+    font-size:14px;
+  }
+}
+
+@media only screen and (min-width: 768px) {
+  .markdown-body {
+    font-size:16px;
+  }
+}
+
+@media print {
+  .markdown-body * {
+    background: transparent !important;
+    color: black !important;
+    filter:none !important;
+    -ms-filter: none !important;
+  }
+
+  .markdown-body {
+    font-size:12pt;
+    max-width:100%;
+    outline:none;
+    border: 0;
+  }
+
+  .markdown-body a,
+  .markdown-body a:visited {
+    text-decoration: underline;
+  }
+
+  .markdown-body .headeranchor-link {
+    display: none;
+  }
+
+  .markdown-body a[href]:after {
+    content: " (" attr(href) ")";
+  }
+
+  .markdown-body abbr[title]:after {
+    content: " (" attr(title) ")";
+  }
+
+  .markdown-body .ir a:after,
+  .markdown-body a[href^="javascript:"]:after,
+  .markdown-body a[href^="#"]:after {
+    content: "";
+  }
+
+  .markdown-body pre {
+    white-space: pre;
+    white-space: pre-wrap;
+    word-wrap: break-word;
+  }
+
+  .markdown-body pre,
+  .markdown-body blockquote {
+    border: 1px solid #999;
+    padding-right: 1em;
+    page-break-inside: avoid;
+  }
+
+  .markdown-body .progress,
+  .markdown-body .progress-bar {
+    box-shadow: none;
+  }
+
+  .markdown-body tr,
+  .markdown-body img {
+    page-break-inside: avoid;
+  }
+
+  .markdown-body img {
+    max-width: 100% !important;
+  }
+
+  .markdown-body p,
+  .markdown-body h2,
+  .markdown-body h3 {
+    orphans: 3;
+    widows: 3;
+  }
+
+  .markdown-body h2,
+  .markdown-body h3 {
+    page-break-after: avoid;
+  }
+}
+</style><title>README</title></head><body><article class="markdown-body"><h1 id="firefox-pulse-uptake-rate-experiment-addon-test-pilot"><a name="user-content-firefox-pulse-uptake-rate-experiment-addon-test-pilot" href="#firefox-pulse-uptake-rate-experiment-addon-test-pilot" class="headeranchor-link"  aria-hidden="true"><span class="headeranchor"></span></a>Firefox Pulse Uptake Rate Experiment Addon (Test Pilot)</h1>
+<h2 id="summary"><a name="user-content-summary" href="#summary" class="headeranchor-link"  aria-hidden="true"><span class="headeranchor"></span></a>Summary</h2>
+<p>UI experiment to understand effectiveness of different UI patterns on Response Rate and Response Bias.</p>
+<p>Eventual Goal:  Close the loop between on-going Feedback and Support.</p>
+<h2 id="author"><a name="user-content-author" href="#author" class="headeranchor-link"  aria-hidden="true"><span class="headeranchor"></span></a>Author:</h2>
+<p>Gregg Lind <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#103;&#108;&#105;&#110;&#100;&#64;&#109;&#111;&#122;&#105;&#108;&#108;&#97;&#46;&#99;&#111;&#109;">&#103;&#108;&#105;&#110;&#100;&#64;&#109;&#111;&#122;&#105;&#108;&#108;&#97;&#46;&#99;&#111;&#109;</a></p>
+<h2 id="project-homepage"><a name="user-content-project-homepage" href="#project-homepage" class="headeranchor-link"  aria-hidden="true"><span class="headeranchor"></span></a>Project Homepage</h2>
+<p><a href="https://github.com/gregglind/firefox-pulse">https://github.com/gregglind/firefox-pulse</a></p>
+<h2 id="recorded-data"><a name="user-content-recorded-data" href="#recorded-data" class="headeranchor-link"  aria-hidden="true"><span class="headeranchor"></span></a>Recorded Data</h2>
+<p>On Mozilla servers, record<br />
+- actions in the &lsquo;pulse&rsquo; UI elements<br />
+- submitted ratings<br />
+- attributes of profile (addons, active minutes, some browser settings)<br />
+- a unique profile key, used only for this experiment</p>
+<h2 id="what-prompted-mozilla-to-run-this-test"><a name="user-content-what-prompted-mozilla-to-run-this-test" href="#what-prompted-mozilla-to-run-this-test" class="headeranchor-link"  aria-hidden="true"><span class="headeranchor"></span></a>What prompted Mozilla to run this test?</h2>
+<p>Mozilla wants to collect ongoing feedback to improve Firefox.  The<br />
+<a href="https://input.mozilla.org/en-US/feedback">Input</a> program has been insufficient to these needs.</p>
+<p>As part of getting this right in the future, we want to understand how UI affects feedback.  This experiment looks at three aspect of ui:</p>
+<ul>
+<li>interruption context</li>
+<li>type of widget</li>
+<li>topic and phrasing of question</li>
+</ul>
+<p>Data collected from this test will be used to inform many uncoming features relating to feedback, repair, and support.</p>
+<p><img alt="Pulse logo" src="https://raw.githubusercontent.com/gregglind/firefox-pulse/master/pulse-response-rate-ui-test/data/icons/icon-b.png" title="=128x128" /></p></article></body></html>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/testcases/pulse-response-tp-experiment-1a/README.md
@@ -0,0 +1,42 @@
+Firefox Pulse Uptake Rate Experiment Addon (Test Pilot)
+=========================================================
+
+## Summary
+
+UI experiment to understand effectiveness of different UI patterns on Response Rate and Response Bias.
+
+Eventual Goal:  Close the loop between on-going Feedback and Support.
+
+## Author:
+
+Gregg Lind <glind@mozilla.com>
+
+## Project Homepage
+
+https://github.com/gregglind/firefox-pulse
+
+## Recorded Data
+
+On Mozilla servers, record
+- actions in the 'pulse' UI elements
+- submitted ratings
+- attributes of profile (addons, active minutes, some browser settings)
+- a unique profile key, used only for this experiment
+
+## What prompted Mozilla to run this test?
+
+Mozilla wants to collect ongoing feedback to improve Firefox.  The
+[Input](https://input.mozilla.org/en-US/feedback) program has been insufficient to these needs.
+
+As part of getting this right in the future, we want to understand how UI affects feedback.  This experiment looks at three aspect of ui:
+
+- interruption context
+- type of widget
+- topic and phrasing of question
+
+Data collected from this test will be used to inform many uncoming features relating to feedback, repair, and support.
+
+
+
+![Pulse logo](https://raw.githubusercontent.com/gregglind/firefox-pulse/master/pulse-response-rate-ui-test/data/icons/icon-b.png =128x128)
+
new file mode 100644
--- /dev/null
+++ b/testcases/pulse-response-tp-experiment-1a/deploy-howto.md
@@ -0,0 +1,12 @@
+
+1. Copy files in the directory to hg directory for testpilot web
+
+  /testcases/featurerecommender
+
+2. fabric:
+
+  fab package:featurerecommender,,index.json
+  fab test_valid:index.json
+  fab push
+
+3. Wait and profit?
\ No newline at end of file
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..afee7554c0d581a763745ca6690cb7e7719a8dda
GIT binary patch
literal 13229
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
X9P(1&5Pz?R_-l9o0|DVN{yqCYxqc7L
new file mode 100644
--- /dev/null
+++ b/testcases/pulse-response-tp-experiment-1a/pulse-response-tp-experiment-1a.js
@@ -0,0 +1,116 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/*jshint forin:true, noarg:false, noempty:true, eqeqeq:true, bitwise:true,
+  strict:true, undef:true, curly:false, browser:true,
+  unused:true,
+  indent:2, maxerr:50, devel:true, node:true, boss:true, white:true,
+  globalstrict:true, nomen:false, newcap:true, moz: true */
+
+/*global */
+
+var BaseClasses = require("study_base_classes.js");
+
+// Configure throttling
+const LOCALE_REGEX = "en";  // en only
+
+const RANDOM_DEPLOY_PREFIX = "extensions.testpilot.deploymentRandomizer";
+const RANDOM = "pulse-research";
+// Configure the Installer
+const ADDON_ID = "pulse-response-rate-ui-test@testpilot.mozilla.com";
+const ADDON_URL = "https://testpilot.mozillalabs.com/addons/pulse-response-rate-ui-test-testpilot.xpi"; //CHANGE TO PROPER HOST
+
+let modules = {};
+Cu.import("resource://gre/modules/AddonManager.jsm", modules);
+Cu.import("resource://gre/modules/Services.jsm", modules);
+let {AddonManager, Services} = modules;
+
+exports.experimentInfo = {
+  testId: "pulse-response-rate-ui-test-testpilot.xpi",
+  testName: "Pulse Response Rate UI Test",
+  testInfoUrl: "https://testpilot.mozillalabs.com/testcases/pulse-response-to-experiment-1a/README.html", //CHANGE TO INFO PAGE
+  summary: "UI Variations for Collecting Feedbac",
+  versionNumber: 1,
+  duration: 1, //CHANGE TO NUMBER OF DESIRED DAYS
+  minTPVersion: "1.2.3",
+  minFXVersion: "30.0",
+  optInRequired: false,
+
+  randomDeployment: {
+    minRoll: 38,
+    maxRoll: 40,
+    rolloutCode: RANDOM,
+  },
+
+  runOrNotFunc: function () {
+    // Only run if there's no other study running
+    if (studyMutex.checkConflicted(ADDON_ID)) {
+      return false;
+    }
+
+    // Target appropriate locale
+    let locale = Services.prefs.getCharPref("general.useragent.locale");
+    if (!new RegExp("^" + LOCALE_REGEX, "i").test(locale)) {
+      return false;
+    }
+
+    let rd = Services.prefs.getCharPref(RANDOM_DEPLOY_PREFIX + '.' + RANDOM);
+    dump("random deploy is: " + 1 * rd + "\n");
+    dump("locale is: " + locale + '\n' );
+
+    // Must be good to run
+    return true;
+  },
+
+  // Wrap runOrNotFunc for newer versions of Test Pilot
+  filter: function (cb) {
+    cb(exports.experimentInfo.runOrNotFunc());
+  },
+};
+
+// Prepare to check and claim the study mutex
+let studyMutex = new BaseClasses.CurrentStudyMutex(ADDON_ID);
+
+// Define a data store as empty as possible
+exports.dataStoreInfo = {
+  fileName: "testpilot_" + exports.experimentInfo.testId + "_empty.sqlite",
+  tableName: "empty",
+  columns: [{
+    property: "empty",
+    type: BaseClasses.TYPE_STRING,
+    displayName: "empty"
+  }]
+};
+
+// Define a handler that just installs an add-on
+function Installer() Installer.baseConstructor.call(this, null)
+BaseClasses.extend(Installer, BaseClasses.GenericGlobalObserver);
+exports.handlers = new Installer();
+Installer.prototype.onExperimentStartup = function (store) {
+  Installer.superClass.onExperimentStartup.call(this, store);
+
+  // Claim the current study
+  studyMutex.claimExclusive(ADDON_ID);
+
+  // Don't use BaseClasses.AddonController, which has different
+  // assumptions!
+  AddonManager.getAllAddons(function (addons) {
+    let installed = false;
+    addons.forEach(function ({id}) {
+      // Remember that it was already installed
+      if (id === ADDON_ID) installed = true;
+    });
+    if (!installed) {
+      AddonManager.getInstallForURL(ADDON_URL, function (install) {
+        install.install();
+      }, "application/x-xpinstall");
+    }
+  });
+};
+
+// Define an empty web content as there's no data to show
+function NoData() NoData.baseConstructor.call(this, exports.experimentInfo)
+BaseClasses.extend(NoData, BaseClasses.GenericWebContent);
+NoData.prototype.__defineGetter__("dataCanvas", function () "");
+exports.webContent = new NoData();