e2e 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- e2e (0.5.0)
4
+ e2e (0.6.1)
5
5
  playwright-ruby-client (>= 1.40.0)
6
6
  rack
7
7
  rackup
@@ -10,31 +10,31 @@ PATH
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- action_text-trix (2.1.16)
13
+ action_text-trix (2.1.18)
14
14
  railties
15
- actioncable (8.1.2)
16
- actionpack (= 8.1.2)
17
- activesupport (= 8.1.2)
15
+ actioncable (8.1.3)
16
+ actionpack (= 8.1.3)
17
+ activesupport (= 8.1.3)
18
18
  nio4r (~> 2.0)
19
19
  websocket-driver (>= 0.6.1)
20
20
  zeitwerk (~> 2.6)
21
- actionmailbox (8.1.2)
22
- actionpack (= 8.1.2)
23
- activejob (= 8.1.2)
24
- activerecord (= 8.1.2)
25
- activestorage (= 8.1.2)
26
- activesupport (= 8.1.2)
21
+ actionmailbox (8.1.3)
22
+ actionpack (= 8.1.3)
23
+ activejob (= 8.1.3)
24
+ activerecord (= 8.1.3)
25
+ activestorage (= 8.1.3)
26
+ activesupport (= 8.1.3)
27
27
  mail (>= 2.8.0)
28
- actionmailer (8.1.2)
29
- actionpack (= 8.1.2)
30
- actionview (= 8.1.2)
31
- activejob (= 8.1.2)
32
- activesupport (= 8.1.2)
28
+ actionmailer (8.1.3)
29
+ actionpack (= 8.1.3)
30
+ actionview (= 8.1.3)
31
+ activejob (= 8.1.3)
32
+ activesupport (= 8.1.3)
33
33
  mail (>= 2.8.0)
34
34
  rails-dom-testing (~> 2.2)
35
- actionpack (8.1.2)
36
- actionview (= 8.1.2)
37
- activesupport (= 8.1.2)
35
+ actionpack (8.1.3)
36
+ actionview (= 8.1.3)
37
+ activesupport (= 8.1.3)
38
38
  nokogiri (>= 1.8.5)
39
39
  rack (>= 2.2.4)
40
40
  rack-session (>= 1.0.1)
@@ -42,36 +42,36 @@ GEM
42
42
  rails-dom-testing (~> 2.2)
43
43
  rails-html-sanitizer (~> 1.6)
44
44
  useragent (~> 0.16)
45
- actiontext (8.1.2)
45
+ actiontext (8.1.3)
46
46
  action_text-trix (~> 2.1.15)
47
- actionpack (= 8.1.2)
48
- activerecord (= 8.1.2)
49
- activestorage (= 8.1.2)
50
- activesupport (= 8.1.2)
47
+ actionpack (= 8.1.3)
48
+ activerecord (= 8.1.3)
49
+ activestorage (= 8.1.3)
50
+ activesupport (= 8.1.3)
51
51
  globalid (>= 0.6.0)
52
52
  nokogiri (>= 1.8.5)
53
- actionview (8.1.2)
54
- activesupport (= 8.1.2)
53
+ actionview (8.1.3)
54
+ activesupport (= 8.1.3)
55
55
  builder (~> 3.1)
56
56
  erubi (~> 1.11)
57
57
  rails-dom-testing (~> 2.2)
58
58
  rails-html-sanitizer (~> 1.6)
59
- activejob (8.1.2)
60
- activesupport (= 8.1.2)
59
+ activejob (8.1.3)
60
+ activesupport (= 8.1.3)
61
61
  globalid (>= 0.3.6)
62
- activemodel (8.1.2)
63
- activesupport (= 8.1.2)
64
- activerecord (8.1.2)
65
- activemodel (= 8.1.2)
66
- activesupport (= 8.1.2)
62
+ activemodel (8.1.3)
63
+ activesupport (= 8.1.3)
64
+ activerecord (8.1.3)
65
+ activemodel (= 8.1.3)
66
+ activesupport (= 8.1.3)
67
67
  timeout (>= 0.4.0)
68
- activestorage (8.1.2)
69
- actionpack (= 8.1.2)
70
- activejob (= 8.1.2)
71
- activerecord (= 8.1.2)
72
- activesupport (= 8.1.2)
68
+ activestorage (8.1.3)
69
+ actionpack (= 8.1.3)
70
+ activejob (= 8.1.3)
71
+ activerecord (= 8.1.3)
72
+ activesupport (= 8.1.3)
73
73
  marcel (~> 1.0)
74
- activesupport (8.1.2)
74
+ activesupport (8.1.3)
75
75
  base64
76
76
  bigdecimal
77
77
  concurrent-ruby (~> 1.0, >= 1.3.1)
@@ -90,7 +90,7 @@ GEM
90
90
  thor (>= 0.14.0)
91
91
  ast (2.4.3)
92
92
  base64 (0.3.0)
93
- bigdecimal (4.0.1)
93
+ bigdecimal (4.1.1)
94
94
  builder (3.3.0)
95
95
  concurrent-ruby (1.3.6)
96
96
  connection_pool (3.0.2)
@@ -99,7 +99,7 @@ GEM
99
99
  diff-lcs (1.6.2)
100
100
  docile (1.4.1)
