Están preocupados por cómo sus aplicaciones funcinan en Internet Explorer? Creen que probando en la última versión del navegador usando distintos modos para emular versiones previas es suficiente? De ninguna manera! Incluso si nos saltamos algunas versiones antiguas, podemos encontrarnos con problemas que tienen muy poco soporte de json, etiquetas html5, ECMAScript, limites para los selectores CSS y muchos otros problemas que no pueden ser detectados con sólo cambiar el modo del navegador. Serán sorprendidos por algunos errores que se producen sólo bajo cierta plataforma y navegador. Para encontrar esos problemas, Eugene Melnikov, desarrollador Ruby de Altoros en Minsk, nos propone correr testeos capybara en navegadores remotos.

Usando una máquina virtual personal

  • Instale la máquina virtual con el navegador escogido. Puede utilizar su propia distribución o ievms
  • Asegúrese que Java y el navegador deseado están instalados en la VM
  • Corra en la VM Selenium Server
java –jar selenium-server-standalone-2.35.0.jar -role hub -multiWindow -browserSessionReuse
  • Corra el webdriver sobre la VM
java –jar selenium-server-standalone-2.35.0.jar -role webdriver -hub http://127.0.0.1:4444/grid/register -port 5555
  • Configure el reenvío del puerto TCP 4444 desde la máquina host a la guest.
  • Agregue a spec_helper.rb
if ENV["SELENIUM"] == 'remote'
   require 'selenium-webdriver'
    url = 'http://127.0.0.1:4444/wd/hub'
   capabilities = Selenium::WebDriver::Remote::Capabilities.internet_explorer
    Capybara.register_driver :remote_browser do |app|
     Capybara::Selenium::Driver.new(app,
                                    :browser => :remote, :url => url,
                                    :desired_capabilities => capabilities)
   end
    Capybara.server_port = 3010
   ip = `ifconfig | grep 'inet ' | grep -v 127.0.0.1 | cut -d ' ' -f2`.strip
   Capybara.app_host = http://#{ip}:#{Capybara.server_port}
   Capybara.current_driver = :remote_browser
   Capybara.javascript_driver = :remote_browser
 end
  • Corra los testeos
SELENIUM=remote bundle exec rspec spec/features/

Ahora puede fácilmente cambiar de IE a Chrome, Firefox o cualquier otro y correr el test de nuevo.

Usando browserstack

  • Cree una cuenta en browserstack
  • Descargue y copie BrowserStackTunnel.jar dentro de spec/support/
  • Asegúrese que java y curl están instalados en su máquina
  • Agregue a spec_helper.rb
  if ENV["SELENIUM"] == 'browserstack'
    require 'selenium-webdriver'

    url = "https://#{AppConfig.browserstack['username']}:#{AppConfig.browserstack['accesskey']}@hub.browserstack.com/wd/hub"
    capabilities = Selenium::WebDriver::Remote::Capabilities.new
    capabilities['browser'] = ENV['browser'] || 'IE'
    capabilities['browser_version'] = ENV['browser_version'] || '8.0'
    capabilities['os'] = 'Windows'
    capabilities['os_version'] = '7'
    capabilities['browserstack.tunnel'] = 'true'
    capabilities['browserstack.debug'] = 'true'

    Capybara.register_driver :browser_stack do |app|
      Capybara::Selenium::Driver.new(app,
                                     :browser => :remote, :url => url,
                                     :desired_capabilities => capabilities)
    end

    Capybara.server_port = 3010
    Capybara.default_wait_time = 10
    Capybara.current_driver = :browser_stack
    Capybara.javascript_driver = :browser_stack

    RSpec.configure do |config|
      config.before(:all) do
        `java -jar spec/support/BrowserStackTunnel.jar #{AppConfig.browserstack['accesskey']} 127.0.0.1,#{Capybara.server_port},0 -v >log/browserstack.log 2>&1 &`
        visit '/'
        until (`curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:45691`.to_i == 200)
          sleep 1
        end
      end
      config.after(:all) do
        `ps -ef | awk '/BrowserStackTunnel.*,#{Capybara.server_port},/{print $2}' | xargs kill -9`
      end
    end
  end
  • Corra los tests
SELENIUM=browserstack browser=IE browser_version=11.0 bundle exec rspec spec/features/

Supuestos

Probar en navegadores asume el uso de selenium webdriver. Deberá asegurarse que todos sus tests se pasen utilizando selenium si previamente usaba webkit u otro.

Conclusión

Al usar una MV personal se mantiene mayor control sobre los navegadores, se puede incluso cambiar el perfil de los navegadores entre otras opciones. Pero browserstack le permite correr sus tests sobre muchas y diferentes combinaciones de plataformas y navegadores hasta incluso emuladores de móviles sin instalaciones adicionales. Sin embargo, la velocidad de los test depende de la latencia de la red y el plan elegido. Afortunadamente, se puede correr pruebas en varios hilos a través de a ravés de distintos navegadores o tests. Además, ofrece la posibilidad de hacer testeos en vivo y depurar su aplicación local o carpeta con el prototipo. Se puede hasta chequear la capacidad de respuesta!

Puede encontrarse más información, siguiendo este link.

Leandro Fridman

I work in Altoros since 2012. BA in Communications. I scanned the radio, television and print media. During the 2013 finished the Master Integration Consulting IT Organizations in the Polytechnic University of Valencia, Spain. Faculty of Journalism and Communication career at UNL. Currently, I take my passion for technology and my training in communication and coordinate projects which relate to these areas. And if not related, then finding coordinate the relationship. I also like photography and sports.

Facebook Twitter LinkedIn