Mini projeto usando Cucumber com Selenium

Nesse post vamos iniciar a documentação de uma calculadora e em seguida vamos tornar essa documentação uma especificação executável.

Ambiente no qual estou desenvolvendo esse projeto:

O projeto tb se encontra no github para clone e contém suas respectivas dependências no GemFile –adicionar o link do github–

Iniciando o projeto

1) Crie uma pasta para seu projeto. Eu criei aqui a pasta: cucumber-selenium-calculatorapp

2) Na linha de comando, entre na pasta: cd cucumber-selenium-calculatorapp

3) Digite no terminal: cucumber --init

Ao executar o comando o cucumber cria a seguinte estrutura de pastas

4) Crie o arquivo multiplication.feature dentro da feature

5) Vamos escrever nossa primeira feature dentro desse arquivo:

6) Na linha de comando, execute: cucumber

Você verá que o cucumber irá tentar executar a documentação criada:

Porém ele nos informa que não existe definições de ações associados a esses passos, e nos sugere adicionar o código acima dentro de step definitions. Pois então vamos seguir a sugestão do cucumber e dentro da pasta de step_definitions, vamos criar um arquivo com extensão “.rb”.

Eu criei aqui o “multi_steps.rb” e colei o texto informado no terminal dentro desse arquivo.

Em cada passo que colamos tem escrito:

Write code here that turns the phrase above into concrete actions

Vamos então criar ações associadas a esses passos. Como estamos automatizando uma página Web vamos utilizar o selenium para executar esses passos, podemos por exemplo adicionar código selenium diretamente nos passos:

Caso rodemos novamente o projeto (cucumber na linha de comando), o browser será aberto com a url indicada no step e na linha de comando temos o seguinte resultado para essa execução:

Porém não é uma boa prática utilizar códigos selenium diretamente nos passos. O ideal é utilizar o padrão Page Object.. (continua)