e2e 0.7.0 → 0.7.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.
- checksums.yaml +4 -4
- data/.ruby-version +1 -0
- data/Appraisals +3 -0
- data/CHANGELOG.md +17 -0
- data/README.md +2 -0
- data/gemfiles/rails_7.0.gemfile +1 -0
- data/gemfiles/rails_7.0.gemfile.lock +9 -2
- data/gemfiles/rails_7.1.gemfile.lock +48 -30
- data/gemfiles/rails_7.2.gemfile.lock +48 -30
- data/gemfiles/rails_8.0.gemfile.lock +114 -96
- data/gemfiles/rails_8.1.gemfile.lock +114 -96
- data/lib/e2e/drivers/playwright.rb +34 -10
- data/lib/e2e/minitest.rb +1 -0
- data/lib/e2e/rails.rb +71 -10
- data/lib/e2e/rspec.rb +1 -0
- data/lib/e2e/server.rb +28 -3
- data/lib/e2e/version.rb +1 -1
- data/lib/e2e.rb +11 -1
- data/mise.toml +14 -0
- metadata +32 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: ..
|
|
3
3
|
specs:
|
|
4
|
-
e2e (0.7.
|
|
4
|
+
e2e (0.7.1)
|
|
5
5
|
playwright-ruby-client (>= 1.40.0)
|
|
6
6
|
rack
|
|
7
7
|
rackup
|
|
@@ -12,29 +12,29 @@ GEM
|
|
|
12
12
|
specs:
|
|
13
13
|
action_text-trix (2.1.19)
|
|
14
14
|
railties
|
|
15
|
-
actioncable (8.1.3)
|
|
16
|
-
actionpack (= 8.1.3)
|
|
17
|
-
activesupport (= 8.1.3)
|
|
15
|
+
actioncable (8.1.3.1)
|
|
16
|
+
actionpack (= 8.1.3.1)
|
|
17
|
+
activesupport (= 8.1.3.1)
|
|
18
18
|
nio4r (~> 2.0)
|
|
19
19
|
websocket-driver (>= 0.6.1)
|
|
20
20
|
zeitwerk (~> 2.6)
|
|
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)
|
|
21
|
+
actionmailbox (8.1.3.1)
|
|
22
|
+
actionpack (= 8.1.3.1)
|
|
23
|
+
activejob (= 8.1.3.1)
|
|
24
|
+
activerecord (= 8.1.3.1)
|
|
25
|
+
activestorage (= 8.1.3.1)
|
|
26
|
+
activesupport (= 8.1.3.1)
|
|
27
27
|
mail (>= 2.8.0)
|
|
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)
|
|
28
|
+
actionmailer (8.1.3.1)
|
|
29
|
+
actionpack (= 8.1.3.1)
|
|
30
|
+
actionview (= 8.1.3.1)
|
|
31
|
+
activejob (= 8.1.3.1)
|
|
32
|
+
activesupport (= 8.1.3.1)
|
|
33
33
|
mail (>= 2.8.0)
|
|
34
34
|
rails-dom-testing (~> 2.2)
|
|
35
|
-
actionpack (8.1.3)
|
|
36
|
-
actionview (= 8.1.3)
|
|
37
|
-
activesupport (= 8.1.3)
|
|
35
|
+
actionpack (8.1.3.1)
|
|
36
|
+
actionview (= 8.1.3.1)
|
|
37
|
+
activesupport (= 8.1.3.1)
|
|
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.3)
|
|
45
|
+
actiontext (8.1.3.1)
|
|
46
46
|
action_text-trix (~> 2.1.15)
|
|
47
|
-
actionpack (= 8.1.3)
|
|
48
|
-
activerecord (= 8.1.3)
|
|
49
|
-
activestorage (= 8.1.3)
|
|
50
|
-
activesupport (= 8.1.3)
|
|
47
|
+
actionpack (= 8.1.3.1)
|
|
48
|
+
activerecord (= 8.1.3.1)
|
|
49
|
+
activestorage (= 8.1.3.1)
|
|
50
|
+
activesupport (= 8.1.3.1)
|
|
51
51
|
globalid (>= 0.6.0)
|
|
52
52
|
nokogiri (>= 1.8.5)
|
|
53
|
-
actionview (8.1.3)
|
|
54
|
-
activesupport (= 8.1.3)
|
|
53
|
+
actionview (8.1.3.1)
|
|
54
|
+
activesupport (= 8.1.3.1)
|
|
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.3)
|
|
60
|
-
activesupport (= 8.1.3)
|
|
59
|
+
activejob (8.1.3.1)
|
|
60
|
+
activesupport (= 8.1.3.1)
|
|
61
61
|
globalid (>= 0.3.6)
|
|
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)
|
|
62
|
+
activemodel (8.1.3.1)
|
|
63
|
+
activesupport (= 8.1.3.1)
|
|
64
|
+
activerecord (8.1.3.1)
|
|
65
|
+
activemodel (= 8.1.3.1)
|
|
66
|
+
activesupport (= 8.1.3.1)
|
|
67
67
|
timeout (>= 0.4.0)
|
|
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)
|
|
68
|
+
activestorage (8.1.3.1)
|
|
69
|
+
actionpack (= 8.1.3.1)
|
|
70
|
+
activejob (= 8.1.3.1)
|
|
71
|
+
activerecord (= 8.1.3.1)
|
|
72
|
+
activesupport (= 8.1.3.1)
|
|
73
73
|
marcel (~> 1.0)
|
|
74
|
-
activesupport (8.1.3)
|
|
74
|
+
activesupport (8.1.3.1)
|
|
75
75
|
base64
|
|
76
76
|
bigdecimal
|
|
77
77
|
concurrent-ruby (~> 1.0, >= 1.3.1)
|
|
@@ -92,13 +92,13 @@ GEM
|
|
|
92
92
|
base64 (0.3.0)
|
|
93
93
|
bigdecimal (4.1.2)
|
|
94
94
|
builder (3.3.0)
|
|
95
|
-
concurrent-ruby (1.3.
|
|
95
|
+
concurrent-ruby (1.3.8)
|
|
96
96
|
connection_pool (3.0.2)
|
|
97
97
|
crass (1.0.7)
|
|
98
98
|
date (3.5.1)
|
|
99
99
|
diff-lcs (1.6.2)
|
|
100
100
|
drb (2.2.3)
|
|
101
|
-
erb (6.0.
|
|
101
|
+
erb (6.0.7)
|
|
102
102
|
erubi (1.13.1)
|
|
103
103
|
globalid (1.4.0)
|
|
104
104
|
activesupport (>= 6.1)
|
|
@@ -110,12 +110,12 @@ GEM
|
|
|
110
110
|
prism (>= 1.3.0)
|
|
111
111
|
rdoc (>= 4.0.0)
|
|
112
112
|
reline (>= 0.4.2)
|
|
113
|
-
json (2.21.
|
|
113
|
+
json (2.21.2)
|
|
114
114
|
language_server-protocol (3.17.0.6)
|
|
115
115
|
lefthook (2.1.10)
|
|
116
116
|
lint_roller (1.1.0)
|
|
117
117
|
logger (1.7.0)
|
|
118
|
-
loofah (2.25.
|
|
118
|
+
loofah (2.25.2)
|
|
119
119
|
crass (~> 1.0.2)
|
|
120
120
|
nokogiri (>= 1.12.0)
|
|
121
121
|
mail (2.9.1)
|
|
@@ -133,7 +133,7 @@ GEM
|
|
|
133
133
|
minitest (6.0.6)
|
|
134
134
|
drb (~> 2.0)
|
|
135
135
|
prism (~> 1.5)
|
|
136
|
-
net-imap (0.6.
|
|
136
|
+
net-imap (0.6.6)
|
|
137
137
|
date
|
|
138
138
|
net-protocol
|
|
139
139
|
net-pop (0.1.2)
|
|
@@ -160,10 +160,10 @@ GEM
|
|
|
160
160
|
nokogiri (1.19.4-x86_64-linux-musl)
|
|
161
161
|
racc (~> 1.4)
|
|
162
162
|
parallel (2.1.0)
|
|
163
|
-
parser (3.3.
|
|
163
|
+
parser (3.3.12.0)
|
|
164
164
|
ast (~> 2.4.1)
|
|
165
165
|
racc
|
|
166
|
-
playwright-ruby-client (1.
|
|
166
|
+
playwright-ruby-client (1.62.0)
|
|
167
167
|
base64
|
|
168
168
|
concurrent-ruby (>= 1.1.6)
|
|
169
169
|
mime-types (>= 3.0)
|
|
@@ -180,30 +180,30 @@ GEM
|
|
|
180
180
|
rack (>= 1.3)
|
|
181
181
|
rackup (2.3.1)
|
|
182
182
|
rack (>= 3)
|
|
183
|
-
rails (8.1.3)
|
|
184
|
-
actioncable (= 8.1.3)
|
|
185
|
-
actionmailbox (= 8.1.3)
|
|
186
|
-
actionmailer (= 8.1.3)
|
|
187
|
-
actionpack (= 8.1.3)
|
|
188
|
-
actiontext (= 8.1.3)
|
|
189
|
-
actionview (= 8.1.3)
|
|
190
|
-
activejob (= 8.1.3)
|
|
191
|
-
activemodel (= 8.1.3)
|
|
192
|
-
activerecord (= 8.1.3)
|
|
193
|
-
activestorage (= 8.1.3)
|
|
194
|
-
activesupport (= 8.1.3)
|
|
183
|
+
rails (8.1.3.1)
|
|
184
|
+
actioncable (= 8.1.3.1)
|
|
185
|
+
actionmailbox (= 8.1.3.1)
|
|
186
|
+
actionmailer (= 8.1.3.1)
|
|
187
|
+
actionpack (= 8.1.3.1)
|
|
188
|
+
actiontext (= 8.1.3.1)
|
|
189
|
+
actionview (= 8.1.3.1)
|
|
190
|
+
activejob (= 8.1.3.1)
|
|
191
|
+
activemodel (= 8.1.3.1)
|
|
192
|
+
activerecord (= 8.1.3.1)
|
|
193
|
+
activestorage (= 8.1.3.1)
|
|
194
|
+
activesupport (= 8.1.3.1)
|
|
195
195
|
bundler (>= 1.15.0)
|
|
196
|
-
railties (= 8.1.3)
|
|
196
|
+
railties (= 8.1.3.1)
|
|
197
197
|
rails-dom-testing (2.3.0)
|
|
198
198
|
activesupport (>= 5.0.0)
|
|
199
199
|
minitest
|
|
200
200
|
nokogiri (>= 1.6)
|
|
201
|
-
rails-html-sanitizer (1.7.
|
|
202
|
-
loofah (~> 2.25)
|
|
201
|
+
rails-html-sanitizer (1.7.1)
|
|
202
|
+
loofah (~> 2.25, >= 2.25.2)
|
|
203
203
|
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)
|
|
204
|
-
railties (8.1.3)
|
|
205
|
-
actionpack (= 8.1.3)
|
|
206
|
-
activesupport (= 8.1.3)
|
|
204
|
+
railties (8.1.3.1)
|
|
205
|
+
actionpack (= 8.1.3.1)
|
|
206
|
+
activesupport (= 8.1.3.1)
|
|
207
207
|
irb (~> 1.13)
|
|
208
208
|
rackup (>= 1.0.0)
|
|
209
209
|
rake (>= 12.2)
|
|
@@ -212,7 +212,7 @@ GEM
|
|
|
212
212
|
zeitwerk (~> 2.6)
|
|
213
213
|
rainbow (3.1.1)
|
|
214
214
|
rake (13.4.2)
|
|
215
|
-
rbs (4.
|
|
215
|
+
rbs (4.1.2)
|
|
216
216
|
logger
|
|
217
217
|
prism (>= 1.6.0)
|
|
218
218
|
tsort
|
|
@@ -237,7 +237,7 @@ GEM
|
|
|
237
237
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
238
238
|
rspec-support (~> 3.13.0)
|
|
239
239
|
rspec-support (3.13.7)
|
|
240
|
-
rubocop (1.
|
|
240
|
+
rubocop (1.88.2)
|
|
241
241
|
json (~> 2.3)
|
|
242
242
|
language_server-protocol (~> 3.17.0.2)
|
|
243
243
|
lint_roller (~> 1.1.0)
|
|
@@ -261,11 +261,19 @@ GEM
|
|
|
261
261
|
rubocop (~> 1.86, >= 1.86.2)
|
|
262
262
|
ruby-progressbar (1.13.0)
|
|
263
263
|
securerandom (0.4.1)
|
|
264
|
-
simplecov (1.0.
|
|
265
|
-
|
|
264
|
+
simplecov (1.0.3)
|
|
265
|
+
sqlite3 (2.9.5-aarch64-linux-gnu)
|
|
266
|
+
sqlite3 (2.9.5-aarch64-linux-musl)
|
|
267
|
+
sqlite3 (2.9.5-arm-linux-gnu)
|
|
268
|
+
sqlite3 (2.9.5-arm-linux-musl)
|
|
269
|
+
sqlite3 (2.9.5-arm64-darwin)
|
|
270
|
+
sqlite3 (2.9.5-x86_64-darwin)
|
|
271
|
+
sqlite3 (2.9.5-x86_64-linux-gnu)
|
|
272
|
+
sqlite3 (2.9.5-x86_64-linux-musl)
|
|
273
|
+
standard (1.56.0)
|
|
266
274
|
language_server-protocol (~> 3.17.0.2)
|
|
267
275
|
lint_roller (~> 1.0)
|
|
268
|
-
rubocop (~> 1.
|
|
276
|
+
rubocop (~> 1.88.0)
|
|
269
277
|
standard-custom (~> 1.0.0)
|
|
270
278
|
standard-performance (~> 1.8)
|
|
271
279
|
standard-custom (1.0.2)
|
|
@@ -289,7 +297,7 @@ GEM
|
|
|
289
297
|
base64
|
|
290
298
|
websocket-extensions (>= 0.1.0)
|
|
291
299
|
websocket-extensions (0.1.5)
|
|
292
|
-
zeitwerk (2.8.
|
|
300
|
+
zeitwerk (2.8.3)
|
|
293
301
|
|
|
294
302
|
PLATFORMS
|
|
295
303
|
aarch64-linux-gnu
|
|
@@ -302,6 +310,7 @@ PLATFORMS
|
|
|
302
310
|
x86_64-linux-musl
|
|
303
311
|
|
|
304
312
|
DEPENDENCIES
|
|
313
|
+
activerecord
|
|
305
314
|
appraisal
|
|
306
315
|
e2e!
|
|
307
316
|
irb
|
|
@@ -313,52 +322,53 @@ DEPENDENCIES
|
|
|
313
322
|
rubocop-performance
|
|
314
323
|
rubocop-rspec
|
|
315
324
|
simplecov
|
|
325
|
+
sqlite3
|
|
316
326
|
standard
|
|
317
327
|
|
|
318
328
|
CHECKSUMS
|
|
319
329
|
action_text-trix (2.1.19) sha256=7012f59421009cf284aa651294896414d653a61a2417c9b8714c8476d2f74009
|
|
320
|
-
actioncable (8.1.3) sha256=
|
|
321
|
-
actionmailbox (8.1.3) sha256=
|
|
322
|
-
actionmailer (8.1.3) sha256=
|
|
323
|
-
actionpack (8.1.3) sha256=
|
|
324
|
-
actiontext (8.1.3) sha256=
|
|
325
|
-
actionview (8.1.3) sha256=
|
|
326
|
-
activejob (8.1.3) sha256=
|
|
327
|
-
activemodel (8.1.3) sha256=
|
|
328
|
-
activerecord (8.1.3) sha256=
|
|
329
|
-
activestorage (8.1.3) sha256=
|
|
330
|
-
activesupport (8.1.3) sha256=
|
|
330
|
+
actioncable (8.1.3.1) sha256=e318528295c878a3efdfe25f0f2267c80cb7a76eba41bb5f64d44aa380a3d91b
|
|
331
|
+
actionmailbox (8.1.3.1) sha256=5f704972097d843ade8e435e93694a1dac732b926df1717aceba1f3840082b1c
|
|
332
|
+
actionmailer (8.1.3.1) sha256=88ea441b28ff02a0c6c006468892642a3d9942affce9d294e81a74504aa5c43c
|
|
333
|
+
actionpack (8.1.3.1) sha256=974cb7154548e81f470b1b0f247b99cb38e87825899dca58610596e2817723d0
|
|
334
|
+
actiontext (8.1.3.1) sha256=5da729d833d1a29cddb1eee938878e55e503d2613e00e735f5daf58c2ba98af2
|
|
335
|
+
actionview (8.1.3.1) sha256=2da68b8414c47b43bfbed1ce69c5afe1c04f78c267aacb5660a4cab5ca12cfb6
|
|
336
|
+
activejob (8.1.3.1) sha256=1c8dd275df930df40deecffec63d913a550a33fd94bd298f69721dd96939954a
|
|
337
|
+
activemodel (8.1.3.1) sha256=99cc02ce2faec371d14440949d85787ebd23a907c9baef0a9d4bcd4d21888f88
|
|
338
|
+
activerecord (8.1.3.1) sha256=0a2fb6c28f4938f6b013a3a549bec0a7e37d535f3dc8990e804bcc3258c0403b
|
|
339
|
+
activestorage (8.1.3.1) sha256=f555254f387b1cffa499d2fd3115d12635eadc5b15206a8534316a67036163ef
|
|
340
|
+
activesupport (8.1.3.1) sha256=85458765f25ea48b9019c46b6bb3fa5683197bf4280d9f06710a6e8d7a831376
|
|
331
341
|
appraisal (2.5.0) sha256=36989221be127913b0dba8d114da2001e6b2dceea7bd4951200eaba764eed3ce
|
|
332
342
|
ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383
|
|
333
343
|
base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b
|
|
334
344
|
bigdecimal (4.1.2) sha256=53d217666027eab4280346fba98e7d5b66baaae1b9c3c1c0ffe89d48188a3fbd
|
|
335
345
|
builder (3.3.0) sha256=497918d2f9dca528fdca4b88d84e4ef4387256d984b8154e9d5d3fe5a9c8835f
|
|
336
|
-
concurrent-ruby (1.3.
|
|
346
|
+
concurrent-ruby (1.3.8) sha256=b2f1be836e968ccc78ccfce277ea79c72a88633f22306782c16ff23fb415d1e1
|
|
337
347
|
connection_pool (3.0.2) sha256=33fff5ba71a12d2aa26cb72b1db8bba2a1a01823559fb01d29eb74c286e62e0a
|
|
338
348
|
crass (1.0.7) sha256=94868719948664c89ddcaf0a37c65048413dfcb1c869470a5f7a7ceb5390b295
|
|
339
349
|
date (3.5.1) sha256=750d06384d7b9c15d562c76291407d89e368dda4d4fff957eb94962d325a0dc0
|
|
340
350
|
diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
|
|
341
351
|
drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373
|
|
342
|
-
e2e (0.7.
|
|
343
|
-
erb (6.0.
|
|
352
|
+
e2e (0.7.1)
|
|
353
|
+
erb (6.0.7) sha256=c5ca6dc25b0ef974a44dc8f59fe847577122483b1968a38dec305c60bf91ee92
|
|
344
354
|
erubi (1.13.1) sha256=a082103b0885dbc5ecf1172fede897f9ebdb745a4b97a5e8dc63953db1ee4ad9
|
|
345
355
|
globalid (1.4.0) sha256=037f12fbf1d9d7a014d501c2d5c77356fd4ddd96d7a7991d6700bba96706f427
|
|
346
356
|
i18n (1.15.2) sha256=00f9eb62412fe593b2a65a97daa75300d37abb8f7202ec748e94b6d46a9dd1b5
|
|
347
357
|
io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc
|
|
348
358
|
irb (1.18.0) sha256=de9454a0703a54704b9811a5ef31a60c86949fbf4013fcf244fabc7c775248e3
|
|
349
|
-
json (2.21.
|
|
359
|
+
json (2.21.2) sha256=1f1d3b7cf2b3ba1a69beca0bb6db13d5438b80bff3cd54cdaaa620b9b07c1c6a
|
|
350
360
|
language_server-protocol (3.17.0.6) sha256=5ef2c0c138f8267e1bc631d3328347d354f96724b0af22f2c79516120443b7f0
|
|
351
361
|
lefthook (2.1.10) sha256=cc9c06bd8ea689e8b8016eab9769e54d696d07951860c1c6d28e8f6812e61b65
|
|
352
362
|
lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
|
|
353
363
|
logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
|
|
354
|
-
loofah (2.25.
|
|
364
|
+
loofah (2.25.2) sha256=2007f746959ac65552456e04b433e83deb22759ab38c838b4445c70e43425918
|
|
355
365
|
mail (2.9.1) sha256=06574eca475253d6c18145dd70af80d0eb970182d55053497c5f4d797ea160e8
|
|
356
366
|
marcel (1.2.1) sha256=1678e9360e32f9eafa917c80029e2f6d10b2715c66a4b87b6d0da9b9cd1f859f
|
|
357
367
|
mime-types (3.7.0) sha256=dcebf61c246f08e15a4de34e386ebe8233791e868564a470c3fe77c00eed5e56
|
|
358
368
|
mime-types-data (3.2026.0701) sha256=cd8811e1fb89d836499ba0582368a10ee74cef929ba956d1d5ddca045e6a730f
|
|
359
369
|
mini_mime (1.1.5) sha256=8681b7e2e4215f2a159f9400b5816d85e9d8c6c6b491e96a12797e798f8bccef
|
|
360
370
|
minitest (6.0.6) sha256=153ea36d1d987a62942382b61075745042a2b3123b1cd48f4c3675af9cc7d6f1
|
|
361
|
-
net-imap (0.6.
|
|
371
|
+
net-imap (0.6.6) sha256=96aa4ee50df3060203e649efc341f53480b791d49e150f2fdebf68beb141a8df
|
|
362
372
|
net-pop (0.1.2) sha256=848b4e982013c15b2f0382792268763b748cce91c9e91e36b0f27ed26420dff3
|
|
363
373
|
net-protocol (0.2.2) sha256=aa73e0cba6a125369de9837b8d8ef82a61849360eba0521900e2c3713aa162a8
|
|
364
374
|
net-smtp (0.5.1) sha256=ed96a0af63c524fceb4b29b0d352195c30d82dd916a42f03c62a3a70e5b70736
|
|
@@ -372,8 +382,8 @@ CHECKSUMS
|
|
|
372
382
|
nokogiri (1.19.4-x86_64-linux-gnu) sha256=379fae440b28915e3f19d752ce2dcf8465ed2b2fbefd2a7ca0dd497bc981a06a
|
|
373
383
|
nokogiri (1.19.4-x86_64-linux-musl) sha256=17dfb7c1fa194ae02fbf7c51a7afc8d278045ab3fdacfd86f91d02d7b274470b
|
|
374
384
|
parallel (2.1.0) sha256=b35258865c2e31134c5ecb708beaaf6772adf9d5efae28e93e99260877b09356
|
|
375
|
-
parser (3.3.
|
|
376
|
-
playwright-ruby-client (1.
|
|
385
|
+
parser (3.3.12.0) sha256=21a6d7f755d5a24dfbdc6e6b772e4e879a52e7631a88bc5a3a134606052c9828
|
|
386
|
+
playwright-ruby-client (1.62.0) sha256=44eb6051ab7987f68a1288a7db7892403e59680116739987729c5fecfdb55715
|
|
377
387
|
pp (0.6.4) sha256=dfcb0fce700c41456265922884f9fe195d7fbb0674a3578e6c0f69588e82b570
|
|
378
388
|
prettyprint (0.2.0) sha256=2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193
|
|
379
389
|
prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
|
|
@@ -382,13 +392,13 @@ CHECKSUMS
|
|
|
382
392
|
rack-session (2.1.2) sha256=595434f8c0c3473ae7d7ac56ecda6cc6dfd9d37c0b2b5255330aa1576967ffe8
|
|
383
393
|
rack-test (2.2.0) sha256=005a36692c306ac0b4a9350355ee080fd09ddef1148a5f8b2ac636c720f5c463
|
|
384
394
|
rackup (2.3.1) sha256=6c79c26753778e90983761d677a48937ee3192b3ffef6bc963c0950f94688868
|
|
385
|
-
rails (8.1.3) sha256=
|
|
395
|
+
rails (8.1.3.1) sha256=ccd11a36bfc171bf9c66d585d14c0ece91c0c9dde840aae60c0118d6f5c9c52a
|
|
386
396
|
rails-dom-testing (2.3.0) sha256=8acc7953a7b911ca44588bf08737bc16719f431a1cc3091a292bca7317925c1d
|
|
387
|
-
rails-html-sanitizer (1.7.
|
|
388
|
-
railties (8.1.3) sha256=
|
|
397
|
+
rails-html-sanitizer (1.7.1) sha256=e797a7c9b01e567307e317c576b49ab4168017e63eea4dba9ce3cb587e2f22c2
|
|
398
|
+
railties (8.1.3.1) sha256=2388a232579a00cefea4487de66c8553c3408c1300abdc6cf1799d86ffb04487
|
|
389
399
|
rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
|
|
390
400
|
rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701
|
|
391
|
-
rbs (4.
|
|
401
|
+
rbs (4.1.2) sha256=050eb1d8b508f1233bed929c0f2c7052302f7adf295230d9cb314e9024078f48
|
|
392
402
|
rdoc (8.0.0) sha256=03bf8c08a9639658855a0cfd77c0abca8325c227693f7f33f82957811348c469
|
|
393
403
|
regexp_parser (2.12.0) sha256=35a916a1d63190ab5c9009457136ae5f3c0c7512d60291d0d1378ba18ce08ebb
|
|
394
404
|
reline (0.6.3) sha256=1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835
|
|
@@ -397,14 +407,22 @@ CHECKSUMS
|
|
|
397
407
|
rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836
|
|
398
408
|
rspec-mocks (3.13.8) sha256=086ad3d3d17533f4237643de0b5c42f04b66348c28bf6b9c2d3f4a3b01af1d47
|
|
399
409
|
rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c
|
|
400
|
-
rubocop (1.
|
|
410
|
+
rubocop (1.88.2) sha256=8def251c90cd955feb4daa3edc0ab56893250c4ce90ef81e6c80c03f9a939bbf
|
|
401
411
|
rubocop-ast (1.50.0) sha256=b9ca88300da0803ee222ad20cdb30494c0a784eed06fdc35d254b06d662788db
|
|
402
412
|
rubocop-performance (1.26.1) sha256=cd19b936ff196df85829d264b522fd4f98b6c89ad271fa52744a8c11b8f71834
|
|
403
413
|
rubocop-rspec (3.10.2) sha256=0b3e2ecc592cd10ecbf0095bb58d1e357905276e069643523cc19eb7495f65e2
|
|
404
414
|
ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
|
|
405
415
|
securerandom (0.4.1) sha256=cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1
|
|
406
|
-
simplecov (1.0.
|
|
407
|
-
|
|
416
|
+
simplecov (1.0.3) sha256=38ef0514f16ae7562f0d0f4df02610071115103d301b6de7dacbcc000082e39b
|
|
417
|
+
sqlite3 (2.9.5-aarch64-linux-gnu) sha256=78075b6337d3d182c6d2b4691049ed45cd220826160c9ea18946bf6a1de200dc
|
|
418
|
+
sqlite3 (2.9.5-aarch64-linux-musl) sha256=18c801185deb4adc01ddb281e8f672a39e3d1729979ca91e39439cd3eac0402d
|
|
419
|
+
sqlite3 (2.9.5-arm-linux-gnu) sha256=1bdfca0c7d63998c60b0f4a8e3c8df2d33800ccc4abd2d612eddbbbc92a4c48b
|
|
420
|
+
sqlite3 (2.9.5-arm-linux-musl) sha256=bae1109d12b2e9f588455967729b008e1ff4feb7761749df695019c9079913c6
|
|
421
|
+
sqlite3 (2.9.5-arm64-darwin) sha256=d0cf444a70fc9395d513cfbcc1e6719e224aa645314e3824cb0474c721425aa2
|
|
422
|
+
sqlite3 (2.9.5-x86_64-darwin) sha256=8e9caae38bd7ebb29cbeee3e7ab1d12dc2327d9a1b92c7fcf0dda05589627a81
|
|
423
|
+
sqlite3 (2.9.5-x86_64-linux-gnu) sha256=233dbcb6714148dd23bc5aeb33e8efd6eac974969564ddd5794c23d5f52b231e
|
|
424
|
+
sqlite3 (2.9.5-x86_64-linux-musl) sha256=e7d3a7474e8af0f96150c21abc203fbab5437206bfcdf11deab7741c0ca516f2
|
|
425
|
+
standard (1.56.0) sha256=ae2af4d9669589162ac69ed5ef59dcf9f346d4afc81f7e62b84339310dfcb787
|
|
408
426
|
standard-custom (1.0.2) sha256=424adc84179a074f1a2a309bb9cf7cd6bfdb2b6541f20c6bf9436c0ba22a652b
|
|
409
427
|
standard-performance (1.9.0) sha256=49483d31be448292951d80e5e67cdcb576c2502103c7b40aec6f1b6e9c88e3f2
|
|
410
428
|
thor (1.5.0) sha256=e3a9e55fe857e44859ce104a84675ab6e8cd59c650a49106a05f55f136425e73
|
|
@@ -418,7 +436,7 @@ CHECKSUMS
|
|
|
418
436
|
webrick (1.9.2) sha256=beb4a15fc474defed24a3bda4ffd88a490d517c9e4e6118c3edce59e45864131
|
|
419
437
|
websocket-driver (0.8.2) sha256=97c556b019bf3410b4961002ac501621e9322d3f8a7bc02161a09301cc4c4146
|
|
420
438
|
websocket-extensions (0.1.5) sha256=1c6ba63092cda343eb53fc657110c71c754c56484aad42578495227d717a8241
|
|
421
|
-
zeitwerk (2.8.
|
|
439
|
+
zeitwerk (2.8.3) sha256=2c85125a8467ce069e20123d1e709a08955c9d29c118c25b46b7b7fafdbb92e5
|
|
422
440
|
|
|
423
441
|
BUNDLED WITH
|
|
424
442
|
4.0.5
|
|
@@ -19,11 +19,17 @@ module E2E
|
|
|
19
19
|
# Enable debug console to allow page.pause (requires GUI, so only in headed mode)
|
|
20
20
|
@context.enable_debug_console! unless @headless
|
|
21
21
|
|
|
22
|
-
@page =
|
|
22
|
+
@page = build_page
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def visit(url)
|
|
26
|
-
|
|
26
|
+
with_released_connection do
|
|
27
|
+
@page.goto(
|
|
28
|
+
url,
|
|
29
|
+
waitUntil: E2E.config.navigation_wait_until,
|
|
30
|
+
timeout: navigation_timeout_ms
|
|
31
|
+
)
|
|
32
|
+
end
|
|
27
33
|
end
|
|
28
34
|
|
|
29
35
|
def current_url
|
|
@@ -47,15 +53,15 @@ module E2E
|
|
|
47
53
|
end
|
|
48
54
|
|
|
49
55
|
def click(selector)
|
|
50
|
-
@page.click(selector)
|
|
56
|
+
with_released_connection { @page.click(selector) }
|
|
51
57
|
end
|
|
52
58
|
|
|
53
59
|
def click_button(value, **options)
|
|
54
|
-
@page.get_by_role("button", name: value, **options).click
|
|
60
|
+
with_released_connection { @page.get_by_role("button", name: value, **options).click }
|
|
55
61
|
end
|
|
56
62
|
|
|
57
63
|
def click_link(value, **options)
|
|
58
|
-
@page.get_by_role("link", name: value, **options).click
|
|
64
|
+
with_released_connection { @page.get_by_role("link", name: value, **options).click }
|
|
59
65
|
end
|
|
60
66
|
|
|
61
67
|
def fill_in(selector, with:)
|
|
@@ -68,7 +74,7 @@ module E2E
|
|
|
68
74
|
.or(@page.locator("[name='#{selector}']"))
|
|
69
75
|
end
|
|
70
76
|
|
|
71
|
-
|
|
77
|
+
with_released_connection do
|
|
72
78
|
chain.first.fill(with)
|
|
73
79
|
rescue
|
|
74
80
|
# Fallback to treating it as a direct CSS selector if the above failed
|
|
@@ -77,15 +83,15 @@ module E2E
|
|
|
77
83
|
end
|
|
78
84
|
|
|
79
85
|
def check(selector)
|
|
80
|
-
@page.check(selector)
|
|
86
|
+
with_released_connection { @page.check(selector) }
|
|
81
87
|
end
|
|
82
88
|
|
|
83
89
|
def uncheck(selector)
|
|
84
|
-
@page.uncheck(selector)
|
|
90
|
+
with_released_connection { @page.uncheck(selector) }
|
|
85
91
|
end
|
|
86
92
|
|
|
87
93
|
def attach_file(selector, path)
|
|
88
|
-
@page.set_input_files(selector, path)
|
|
94
|
+
with_released_connection { @page.set_input_files(selector, path) }
|
|
89
95
|
end
|
|
90
96
|
|
|
91
97
|
def body
|
|
@@ -118,13 +124,31 @@ module E2E
|
|
|
118
124
|
def reset!
|
|
119
125
|
@context.close
|
|
120
126
|
@context = @browser.new_context
|
|
121
|
-
@
|
|
127
|
+
@context.enable_debug_console! unless @headless
|
|
128
|
+
@page = build_page
|
|
122
129
|
end
|
|
123
130
|
|
|
124
131
|
def quit
|
|
125
132
|
@browser.close
|
|
126
133
|
@playwright_execution.stop
|
|
127
134
|
end
|
|
135
|
+
|
|
136
|
+
private
|
|
137
|
+
|
|
138
|
+
def build_page
|
|
139
|
+
page = @context.new_page
|
|
140
|
+
page.set_default_timeout((E2E.config.wait_timeout * 1000).to_i)
|
|
141
|
+
page.set_default_navigation_timeout(navigation_timeout_ms)
|
|
142
|
+
page
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def navigation_timeout_ms
|
|
146
|
+
(E2E.config.navigation_timeout * 1000).to_i
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def with_released_connection(&block)
|
|
150
|
+
E2E::Rails.with_released_connection(&block)
|
|
151
|
+
end
|
|
128
152
|
end
|
|
129
153
|
end
|
|
130
154
|
end
|
data/lib/e2e/minitest.rb
CHANGED
data/lib/e2e/rails.rb
CHANGED
|
@@ -2,25 +2,86 @@
|
|
|
2
2
|
|
|
3
3
|
module E2E
|
|
4
4
|
module Rails
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
class << self
|
|
6
|
+
attr_accessor :shared_connection
|
|
7
|
+
attr_reader :shared_connection_enabled
|
|
8
|
+
|
|
9
|
+
def shared_connection_enabled?
|
|
10
|
+
@shared_connection_enabled
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def enable_shared_connection!
|
|
14
|
+
return unless defined?(ActiveRecord::Base)
|
|
15
|
+
return if @shared_connection_enabled
|
|
16
|
+
|
|
17
|
+
ActiveRecord::Base.singleton_class.prepend(ActiveRecordSharedConnection)
|
|
18
|
+
@shared_connection_enabled = true
|
|
19
|
+
# #connection (unlike #lease_connection/#with_connection, added in
|
|
20
|
+
# Rails 7.2) exists on every supported Rails version, so it's the only
|
|
21
|
+
# safe way to bootstrap the very first shared connection.
|
|
22
|
+
self.shared_connection = ActiveRecord::Base.connection
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Yields while the example thread is not holding a sticky AR lease.
|
|
26
|
+
# Needed when the pool has a single connection and the server thread
|
|
27
|
+
# must check it out during a blocking Playwright navigation/action.
|
|
28
|
+
def with_released_connection
|
|
29
|
+
return yield unless shared_connection_enabled?
|
|
30
|
+
return yield unless defined?(ActiveRecord::Base)
|
|
31
|
+
|
|
32
|
+
pool = ActiveRecord::Base.connection_pool
|
|
33
|
+
pool.release_connection if pool.active_connection?
|
|
34
|
+
yield
|
|
35
|
+
ensure
|
|
36
|
+
if shared_connection_enabled? && defined?(ActiveRecord::Base)
|
|
37
|
+
# Keep the shared handle pointing at a live leased connection for
|
|
38
|
+
# post-navigation assertions in the example thread.
|
|
39
|
+
self.shared_connection = ActiveRecord::Base.connection
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Shares one ActiveRecord connection between the example thread and the
|
|
45
|
+
# in-process server thread so transactional fixtures remain visible.
|
|
46
|
+
#
|
|
47
|
+
# Rails 7.2+/8 prefer +lease_connection+ / +with_connection+ over
|
|
48
|
+
# +connection+. Overriding only +connection+ (pre-0.7.1) left those
|
|
49
|
+
# APIs on the pool's thread-local lease and caused intermittent
|
|
50
|
+
# deadlocks: the example thread blocked in Playwright while holding
|
|
51
|
+
# the only connection, and the server sat idle in an open transaction.
|
|
8
52
|
module ActiveRecordSharedConnection
|
|
9
53
|
def connection
|
|
10
|
-
|
|
54
|
+
E2E::Rails.shared_connection || super
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# lease_connection/with_connection don't exist before Rails 7.2, so
|
|
58
|
+
# `super` isn't always callable -- fall back to the always-available
|
|
59
|
+
# #connection instead of blowing up with a NoMethodError.
|
|
60
|
+
def lease_connection
|
|
61
|
+
E2E::Rails.shared_connection || (defined?(super) ? super : connection)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def with_connection(prevent_permanent_checkout: false)
|
|
65
|
+
if (conn = E2E::Rails.shared_connection)
|
|
66
|
+
yield conn
|
|
67
|
+
elsif defined?(super)
|
|
68
|
+
super
|
|
69
|
+
else
|
|
70
|
+
yield connection
|
|
71
|
+
end
|
|
11
72
|
end
|
|
12
73
|
|
|
13
74
|
def shared_connection=(connection)
|
|
14
|
-
|
|
75
|
+
E2E::Rails.shared_connection = connection
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def shared_connection
|
|
79
|
+
E2E::Rails.shared_connection
|
|
15
80
|
end
|
|
16
81
|
end
|
|
17
82
|
end
|
|
18
83
|
end
|
|
19
84
|
|
|
20
|
-
# We only want to apply this when Rails is present and we want to enable it.
|
|
21
85
|
def E2E.enable_shared_connection!
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
ActiveRecord::Base.extend(E2E::Rails::ActiveRecordSharedConnection)
|
|
25
|
-
ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection
|
|
86
|
+
E2E::Rails.enable_shared_connection!
|
|
26
87
|
end
|
data/lib/e2e/rspec.rb
CHANGED
data/lib/e2e/server.rb
CHANGED
|
@@ -17,24 +17,44 @@ module E2E
|
|
|
17
17
|
|
|
18
18
|
def start
|
|
19
19
|
@thread = Thread.new do
|
|
20
|
-
|
|
21
|
-
Rackup::Handler::WEBrick.run(
|
|
20
|
+
webrick_handler.run(
|
|
22
21
|
@app,
|
|
23
22
|
Host: @host,
|
|
24
23
|
Port: @port,
|
|
25
24
|
AccessLog: [],
|
|
26
25
|
Logger: WEBrick::Log.new(nil, 0) # Silence logs
|
|
27
|
-
)
|
|
26
|
+
) do |server|
|
|
27
|
+
@webrick = server
|
|
28
|
+
end
|
|
28
29
|
end
|
|
29
30
|
wait_for_boot
|
|
30
31
|
end
|
|
31
32
|
|
|
33
|
+
def stop
|
|
34
|
+
@webrick&.shutdown
|
|
35
|
+
@thread&.join(5)
|
|
36
|
+
@thread = nil
|
|
37
|
+
@webrick = nil
|
|
38
|
+
end
|
|
39
|
+
|
|
32
40
|
def base_url
|
|
33
41
|
"http://#{@host}:#{@port}"
|
|
34
42
|
end
|
|
35
43
|
|
|
36
44
|
private
|
|
37
45
|
|
|
46
|
+
# rackup 2.x (the version paired with Rack 3) exposes Rackup::Handler.
|
|
47
|
+
# Older stacks that pin Rack 2.x (e.g. Rails 7.0/7.1 via this gem's own
|
|
48
|
+
# Appraisal matrix) resolve `rackup` down to its 1.x line, which has no
|
|
49
|
+
# Handler module at all -- there, the handler lives on Rack::Handler.
|
|
50
|
+
def webrick_handler
|
|
51
|
+
if defined?(Rackup::Handler)
|
|
52
|
+
Rackup::Handler.get(:webrick)
|
|
53
|
+
else
|
|
54
|
+
Rack::Handler.get(:webrick)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
38
58
|
def find_available_port
|
|
39
59
|
server = TCPServer.new("127.0.0.1", 0)
|
|
40
60
|
port = server.addr[1]
|
|
@@ -45,6 +65,11 @@ module E2E
|
|
|
45
65
|
def wait_for_boot
|
|
46
66
|
start_time = Time.now
|
|
47
67
|
loop do
|
|
68
|
+
if @thread && !@thread.alive?
|
|
69
|
+
@thread.join # re-raises whatever exception killed the server thread
|
|
70
|
+
raise "Server thread exited before boot completed"
|
|
71
|
+
end
|
|
72
|
+
|
|
48
73
|
socket = TCPSocket.new("127.0.0.1", @port)
|
|
49
74
|
socket.close
|
|
50
75
|
break
|