Issue #24

Closed
noosferogov/noosfero#24
Created by Joenio Costa (Edited )

Corrigir testes falhando com o Rails4

Conversar com @terceiro para entender detalhes.

5 participants
  • B35f8cf378e6ad949d5f5246f31d4c7d?s=40&d=identicon
    Rafael Manzo @manzo (Edited )

    Aberto MR para corrigir criação de ambiente com Vagrant: https://gitlab.com/noosfero/noosfero/merge_requests/749

    Testes em geral falham falham de forma parecida com (rodando apenas rakena raiz):

    test_enable_features#EnableDisableFeaturesTest (49.03s)
    Rack::Test::Error:         Rack::Test::Error: No response yet. Request a page first.
                /usr/lib/ruby/vendor_ruby/rack/mock_session.rb:56:in `last_response'
                /usr/lib/ruby/vendor_ruby/rack/test.rb:169:in `follow_redirect!'
                test/support/integration_test.rb:19:in `login'
                test/integration/enable_disable_features_test.rb:8:in `test_enable_features'
                /usr/lib/ruby/vendor_ruby/minitest/test.rb:108:in `block (3 levels) in run'
                /usr/lib/ruby/vendor_ruby/minitest/test.rb:206:in `capture_exceptions'
                /usr/lib/ruby/vendor_ruby/minitest/test.rb:105:in `block (2 levels) in run'
                /usr/lib/ruby/vendor_ruby/minitest/test.rb:258:in `time_it'
                /usr/lib/ruby/vendor_ruby/minitest/test.rb:104:in `block in run'
                /usr/lib/ruby/vendor_ruby/minitest.rb:319:in `on_signal'
                /usr/lib/ruby/vendor_ruby/minitest/test.rb:278:in `with_info_handler'
                /usr/lib/ruby/vendor_ruby/minitest/test.rb:103:in `run'
                /usr/lib/ruby/vendor_ruby/minitest/reporters.rb:44:in `run_with_hooks'
                /usr/lib/ruby/vendor_ruby/minitest.rb:761:in `run_one_method'
                /usr/lib/ruby/vendor_ruby/minitest.rb:293:in `run_one_method'
                /usr/lib/ruby/vendor_ruby/minitest.rb:287:in `block (2 levels) in run'
                /usr/lib/ruby/vendor_ruby/minitest.rb:286:in `each'
                /usr/lib/ruby/vendor_ruby/minitest.rb:286:in `block in run'
                /usr/lib/ruby/vendor_ruby/minitest.rb:319:in `on_signal'
                /usr/lib/ruby/vendor_ruby/minitest.rb:306:in `with_info_handler'
                /usr/lib/ruby/vendor_ruby/minitest.rb:285:in `run'
                /usr/lib/ruby/vendor_ruby/minitest.rb:149:in `block in __run'
                /usr/lib/ruby/vendor_ruby/minitest.rb:149:in `map'
                /usr/lib/ruby/vendor_ruby/minitest.rb:149:in `__run'
                /usr/lib/ruby/vendor_ruby/minitest.rb:126:in `run'
                /usr/lib/ruby/vendor_ruby/minitest.rb:55:in `block in autorun'
    

    São 4 testes de aceitação falhando:

    • [ ] cucumber features/members_block.feature:32
    • [*] cucumber features/plugins.feature:17
    • [*] cucumber features/plugins.feature:22
    • [*] cucumber features/plugins.feature:37

    Todos os testes falahando em plugins/acceptance.feature tem em comum o passo em step_definitions/plugin_steps.rb:24 com opção enable. Esta pode ser a fonte da falha nestes três testes com o plugin não sendo habilitado.

    Choose File ...   File name...
    Cancel
  • 2fb770603e9880964ce0f8ac999d516f?s=40&d=identicon
    Rodrigo Souto @diguliu

    Erro estranho que só acontece comigo: http://pastebin.com/g0nn6whi (test/unit/article_test.rb)

    Choose File ...   File name...
    Cancel
  • 2fb770603e9880964ce0f8ac999d516f?s=40&d=identicon
    Rodrigo Souto @diguliu

    @manzo rodei o rake cucumber aqui e deu os mesmos erros que o seu. Irei investigar eles.

    Choose File ...   File name...
    Cancel
  • 2fb770603e9880964ce0f8ac999d516f?s=40&d=identicon
    Rodrigo Souto @diguliu

    O seguinte commit resolve os erros no feature/plugins: f88ca472

    Choose File ...   File name...
    Cancel
  • 8646c9570ca7b4ae286a739780af0bdd?s=40&d=identicon
    Joenio Costa @joenio

    Esta atividade terá continuidade ao longo de algumas sprints, iniciou na Sprint 1 e continua na Sprint 2 com data de início em 05/01/16.

    Choose File ...   File name...
    Cancel
  • B35f8cf378e6ad949d5f5246f31d4c7d?s=40&d=identicon
    Rafael Manzo @manzo (Edited )

    Rodando rake selenium tive 22 falhas de 173 9 falhas de 171 testes:

    cucumber -p selenium features/activate_enterprise.feature:68 # Scenario: activate succesffuly an enterprise with foundation_year
    cucumber -p selenium features/activate_enterprise.feature:85 # Scenario: replace template after enable an enterprise
    cucumber -p selenium features/activate_enterprise.feature:107 # Scenario: not replace template after enable an enterprise
    cucumber -p selenium features/categories_block.feature:42 # Scenario: Show submenu if it exists
    cucumber -p selenium features/categories_block.feature:60 # Scenario: Show only one submenu per time
    cucumber -p selenium features/edit_article.feature:27 # Scenario: denied access folder for a not logged user
    cucumber -p selenium features/edit_article.feature:52 # Scenario: Hide token field when show to members is activated
    cucumber -p selenium features/edit_article.feature:74 # Scenario: show exception users field when you choose the private option
    cucumber -p selenium features/edit_article.feature:137 # Scenario: display tag list field when creating event
    cucumber -p selenium features/edit_article.feature:195 # Scenario: create an article inside a folder
    cucumber -p selenium features/edit_article.feature:214 # Scenario: cancel button back to folder after giving up creating
    cucumber -p selenium features/forum.feature:14 # Scenario: create a forum
    cucumber -p selenium features/forum.feature:89 # Scenario: accept terms in topics page
    cucumber -p selenium features/publish_article.feature:49 # Scenario: getting an error message when publishing article with same name
    cucumber -p selenium features/secret_community.feature:49 # Scenario: public article on a secret profile should not be displayed
    cucumber -p selenium features/forum.feature:76 # Scenario: show forum with terms of use for owner
    cucumber -p selenium features/forum.feature:112 # Scenario: accept terms of use of a forum for others users
    cucumber -p selenium features/forum.feature:132 # Scenario: redirect user not logged
    cucumber -p selenium features/media_panel_upload_files.feature:96 # Scenario: select type when create new folder
    cucumber -p selenium features/media_panel_upload_files.feature:186 # Scenario: filter media with search
    
    • Resolvidos:

      • features/signup.feature
      • features/tiny_mce.feature
      • features/manage_users.feature
      • features/media_panel_upload_files.feature
    • Resolvidos com upgrade do selenium e implementação:

      • features/edit_article.feature (Menos da linha 74)
      • features/forum.feature (Apenas da linha 14)
      • features/secret_community.feature
      • features/activate_enterprise.feature
      • features/publish_article.feature

    Desses as falhas remetem aos passos:

    • ./features/step_definitions/tiny_mce_steps.rb:2 1 teste
    • ./features/step_definitions/noosfero_steps.rb:537 1 teste
    • ./features/step_definitions/web_steps.rb:48 9 4 testes
    • ./features/step_definitions/custom_web_steps.rb:32 4 testes
    • ./features/step_definitions/web_steps.rb:122 3 testes
    • ./features/step_definitions/activate_enterprise_steps.rb:39 2 testes
    • ./features/step_definitions/activate_enterprise_steps.rb:8 1 teste
    • ./features/step_definitions/web_steps.rb:16 1 teste

    Então o foco será em primeiro eliminar os erros em passos que quebram a maior quantidade de testes.

    Choose File ...   File name...
    Cancel
  • B35f8cf378e6ad949d5f5246f31d4c7d?s=40&d=identicon
    Rafael Manzo @manzo

    @diguliu os testes que falhavam com unable to obtain stable firefox connection in 60 seconds corrigi precedendo o comando por xvfb-run.

    O erro não era em versão do firefox ou webdriver, mas que dentro do container o firefox precisa de um buffer para executar e poder rodar o selenium.

    Choose File ...   File name...
    Cancel
  • 2fb770603e9880964ce0f8ac999d516f?s=40&d=identicon
    Rodrigo Souto @diguliu

    Massa @manzo! É estranho pq o rake selenium antes rodava os comando com o xvfb-run. Eu nem me atentei pra isso justamente por conta desse comportamento. Depois vou dar uma olhada pq isso tá acontecendo.

    Choose File ...   File name...
    Cancel
  • B35f8cf378e6ad949d5f5246f31d4c7d?s=40&d=identicon
    Rafael Manzo @manzo

    Passei mais um período tentando resolver o erro em ./features/step_definitions/web_steps.rb:48.

    Ele na verdade vem do passo anterior que clica em links (./features/step_definitions/web_steps.rb:40) e parece afetar apenas links dentro do ColorBox.

    O selenium diz que o click no link foi bem sucedido, mas tirando uma screenshot da página da para ver que não saiu do lugar.

    Tentei ver se era questão dele não estar esperando a página carregar colocando um sleep 30 após o click. Mas a página continua no mesmo lugar. Pesquisei por problemas conhecidos do colorbox com selenium, mas nada de relevante apareceu (os únicos mencionavam seleção de iframe, mas o noosfero parece não usar iframe).

    @diguliu tem algum palpite?

    Segunda devo continuar nisso.

    Choose File ...   File name...
    Cancel
  • 2fb770603e9880964ce0f8ac999d516f?s=40&d=identicon
    Rodrigo Souto @diguliu

    @manzo Observei esse problema no link de "Novo artigo" no cms. Ele clica mas não sai da página. Estarei investigando isso hoje também.

    Choose File ...   File name...
    Cancel
  • 8646c9570ca7b4ae286a739780af0bdd?s=40&d=identicon
    Joenio Costa @joenio

    @rodrigo está ajudando aqui nessa Sprint-3.

    Choose File ...   File name...
    Cancel
  • B35f8cf378e6ad949d5f5246f31d4c7d?s=40&d=identicon
    Rafael Manzo @manzo

    Sobre o cucumber -p selenium features/categories_block.feature ambas as falhas parecem ter a mesma fonte nesse feature. A categoria não está expandindo quando clica (nesse caso o clique parece que acontece).

    Meu palpite é public/javascripts/application.js:310. Estou trabalhando para reproduzir no browser o mesmo erro do selenium.

    Choose File ...   File name...
    Cancel
  • 2eecd4b7edebcb887e143c62846b2048?s=40&d=identicon
    Rodrigo Siqueira de Melo @rodrigo

    Com relação ao problema que o @diguliu citou, nos conseguimos replicar ele em quatro ambientes diferentes. Basicamente verificamos que quem tinha o ambiente com o rails 3 stable, conseguia passar nos testes sem o menor problema. Contudo ao mudar para outro ambiente que estava sendo configurado para o rails 4 os erros citados pelo diguliu apareciam. Em geral, quem subia o ambiente do rails 4 do zero sofria com isto.

    Após muita investigação descobrimos que o postgresql 9.4 precisa que os campos lc_ctypes e lc_localles do noosfero_development e noosfero_test estejam explicitamente setados. A nova versão do postgres usa a variável de ambiente C em tais campos, que mesmo que esteja apresentando o comportamento esperado (testamos multiplas mudanças de locales nos ambientes) ainda sim apresenta o problema indicado pelo diguliu.

    Creio que uma solução definitiva, seja garantir no quick-start que tais campos sejam explicitamente setados com a codificação especifica do ambiente (ao invés de utilizar a varável C). Descobrimos tal problema, ao perceber que o postgres não conseguia fazer os caracteres "Á" ficarem minúsculos.

    Choose File ...   File name...
    Cancel
  • B35f8cf378e6ad949d5f5246f31d4c7d?s=40&d=identicon
    Rafael Manzo @manzo

    Quais erros @rodrigo? Do clique não funcionar dentro do ColorBox do CMS?

    Choose File ...   File name...
    Cancel
  • 2eecd4b7edebcb887e143c62846b2048?s=40&d=identicon
    Rodrigo Siqueira de Melo @rodrigo

    @manzo na verdade é o primeiro comentário do diguliu. O que ele postou esse log:

    http://pastebin.com/g0nn6whi

    Choose File ...   File name...
    Cancel
  • 2fb770603e9880964ce0f8ac999d516f?s=40&d=identicon
    Rodrigo Souto @diguliu

    Consertei o problema do manage-users. A confirmação de diálogo não estava funcionando. Não encontrei nada relacionado a isso na versão nova do capybara, mas ao adicionar um sleep 1 os testes passaram a funcionar.

    Choose File ...   File name...
    Cancel
  • B35f8cf378e6ad949d5f5246f31d4c7d?s=40&d=identicon
    Rafael Manzo @manzo (Edited )

    Cheguei na causa do erro em ./features/step_definitions/web_steps.rb:40:

    Essa sintaxe em app/views/cms/select_article_type.html.erb com <li> aninhados dentro de <a> faz com que o browser posicione o elemento em si, que será o alvo do clique, fora da posição onde está o e o resto do conteúdo. Para o usuário isso é imperceptível, mas para o capybara destrói o comportamento.

    Isso tem algumas soluções:

    1. Modificar o HTML para que o <a> fique dentro do <li>. Essa é a solução mais fácil, mas como o @diguliu falou no IRC isso é ruim pois arruma para agora, mas inevitavelmente algum dia alguém vai colocar outro link nessa estrutura ruim e quebrará novamente os testes
    2. Identificar quando o clique não é bem sucedido e tratar de acordo. Na versão atual do selenium-webdriver instalada (2.48.1) aparentemente não tem como identificar isso e ocorrerá um falso positivo com relação ao clique. Fiz um teste atualizando para o 2.50.0 que agora sim levanta uma excessão nesse caso (ainda que não seja muito boa Selenium::WebDriver::Error::UnknownError, sua mensagem é boa o bastante Element is not clickable at point...) que podemos tratar fazendo um visit(find_link(link)[:href]). Porém essa é a solução difícil e ainda depende de vermos com o @terceiro se é possível essa atualização

    Se alguém tiver alguma outra solução é bem vinda :)

    Choose File ...   File name...
    Cancel
  • 75e3b052e046e34cbb10917c5f9901d7?s=40&d=identicon
    Antonio Terceiro @terceiro

    faço essa atualização na segunda.

    Choose File ...   File name...
    Cancel
  • B35f8cf378e6ad949d5f5246f31d4c7d?s=40&d=identicon
    Rafael Manzo @manzo

    MR aberto para corrigir os erros de clique no selenium: https://gitlab.com/noosfero/noosfero/merge_requests/780

    Choose File ...   File name...
    Cancel
  • B35f8cf378e6ad949d5f5246f31d4c7d?s=40&d=identicon
    Rafael Manzo @manzo

    Rodei todos os testes de selenium e atualizei o status.

    São apenas 9 testes falhando.

    Algumas coisas que não falhavam da primeira vez que rodei tudo passaram a falhar:

    cucumber -p selenium features/forum.feature:76 # Scenario: show forum with terms of use for owner
    cucumber -p selenium features/forum.feature:112 # Scenario: accept terms of use of a forum for others users
    cucumber -p selenium features/forum.feature:132 # Scenario: redirect user not logged
    cucumber -p selenium features/media_panel_upload_files.feature:96 # Scenario: select type when create new folder
    cucumber -p selenium features/media_panel_upload_files.feature:186 # Scenario: filter media with search
    

    Com um novo ponto de falha ./features/step_definitions/web_steps.rb:16

    Tudo isso está atualizado no primeiro comentário.

    Choose File ...   File name...
    Cancel
  • 2fb770603e9880964ce0f8ac999d516f?s=40&d=identicon
    Rodrigo Souto @diguliu

    Irei revisar esses testes novos que quebraram.

    Choose File ...   File name...
    Cancel
  • B35f8cf378e6ad949d5f5246f31d4c7d?s=40&d=identicon
    Rafael Manzo @manzo

    Rodando de novo a partir da master todos os 5 testes novos que eu falei antes passaram agora.

    Agora temos só os dois testes do categories_block faltando. E esses são difíceis. Parecem ser o mesmo caso do click que não funciona. Provavelmente nesse caso o problema seja o click de JS que não é pego.

    Choose File ...   File name...
    Cancel
  • B35f8cf378e6ad949d5f5246f31d4c7d?s=40&d=identicon
    Rafael Manzo @manzo

    Mentira, foi mais fácil do que pareceu. MR aberto: https://gitlab.com/noosfero/noosfero/merge_requests/785

    Choose File ...   File name...
    Cancel
  • 75e3b052e046e34cbb10917c5f9901d7?s=40&d=identicon
    Antonio Terceiro @terceiro

    massa @manzo coloquei um comentário relativo a uma coisinha que achei estranha, olha lá no MR

    Choose File ...   File name...
    Cancel
  • 8646c9570ca7b4ae286a739780af0bdd?s=40&d=identicon
    Joenio Costa @joenio

    os testes estão todos passando! \o/

    Choose File ...   File name...
    Cancel
  • 8646c9570ca7b4ae286a739780af0bdd?s=40&d=identicon
    Joenio Costa @joenio

    Status changed to closed

    Choose File ...   File name...
    Cancel
  • B35f8cf378e6ad949d5f5246f31d4c7d?s=40&d=identicon
    Rafael Manzo @manzo

    Na verdade antes da pausa vi com @terceiro que o features/template_block_management.feature estava aleatoriamente passando ou falhando. Alguém arrumou isso? Se não, amanhã devo dedicar um período à isso.

    Choose File ...   File name...
    Cancel
  • 8646c9570ca7b4ae286a739780af0bdd?s=40&d=identicon
    Joenio Costa @joenio

    creio que ninguém viu isso não, reabrindo issue.

    Choose File ...   File name...
    Cancel
  • 8646c9570ca7b4ae286a739780af0bdd?s=40&d=identicon
    Joenio Costa @joenio

    Status changed to reopened

    Choose File ...   File name...
    Cancel
  • 75e3b052e046e34cbb10917c5f9901d7?s=40&d=identicon
    Antonio Terceiro @terceiro

    Status changed to closed

    Choose File ...   File name...
    Cancel
  • 75e3b052e046e34cbb10917c5f9901d7?s=40&d=identicon
    Antonio Terceiro @terceiro

    eu removi features/template_block_management.feature; cheguei à conclusão que era redundante. desnecessário e estava atrapalhando mais do que ajudando.

    Choose File ...   File name...
    Cancel
  • B35f8cf378e6ad949d5f5246f31d4c7d?s=40&d=identicon
    Rafael Manzo @manzo (Edited )

    Lista de testes ainda falhando aleatoriamente:

    As maiores incidencies são features/login.feature:104 e features/signup.feature:235 o que leva ao palpite de ser algo relacionado a login/persistência de sessão.

    Choose File ...   File name...
    Cancel
  • B35f8cf378e6ad949d5f5246f31d4c7d?s=40&d=identicon
    Rafael Manzo @manzo

    Status changed to reopened

    Choose File ...   File name...
    Cancel
  • B35f8cf378e6ad949d5f5246f31d4c7d?s=40&d=identicon
    Rafael Manzo @manzo

    Dediquei um período atrás da causa do features/signup.feature:235 (falha mais vezes) e o máximo que consegui foi ver que ele diz ter preenchido os campos e clicado em "log in" mas ainda está na página de login sem ter preenchido nada (veja screenshot em anexo).

    Tentei colocar sleep de até 5s. Ele ajuda a diminuir a incidência de falhas, mas não resolve.

    Usando o step de verificar se um campo está preenchido, o step passa mas o erro persiste com o mesmo estado de screenshot.

    Choose File ...   File name...
    Cancel
  • B35f8cf378e6ad949d5f5246f31d4c7d?s=40&d=identicon
    Rafael Manzo @manzo

    Atualizar o selenium-webdriver também não resolve...

    Choose File ...   File name...
    Cancel
  • B35f8cf378e6ad949d5f5246f31d4c7d?s=40&d=identicon
    Rafael Manzo @manzo

    Hoje tentei sem sucesso trocar o selenium por poltergeist e atualizar o capybara, mas o teste continua falhando.

    Por fim notei que praticamente todos os testes de signup.feature ao invés de usar And I follow "Login" usavam When I go to login page. Experimentiei fazer a troca e funcionou (deixei os testes repetindo por 1h). Então abri o MR https://gitlab.com/noosfero/noosfero/merge_requests/794.

    Não sei por que isso funcionou, mas estabiliza os dois testes que mais falharam nos últimos builds. Os demais não parecem estar relacionados.

    Choose File ...   File name...
    Cancel
  • 8646c9570ca7b4ae286a739780af0bdd?s=40&d=identicon
    Joenio Costa @joenio

    vou fechar esta issue aqui pois acredito que a meta prevista para ela foi atingida, @manzo caso ainda existam problemas avisa e criamos nova issue para mapear.

    Choose File ...   File name...
    Cancel
  • 8646c9570ca7b4ae286a739780af0bdd?s=40&d=identicon
    Joenio Costa @joenio

    Status changed to closed

    Choose File ...   File name...
    Cancel