101
101
  drb (2.2.3)
102
- erb (6.0.1)
102
+ erb (6.0.2)
103
103
  erubi (1.13.1)
104
104
  globalid (1.3.0)
105
105
  activesupport (>= 6.1)
@@ -111,12 +111,12 @@ GEM
111
111
  prism (>= 1.3.0)
112
112
  rdoc (>= 4.0.0)
113
113
  reline (>= 0.4.2)
114
- json (2.18.1)
114
+ json (2.19.3)
115
115
  language_server-protocol (3.17.0.5)
116
- lefthook (2.1.0)
116
+ lefthook (2.1.5)
117
117
  lint_roller (1.1.0)
118
118
  logger (1.7.0)
119
- loofah (2.25.0)
119
+ loofah (2.25.1)
120
120
  crass (~> 1.0.2)
121
121
  nokogiri (>= 1.12.0)
122
122
  mail (2.9.0)
@@ -129,11 +129,12 @@ GEM
129
129
  mime-types (3.7.0)
130
130
  logger
131
131
  mime-types-data (~> 3.2025, >= 3.2025.0507)
132
- mime-types-data (3.2026.0203)
132
+ mime-types-data (3.2026.0414)
133
133
  mini_mime (1.1.5)
134
- minitest (6.0.1)
134
+ minitest (6.0.4)
135
+ drb (~> 2.0)
135
136
  prism (~> 1.5)
136
- net-imap (0.6.2)
137
+ net-imap (0.6.3)
137
138
  date
138
139
  net-protocol
139
140
  net-pop (0.1.2)
@@ -143,27 +144,27 @@ GEM
143
144
  net-smtp (0.5.1)
144
145
  net-protocol
145
146
  nio4r (2.7.5)
146
- nokogiri (1.19.0-aarch64-linux-gnu)
147
+ nokogiri (1.19.2-aarch64-linux-gnu)
147
148
  racc (~> 1.4)
148
- nokogiri (1.19.0-aarch64-linux-musl)
149
+ nokogiri (1.19.2-aarch64-linux-musl)
149
150
  racc (~> 1.4)
150
- nokogiri (1.19.0-arm-linux-gnu)
151
+ nokogiri (1.19.2-arm-linux-gnu)
151
152
  racc (~> 1.4)
152
- nokogiri (1.19.0-arm-linux-musl)
153
+ nokogiri (1.19.2-arm-linux-musl)
153
154
  racc (~> 1.4)
154
- nokogiri (1.19.0-arm64-darwin)
155
+ nokogiri (1.19.2-arm64-darwin)
155
156
  racc (~> 1.4)
156
- nokogiri (1.19.0-x86_64-darwin)
157
+ nokogiri (1.19.2-x86_64-darwin)
157
158
  racc (~> 1.4)
158
- nokogiri (1.19.0-x86_64-linux-gnu)
159
+ nokogiri (1.19.2-x86_64-linux-gnu)
159
160
  racc (~> 1.4)
160
- nokogiri (1.19.0-x86_64-linux-musl)
161
+ nokogiri (1.19.2-x86_64-linux-musl)
161
162
  racc (~> 1.4)
162
- parallel (1.27.0)
163
- parser (3.3.10.1)
163
+ parallel (1.28.0)
164
+ parser (3.3.11.1)
164
165
  ast (~> 2.4.1)
165
166
  racc
166
- playwright-ruby-client (1.58.0)
167
+ playwright-ruby-client (1.59.0)
167
168
  base64
168
169
  concurrent-ruby (>= 1.1.6)
169
170
  mime-types (>= 3.0)
@@ -175,38 +176,38 @@ GEM
175
176
  date
176
177
  stringio
177
178
  racc (1.8.1)
178
- rack (3.2.4)
179
- rack-session (2.1.1)
179
+ rack (3.2.6)
180
+ rack-session (2.1.2)
180
181
  base64 (>= 0.1.0)
181
182
  rack (>= 3.0.0)
182
183
  rack-test (2.2.0)
183
184
  rack (>= 1.3)
184
185
  rackup (2.3.1)
185
186
  rack (>= 3)
186
- rails (8.1.2)
187
- actioncable (= 8.1.2)
188
- actionmailbox (= 8.1.2)
189
- actionmailer (= 8.1.2)
190
- actionpack (= 8.1.2)
191
- actiontext (= 8.1.2)
192
- actionview (= 8.1.2)
193
- activejob (= 8.1.2)
194
- activemodel (= 8.1.2)
195
- activerecord (= 8.1.2)
196
- activestorage (= 8.1.2)
197
- activesupport (= 8.1.2)
187
+ rails (8.1.3)
188
+ actioncable (= 8.1.3)
189
+ actionmailbox (= 8.1.3)
190
+ actionmailer (= 8.1.3)
191
+ actionpack (= 8.1.3)
192
+ actiontext (= 8.1.3)
193
+ actionview (= 8.1.3)
194
+ activejob (= 8.1.3)
195
+ activemodel (= 8.1.3)
196
+ activerecord (= 8.1.3)
197
+ activestorage (= 8.1.3)
198
+ activesupport (= 8.1.3)
198
199
  bundler (>= 1.15.0)
199
- railties (= 8.1.2)
200
+ railties (= 8.1.3)
200
201
  rails-dom-testing (2.3.0)
