Avoid HiPPO. Use Numbers. O Lind é uma ferramenta de teste A/B desenvolvido totalmente com Javascript.
Para rodar o projeto são necessários:
- NODEJS
- NPM
- Gruntjs
Dentro de src/js
criar um diretório tests
e separar da seguinte forma:
src/js/tests/NOMEDOPROJETO/desktop
e src/js/tests/NOMEDOPROJETO/mobile
Obs: Recomendamos a utilização de submodulos para os testes.
É preciso criar um arquivo js
que corresponderá aos seus testes dentro do diretório de desktop ou mobile do seu projeto.
Arquivo: testExample.js
tests.testExample = {
name: "Teste Exemplo",
audience: 50,
exception: null,
triggerEvent: null,
createdAt: 20170620,
variants: {
variantA: {
name: "Teste Exemplo Padrão",
audience: 50,
method: function() {
// Seu código vai aqui
}
},
variantB: {
name: "Teste Exemplo Mudanças",
audience: 50,
method: function() {
// Seu código vai aqui
}
}
}
};
Nome que será utilizado internamente pelo Lind. Utilizar regras de criação de variáveis do Javascript.
// Examples
tests.testExample = {}
tests.changeBg = {}
tests.Hidemodal = {}
Nome do teste que será utilizado para exibição.
name: "Teste Exemplo"
Numero da audiência que será aplicada no teste. Números de 0 a 100.
audience: 50
Obs: Somados com os outros testes não devem ultrapassar 100.
Regras de aplicação de teste. Caso retorne false
o usuário será excluído do cenário de testes. Aguardando o tempo do cookie de limbo
para ser novamente elegível a outro teste.
// Null
exception: null
// Function
exception: function() {
// Code here
}
// Sempre deve retornar TRUE ou FALSE
Determina a regra de acionamento da varição do teste. Enquanto false
, o usuário não verá nenhuma variação do teste permanecendo com cookie de delayed
. Caso retone true
, ele será sorteado para as variações do teste.
// Null
rule: null // Retorna true para todos os casos
// Function
rule: function() {
return !!document.querySelector('.breadcrumb');
};
Data em que o teste foi criado. Número inteiro no formato AAAAMMDD
createdAt: 20170620
Define as possibilidades dentro de um teste, onde cada variação é um bloco de código que será executado quando sorteado levando em conta sua audiência.
// Exemplo
...
variants: {
variantA: {
name: "Teste Exemplo Padrão", // Nome da variação do teste.
audience: 50, // Audiência da variação do teste.
method: function() {
// Seu código vai aqui
}
},
variantB: {
name: "Teste Exemplo Mudanças",
audience: 50,
method: function() {
// Seu código vai aqui
}
}
}
...
Caso seja necessário inserir mais variações no teste, deve-se incluir mais opções:
// Exemplo
variants: {
variantA: {
audience: 25
},
variantB: {
audience: 25
},
variantC: {
audience: 25
},
variantD: {
audience: 25
}
}
Obs: Somadads as variações de um teste não devem ultrapassar 100.
No diretório do projeto execute o comando:
$ npm install
Antes se iniciar o desenvolvimento executar o comando:
$ grunt core
Para gerar a versão de desenvolvimento desktop execute:
$ grunt desktop --project=NOMEDOPROJETO
Para gerar a versão de desenvolvimento mobile execute:
$ grunt mobile --project=NOMEDOPROJETO
Será gerado o diretório dist/
e será iniciado a task de watch
para desenvolvimento e ao mesmo tempo um servidor local apontando para a raiz da aplicação (Ver uso de proxy).
Para gerar a versão de produção mobile e desktop execute:
$ grunt build --project=NOMEDOPROJETO
Com esse comando serão gerados no diretório dist
os arquivos para utilização em ambiente de produção. Sendo: lindm.min.js
para versão mobile e lindd.min.js
para versão desktop.
Para realizar o upload automático para o servidor é necessário configurar na raiz do projeto o arquivo .ftpauth
.
{
"production":{
"username":"NOMEDOUSUÁRIO",
"password":"SENHADOUSUÁRIO!"
}
}
Também é preciso configurar o config.js
na raiz do projeto com os diretórios do projeto no FTP:
module.exports = {
ftp_push_config: { // Configurações do FTP
staging: {
authKey: "staging",
host: "lind.github.io",
dest: "lind/staging/dist/",
port: 21,
},
production: {
authKey: "production",
host: "lind.github.io",
dest: "lind/prod/dist/",
port: 21,
}
}
};
Para funcionar corretamente é preciso que o usuário possua permissão para modificar o diretório do Lind
.
É preciso criar arquivo .ftpauth
com os acessos do FTP. Utilize o modelo do .ftpauth.example
como modelo.
grunt build:prod --project=NOMEDOPROJETO || grunt build:staging --project=NOMEDOPROJETO
É preciso realizar a configuração do path de js do dashboard em /src/js/core/config.js
:
var CONFIG = {
"cookieName": "lind_",
"sortEmptyName": "withoutTest",
"dashUrl": "" // URL do dash
};