EOFError с системными тестами Capybara, Puma, Rails по SSL - PullRequest
0 голосов
/ 28 апреля 2019

Запуск системных тестов Rails по SSL демонстрирует странное поведение, и я не уверен, является ли это ошибкой или разработкой.

Это очень простое Пример приложения имеет один системный тест, который ищетэлемент на странице индекса.

git clone https://github.com/frankjmattia/rails-ssl-system-tests.git blorgh
cd blorgh
./bin/setup

На этом этапе вы должны создать самозаверяющий сертификат и поручить вашей операционной системе доверять ему.

./bin/generate-blorgh-cert blorgh.test

Это создаст сертификати распечатайте инструкции по доверию в Mac OS X или Ubuntu.Это будет действительно для https://blorgh.test, https://127.0.0.1 и https://localhost

rake для запуска системного теста

или

rails s для запускасервера, а затем перейдите к https://localhost:3000

При выполнении тестов они проходят, однако я получаю сообщение об ошибке из Puma, прежде чем даже сделать запрос.

frankjmattia@lappy-i686 % rake
Run options: --seed 43000

# Running:
    Capybara starting Puma...
* Version 3.12.1 , codename: Llamas in Pajamas
* Min threads: 1, max threads: 1
* Listening on ssl://127.0.0.1:56260?key=/Users/frankjmattia/src/blorgh/ssl/blorgh.test.key.pem&cert=/Users/frankjmattia/src/blorgh/ssl/blorgh.test.cert.pem
2019-04-28 16:59:48 -0400: SSL error, peer: 127.0.0.1, peer cert: , #<Puma::MiniSSL::SSLError: OpenSSL error: error:1407609C:SSL routines:SSL23_GET_CLIENT_HELLO:http request - 336027804>
2019-04-28 16:59:49 -0400: SSL error, peer: 127.0.0.1, peer cert: , #<Puma::MiniSSL::SSLError: OpenSSL error: error:1407609C:SSL routines:SSL23_GET_CLIENT_HELLO:http request - 336027804>
.

Finished in 3.177669s, 0.3147 runs/s, 0.3147 assertions/s.
1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
2019-04-28 16:59:49 -0400: Read error: #<EOFError: EOFError>
/Users/frankjmattia/.asdf/installs/ruby/2.6.2/lib/ruby/gems/2.6.0/gems/puma-3.12.1/lib/puma/client.rb:306:in `try_to_finish'
/Users/frankjmattia/.asdf/installs/ruby/2.6.2/lib/ruby/gems/2.6.0/gems/puma-3.12.1/lib/puma/client.rb:119:in `reset'
/Users/frankjmattia/.asdf/installs/ruby/2.6.2/lib/ruby/gems/2.6.0/gems/puma-3.12.1/lib/puma/server.rb:486:in `process_client'
/Users/frankjmattia/.asdf/installs/ruby/2.6.2/lib/ruby/gems/2.6.0/gems/puma-3.12.1/lib/puma/server.rb:334:in `block in run'
/Users/frankjmattia/.asdf/installs/ruby/2.6.2/lib/ruby/gems/2.6.0/gems/puma-3.12.1/lib/puma/thread_pool.rb:135:in `block in spawn_thread'

Я думаю,это с сервера Capybara, проверяющего responsive?, но я не уверен, как это доказать или обойти.

Кроме того, хотя все тесты проходят локально,они зависают при работе на платформе CI, такой как SemaphoreCI.

Если это ошибка, то кто это ошибка?Я склоняюсь к Капибаре, но не хочу тратить время на подготовку отчета об ошибке, если у меня нет всех фактов или я не могу адекватно описать его.

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

Понятия не имею, что такое ошибка EOFError, хотя она может иметь отношение к переключению app_host во время запроса страницы (загрузка страницы не гарантируется, когда посещение вернется)

То, что я этого не сделал, решило проблему для меня. Передача дополнительных параметров в chromedriver в моем случае не требовалась.

0 голосов
/ 29 апреля 2019

Эта SSL-ошибка выдается OpenSSL, когда Capybara пытается выполнить http-запрос к серверу, ожидая запуска сервера и определения, является ли он http или https. После получения ошибки Capybara повторяется как запрос https. Это не ошибка, которая на самом деле влияет на что-либо, кроме выводимого сообщения, и нет причины, по которой «ошибка» должна приводить к зависанию SemaphoreCI.

Если Semaphore использует док-платформу и у вас запущен Chrome> = 73, может потребоваться передать параметры командной строки --no-sandbox и --disable-features='VizDisplayCompositor' в Chrome, чтобы он работал правильно.

...