201
202
  activesupport (>= 5.0.0)
202
203
  minitest
203
204
  nokogiri (>= 1.6)
204
- rails-html-sanitizer (1.6.2)
205
- loofah (~> 2.21)
205
+ rails-html-sanitizer (1.7.0)
206
+ loofah (~> 2.25)
206
207
  nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
207
- railties (8.1.2)
208
- actionpack (= 8.1.2)
209
- activesupport (= 8.1.2)
208
+ railties (8.1.3)
209
+ actionpack (= 8.1.3)
210
+ activesupport (= 8.1.3)
210
211
  irb (~> 1.13)
211
212
  rackup (>= 1.0.0)
212
213
  rake (>= 12.2)
@@ -214,12 +215,12 @@ GEM
214
215
  tsort (>= 0.2)
215
216
  zeitwerk (~> 2.6)
216
217
  rainbow (3.1.1)
217
- rake (13.3.1)
218
- rdoc (7.1.0)
218
+ rake (13.4.1)
219
+ rdoc (7.2.0)
219
220
  erb
220
221
  psych (>= 4.0.0)
221
222
  tsort
222
- regexp_parser (2.11.3)
223
+ regexp_parser (2.12.0)
223
224
  reline (0.6.3)
224
225
  io-console (~> 0.5)
225
226
  rspec (3.13.2)
@@ -231,11 +232,11 @@ GEM
231
232
  rspec-expectations (3.13.5)
232
233
  diff-lcs (>= 1.2.0, < 2.0)
233
234
  rspec-support (~> 3.13.0)
234
- rspec-mocks (3.13.7)
235
+ rspec-mocks (3.13.8)
235
236
  diff-lcs (>= 1.2.0, < 2.0)
236
237
  rspec-support (~> 3.13.0)
237
238
  rspec-support (3.13.7)
238
- rubocop (1.82.1)
239
+ rubocop (1.84.2)
239
240
  json (~> 2.3)
240
241
  language_server-protocol (~> 3.17.0.2)
241
242
  lint_roller (~> 1.1.0)
@@ -243,10 +244,10 @@ GEM
243
244
  parser (>= 3.3.0.2)
244
245
  rainbow (>= 2.2.2, < 4.0)
245
246
  regexp_parser (>= 2.9.3, < 3.0)
246
- rubocop-ast (>= 1.48.0, < 2.0)
247
+ rubocop-ast (>= 1.49.0, < 2.0)
247
248
  ruby-progressbar (~> 1.7)
248
249
  unicode-display_width (>= 2.4.0, < 4.0)
249
- rubocop-ast (1.49.0)
250
+ rubocop-ast (1.49.1)
250
251
  parser (>= 3.3.7.2)
251
252
  prism (~> 1.7)
252
253
  rubocop-performance (1.26.1)
@@ -264,10 +265,10 @@ GEM
264
265
  simplecov_json_formatter (~> 0.1)
265
266
  simplecov-html (0.13.2)
266
267
  simplecov_json_formatter (0.1.4)
267
- standard (1.53.0)
268
+ standard (1.54.0)
268
269
  language_server-protocol (~> 3.17.0.2)
269
270
  lint_roller (~> 1.0)
270
- rubocop (~> 1.82.0)
271
+ rubocop (~> 1.84.0)
271
272
  standard-custom (~> 1.0.0)
272
273
  standard-performance (~> 1.8)
273
274
  standard-custom (1.0.2)
@@ -278,7 +279,7 @@ GEM
278
279
  rubocop-performance (~> 1.26.0)
279
280
  stringio (3.2.0)
280
281
  thor (1.5.0)
281
- timeout (0.6.0)
282
+ timeout (0.6.1)
282
283
  tsort (0.2.0)
283
284
  tzinfo (2.0.6)
284
285
  concurrent-ruby (~> 1.0)
@@ -292,7 +293,7 @@ GEM
292
293
  base64
293
294
  websocket-extensions (>= 0.1.0)
294
295
  websocket-extensions (0.1.5)
295
- zeitwerk (2.7.4)
296
+ zeitwerk (2.7.5)
296
297
 
297
298
  PLATFORMS
298
299
  aarch64-linux-gnu
@@ -319,22 +320,22 @@ DEPENDENCIES
319
320
  standard
320
321
 
321
322
  CHECKSUMS
