e2e 0.3.2

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.
@@ -0,0 +1,427 @@
1
+ PATH
2
+ remote: ..
3
+ specs:
4
+ e2e (0.3.1)
5
+ playwright-ruby-client (>= 1.40.0)
6
+ rack
7
+ rackup
8
+ webrick
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ actioncable (8.0.4)
14
+ actionpack (= 8.0.4)
15
+ activesupport (= 8.0.4)
16
+ nio4r (~> 2.0)
17
+ websocket-driver (>= 0.6.1)
18
+ zeitwerk (~> 2.6)
19
+ actionmailbox (8.0.4)
20
+ actionpack (= 8.0.4)
21
+ activejob (= 8.0.4)
22
+ activerecord (= 8.0.4)
23
+ activestorage (= 8.0.4)
24
+ activesupport (= 8.0.4)
25
+ mail (>= 2.8.0)
26
+ actionmailer (8.0.4)
27
+ actionpack (= 8.0.4)
28
+ actionview (= 8.0.4)
29
+ activejob (= 8.0.4)
30
+ activesupport (= 8.0.4)
31
+ mail (>= 2.8.0)
32
+ rails-dom-testing (~> 2.2)
33
+ actionpack (8.0.4)
34
+ actionview (= 8.0.4)
35
+ activesupport (= 8.0.4)
36
+ nokogiri (>= 1.8.5)
37
+ rack (>= 2.2.4)
38
+ rack-session (>= 1.0.1)
39
+ rack-test (>= 0.6.3)
40
+ rails-dom-testing (~> 2.2)
41
+ rails-html-sanitizer (~> 1.6)
42
+ useragent (~> 0.16)
43
+ actiontext (8.0.4)
44
+ actionpack (= 8.0.4)
45
+ activerecord (= 8.0.4)
46
+ activestorage (= 8.0.4)
47
+ activesupport (= 8.0.4)
48
+ globalid (>= 0.6.0)
49
+ nokogiri (>= 1.8.5)
50
+ actionview (8.0.4)
51
+ activesupport (= 8.0.4)
52
+ builder (~> 3.1)
53
+ erubi (~> 1.11)
54
+ rails-dom-testing (~> 2.2)
55
+ rails-html-sanitizer (~> 1.6)
56
+ activejob (8.0.4)
57
+ activesupport (= 8.0.4)
58
+ globalid (>= 0.3.6)
59
+ activemodel (8.0.4)
60
+ activesupport (= 8.0.4)
61
+ activerecord (8.0.4)
62
+ activemodel (= 8.0.4)
63
+ activesupport (= 8.0.4)
64
+ timeout (>= 0.4.0)
65
+ activestorage (8.0.4)
66
+ actionpack (= 8.0.4)
67
+ activejob (= 8.0.4)
68
+ activerecord (= 8.0.4)
69
+ activesupport (= 8.0.4)
70
+ marcel (~> 1.0)
71
+ activesupport (8.0.4)
72
+ base64
73
+ benchmark (>= 0.3)
74
+ bigdecimal
75
+ concurrent-ruby (~> 1.0, >= 1.3.1)
76
+ connection_pool (>= 2.2.5)
77
+ drb
78
+ i18n (>= 1.6, < 2)
79
+ logger (>= 1.4.2)
80
+ minitest (>= 5.1)
81
+ securerandom (>= 0.3)
82
+ tzinfo (~> 2.0, >= 2.0.5)
83
+ uri (>= 0.13.1)
84
+ appraisal (2.5.0)
85
+ bundler
86
+ rake
87
+ thor (>= 0.14.0)
88
+ ast (2.4.3)
89
+ base64 (0.3.0)
90
+ benchmark (0.5.0)
91
+ bigdecimal (4.0.1)
92
+ builder (3.3.0)
93
+ concurrent-ruby (1.3.6)
94
+ connection_pool (3.0.2)
95
+ crass (1.0.6)
96
+ date (3.5.1)
97
+ diff-lcs (1.6.2)
98
+ docile (1.4.1)
99
+ drb (2.2.3)
100
+ erb (6.0.1)
101
+ erubi (1.13.1)
102
+ globalid (1.3.0)
103
+ activesupport (>= 6.1)
104
+ i18n (1.14.8)
105
+ concurrent-ruby (~> 1.0)
106
+ io-console (0.8.2)
107
+ irb (1.16.0)
108
+ pp (>= 0.6.0)
109
+ rdoc (>= 4.0.0)
110
+ reline (>= 0.4.2)
111
+ json (2.18.1)
112
+ language_server-protocol (3.17.0.5)
113
+ lefthook (2.1.0)
114
+ lint_roller (1.1.0)
115
+ logger (1.7.0)
116
+ loofah (2.25.0)
117
+ crass (~> 1.0.2)
118
+ nokogiri (>= 1.12.0)
119
+ mail (2.9.0)
120
+ logger
121
+ mini_mime (>= 0.1.1)
122
+ net-imap
123
+ net-pop
124
+ net-smtp
125
+ marcel (1.1.0)
126
+ mime-types (3.7.0)
127
+ logger
128
+ mime-types-data (~> 3.2025, >= 3.2025.0507)
129
+ mime-types-data (3.2026.0203)
130
+ mini_mime (1.1.5)
131
+ minitest (6.0.1)
132
+ prism (~> 1.5)
133
+ net-imap (0.6.2)
134
+ date
135
+ net-protocol
136
+ net-pop (0.1.2)
137
+ net-protocol
138
+ net-protocol (0.2.2)
139
+ timeout
140
+ net-smtp (0.5.1)
141
+ net-protocol
142
+ nio4r (2.7.5)
143
+ nokogiri (1.19.0-aarch64-linux-gnu)
144
+ racc (~> 1.4)
145
+ nokogiri (1.19.0-aarch64-linux-musl)
146
+ racc (~> 1.4)
147
+ nokogiri (1.19.0-arm-linux-gnu)
148
+ racc (~> 1.4)
149
+ nokogiri (1.19.0-arm-linux-musl)
150
+ racc (~> 1.4)
151
+ nokogiri (1.19.0-arm64-darwin)
152
+ racc (~> 1.4)
153
+ nokogiri (1.19.0-x86_64-darwin)
154
+ racc (~> 1.4)
155
+ nokogiri (1.19.0-x86_64-linux-gnu)
156
+ racc (~> 1.4)
157
+ nokogiri (1.19.0-x86_64-linux-musl)
158
+ racc (~> 1.4)
159
+ parallel (1.27.0)
160
+ parser (3.3.10.1)
161
+ ast (~> 2.4.1)
162
+ racc
163
+ playwright-ruby-client (1.58.0)
164
+ base64
165
+ concurrent-ruby (>= 1.1.6)
166
+ mime-types (>= 3.0)
167
+ pp (0.6.3)
168
+ prettyprint
169
+ prettyprint (0.2.0)
170
+ prism (1.9.0)
171
+ psych (5.3.1)
172
+ date
173
+ stringio
174
+ racc (1.8.1)
175
+ rack (3.2.4)
176
+ rack-session (2.1.1)
177
+ base64 (>= 0.1.0)
178
+ rack (>= 3.0.0)
179
+ rack-test (2.2.0)
180
+ rack (>= 1.3)
181
+ rackup (2.3.1)
182
+ rack (>= 3)
183
+ rails (8.0.4)
184
+ actioncable (= 8.0.4)
185
+ actionmailbox (= 8.0.4)
186
+ actionmailer (= 8.0.4)
187
+ actionpack (= 8.0.4)
188
+ actiontext (= 8.0.4)
189
+ actionview (= 8.0.4)
190
+ activejob (= 8.0.4)
191
+ activemodel (= 8.0.4)
192
+ activerecord (= 8.0.4)
193
+ activestorage (= 8.0.4)
194
+ activesupport (= 8.0.4)
195
+ bundler (>= 1.15.0)
196
+ railties (= 8.0.4)
197
+ rails-dom-testing (2.3.0)
198
+ activesupport (>= 5.0.0)
199
+ minitest
200
+ nokogiri (>= 1.6)
201
+ rails-html-sanitizer (1.6.2)
202
+ loofah (~> 2.21)
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.0.4)
205
+ actionpack (= 8.0.4)
206
+ activesupport (= 8.0.4)
207
+ irb (~> 1.13)
208
+ rackup (>= 1.0.0)
209
+ rake (>= 12.2)
210
+ thor (~> 1.0, >= 1.2.2)
211
+ tsort (>= 0.2)
212
+ zeitwerk (~> 2.6)
213
+ rainbow (3.1.1)
214
+ rake (13.3.1)
215
+ rdoc (7.1.0)
216
+ erb
217
+ psych (>= 4.0.0)
218
+ tsort
219
+ regexp_parser (2.11.3)
220
+ reline (0.6.3)
221
+ io-console (~> 0.5)
222
+ rspec (3.13.2)
223
+ rspec-core (~> 3.13.0)
224
+ rspec-expectations (~> 3.13.0)
225
+ rspec-mocks (~> 3.13.0)
226
+ rspec-core (3.13.6)
227
+ rspec-support (~> 3.13.0)
228
+ rspec-expectations (3.13.5)
229
+ diff-lcs (>= 1.2.0, < 2.0)
230
+ rspec-support (~> 3.13.0)
231
+ rspec-mocks (3.13.7)
232
+ diff-lcs (>= 1.2.0, < 2.0)
233
+ rspec-support (~> 3.13.0)
234
+ rspec-support (3.13.7)
235
+ rubocop (1.82.1)
236
+ json (~> 2.3)
237
+ language_server-protocol (~> 3.17.0.2)
238
+ lint_roller (~> 1.1.0)
239
+ parallel (~> 1.10)
240
+ parser (>= 3.3.0.2)
241
+ rainbow (>= 2.2.2, < 4.0)
242
+ regexp_parser (>= 2.9.3, < 3.0)
243
+ rubocop-ast (>= 1.48.0, < 2.0)
244
+ ruby-progressbar (~> 1.7)
245
+ unicode-display_width (>= 2.4.0, < 4.0)
246
+ rubocop-ast (1.49.0)
247
+ parser (>= 3.3.7.2)
248
+ prism (~> 1.7)
249
+ rubocop-performance (1.26.1)
250
+ lint_roller (~> 1.1)
251
+ rubocop (>= 1.75.0, < 2.0)
252
+ rubocop-ast (>= 1.47.1, < 2.0)
253
+ rubocop-rspec (3.9.0)
254
+ lint_roller (~> 1.1)
255
+ rubocop (~> 1.81)
256
+ ruby-progressbar (1.13.0)
257
+ securerandom (0.4.1)
258
+ simplecov (0.22.0)
259
+ docile (~> 1.1)
260
+ simplecov-html (~> 0.11)
261
+ simplecov_json_formatter (~> 0.1)
262
+ simplecov-html (0.13.2)
263
+ simplecov_json_formatter (0.1.4)
264
+ standard (1.53.0)
265
+ language_server-protocol (~> 3.17.0.2)
266
+ lint_roller (~> 1.0)
267
+ rubocop (~> 1.82.0)
268
+ standard-custom (~> 1.0.0)
269
+ standard-performance (~> 1.8)
270
+ standard-custom (1.0.2)
271
+ lint_roller (~> 1.0)
272
+ rubocop (~> 1.50)
273
+ standard-performance (1.9.0)
274
+ lint_roller (~> 1.1)
275
+ rubocop-performance (~> 1.26.0)
276
+ stringio (3.2.0)
277
+ thor (1.5.0)
278
+ timeout (0.6.0)
279
+ tsort (0.2.0)
280
+ tzinfo (2.0.6)
281
+ concurrent-ruby (~> 1.0)
282
+ unicode-display_width (3.2.0)
283
+ unicode-emoji (~> 4.1)
284
+ unicode-emoji (4.2.0)
285
+ uri (1.1.1)
286
+ useragent (0.16.11)
287
+ webrick (1.9.2)
288
+ websocket-driver (0.8.0)
289
+ base64
290
+ websocket-extensions (>= 0.1.0)
291
+ websocket-extensions (0.1.5)
292
+ zeitwerk (2.7.4)
293
+
294
+ PLATFORMS
295
+ aarch64-linux-gnu
296
+ aarch64-linux-musl
297
+ arm-linux-gnu
298
+ arm-linux-musl
299
+ arm64-darwin
300
+ x86_64-darwin
301
+ x86_64-linux-gnu
302
+ x86_64-linux-musl
303
+
304
+ DEPENDENCIES
305
+ appraisal
306
+ e2e!
307
+ irb
308
+ lefthook
309
+ rails (~> 8.0.0)
310
+ rake (~> 13.0)
311
+ rspec (~> 3.0)
312
+ rubocop-performance
313
+ rubocop-rspec
314
+ simplecov
315
+ standard
316
+
317
+ CHECKSUMS
318
+ actioncable (8.0.4) sha256=aadb2bf2977b666cfeaa7dee66fd50e147559f78a8d55f6169e913502475e09f
319
+ actionmailbox (8.0.4) sha256=ed0b634a502fb63d1ba01ae025772e9d0261b7ba12e66389c736fcf4635cd80f
320
+ actionmailer (8.0.4) sha256=3b9270d8e19f0afb534b11c52f439937dc30028adcbbae2b244f3383ce75de4b
321
+ actionpack (8.0.4) sha256=0364c7582f32c8f404725fa30d3f6853f834c5f4964afd4a072b848c8a23cddb
322
+ actiontext (8.0.4) sha256=40b3970268ac29b865685456b2586df5052d068fd0cb04acb2291e737cea2340
323
+ actionview (8.0.4) sha256=5bd3c41ee7a59e14cf062bb5e4ee53c9a253d12fc13c8754cae368012e1a1648
324
+ activejob (8.0.4) sha256=cbc8a85d0e168cb90a5629c8a36fe2d08ba840103d3aed3eee0c7beb784fccce
325
+ activemodel (8.0.4) sha256=8f4e4fac3cd104b1bf30419c3745206f6f724c0e2902a939b4113f4c90730dfd
326
+ activerecord (8.0.4) sha256=bda32c171799e5ca5460447d3b7272ed14447244e2497abf2107f87fc44cbf32
327
+ activestorage (8.0.4) sha256=47f312962fc898c1669f20cf7448d19668a5547f4a5f64e59a837d9d3f64a043
328
+ activesupport (8.0.4) sha256=894a3a6c7733b5fae5a7df3acd76c4b563f38687df8a04fa3cbd25360f3fe95a
329
+ appraisal (2.5.0) sha256=36989221be127913b0dba8d114da2001e6b2dceea7bd4951200eaba764eed3ce
330
+ ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383
331
+ base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b
332
+ benchmark (0.5.0) sha256=465df122341aedcb81a2a24b4d3bd19b6c67c1530713fd533f3ff034e419236c
333
+ bigdecimal (4.0.1) sha256=8b07d3d065a9f921c80ceaea7c9d4ae596697295b584c296fe599dd0ad01c4a7
334
+ builder (3.3.0) sha256=497918d2f9dca528fdca4b88d84e4ef4387256d984b8154e9d5d3fe5a9c8835f
335
+ concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab
336
+ connection_pool (3.0.2) sha256=33fff5ba71a12d2aa26cb72b1db8bba2a1a01823559fb01d29eb74c286e62e0a
337
+ crass (1.0.6) sha256=dc516022a56e7b3b156099abc81b6d2b08ea1ed12676ac7a5657617f012bd45d
338
+ date (3.5.1) sha256=750d06384d7b9c15d562c76291407d89e368dda4d4fff957eb94962d325a0dc0
339
+ diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
340
+ docile (1.4.1) sha256=96159be799bfa73cdb721b840e9802126e4e03dfc26863db73647204c727f21e
341
+ drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373
342
+ e2e (0.3.1)
343
+ erb (6.0.1) sha256=28ecdd99c5472aebd5674d6061e3c6b0a45c049578b071e5a52c2a7f13c197e5
344
+ erubi (1.13.1) sha256=a082103b0885dbc5ecf1172fede897f9ebdb745a4b97a5e8dc63953db1ee4ad9
345
+ globalid (1.3.0) sha256=05c639ad6eb4594522a0b07983022f04aa7254626ab69445a0e493aa3786ff11
346
+ i18n (1.14.8) sha256=285778639134865c5e0f6269e0b818256017e8cde89993fdfcbfb64d088824a5
347
+ io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc
348
+ irb (1.16.0) sha256=2abe56c9ac947cdcb2f150572904ba798c1e93c890c256f8429981a7675b0806
349
+ json (2.18.1) sha256=fe112755501b8d0466b5ada6cf50c8c3f41e897fa128ac5d263ec09eedc9f986
350
+ language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc
351
+ lefthook (2.1.0) sha256=a100dc90139806e62b9aa40cf32e9edf34f6cff10c8b55ebd14a1b0add4b86bf
352
+ lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
353
+ logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
354
+ loofah (2.25.0) sha256=df5ed7ac3bac6a4ec802df3877ee5cc86d027299f8952e6243b3dac446b060e6
355
+ mail (2.9.0) sha256=6fa6673ecd71c60c2d996260f9ee3dd387d4673b8169b502134659ece6d34941
356
+ marcel (1.1.0) sha256=fdcfcfa33cc52e93c4308d40e4090a5d4ea279e160a7f6af988260fa970e0bee
357
+ mime-types (3.7.0) sha256=dcebf61c246f08e15a4de34e386ebe8233791e868564a470c3fe77c00eed5e56
358
+ mime-types-data (3.2026.0203) sha256=54353d693af028847391c28361c07d4b8b689cad78c3e1cc272fb1205c6d2a2f
359
+ mini_mime (1.1.5) sha256=8681b7e2e4215f2a159f9400b5816d85e9d8c6c6b491e96a12797e798f8bccef
360
+ minitest (6.0.1) sha256=7854c74f48e2e975969062833adc4013f249a4b212f5e7b9d5c040bf838d54bb
361
+ net-imap (0.6.2) sha256=08caacad486853c61676cca0c0c47df93db02abc4a8239a8b67eb0981428acc6
362
+ net-pop (0.1.2) sha256=848b4e982013c15b2f0382792268763b748cce91c9e91e36b0f27ed26420dff3
363
+ net-protocol (0.2.2) sha256=aa73e0cba6a125369de9837b8d8ef82a61849360eba0521900e2c3713aa162a8
364
+ net-smtp (0.5.1) sha256=ed96a0af63c524fceb4b29b0d352195c30d82dd916a42f03c62a3a70e5b70736
365
+ nio4r (2.7.5) sha256=6c90168e48fb5f8e768419c93abb94ba2b892a1d0602cb06eef16d8b7df1dca1
366
+ nokogiri (1.19.0-aarch64-linux-gnu) sha256=11a97ecc3c0e7e5edcf395720b10860ef493b768f6aa80c539573530bc933767
367
+ nokogiri (1.19.0-aarch64-linux-musl) sha256=eb70507f5e01bc23dad9b8dbec2b36ad0e61d227b42d292835020ff754fb7ba9
368
+ nokogiri (1.19.0-arm-linux-gnu) sha256=572a259026b2c8b7c161fdb6469fa2d0edd2b61cd599db4bbda93289abefbfe5
369
+ nokogiri (1.19.0-arm-linux-musl) sha256=23ed90922f1a38aed555d3de4d058e90850c731c5b756d191b3dc8055948e73c
370
+ nokogiri (1.19.0-arm64-darwin) sha256=0811dfd936d5f6dd3f6d32ef790568bf29b2b7bead9ba68866847b33c9cf5810
371
+ nokogiri (1.19.0-x86_64-darwin) sha256=1dad56220b603a8edb9750cd95798bffa2b8dd9dd9aa47f664009ee5b43e3067
372
+ nokogiri (1.19.0-x86_64-linux-gnu) sha256=f482b95c713d60031d48c44ce14562f8d2ce31e3a9e8dd0ccb131e9e5a68b58c
373
+ nokogiri (1.19.0-x86_64-linux-musl) sha256=1c4ca6b381622420073ce6043443af1d321e8ed93cc18b08e2666e5bd02ffae4
374
+ parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130
375
+ parser (3.3.10.1) sha256=06f6a725d2cd91e5e7f2b7c32ba143631e1f7c8ae2fb918fc4cebec187e6a688
376
+ playwright-ruby-client (1.58.0) sha256=d78b6acfb2c7bea19394366f8fc840a8518b0dbfb07d8c63754cb21d9eda0277
377
+ pp (0.6.3) sha256=2951d514450b93ccfeb1df7d021cae0da16e0a7f95ee1e2273719669d0ab9df6
378
+ prettyprint (0.2.0) sha256=2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193
379
+ prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
380
+ psych (5.3.1) sha256=eb7a57cef10c9d70173ff74e739d843ac3b2c019a003de48447b2963d81b1974
381
+ racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
382
+ rack (3.2.4) sha256=5d74b6f75082a643f43c1e76b419c40f0e5527fcfee1e669ac1e6b73c0ccb6f6
383
+ rack-session (2.1.1) sha256=0b6dc07dea7e4b583f58a48e8b806d4c9f1c6c9214ebc202ec94562cbea2e4e9
384
+ rack-test (2.2.0) sha256=005a36692c306ac0b4a9350355ee080fd09ddef1148a5f8b2ac636c720f5c463
385
+ rackup (2.3.1) sha256=6c79c26753778e90983761d677a48937ee3192b3ffef6bc963c0950f94688868
386
+ rails (8.0.4) sha256=364494a32d2dc3f9d5c135d036ce47e7776684bc6add73f1037ac2b1007962db
387
+ rails-dom-testing (2.3.0) sha256=8acc7953a7b911ca44588bf08737bc16719f431a1cc3091a292bca7317925c1d
388
+ rails-html-sanitizer (1.6.2) sha256=35fce2ca8242da8775c83b6ba9c1bcaad6751d9eb73c1abaa8403475ab89a560
389
+ railties (8.0.4) sha256=8203d853dcffab4abcdd05c193f101676a92068075464694790f6d8f72d5cb47
390
+ rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
391
+ rake (13.3.1) sha256=8c9e89d09f66a26a01264e7e3480ec0607f0c497a861ef16063604b1b08eb19c
392
+ rdoc (7.1.0) sha256=494899df0706c178596ca6e1d50f1b7eb285a9b2aae715be5abd742734f17363
393
+ regexp_parser (2.11.3) sha256=ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4
394
+ reline (0.6.3) sha256=1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835
395
+ rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587
396
+ rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d
397
+ rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836
398
+ rspec-mocks (3.13.7) sha256=0979034e64b1d7a838aaaddf12bf065ea4dc40ef3d4c39f01f93ae2c66c62b1c
399
+ rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c
400
+ rubocop (1.82.1) sha256=09f1a6a654a960eda767aebea33e47603080f8e9c9a3f019bf9b94c9cab5e273
401
+ rubocop-ast (1.49.0) sha256=49c3676d3123a0923d333e20c6c2dbaaae2d2287b475273fddee0c61da9f71fd
402
+ rubocop-performance (1.26.1) sha256=cd19b936ff196df85829d264b522fd4f98b6c89ad271fa52744a8c11b8f71834
403
+ rubocop-rspec (3.9.0) sha256=8fa70a3619408237d789aeecfb9beef40576acc855173e60939d63332fdb55e2
404
+ ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
405
+ securerandom (0.4.1) sha256=cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1
406
+ simplecov (0.22.0) sha256=fe2622c7834ff23b98066bb0a854284b2729a569ac659f82621fc22ef36213a5
407
+ simplecov-html (0.13.2) sha256=bd0b8e54e7c2d7685927e8d6286466359b6f16b18cb0df47b508e8d73c777246
408
+ simplecov_json_formatter (0.1.4) sha256=529418fbe8de1713ac2b2d612aa3daa56d316975d307244399fa4838c601b428
409
+ standard (1.53.0) sha256=f3c9493385db7079d0abce6f7582f553122156997b81258cd361d3480eeacf9c
410
+ standard-custom (1.0.2) sha256=424adc84179a074f1a2a309bb9cf7cd6bfdb2b6541f20c6bf9436c0ba22a652b
411
+ standard-performance (1.9.0) sha256=49483d31be448292951d80e5e67cdcb576c2502103c7b40aec6f1b6e9c88e3f2
412
+ stringio (3.2.0) sha256=c37cb2e58b4ffbd33fe5cd948c05934af997b36e0b6ca6fdf43afa234cf222e1
413
+ thor (1.5.0) sha256=e3a9e55fe857e44859ce104a84675ab6e8cd59c650a49106a05f55f136425e73
414
+ timeout (0.6.0) sha256=6d722ad619f96ee383a0c557ec6eb8c4ecb08af3af62098a0be5057bf00de1af
415
+ tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f
416
+ tzinfo (2.0.6) sha256=8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b
417
+ unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42
418
+ unicode-emoji (4.2.0) sha256=519e69150f75652e40bf736106cfbc8f0f73aa3fb6a65afe62fefa7f80b0f80f
419
+ uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6
420
+ useragent (0.16.11) sha256=700e6413ad4bb954bb63547fa098dddf7b0ebe75b40cc6f93b8d54255b173844
421
+ webrick (1.9.2) sha256=beb4a15fc474defed24a3bda4ffd88a490d517c9e4e6118c3edce59e45864131
422
+ websocket-driver (0.8.0) sha256=ed0dba4b943c22f17f9a734817e808bc84cdce6a7e22045f5315aa57676d4962
423
+ websocket-extensions (0.1.5) sha256=1c6ba63092cda343eb53fc657110c71c754c56484aad42578495227d717a8241
424
+ zeitwerk (2.7.4) sha256=2bef90f356bdafe9a6c2bd32bcd804f83a4f9b8bc27f3600fff051eb3edcec8b
425
+
426
+ BUNDLED WITH
427
+ 4.0.5
data/lefthook.yml ADDED
@@ -0,0 +1,11 @@
1
+ pre-commit:
2
+ parallel: true
3
+ commands:
4
+ appraisal:
5
+ glob: "{Gemfile,e2e.gemspec,lib/e2e/version.rb}"
6
+ run: bundle exec appraisal install && git add gemfiles/*.lock
7
+ rubocop:
8
+ glob: "**/*.rb"
9
+ run: bundle exec rubocop --force-exclusion {staged_files}
10
+ rspec:
11
+ run: bundle exec rspec
data/lib/e2e/driver.rb ADDED
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ module E2E
4
+ class Driver
5
+ def visit(url)
6
+ raise NotImplementedError
7
+ end
8
+
9
+ def current_url
10
+ raise NotImplementedError
11
+ end
12
+
13
+ def find(selector, **options)
14
+ raise NotImplementedError
15
+ end
16
+
17
+ def all(selector, **options)
18
+ raise NotImplementedError
19
+ end
20
+
21
+ def click(selector)
22
+ raise NotImplementedError
23
+ end
24
+
25
+ def click_button(value, **options)
26
+ raise NotImplementedError
27
+ end
28
+
29
+ def click_link(value, **options)
30
+ raise NotImplementedError
31
+ end
32
+
33
+ def fill_in(selector, with:)
34
+ raise NotImplementedError
35
+ end
36
+
37
+ def check(selector)
38
+ raise NotImplementedError
39
+ end
40
+
41
+ def uncheck(selector)
42
+ raise NotImplementedError
43
+ end
44
+
45
+ def attach_file(selector, path)
46
+ raise NotImplementedError
47
+ end
48
+
49
+ def body
50
+ raise NotImplementedError
51
+ end
52
+
53
+ def evaluate(script)
54
+ raise NotImplementedError
55
+ end
56
+
57
+ def save_screenshot(path, **options)
58
+ raise NotImplementedError
59
+ end
60
+
61
+ def native
62
+ raise NotImplementedError
63
+ end
64
+
65
+ def pause
66
+ raise NotImplementedError
67
+ end
68
+
69
+ def reset!
70
+ raise NotImplementedError
71
+ end
72
+
73
+ def quit
74
+ raise NotImplementedError
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,111 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "playwright"
4
+
5
+ module E2E
6
+ module Drivers
7
+ class Playwright < Driver
8
+ def initialize
9
+ @playwright_execution = ::Playwright.create(playwright_cli_executable_path: "npx playwright")
10
+ @playwright = @playwright_execution.playwright
11
+
12
+ browser_type_name = E2E.config.browser_type || :chromium
13
+ @browser_type = @playwright.send(browser_type_name)
14
+
15
+ @headless = E2E.config.headless
16
+ @browser = @browser_type.launch(headless: @headless)
17
+ @context = @browser.new_context
18
+
19
+ # Enable debug console to allow page.pause (requires GUI, so only in headed mode)
20
+ @context.enable_debug_console! unless @headless
21
+
22
+ @page = @context.new_page
23
+ end
24
+
25
+ def visit(url)
26
+ @page.goto(url)
27
+ end
28
+
29
+ def current_url
30
+ @page.url
31
+ end
32
+
33
+ def find(selector, **options)
34
+ if options.key?(:text)
35
+ text = options.delete(:text)
36
+ selector = "#{selector}:has-text('#{text}')"
37
+ end
38
+ E2E::Element.new(@page.locator(selector, **options).first)
39
+ end
40
+
41
+ def all(selector, **options)
42
+ if options.key?(:text)
43
+ text = options.delete(:text)
44
+ selector = "#{selector}:has-text('#{text}')"
45
+ end
46
+ @page.locator(selector, **options).all.map { |l| E2E::Element.new(l) }
47
+ end
48
+
49
+ def click(selector)
50
+ @page.click(selector)
51
+ end
52
+
53
+ def click_button(value, **options)
54
+ @page.get_by_role("button", name: value, **options).click
55
+ end
56
+
57
+ def click_link(value, **options)
58
+ @page.get_by_role("link", name: value, **options).click
59
+ end
60
+
61
+ def fill_in(selector, with:)
62
+ @page.fill(selector, with)
63
+ end
64
+
65
+ def check(selector)
66
+ @page.check(selector)
67
+ end
68
+
69
+ def uncheck(selector)
70
+ @page.uncheck(selector)
71
+ end
72
+
73
+ def attach_file(selector, path)
74
+ @page.set_input_files(selector, path)
75
+ end
76
+
77
+ def body
78
+ @page.content
79
+ end
80
+
81
+ def evaluate(script)
82
+ @page.evaluate(script)
83
+ end
84
+
85
+ def save_screenshot(path, **options)
86
+ @page.screenshot(path: path, **options)
87
+ end
88
+
89
+ def native
90
+ @page
91
+ end
92
+
93
+ def pause
94
+ raise E2E::Error, "pause is not available in headless mode" if @headless
95
+
96
+ @page.pause
97
+ end
98
+
99
+ def reset!
100
+ @context.close
101
+ @context = @browser.new_context
102
+ @page = @context.new_page
103
+ end
104
+
105
+ def quit
106
+ @browser.close
107
+ @playwright_execution.stop
108
+ end
109
+ end
110
+ end
111
+ end
data/lib/e2e/dsl.rb ADDED
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "forwardable"
4
+
5
+ module E2E
6
+ module DSL
7
+ extend Forwardable
8
+
9
+ def_delegators "E2E.session", :visit, :current_url, :find, :all, :click, :click_button, :click_link, :fill_in, :check, :uncheck, :attach_file, :body, :evaluate, :save_screenshot, :native, :pause, :reset!
10
+
11
+ def page
12
+ E2E.session
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ module E2E
4
+ class Element
5
+ def initialize(locator)
6
+ @locator = locator
7
+ end
8
+
9
+ def click
10
+ @locator.click
11
+ end
12
+
13
+ def fill(value)
14
+ @locator.fill(value)
15
+ end
16
+
17
+ def text
18
+ @locator.inner_text
19
+ end
20
+
21
+ def visible?
22
+ @locator.visible?
23
+ end
24
+
25
+ def [](attribute)
26
+ @locator.get_attribute(attribute)
27
+ end
28
+
29
+ def classes
30
+ (self["class"] || "").split
31
+ end
32
+
33
+ def has_class?(class_name)
34
+ classes.include?(class_name.to_s)
35
+ end
36
+
37
+ def value
38
+ @locator.input_value
39
+ end
40
+
41
+ def checked?
42
+ @locator.checked?
43
+ end
44
+
45
+ def disabled?
46
+ @locator.disabled?
47
+ end
48
+
49
+ def enabled?
50
+ @locator.enabled?
51
+ end
52
+
53
+ # Allows calling native playwright methods if needed
54
+ def native
55
+ @locator
56
+ end
57
+ end
58
+ end