Concrete Logo
Hamburger button

Utilizando Rake + Cucumber ao seu favor – Parte 2

  • Blog
  • 18 de Setembro de 2017

No post anterior citei alguns passos de como configurar o Rake e o Cucumber, hoje vou mostrar a facilidade de utilizar essas maravilhosas ferramentas. A ideia é citar e apresentar outros cenários que vão contextualizar melhor a minha motivação para escrever a série.

No exemplo anterior tínhamos apenas uma feature cadastro com apenas três cenários. Nesse contexto até faria sentido criar alguma task para executar, mas para mim só faria mesmo sentido se o comando para rodar essa feature fosse muito grande, como a do Calabash:

Olhando para esse comando ainda não faria sentido, pois você poderia usar alguma busca recursiva e achar isso no histórico do seu terminal. Vamos dar mais complexidade só para mostrar a eficiência do Rake com Cucumber?

Faremos isso criando mais duas features.

Primeira:

Os cenários da busca.feature estão aqui, com isso já temos mais cenários que precisam ser executados de forma diferente. Mas ainda podemos dar um pouquinho mais de complexidade…

Segunda:

Cenários da pull_request.feature. Nessas features existem algumas tags:

@critic = Cenários de maior valor de negócio
@slow = Cenários cuja execução demora muito
@medium = Cenários com um tempo razoável de execução
@fast = Cenários com execução muito rápida

Como faríamos para executar essas features? Lembrando que ainda temos três tags de bônus. 😛

@pull_request
@search
@register

Se fôssemos executar apenas as features que são @register teríamos o seguinte comando (usando apenas o Cucumber, sem integração com Appium, Capybara e outros frameworks):

Isso vai fazer somente a feature @register seguir a execução, o resto vai desaparecer do “radar” do Cucumber. E se agora alguém pedisse para rodar somente as features com tags @search e @register, utilizando somente as tags @fast e @slow?

Conforme a complexidade aumenta, seu comando para criar uma execução também, o que é péssimo em nível de manutenção, por conta dos scripts do CI e das tags. Além disso, alguém com um mínimo conhecimento pode ter dificuldade em fazer essa abstração.

No post anterior criamos um arquivo Rake, que ainda se encontra vazio. Vamos criar agora nossa primeira task e ver como com o nível de complexidade fica mais fácil entender o que está acontecendo.

Agora, para rodar essas tasks, nós simplesmente executaríamos:

Ainda assim temos que escrever muito para executar, então que tal falar para as suas tasks que o bundle exec também faz parte dela?

Agora para executar a task é só utilizar o comando:

Até aí, beleza: temos um dos cenários legais mapeados. Mas e quando começarmos a ter 20 tags, vamos precisar replicar todos essas tasks? NÃO.

Tasks Rake também recebem parâmetros, ou seja, se você consegue passar qual feature e quais tags de cenário você deseja executar, podemos mudar as tasks para:

Podemos também já incluir que em toda execução o Cucumber vai gerar relatório de cada uma dessas tags:

Para rodar esse tipo de task, utilizando parâmetros, ficaria assim:

E é isso! Espero que você consiga absorver tudo o que eu falei por aqui e aplicar em algum projeto, mas não precisa se apegar apenas a esses exemplos. Para o mundo mobile você pode ter tasks que vão fazer o build dos projetos para você. A ideia é viajar na hora de criar as suas tasks. 😛

Trabalha com QA e quer fazer parte de um time fantástico? Clique aqui e deixe seu currículo com a gente.