322
- action_text-trix (2.1.16) sha256=f645a2c21821b8449fd1d6770708f4031c91a2eedf9ef476e9be93c64e703a8a
323
- actioncable (8.1.2) sha256=dc31efc34cca9cdefc5c691ddb8b4b214c0ea5cd1372108cbc1377767fb91969
324
- actionmailbox (8.1.2) sha256=058b2fb1980e5d5a894f675475fcfa45c62631103d5a2596d9610ec81581889b
325
- actionmailer (8.1.2) sha256=f4c1d2060f653bfe908aa7fdc5a61c0e5279670de992146582f2e36f8b9175e9
326
- actionpack (8.1.2) sha256=ced74147a1f0daafaa4bab7f677513fd4d3add574c7839958f7b4f1de44f8423
327
- actiontext (8.1.2) sha256=0bf57da22a9c19d970779c3ce24a56be31b51c7640f2763ec64aa72e358d2d2d
328
- actionview (8.1.2) sha256=80455b2588911c9b72cec22d240edacb7c150e800ef2234821269b2b2c3e2e5b
329
- activejob (8.1.2) sha256=908dab3713b101859536375819f4156b07bdf4c232cc645e7538adb9e302f825
330
- activemodel (8.1.2) sha256=e21358c11ce68aed3f9838b7e464977bc007b4446c6e4059781e1d5c03bcf33e
331
- activerecord (8.1.2) sha256=acfbe0cadfcc50fa208011fe6f4eb01cae682ebae0ef57145ba45380c74bcc44
332
- activestorage (8.1.2) sha256=8a63a48c3999caeee26a59441f813f94681fc35cc41aba7ce1f836add04fba76
333
- activesupport (8.1.2) sha256=88842578ccd0d40f658289b0e8c842acfe9af751afee2e0744a7873f50b6fdae
323
+ action_text-trix (2.1.18) sha256=3fdb83f8bff4145d098be283cdd47ac41caf5110bfa6df4695ed7127d7fb3642
324
+ actioncable (8.1.3) sha256=e5bc7f75e44e6a22de29c4f43176927c3a9ce4824464b74ed18d8226e75a80f0
325
+ actionmailbox (8.1.3) sha256=df7da474eaa0e70df4ed5a6fef66eb3b3b0f2dbf7f14518deee8d77f1b4aae59
326
+ actionmailer (8.1.3) sha256=831f724891bb70d0aaa4d76581a6321124b6a752cb655c9346aae5479318448d
327
+ actionpack (8.1.3) sha256=af998cae4d47c5d581a2cc363b5c77eb718b7c4b45748d81b1887b25621c29a3
328
+ actiontext (8.1.3) sha256=d291019c00e1ea9e6463011fa214f6081a56d7b9a1d224e7d3f6384c1dafc7d2
329
+ actionview (8.1.3) sha256=1347c88c7f3edb38100c5ce0e9fb5e62d7755f3edc1b61cce2eb0b2c6ea2fd5d
330
+ activejob (8.1.3) sha256=a149b1766aa8204c3c3da7309e4becd40fcd5529c348cffbf6c9b16b565fe8d3
331
+ activemodel (8.1.3) sha256=90c05cbe4cef3649b8f79f13016191ea94c4525ce4a5c0fb7ef909c4b91c8219
332
+ activerecord (8.1.3) sha256=8003be7b2466ba0a2a670e603eeb0a61dd66058fccecfc49901e775260ac70ab
333
+ activestorage (8.1.3) sha256=0564ce9309143951a67615e1bb4e090ee54b8befed417133cae614479b46384d
334
+ activesupport (8.1.3) sha256=21a5e0dfbd4c3ddd9e1317ec6a4d782fa226e7867dc70b0743acda81a1dca20e
334
335
  appraisal (2.5.0) sha256=36989221be127913b0dba8d114da2001e6b2dceea7bd4951200eaba764eed3ce
335
336
  ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383
336
337
  base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b
337
- bigdecimal (4.0.1) sha256=8b07d3d065a9f921c80ceaea7c9d4ae596697295b584c296fe599dd0ad01c4a7
338
+ bigdecimal (4.1.1) sha256=1c09efab961da45203c8316b0cdaec0ff391dfadb952dd459584b63ebf8054ca
338
339
  builder (3.3.0) sha256=497918d2f9dca528fdca4b88d84e4ef4387256d984b8154e9d5d3fe5a9c8835f
339
340
  concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab
340
341
  connection_pool (3.0.2) sha256=33fff5ba71a12d2aa26cb72b1db8bba2a1a01823559fb01d29eb74c286e62e0a
@@ -343,66 +344,66 @@ CHECKSUMS
343
344
  diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
344
345
  docile (1.4.1) sha256=96159be799bfa73cdb721b840e9802126e4e03dfc26863db73647204c727f21e
345
346
  drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373
346
- e2e (0.5.0)
347
- erb (6.0.1) sha256=28ecdd99c5472aebd5674d6061e3c6b0a45c049578b071e5a52c2a7f13c197e5
347
+ e2e (0.6.1)
348
+ erb (6.0.2) sha256=9fe6264d44f79422c87490a1558479bd0e7dad4dd0e317656e67ea3077b5242b
348
349
  erubi (1.13.1) sha256=a082103b0885dbc5ecf1172fede897f9ebdb745a4b97a5e8dc63953db1ee4ad9
349
350
  globalid (1.3.0) sha256=05c639ad6eb4594522a0b07983022f04aa7254626ab69445a0e493aa3786ff11
350
351
  i18n (1.14.8) sha256=285778639134865c5e0f6269e0b818256017e8cde89993fdfcbfb64d088824a5
351
352
  io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc
352
353
  irb (1.17.0) sha256=168c4ddb93d8a361a045c41d92b2952c7a118fa73f23fe14e55609eb7a863aae
353
- json (2.18.1) sha256=fe112755501b8d0466b5ada6cf50c8c3f41e897fa128ac5d263ec09eedc9f986
354
+ json (2.19.3) sha256=289b0bb53052a1fa8c34ab33cc750b659ba14a5c45f3fcf4b18762dc67c78646
354
355
  language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc
