turbo-rails 2.0.7 → 2.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +59 -0
- data/app/assets/javascripts/turbo.js +1991 -1914
- data/app/assets/javascripts/turbo.min.js +6 -6
- data/app/assets/javascripts/turbo.min.js.map +1 -1
- data/app/channels/turbo/streams/broadcasts.rb +17 -6
- data/app/javascript/turbo/cable_stream_source_element.js +10 -0
- data/app/models/concerns/turbo/broadcastable.rb +32 -22
- data/app/models/turbo/streams/tag_builder.rb +30 -12
- data/lib/turbo/engine.rb +48 -3
- data/lib/turbo/system_test_helper.rb +128 -0
- data/lib/turbo/version.rb +1 -1
- metadata +3 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 94572dc49b27a9dd77578b4bb4083732609943d5b9f850331fba2eab3fae1b8c
|
4
|
+
data.tar.gz: 6a18b6efad308fe32226a7db8e18e03df9125dcddc447b98fcbffb1ddd334697
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 693a6e202e6b831141985389536f23b93a2c019e96e7de54f050407fd6f25a4082a13ba0c4a3fce3e747ae895a9d0ad5851ba0cbc68acf5c254c4a57b6dd6b36
|
7
|
+
data.tar.gz: 1ee3bcbd690330b8c602532151eacc86cdb9d442649638189daa887432183df027d3a054d4c999aeb59a6aae4de5164e9fa00fa5b62e0848874ddc95878df938
|
data/README.md
CHANGED
@@ -100,6 +100,64 @@ This gem provides a `turbo_stream_from` helper to create a turbo stream.
|
|
100
100
|
<%# Rest of show here %>
|
101
101
|
```
|
102
102
|
|
103
|
+
### Testing Turbo Stream Broadcasts
|
104
|
+
|
105
|
+
Receiving server-generated Turbo Broadcasts requires a connected Web Socket.
|
106
|
+
Views that render `<turbo-cable-stream-source>` elements with the
|
107
|
+
`#turbo_stream_from` view helper incur a slight delay before they're ready to
|
108
|
+
receive broadcasts. In System Tests, that delay can disrupt Capybara's built-in
|
109
|
+
synchronization mechanisms that wait for or assert on content that's broadcast
|
110
|
+
over Web Sockets. For example, consider a test that navigates to a page and then
|
111
|
+
immediately asserts that broadcast content is present:
|
112
|
+
|
113
|
+
```ruby
|
114
|
+
test "renders broadcasted Messages" do
|
115
|
+
message = Message.new content: "Hello, from Action Cable"
|
116
|
+
|
117
|
+
visit "/"
|
118
|
+
click_link "All Messages"
|
119
|
+
message.save! # execute server-side code to broadcast a Message
|
120
|
+
|
121
|
+
assert_text message.content
|
122
|
+
end
|
123
|
+
```
|
124
|
+
|
125
|
+
If the call to `Message#save!` executes quickly enough, it might beat-out any
|
126
|
+
`<turbo-cable-stream-source>` elements rendered by the call to `click_link "All
|
127
|
+
Messages"`.
|
128
|
+
|
129
|
+
To wait for any disconnected `<turbo-cable-stream-source>` elements to connect,
|
130
|
+
call [`#connect_turbo_cable_stream_sources`](turbo-rails/blob/wait-for-cable-stream-sourceshttps://github.com/hotwired/turbo-rails/blob/main/lib/turbo/system_test_helper.rb):
|
131
|
+
|
132
|
+
```diff
|
133
|
+
test "renders broadcasted Messages" do
|
134
|
+
message = Message.new content: "Hello, from Action Cable"
|
135
|
+
|
136
|
+
visit "/"
|
137
|
+
click_link "All Messages"
|
138
|
+
+ connect_turbo_cable_stream_sources
|
139
|
+
message.save! # execute server-side code to broadcast a Message
|
140
|
+
|
141
|
+
assert_text message.content
|
142
|
+
end
|
143
|
+
```
|
144
|
+
|
145
|
+
By default, calls to [`#visit`](https://rubydoc.info/github/teamcapybara/capybara/master/Capybara/Session: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`](https://rubydoc.info/github/teamcapybara/capybara/master/Capybara/Node/Actions:click_link), add the following to `config/environments/test.rb`:
|
146
|
+
|
147
|
+
```ruby
|
148
|
+
# config/environments/test.rb
|
149
|
+
|
150
|
+
config.turbo.test_connect_after_actions << :click_link
|
151
|
+
```
|
152
|
+
|
153
|
+
To disable automatic connecting, set the configuration to `[]`:
|
154
|
+
|
155
|
+
```ruby
|
156
|
+
# config/environments/test.rb
|
157
|
+
|
158
|
+
config.turbo.test_connect_after_actions = []
|
159
|
+
```
|
160
|
+
|
103
161
|
[See documentation](https://turbo.hotwired.dev/handbook/streams).
|
104
162
|
|
105
163
|
## Installation
|
@@ -140,6 +198,7 @@ Note that this documentation is updated automatically from the main branch, so i
|
|
140
198
|
- [Turbo Test Assertions](https://rubydoc.info/github/hotwired/turbo-rails/main/Turbo/TestAssertions)
|
141
199
|
- [Turbo Integration Test Assertions](https://rubydoc.info/github/hotwired/turbo-rails/main/Turbo/TestAssertions/IntegrationTestAssertions)
|
142
200
|
- [Turbo Broadcastable Test Helper](https://rubydoc.info/github/hotwired/turbo-rails/main/Turbo/Broadcastable/TestHelper)
|
201
|
+
- [Turbo System Test Helper](https://rubydoc.info/github/hotwired/turbo-rails/main/Turbo/SystemTestHelper)
|
143
202
|
|
144
203
|
## Compatibility with Rails UJS
|
145
204
|
|