Capybara: как запустить код при порождении сервера?

У меня есть приложение Sinatra с WebPack, когда я запускаю свое приложение в разработке, я запускаю процесс, запускающий Webpack Dev Server, и использую RackProxy для обслуживания ресурсов из моего приложения Sinatra.

Я также должен запускать Webpack Dev Server при выполнении приемочных тестов JS Capybara, когда Capybara создает сервер ruby.

До сих пор я придумал разместить запуск WDS в блоке регистров драйверов, но у меня другие драйверы.

Capybara.register_driver :headless_chrome do |app|
  Rack::WebpackProxy.start_server

  Capybara::Selenium::Driver.new(app, browser: :chrome, args: ["headless"])
end

Что такое хук для запуска кода при запуске сервера Capybara?


person Macario    schedule 18.07.2018    source источник
comment
stackoverflow.com/questions/8413443/ должен помочь, я думаю   -  person Mark    schedule 18.07.2018
comment
Привет, Марк, не совсем, мне нужно проделать некоторую работу, когда водосвинка создает свои серверы, это не касается настройки драйвера или сервера.   -  person Macario    schedule 18.07.2018


Ответы (1)


Capybara.server= принимает зарегистрированное имя серверной процедуры для использования при запуске сервера, и вы можете зарегистрировать свое собственное, используя Capybara.register_server. Поэтому вы должны быть в состоянии сделать что-то вроде

Capybara.register_server :my_server do |app, port, host, **options|
  # start whatever you need started here
  do_my_stuff
  Capybara.servers[:puma].call(app, port, host) # assuming you want puma as the actual server
end

Capybara.server = :my_server
person Thomas Walpole    schedule 18.07.2018