355
- lefthook (2.1.0) sha256=a100dc90139806e62b9aa40cf32e9edf34f6cff10c8b55ebd14a1b0add4b86bf
356
+ lefthook (2.1.5) sha256=24bd602992e1ec36057bcc667bb74f23918ed05c715050a44e5a156f0b7a4312
356
357
  lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
357
358
  logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
358
- loofah (2.25.0) sha256=df5ed7ac3bac6a4ec802df3877ee5cc86d027299f8952e6243b3dac446b060e6
359
+ loofah (2.25.1) sha256=d436c73dbd0c1147b16c4a41db097942d217303e1f7728704b37e4df9f6d2e04
359
360
  mail (2.9.0) sha256=6fa6673ecd71c60c2d996260f9ee3dd387d4673b8169b502134659ece6d34941
360
361
  marcel (1.1.0) sha256=fdcfcfa33cc52e93c4308d40e4090a5d4ea279e160a7f6af988260fa970e0bee
361
362
  mime-types (3.7.0) sha256=dcebf61c246f08e15a4de34e386ebe8233791e868564a470c3fe77c00eed5e56
362
- mime-types-data (3.2026.0203) sha256=54353d693af028847391c28361c07d4b8b689cad78c3e1cc272fb1205c6d2a2f
363
+ mime-types-data (3.2026.0414) sha256=461c4c655373a44bd6c5fe54bcf5b7776026ea96e808144b1ec465c4b99148cc
363
364
  mini_mime (1.1.5) sha256=8681b7e2e4215f2a159f9400b5816d85e9d8c6c6b491e96a12797e798f8bccef
364
- minitest (6.0.1) sha256=7854c74f48e2e975969062833adc4013f249a4b212f5e7b9d5c040bf838d54bb
365
- net-imap (0.6.2) sha256=08caacad486853c61676cca0c0c47df93db02abc4a8239a8b67eb0981428acc6
365
+ minitest (6.0.4) sha256=df1304664589d40f46089247fdc451f866b0ce0d7cae1457a15fc1eb7d48dca1
366
+ net-imap (0.6.3) sha256=9bab75f876596d09ee7bf911a291da478e0cd6badc54dfb82874855ccc82f2ad
366
367
  net-pop (0.1.2) sha256=848b4e982013c15b2f0382792268763b748cce91c9e91e36b0f27ed26420dff3
367
368
  net-protocol (0.2.2) sha256=aa73e0cba6a125369de9837b8d8ef82a61849360eba0521900e2c3713aa162a8
368
369
  net-smtp (0.5.1) sha256=ed96a0af63c524fceb4b29b0d352195c30d82dd916a42f03c62a3a70e5b70736
369
370
  nio4r (2.7.5) sha256=6c90168e48fb5f8e768419c93abb94ba2b892a1d0602cb06eef16d8b7df1dca1
370
- nokogiri (1.19.0-aarch64-linux-gnu) sha256=11a97ecc3c0e7e5edcf395720b10860ef493b768f6aa80c539573530bc933767
371
- nokogiri (1.19.0-aarch64-linux-musl) sha256=eb70507f5e01bc23dad9b8dbec2b36ad0e61d227b42d292835020ff754fb7ba9
372
- nokogiri (1.19.0-arm-linux-gnu) sha256=572a259026b2c8b7c161fdb6469fa2d0edd2b61cd599db4bbda93289abefbfe5
373
- nokogiri (1.19.0-arm-linux-musl) sha256=23ed90922f1a38aed555d3de4d058e90850c731c5b756d191b3dc8055948e73c
374
- nokogiri (1.19.0-arm64-darwin) sha256=0811dfd936d5f6dd3f6d32ef790568bf29b2b7bead9ba68866847b33c9cf5810
375
- nokogiri (1.19.0-x86_64-darwin) sha256=1dad56220b603a8edb9750cd95798bffa2b8dd9dd9aa47f664009ee5b43e3067
376
- nokogiri (1.19.0-x86_64-linux-gnu) sha256=f482b95c713d60031d48c44ce14562f8d2ce31e3a9e8dd0ccb131e9e5a68b58c
377
- nokogiri (1.19.0-x86_64-linux-musl) sha256=1c4ca6b381622420073ce6043443af1d321e8ed93cc18b08e2666e5bd02ffae4
378
- parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130
379
- parser (3.3.10.1) sha256=06f6a725d2cd91e5e7f2b7c32ba143631e1f7c8ae2fb918fc4cebec187e6a688
380
- playwright-ruby-client (1.58.0) sha256=d78b6acfb2c7bea19394366f8fc840a8518b0dbfb07d8c63754cb21d9eda0277
371
+ nokogiri (1.19.2-aarch64-linux-gnu) sha256=c34d5c8208025587554608e98fd88ab125b29c80f9352b821964e9a5d5cfbd19
372
+ nokogiri (1.19.2-aarch64-linux-musl) sha256=7f6b4b0202d507326841a4f790294bf75098aef50c7173443812e3ac5cb06515
373
+ nokogiri (1.19.2-arm-linux-gnu) sha256=b7fa1139016f3dc850bda1260988f0d749934a939d04ef2da13bec060d7d5081
374
+ nokogiri (1.19.2-arm-linux-musl) sha256=61114d44f6742ff72194a1b3020967201e2eb982814778d130f6471c11f9828c
375
+ nokogiri (1.19.2-arm64-darwin) sha256=58d8ea2e31a967b843b70487a44c14c8ba1866daa1b9da9be9dbdf1b43dee205
376
+ nokogiri (1.19.2-x86_64-darwin) sha256=7d9af11fda72dfaa2961d8c4d5380ca0b51bc389dc5f8d4b859b9644f195e7a4
377
+ nokogiri (1.19.2-x86_64-linux-gnu) sha256=fa8feca882b73e871a9845f3817a72e9734c8e974bdc4fbad6e4bc6e8076b94f
378
+ nokogiri (1.19.2-x86_64-linux-musl) sha256=93128448e61a9383a30baef041bf1f5817e22f297a1d400521e90294445069a8
379
+ parallel (1.28.0) sha256=33e6de1484baf2524792d178b0913fc8eb94c628d6cfe45599ad4458c638c970
380
+ parser (3.3.11.1) sha256=d17ace7aabe3e72c3cc94043714be27cc6f852f104d81aa284c2281aecc65d54
381
+ playwright-ruby-client (1.59.0) sha256=b9e66233ed7b83e917980badc27ecd233e244503c74772a3854dbd5d41438c21
381
382
  pp (0.6.3) sha256=2951d514450b93ccfeb1df7d021cae0da16e0a7f95ee1e2273719669d0ab9df6
