Module: Turbo::SystemTestHelper

Defined in:
lib/turbo/system_test_helper.rb

Defined Under Namespace

Classes: SignedStreamNameConditions

Instance Method Summary collapse

Instance Method Details

#assert_no_turbo_cable_stream_sourceObject

Asserts that a ‘<turbo-cable-stream-source>` element is absent from the document

Arguments

  • locator optional locator to determine the element’s ‘[signed-stream-name]` attribute. Can be of any type that is a valid argument to Turbo::Streams::StreamName#signed_stream_name.

Options

  • :connected matches the ‘[connected]` attribute

  • :channel matches the ‘[channel]` attribute. Can be a Class, String, Symbol, or Regexp

  • :signed_stream_name matches the element’s ‘[signed-stream-name]` attribute. Can be of any type that is a valid argument to Turbo::Streams::StreamName#signed_stream_name.

In addition to the filters listed above, accepts any valid Capybara global filter option.



78
79
80
# File 'lib/turbo/system_test_helper.rb', line 78

def assert_no_turbo_cable_stream_source(...)
  assert_no_selector(:turbo_cable_stream_source, ...)
end

#assert_turbo_cable_stream_sourceObject

Asserts that a ‘<turbo-cable-stream-source>` element is present in the document

Arguments

  • locator optional locator to determine the element’s ‘[signed-stream-name]` attribute. Can be of any type that is a valid argument to Turbo::Streams::StreamName#signed_stream_name.

Options

  • :connected matches the ‘[connected]` attribute

  • :channel matches the ‘[channel]` attribute. Can be a Class, String, Symbol, or Regexp

  • :signed_stream_name matches the element’s ‘[signed-stream-name]` attribute. Can be of any type that is a valid argument to Turbo::Streams::StreamName#signed_stream_name.

In addition to the filters listed above, accepts any valid Capybara global filter option.



54
55
56
# File 'lib/turbo/system_test_helper.rb', line 54

def assert_turbo_cable_stream_source(...)
  assert_selector(:turbo_cable_stream_source, ...)
end

#connect_turbo_cable_stream_sources(**options, &block) ⇒ Object

Delay until every ‘<turbo-cable-stream-source>` element present in the page is ready to receive broadcasts

test "renders broadcasted Messages" do
  message = Message.new content: "Hello, from Action Cable"

  visit "/"
  click_link "All Messages"
  message.save! # execute server-side code to broadcast a Message

  assert_text message.content
end

By default, calls to ‘#visit` will wait for all `<turbo-cable-stream-source>` elements to connect. You can control this by modifying the `config.turbo.test_connect_after_actions`. For example, to wait after calls to `#click_link`, add the following to `config/environments/test.rb`:

# config/environments/test.rb
config.turbo.test_connect_after_actions << :click_link

To disable automatic connecting, set the configuration to ‘[]`:

# config/environments/test.rb
config.turbo.test_connect_after_actions = []


28
29
30
31
32
# File 'lib/turbo/system_test_helper.rb', line 28

def connect_turbo_cable_stream_sources(**options, &block)
  all(:turbo_cable_stream_source, **options, connected: false, wait: 0).each do |element|
    element.assert_matches_selector(:turbo_cable_stream_source, **options, connected: true, &block)
  end
end