Запуск Selenium тестов через SSH tunnel на своем компьютере
Selenium тесты один из самых простых способов покрыть веб приложения тестами, но что делать если на сервере нет возможности поднять Selenium RC, так как для его корректной работы под nix системами нужно поднять x11. Одним из вариантов решения – использовать SSH туннели.
Как ни прискорбно признавать, но большинство разработчиков используют Windows. И самый популярный клиент для SSH под windows является putty, вот его мы и будем использовать, про линуксоидов тоже не забудем и приведем пример для linux.
Установка Selenium RC
Тут все просто заходите на официальный сайт и скачивайте последнею версию Selenium RC. У вас должен быть jar файл selenium-server-standalone-x.xx.x.jar. И теперь вы можете его запустить с консоли:
java -jar selenium-server-standalone-x.xx.x.jar -interactive -multiWindow
После этого запустится Selenium сервер на 4444 порт, этот порт используется по умолчанию.
Настройка SSH туннеля
Теперь завернем локальный 4444 порт на удаленный сервер при помощи SSH туннеля. Для этого запустите Putty выберите пункт меню Connection -> SSH -> Tunnels. В появившийся форме укажите Source Port 4444 и Destination localhost:4444 и не забудьте нажать на кнопку Add, как ни странно многие про нее забывают.
Написание PHPUnit теста для Selenium RC
Для проверки работы нашего туннеля напишем простенький Selenium тест на PHPUnit.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
require_once 'PHPUnit/Extensions/SeleniumTestSuite.php'; class TestSshTunnel extends PHPUnit_Extensions_SeleniumTestCase { public static $browsers = array( array( 'name' => 'Firefox on Windows', 'browser' => '*firefox', 'host' => 'localhost', 'port' => 4444, 'timeout' => 30000, ) ); protected function setUp() { $this->setBrowserUrl("http://google.com/"); } public function testTunnel() { $this->open("http://google.com/"); $this->type("id=gbqfq", "selenium"); $this->click("id=gbqfb"); } } |
Теперь запускаем наш тест в ssh консоле:
phpunit test.php
и наблюдаем как выполняется наш тест на локальной машине, а результат тестирования отображается на сервер.
Тоже самое для Linux/MacOS
В целом все тоже самое за исключение поднятия туннеля, хотя putty есть и для этих платформ все равно разработчики любят подымать туннель с консоли:
ssh -nNT -R 4444:127.0.0.1:4444 username@yourhost.com