No última dia 9 de junho ocorreu em Salvador, no Villa do Bem, o Noosfero Hacking Bar. Desenvolvedores da comunidade Noosfero se reuniram para comer, beber, conversar... e programar, claro.
O objetivo deste Hacking Bar era focar nos testes automatizados do Noosfero, mais especificamente nos testes de aceitação, que na arquitetura atual são baseados no Cucumber com Selenium.
Teste de aceitação é uma fase do processo de teste em que um teste de caixa-preta é realizado num sistema antes de sua disponibilização. Tem por função verificar o sistema em relação aos seus requisitos originais, e às necessidades atuais do usuário.
O Selenium é uma ferramenta que pode ser utilizada para testar aplicações web diretamente no navegador de forma automatizada, exatamente como o usuário faria. Já o Cucumber é uma ferramenta que pode executar documentação de funcionalidades escrita em texto puro. Com base nesta especificações, o Cucumber executa testes. Parece mágica, mas é apenas algumas convenções somadas à robustez do Ruby. Nos testes que precisam ser executados diretamente no navegador (por exemplo, naqueles que envolvem execução de código JavaScript), o Selenium é acionado.
Devido a algumas instabilidades do Selenium e conflitos de versões, alguns destes testes estavam falhando no Noosfero. Muitas destas instabilidades são relacionadas ao Selenium RC, que é o servidor Selenium, escrito em Java.
Tínhamos então duas opções para lidar com o Selenium: tentar realizar um upgrade para o Selenium 2, que nesta versão se juntou ao Webdriver, ou utilizar um outro framework, como o Capybara. O Capybara auxilia no teste de aplicações Rails e Rack simulando como um usuário real interagiria com a aplicação, e já possui suporte nativo ao Selenium sem a necessidade de um servidor.
Após horas de programação, frustrações e tentativas, concluímos que o caminho mais promissor é utilizar o Capybara. Conseguimos migrar um caso de teste para o Capybara e executá-lo com sucesso.
O próximo passo é migrar os demais casos de teste para utilizar o Capybara. Quem sabe você não se junta a nós? :)