382
383
  prettyprint (0.2.0) sha256=2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193
383
384
  prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
384
385
  psych (5.3.1) sha256=eb7a57cef10c9d70173ff74e739d843ac3b2c019a003de48447b2963d81b1974
385
386
  racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
386
- rack (3.2.4) sha256=5d74b6f75082a643f43c1e76b419c40f0e5527fcfee1e669ac1e6b73c0ccb6f6
387
- rack-session (2.1.1) sha256=0b6dc07dea7e4b583f58a48e8b806d4c9f1c6c9214ebc202ec94562cbea2e4e9
387
+ rack (3.2.6) sha256=5ed78e1f73b2e25679bec7d45ee2d4483cc4146eb1be0264fc4d94cb5ef212c2
388
+ rack-session (2.1.2) sha256=595434f8c0c3473ae7d7ac56ecda6cc6dfd9d37c0b2b5255330aa1576967ffe8
388
389
  rack-test (2.2.0) sha256=005a36692c306ac0b4a9350355ee080fd09ddef1148a5f8b2ac636c720f5c463
389
390
  rackup (2.3.1) sha256=6c79c26753778e90983761d677a48937ee3192b3ffef6bc963c0950f94688868
390
- rails (8.1.2) sha256=5069061b23dfa8706b9f0159ae8b9d35727359103178a26962b868a680ba7d95
391
+ rails (8.1.3) sha256=6d017ba5348c98fc909753a8169b21d44de14d2a0b92d140d1a966834c3c9cd3
391
392
  rails-dom-testing (2.3.0) sha256=8acc7953a7b911ca44588bf08737bc16719f431a1cc3091a292bca7317925c1d
392
- rails-html-sanitizer (1.6.2) sha256=35fce2ca8242da8775c83b6ba9c1bcaad6751d9eb73c1abaa8403475ab89a560
393
- railties (8.1.2) sha256=1289ece76b4f7668fc46d07e55cc992b5b8751f2ad85548b7da351b8c59f8055
393
+ rails-html-sanitizer (1.7.0) sha256=28b145cceaf9cc214a9874feaa183c3acba036c9592b19886e0e45efc62b1e89
394
+ railties (8.1.3) sha256=913eb0e0cb520aac687ffd74916bd726d48fa21f47833c6292576ef6a286de22
394
395
  rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
395
- rake (13.3.1) sha256=8c9e89d09f66a26a01264e7e3480ec0607f0c497a861ef16063604b1b08eb19c
396
- rdoc (7.1.0) sha256=494899df0706c178596ca6e1d50f1b7eb285a9b2aae715be5abd742734f17363
397
- regexp_parser (2.11.3) sha256=ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4
396
+ rake (13.4.1) sha256=b4e81bd6a748308a6799619d824ec6a23cd1acd07d9ec41e5f2ebfb2294447c8
397
+ rdoc (7.2.0) sha256=8650f76cd4009c3b54955eb5d7e3a075c60a57276766ebf36f9085e8c9f23192
398
+ regexp_parser (2.12.0) sha256=35a916a1d63190ab5c9009457136ae5f3c0c7512d60291d0d1378ba18ce08ebb
398
399
  reline (0.6.3) sha256=1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835
399
400
  rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587
400
401
  rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d
401
402
  rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836
402
- rspec-mocks (3.13.7) sha256=0979034e64b1d7a838aaaddf12bf065ea4dc40ef3d4c39f01f93ae2c66c62b1c
403
+ rspec-mocks (3.13.8) sha256=086ad3d3d17533f4237643de0b5c42f04b66348c28bf6b9c2d3f4a3b01af1d47
403
404
  rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c
