Feature-Express uma forma elegante de expor suas features

Fala pessoal tudo joinha ? Venho até aqui para falar um pouco mais sobre o feature-express, uma ferramenta open source que desenvolvi juntamente com apoio e contribuições da minha namorada e o time da concrete. A ideia aqui é explicar de forma objetiva para que serve a ferramenta, entender como ela funciona e como utilizá-la.

Resolvi escrever este post após receber algumas dúvidas sobre como utilizar o feature-express e para que ele servia.

O que é o feature-express ?

O feature-express é uma forma simples de você expor suas features para todos os stakeholders, de uma forma organizada e mais limpa.
Quando desenvolvemos nossas features geralmente elas ficam em nossos repositórios privados, sendo necessário conceder acesso para que os stakeholders possam visualizar os cenários desenvolvidos.

Com esta situação, os cenários já escritos, podem cair no esquecimento e simplesmente não entregar nenhum valor.

Qual é o principal objetivo do feature-express ?

O principal objetivo do feature-express é compartilhar de forma fácil e visualmente organizada todos os cenários que criamos no decorrer da sprint, com todos os stakeholders, através de um servidor. Assim, todos que sentirem a necessidade de validar algum cenário criado para uma determinada feature, bastaria acessar este servidor e voilá!

Feature-Express em execução

O que faz o feature-express ?

No momento ele lê todos os arquivos com a extensão .feature em um determinado diretório e monta um HTML com o índice dos arquivos. Também existe uma forma de linkar cenários ou funcionalidades com tasks e histórias do Jira.


Primeiros passos com Feature-Express

Agora que já sabemos o que a ferramenta faz e qual o seu objetivo, vamos entender melhor como utiliza-la na pratica.

Baixando o node

Primeiro precisaremos de ter o node instalado em nosso computador. Para isso, basta selecionar uma das opções abaixo de acordo com seu sistema operacional.

Após o download faça a instalação do executável :)

Instalando o feature-express

Agora que node foi instalado, junto com ele existe um gerenciador de dependências chamado npm, ele é responsável por controlar, instalar e desinstalar os módulos do node, com ele vamos baixar o módulo do feature-express.

Lembra que eu disse que feature-express é um módulo global? Então vamos instalar ele com o seguinte comando no seu terminal:

Instalação do Feature-Express

Entendendo como funciona

Com tudo instalado direitinho agora vamos entender como funciona o feature-express.

Existem algumas formas de executar e parametrizar esta ferramenta e ela vai se comportar de acordo com os parâmetros enviados. Vale lembrar que estes parâmetros, devem ser passados na ordem correta! Vamos imaginar que temos um projeto que as features foram descritas em português e que estão em um diretório chamado features, poderíamos executar o seguinte comando :

Executando feature-express com features escritas em português

No caso acima o feature-express iria ser executado por default na porta 3000, daria um highlight nas palavras reservadas do gherkin em português e iria somente ler arquivos desse diretório.

Legal! E se eu quiser subir o servidor em outra porta, eu consigo ? A resposta é sim, você consegue selecionar qualquer porta que estiver vaga, para isso basta informar o terceiro parâmetro que ficaria assim:

Executando feature-express com features escritas em português e selecionando a porta 4444

Fácil né ? Mas se nossos arquivos features estivessem separados por pastas ???

Aha! Pensou que não teria solução…o pior que é bem simples! Se dentro da pasta features/ nossa estrutura possuir outras pastas para dividir as features, poderíamos simplesmente alterar o parâmetro do path para ./ , o comando completo ficaria assim :

Viu como é fácil!!

Dicas para o dia a dia

Com as dicas acima você vai conseguir executar o feature-express em qualquer máquina, não importa o sistema operacional e nem a linguagem do projeto, ele só vai precisar dos arquivos .features e o node!

A dica que tenho para o dia a dia é de configurar o feature-express dentro do seu ambiente de CI, assim todas as vezes que você enviar novas features elas já serão listadas no feature-express, para isso, você poderia utilizar o nginx como um servidor de proxy reverso http ou https e pensar em uma url mais amigável e com algumas regras específicas de acesso.

Conclusão

No nosso dia a dia é sempre difícil deixar evidente e compartilhar nossos cenários de teste, com esta ferramenta isso fica mais simples e também permite o time e todos os stakeholders visualizem os cenários de teste de uma forma mais elegante e organizada, fazendo assim com que todos possam contribuir para os cenários em desenvolvimento!

Obrigado pela atenção e se tiverem mais alguma dúvida, ideias ou até mesmo quiserem contribuir para o crescimento do projeto, estou a disposição.

Vou deixar os links dos repositórios.

Obrigado pela leitura! :D