O universo da Qualidade de Software é repleto de controvérsias. Podemos dizer que uma das grandes controvérsias atualmente, além do uso do BDD, é, sem dúvida, a utilização do Cucumber em projetos de automação, seja para Front Web, Front Mobile, API ou qualquer outro tipo de aplicação.
Porém, para alegria de uns e tristeza de outros, o Robot Framework não oferece suporte ao Cucumber. Isso significa que os arquivos “.feature“, comumente utilizados em frameworks que possuem suporte ao Cucumber (como o Cypress, por exemplo), não são suportados no Robot Framework. Ainda assim, é possível utilizar o Gherkin para a construção dos cenários, e é isso que veremos neste post.
IMPORTANTE!
Não vou abordar se é ou não uma boa prática a adoção do Gherkin/Cucumber nos projetos de automação. Apesar de não existir um consenso sobre o tema na comunidade, e eu ter a minha opinião a respeito, a ideia é ajudar aqueles que usam o Gherkin a deixar seus projetos mais legíveis e mais organizados. Beleza?
Entendido isso, bora lá!
Robot Framework e o Gherkin
Desde a versão 2.1.1, o Robot Framework oferece suporte para o Gherkin, mas em inglês. Sendo assim, era necessário utilizar os prefixos “Given, When, Then, And e But” para usar esse estilo de escrita. A partir da versão 6.0, os prefixos ganharam traduções para diversas línguas, incluindo o nosso querido pt_BR… \o/
A atualização foi extremamente bem-vinda, já que, com ela, a necessidade da criação de User Keywords que pudessem fazer o papel dos prefixos em português deixa de existir. Além disso, não veremos mais steps como “Given que eu esteja logado“, porque é feio demais, né!?
Nos tópicos abaixo, veremos a forma nativa de usar o Gherkin em pt_BR e, em seguida, vamos aprender como criar uma User Keyword que simula o mesmo comportamento nativo.
Utilização Nativa
Para que tenhamos acesso aos prefixos em português (conforme a imagem abaixo), basta adicionar no início do seu arquivo de suíte o comando “Language: Brazilian Portuguese“.
Utilização Nativa
Para que tenhamos acesso aos prefixos em português (conforme a imagem abaixo), basta adicionar no início do seu arquivo de suíte o comando “Language: Brazilian Portuguese“.
Independente do idioma, o Robot Framework irá ignorar os prefixos da execução e considerar apenas as keywords que serão utilizadas juntamente com os prefixos.Veja no exemplo abaixo:
Neste exemplo, foram criados arquivos para armazenar as ações que serão utilizadas para os prefixos Dado, Quando e Então. A ideia é modularizar, fazendo com que as mesmas ações possam ser utilizadas sem problemas em outros cenários ou em outras suítes.
Vale relembrar que essa configuração possibilitará apenas o uso dos prefixos Dado, Quando, Então, E e Mas. O uso de contexto e esquema de cenários, por exemplo, não é suportado. O Robot Framework tem outras formas de lidar com essas necessidades.
Utilização de User Keywords
Como dito anteriormente, as versões anteriores a 6.0 não possuem tradução desses prefixos, então, mas podemos criar User Keywords que atuarão de forma similar às traduções realizadas de forma nativa.
Veja o exemplo abaixo:
Neste exemplo, foi criado um arquivo utilitário chamado “gherkin_prefix.resource” que ficará responsável por receber os comportamentos e executá-los através da keyword “Run Keyword” da biblioteca BuiltIn. Sendo assim, os prefixos não serão ignorados durante a execução, ao contrário do que ocorre na forma nativa.
Conclusão
Como mencionei no início deste post, há quem ame e quem odeie utilizar o Gherkin nas automações. Não vou aplaudir nem criticar quem utiliza, se funciona para você e sua equipe, está ótimo. No entanto, ao utilizar, procure sempre pela simplicidade, de modo que você consiga manter seu projeto legível e, principalmente, mantendo a manutenibilidade. Evite criar cenários que descrevam passos do seu teste e procure descrever o comportamento que será realizado. Isso evitará que você deixe seus cenários com aspecto poluído.
E lembre-se, uma vez que você adota o Gherkin para a sua automação, inevitavelmente está criando uma nova camada de abstração. Sendo assim, deixe que as regras, variáveis e controles fiquem nas camadas abaixo. Isso também ajudará a manter o código mais limpo.