404
- rubocop (1.82.1) sha256=09f1a6a654a960eda767aebea33e47603080f8e9c9a3f019bf9b94c9cab5e273
405
- rubocop-ast (1.49.0) sha256=49c3676d3123a0923d333e20c6c2dbaaae2d2287b475273fddee0c61da9f71fd
405
+ rubocop (1.84.2) sha256=5692cea54168f3dc8cb79a6fe95c5424b7ea893c707ad7a4307b0585e88dbf5f
406
+ rubocop-ast (1.49.1) sha256=4412f3ee70f6fe4546cc489548e0f6fcf76cafcfa80fa03af67098ffed755035
406
407
  rubocop-performance (1.26.1) sha256=cd19b936ff196df85829d264b522fd4f98b6c89ad271fa52744a8c11b8f71834
407
408
  rubocop-rspec (3.9.0) sha256=8fa70a3619408237d789aeecfb9beef40576acc855173e60939d63332fdb55e2
408
409
  ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
@@ -410,12 +411,12 @@ CHECKSUMS
410
411
  simplecov (0.22.0) sha256=fe2622c7834ff23b98066bb0a854284b2729a569ac659f82621fc22ef36213a5
411
412
  simplecov-html (0.13.2) sha256=bd0b8e54e7c2d7685927e8d6286466359b6f16b18cb0df47b508e8d73c777246
412
413
  simplecov_json_formatter (0.1.4) sha256=529418fbe8de1713ac2b2d612aa3daa56d316975d307244399fa4838c601b428
413
- standard (1.53.0) sha256=f3c9493385db7079d0abce6f7582f553122156997b81258cd361d3480eeacf9c
414
+ standard (1.54.0) sha256=7a4b08f83d9893083c8f03bc486f0feeb6a84d48233b40829c03ef4767ea0100
414
415
  standard-custom (1.0.2) sha256=424adc84179a074f1a2a309bb9cf7cd6bfdb2b6541f20c6bf9436c0ba22a652b
415
416
  standard-performance (1.9.0) sha256=49483d31be448292951d80e5e67cdcb576c2502103c7b40aec6f1b6e9c88e3f2
416
417
  stringio (3.2.0) sha256=c37cb2e58b4ffbd33fe5cd948c05934af997b36e0b6ca6fdf43afa234cf222e1
417
418
  thor (1.5.0) sha256=e3a9e55fe857e44859ce104a84675ab6e8cd59c650a49106a05f55f136425e73
418
- timeout (0.6.0) sha256=6d722ad619f96ee383a0c557ec6eb8c4ecb08af3af62098a0be5057bf00de1af
419
+ timeout (0.6.1) sha256=78f57368a7e7bbadec56971f78a3f5ecbcfb59b7fcbb0a3ed6ddc08a5094accb
419
420
  tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f
420
421
  tzinfo (2.0.6) sha256=8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b
421
422
  unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42
@@ -425,7 +426,7 @@ CHECKSUMS
425
426
  webrick (1.9.2) sha256=beb4a15fc474defed24a3bda4ffd88a490d517c9e4e6118c3edce59e45864131
426
427
  websocket-driver (0.8.0) sha256=ed0dba4b943c22f17f9a734817e808bc84cdce6a7e22045f5315aa57676d4962
427
428
  websocket-extensions (0.1.5) sha256=1c6ba63092cda343eb53fc657110c71c754c56484aad42578495227d717a8241
428
- zeitwerk (2.7.4) sha256=2bef90f356bdafe9a6c2bd32bcd804f83a4f9b8bc27f3600fff051eb3edcec8b
429
+ zeitwerk (2.7.5) sha256=d8da92128c09ea6ec62c949011b00ed4a20242b255293dd66bf41545398f73dd
429
430
 
430
431
  BUNDLED WITH
431
432
  4.0.5
data/lib/e2e/dsl.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "forwardable"
4
+ require "uri"
4
5
 
5
6
  module E2E
6
7
  module DSL
@@ -11,5 +12,133 @@ module E2E
11
12
  def page
12
13
  E2E.session
13
14
  end
