Tests de Selenium con servidor remoto y Vagrant

Escrito el lunes, 31 de julio del 2017.

Servidor remoto

Con el entorno de desarrollo (neovim + tmux) ejecutándose en servidor remoto, habilitamos en éste el ssh tunneling de la siguiente forma:

En el archivo /etc/ssh/ssh_config modificamos la siguiente linea:

GatewayPorts yes

Reiniciamos el servicio ssh.

sudo systemctl restart sshd

Abrimos dos terminales en la maquina local, en la primera, iniciamos el ssh tunneling.

ssh -R 4444:localhost:4444 usuario@<ip-servidor>

En la segunda ejecutamos Selenium con Chromedriver.

java -Dwebdriver.chrome.driver='/home/adrian/chromedriver' -jar selenium-server-standalone-3.4.0.jar

En nuestro behat.yml, base_url debe apuntar a la IP de nuestro servidor y al puerto que tenemos abierto, donde se esta ejecutando nuestra aplicación de laravel con php artisan serve.

php artisan serve --host=<ip_servidor> --port=<puerto>

En behat.yml

base_url: http://<ip_servidor>:<puerto>

Vagrant

Hacemos el ssh tunneling, pero sobre la dirección IP de homestead.

ssh -R 4444:localhost:4444 vagrant@192.168.10.10

En una terminal ejecutamos selenium y chromedriver como se indicó anteriormente:

java -Dwebdriver.chrome.driver='/home/adrian/chromedriver' -jar selenium-server-standalone-3.4.0.jar

En behat.yml, en base_url va indicada la url de nuestra aplicación, y en la sección de selenium, localhost:4000/wd/hub como si se ejecutara en la maquina virtual.

behat.yml

default:
    translation:
        locale: en
    extensions:
        Laracasts\Behat: ~
            # env_path: .env.behat
        Behat\MinkExtension:
            base_url: 'http://interpos.app'
            default_session: laravel
            laravel: ~
            selenium2:
              wd_host: http://localhost:4444/wd/hub
              browser: chrome

En mi caso, usando el plugin vim-test, vagrant ssh no me permitía mandar el comando a ejecutar directamente a la maquina virtual, así que usando la función VagrantTransform (adaptada del ejemplo de la documentación) lo conseguí satisfactoriamente:

function! VagrantTransform(cmd) abort
  let l:vagrant_project = fnamemodify(getcwd(),":t")
  return "cd ~/Homestead && ssh -tt vagrant@192.168.10.10 ".shellescape('cd /home/vagrant/sitios/'.vagrant_project.'; '.a:cmd)
endfunction

let g:test#custom_transformations = {'vagrant': function('VagrantTransform')}
let g:test#transformation = 'vagrant'

Esta entrada fue etiquetada en #behat y #selenium

 

Social

Etiquetas