Publicado
- 4 min read
Criando uma Aplicação Ruby com Selenium, Capybara e Cucumber

Introdução
Nos últimos anos, a automação de testes se tornou uma parte fundamental do desenvolvimento de software. Com a crescente complexidade das aplicações, é essencial garantir que um produto funcione como esperado. Neste post, vamos explorar como criar uma aplicação de testes automatizados utilizando Ruby, Selenium, Capybara e Cucumber, aplicando o padrão Page Object Model. Essa abordagem permite uma maior organização e manutenção dos testes.
Pré-requisitos
Antes de começar, é importante que você tenha os seguintes pré-requisitos instalados:
- Ruby (versão 2.5 ou superior)
- Bundler
- Selenium WebDriver
- Capybara
- Cucumber
- Familiaridade básica com Ruby e conceitos de automação de testes
Principais Conceitos
1. Ruby
É uma linguagem de programação simples e poderosa, frequentemente utilizada para desenvolvimento web. Por ser de fácil leitura, é uma excelente escolha para escrever testes automatizados.
2. Selenium
Um framework de automação de navegadores que permite interagir com aplicações web de forma semelhante a como um usuário faria.
3. Capybara
Uma biblioteca que facilita a escrita de testes em Ruby com Selenium. Ela fornece uma DSL (Domain Specific Language) que torna o código mais legível.
4. Cucumber
Uma ferramenta de testes orientada a comportamento (BDD) que permite escrever testes em uma linguagem natural utilizando uma sintaxe chamada Gherkin.
5. Page Object Model (POM)
Um padrão que organiza o código dos testes em classes que representam as páginas da aplicação. Isso ajuda a manter o código limpo e separado da lógica dos testes.
Exemplo de Código
Vamos ver como configurar um simples teste utilizando essas tecnologias.
# Gemfile
source 'https://rubygems.org'
gem 'capybara'
gem 'selenium-webdriver'
gem 'cucumber'
gem 'rspec'
Após adicionar essas dependências, execute bundle install
no terminal.
Crie um arquivo de teste com um cenário básico:
# features/teste.feature
Feature: Teste de Login
Scenario: Login com sucesso
Given Eu estou na página de login
When Eu preencho o campo "email" com "usuario@example.com"
And Eu preencho o campo "senha" com "senha_secreta"
And Eu clico no botão "Entrar"
Then Eu devo ver a página inicial
Agora vamos criar os passos correspondentes em Ruby:
# features/step_definitions/login_steps.rb
Given('Eu estou na página de login') do
visit 'http://exemplo.com/login'
end
When('Eu preencho o campo {string} com {string}') do |campo, valor|
fill_in campo, with: valor
end
When('Eu clico no botão {string}') do |botao|
click_button botao
end
Then('Eu devo ver a página inicial') do
expect(page).to have_content('Bem-vindo ao nosso site!')
end
Mini-Projeto Prático
Para combinar tudo isso, você pode criar um mini-projeto que teste o login de uma aplicação hipotética. Siga os passos:
- Configure seu ambiente Ruby e instale as gems necessárias com o
Gemfile
. - Crie uma estrutura de pastas:
features
efeatures/step_definitions
. - Adicione os arquivos de teste conforme o exemplo acima.
- Execute os testes com
cucumber
no terminal.
Padrões de Projeto Aconselháveis
- Organização no POM: Mantenha cada página da aplicação em sua própria classe, facilitando a manutenção.
- Nomenclatura Clara: Use nomes descritivos para métodos e variáveis.
- Separação de Dados: Utilize arquivos de dados ou variáveis de ambiente para credenciais sensíveis.
Prós e Contras
Prós
- Legibilidade: O uso de Cucumber e Gherkin permite que até mesmo pessoas não técnicas compreendam os testes.
- Manutenção: O padrão Page Object Model facilita a manutenção e atualização dos testes.
- Flexibilidade: Capybara oferece uma interface rica e fácil de utilizar para interagir com elementos da web.
Contras
- Desempenho: Testes automatizados podem ser mais lentos em comparação com testes manuais.
- Complexidade Inicial: A configuração inicial pode ser um pouco complexa para iniciantes.
- Dependência de Ambiente: Testes podem falhar devido a pequenos problemas no ambiente de testes.
Desempenho de Cada Ferramenta
- Selenium: Pode ser ligeiramente lento com aplicações complexas, mas oferece suporte a múltiplos navegadores.
- Capybara: É mais eficiente do que o Selenium puro, pois fornece uma camada de abstração que simplifica interações.
- Cucumber: Se bem estruturado, pode ser ágil; no entanto, cenários mal escritos podem aumentar o tempo de execução dos testes.
Dicas de Próximos Passos
- Explore mais sobre Cucumber e a sintaxe Gherkin.
- Experimente usar outras bibliotecas de teste, como RSpec.
- Aprenda mais sobre a integração contínua para rodar seus testes automaticamente.
Possíveis Erros e Soluções
- Erro: Elemento não encontrado
- Solução: Verifique se o seletor está correto e se a página está completamente carregada antes de interagir. Utilize métodos como
find
esleep
.
- Solução: Verifique se o seletor está correto e se a página está completamente carregada antes de interagir. Utilize métodos como
- Erro: A sessão do navegador não está sendo criada
- Solução: Confirme que o driver WebDriver (ex: chromedriver) está instalado corretamente e adicionado ao seu PATH.
Materiais de Apoio
Com estas diretrizes, você está pronto para se lançar no mundo da automação de testes com Ruby, Selenium, Capybara e Cucumber. Boa sorte em sua jornada!