15
+
16
+ # Waits until the provided block returns a truthy value.
17
+ # Raises E2E::Error on timeout for easier failure diagnostics.
18
+ def wait_for(timeout: E2E.config.wait_timeout, interval: 0.05, message: "Timed out waiting for condition")
19
+ result = nil
20
+ found = E2E.wait_until(timeout: timeout, interval: interval) do
21
+ result = yield
22
+ result
23
+ end
24
+
25
+ raise E2E::Error, message unless found
26
+
27
+ result
28
+ end
29
+
30
+ def wait_for_text(text, timeout: E2E.config.wait_timeout, interval: 0.05)
31
+ wait_for(
32
+ timeout: timeout,
33
+ interval: interval,
34
+ message: "Expected page to have text #{text.inspect} within #{timeout} seconds"
35
+ ) do
36
+ text_matches?(page.text, text)
37
+ end
38
+ end
39
+
40
+ def wait_for_current_path(expected_path, timeout: E2E.config.wait_timeout, interval: 0.05)
41
+ wait_for(
42
+ timeout: timeout,
43
+ interval: interval,
44
+ message: "Expected current path to be #{expected_path.inspect} within #{timeout} seconds"
45
+ ) do
46
+ current_path_matches?(expected_path)
47
+ end
48
+ end
49
+
50
+ def wait_for_flash(text = nil, type: nil, timeout: E2E.config.wait_timeout, interval: 0.05)
51
+ wait_for(
52
+ timeout: timeout,
53
+ interval: interval,
54
+ message: flash_timeout_message(text, type, timeout)
55
+ ) do
56
+ flashes = visible_flashes(type: type)
57
+ next false if flashes.empty?
58
+ next true if text.nil?
59
+
60
+ flashes.any? { |flash_text| text_matches?(flash_text, text) }
61
+ end
62
+ end
63
+
64
+ def click_button_and_wait_for_text(value, text, timeout: E2E.config.wait_timeout, interval: 0.05, **options)
65
+ click_button(value, **options)
66
+ wait_for_text(text, timeout: timeout, interval: interval)
67
+ end
68
+
69
+ def click_link_and_wait_for_text(value, text, timeout: E2E.config.wait_timeout, interval: 0.05, **options)
70
+ click_link(value, **options)
71
+ wait_for_text(text, timeout: timeout, interval: interval)
72
+ end
73
+
74
+ def click_button_and_wait_for_path(value, expected_path, timeout: E2E.config.wait_timeout, interval: 0.05, **options)
75
+ click_button(value, **options)
76
+ wait_for_current_path(expected_path, timeout: timeout, interval: interval)
77
+ end
78
+
79
+ def click_link_and_wait_for_path(value, expected_path, timeout: E2E.config.wait_timeout, interval: 0.05, **options)
80
+ click_link(value, **options)
81
+ wait_for_current_path(expected_path, timeout: timeout, interval: interval)
82
+ end
83
+
84
+ def click_button_and_wait_for_flash(value, text = nil, type: nil, timeout: E2E.config.wait_timeout, interval: 0.05, **options)
85
+ click_button(value, **options)
86
+ wait_for_flash(text, type: type, timeout: timeout, interval: interval)
87
+ end
88
+
89
+ def click_link_and_wait_for_flash(value, text = nil, type: nil, timeout: E2E.config.wait_timeout, interval: 0.05, **options)
90
+ click_link(value, **options)
91
+ wait_for_flash(text, type: type, timeout: timeout, interval: interval)
92
+ end
93
+
94
+ private
95
+
96
+ def flash_timeout_message(text, type, timeout)
97
+ scope = type ? "#{type} flash" : "flash"
98
+ return "Expected #{scope} within #{timeout} seconds" if text.nil?
99
+
100
+ "Expected #{scope} with text #{text.inspect} within #{timeout} seconds"
101
+ end
102
+
103
+ def visible_flashes(type: nil)
104
+ selector = flash_selector_for(type)
105
+ page.all(selector).select(&:visible?).map(&:text)
106
+ rescue
107
+ []
108
+ end
109
+
110
+ def flash_selector_for(type)
111
+ selectors = E2E.config.flash_selectors || E2E::Config::DEFAULT_FLASH_SELECTORS
112
+ key = normalize_flash_type(type)
113
+ selectors.fetch(key) { selectors.fetch(:any, E2E::Config::DEFAULT_FLASH_SELECTORS[:any]) }
114
+ end
115
+
116
+ def normalize_flash_type(type)
117
+ case type&.to_sym
118
+ when :notice, :success
119
+ :notice
120
+ when :alert, :error
121
+ :alert
122
+ else
123
+ :any
124
+ end
125
+ end
126
+
127
+ def current_path_matches?(expected_path)
128
+ actual_path = begin
129
+ URI.parse(page.current_url).path
130
+ rescue URI::InvalidURIError
131
+ page.current_url
132
+ end
133
+
134
+ text_matches?(actual_path, expected_path, exact: true)
135
+ end
136
+
137
+ def text_matches?(actual_text, expected_text, exact: false)
138
+ return actual_text.match?(expected_text) if expected_text.is_a?(Regexp)
139
+ return actual_text == expected_text if exact
140
+
141
+ actual_text.include?(expected_text)
142
+ end
14
143
  end
15
144
  end
data/lib/e2e/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module E2E
4
- VERSION = "0.5.0"
4
+ VERSION = "0.6.1"
5
5
  end
data/lib/e2e.rb CHANGED
@@ -55,7 +55,13 @@ module E2E
55
55
  end
56
56
 
57
57
  class Config
58
- attr_accessor :driver, :headless, :app, :browser_type, :wait_timeout
58
+ DEFAULT_FLASH_SELECTORS = {
59
+ any: "[role='alert'], [role='status'], [data-flash], [data-testid*='flash'], .flash, .notice, .alert, .toast",
60
+ notice: "[role='status'], [data-flash-type='notice'], [data-flash='notice'], .flash.notice, .flash-success, .notice",
61
+ alert: "[role='alert'], [data-flash-type='alert'], [data-flash='alert'], .flash.alert, .flash-error, .alert"
62
+ }.freeze
63
+
64
+ attr_accessor :driver, :headless, :app, :browser_type, :wait_timeout, :flash_selectors
59
65
 
60
66
  def initialize
61
67
  @driver = :playwright
@@ -63,6 +69,7 @@ module E2E
63
69
  @headless = ENV.fetch("HEADLESS", "true") == "true"
64
70
  @app = nil
65
71
  @wait_timeout = 5
72
+ @flash_selectors = DEFAULT_FLASH_SELECTORS.dup
66
73
  end
67
74
  end
68
75
  end