ruby-on-railswebsocketcapybaracapybara-webkitactioncable

ActionCable not connecting during capybara-webkit feature spec


I have a problem using actioncable with feature specs using Capybara-webkit. Actioncable is working perfectly on my development server, but when testing the javascript cant seem to connect.

This is the output from the javascript console which is running during my feature spec

WebSocket connection to 'ws://127.0.0.1:32789/cable' failed: Unexpected response code: 200

This is the output of my test.log at that moment

GET     "/cable"  for 127.0.0.1  at 2017-01-26 13:33:23 +0000
GET     "/cable/"  for 127.0.0.1  at 2017-01-26 13:33:23 +0000
Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)

Its strange because it seems like Its connecting fine according to the log, but the javascript throws an error and stops executing... Also how is 200 an error code? Doesn't 200 status code always mean OK?

Thanks in advance


Solution

  • The default server used by Capybara is :webrick which doesn't support testing ActionCable (it will be changing whenever Capybara 3.0 releases). To switch it to using puma which will support testing with ActionCable you can specify Capybara.server = :puma as part of your Capybara configuration.