Skip to content

Commit 84dc49a

Browse files
committed
chore: release 0.5.0
1 parent 94ab38a commit 84dc49a

18 files changed

Lines changed: 307 additions & 32 deletions
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
name: Close inactive issues
2+
on:
3+
schedule:
4+
- cron: "30 1 * * *"
5+
6+
jobs:
7+
close-issues:
8+
runs-on: ubuntu-latest
9+
permissions:
10+
issues: write
11+
pull-requests: write
12+
steps:
13+
- uses: actions/stale@v10
14+
with:
15+
days-before-issue-stale: 30
16+
days-before-issue-close: 14
17+
stale-issue-label: "stale"
18+
stale-issue-message: "This issue is stale because it has been open for 30 days with no activity."
19+
close-issue-message: "This issue was closed because it has been inactive for 14 days since being marked as stale."
20+
days-before-pr-stale: -1
21+
days-before-pr-close: -1
22+
repo-token: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/label_issues.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
name: Label issues
2+
on:
3+
issues:
4+
types:
5+
- reopened
6+
- opened
7+
jobs:
8+
label_issues:
9+
runs-on: ubuntu-latest
10+
permissions:
11+
issues: write
12+
steps:
13+
- run: gh issue edit "$NUMBER" --add-label "$LABELS"
14+
env:
15+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
16+
GH_REPO: ${{ github.repository }}
17+
NUMBER: ${{ github.event.issue.number }}
18+
LABELS: triage

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.5.0] - 2026-02-09
11+
12+
### Added
13+
14+
- Minitest integration now includes auto-waiting assertions: `assert_text`, `refute_text`, `assert_selector`, `refute_selector`, `assert_current_path`, `refute_current_path`
15+
- `E2E::Minitest::TestCase` now automatically quits the browser session after the test suite finishes
16+
1017
## [0.4.2] - 2026-02-07
1118

1219
### Fixed

Gemfile.lock

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PATH
22
remote: .
33
specs:
4-
e2e (0.4.2)
4+
e2e (0.5.0)
55
playwright-ruby-client (>= 1.40.0)
66
rack
77
rackup
@@ -22,8 +22,9 @@ GEM
2222
docile (1.4.1)
2323
erb (6.0.1)
2424
io-console (0.8.2)
25-
irb (1.16.0)
25+
irb (1.17.0)
2626
pp (>= 0.6.0)
27+
prism (>= 1.3.0)
2728
rdoc (>= 4.0.0)
2829
reline (>= 0.4.2)
2930
json (2.18.1)
@@ -35,6 +36,8 @@ GEM
3536
logger
3637
mime-types-data (~> 3.2025, >= 3.2025.0507)
3738
mime-types-data (3.2026.0203)
39+
minitest (6.0.1)
40+
prism (~> 1.5)
3841
parallel (1.27.0)
3942
parser (3.3.10.1)
4043
ast (~> 2.4.1)
@@ -133,6 +136,7 @@ DEPENDENCIES
133136
e2e!
134137
irb
135138
lefthook
139+
minitest
136140
rake (~> 13.0)
137141
rspec (~> 3.0)
138142
rubocop-performance
@@ -148,17 +152,18 @@ CHECKSUMS
148152
date (3.5.1) sha256=750d06384d7b9c15d562c76291407d89e368dda4d4fff957eb94962d325a0dc0
149153
diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
150154
docile (1.4.1) sha256=96159be799bfa73cdb721b840e9802126e4e03dfc26863db73647204c727f21e
151-
e2e (0.4.2)
155+
e2e (0.5.0)
152156
erb (6.0.1) sha256=28ecdd99c5472aebd5674d6061e3c6b0a45c049578b071e5a52c2a7f13c197e5
153157
io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc
154-
irb (1.16.0) sha256=2abe56c9ac947cdcb2f150572904ba798c1e93c890c256f8429981a7675b0806
158+
irb (1.17.0) sha256=168c4ddb93d8a361a045c41d92b2952c7a118fa73f23fe14e55609eb7a863aae
155159
json (2.18.1) sha256=fe112755501b8d0466b5ada6cf50c8c3f41e897fa128ac5d263ec09eedc9f986
156160
language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc
157161
lefthook (2.1.0) sha256=a100dc90139806e62b9aa40cf32e9edf34f6cff10c8b55ebd14a1b0add4b86bf
158162
lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
159163
logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
160164
mime-types (3.7.0) sha256=dcebf61c246f08e15a4de34e386ebe8233791e868564a470c3fe77c00eed5e56
161165
mime-types-data (3.2026.0203) sha256=54353d693af028847391c28361c07d4b8b689cad78c3e1cc272fb1205c6d2a2f
166+
minitest (6.0.1) sha256=7854c74f48e2e975969062833adc4013f249a4b212f5e7b9d5c040bf838d54bb
162167
parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130
163168
parser (3.3.10.1) sha256=06f6a725d2cd91e5e7f2b7c32ba143631e1f7c8ae2fb918fc4cebec187e6a688
164169
playwright-ruby-client (1.58.0) sha256=d78b6acfb2c7bea19394366f8fc840a8518b0dbfb07d8c63754cb21d9eda0277

README.md

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,8 @@ class UserLoginTest < E2E::Minitest::TestCase
107107
fill_in "Password", with: "password"
108108
click_button "Sign In"
109109
110-
assert_includes page.body, "Welcome, User!"
110+
assert_text "Welcome, User!"
111+
assert_current_path "/dashboard"
111112
end
112113
end
113114
```
@@ -122,6 +123,8 @@ Set the `HEADLESS` environment variable to `false`:
122123

123124
```bash
124125
HEADLESS=false bundle exec rspec spec/e2e
126+
# or for minitest
127+
HEADLESS=false ruby test/e2e/login_test.rb
125128
```
126129

127130
### Pausing for Debugging
@@ -142,7 +145,7 @@ Alternatively, you can just use `sleep(10)` if you want the browser to stay open
142145

143146
### Automatic Screenshots
144147

145-
If a test fails in RSpec, a screenshot is automatically saved to `tmp/screenshots/` for quick investigation.
148+
If a test fails, a screenshot is automatically saved to `tmp/screenshots/` for quick investigation.
146149

147150
### API Reference
148151

@@ -175,7 +178,7 @@ all("li") # Returns Array<E2E::Element>
175178
find("button", text: "Save") # Filter by text
176179
```
177180

178-
#### Assertions & Matchers
181+
#### RSpec Matchers
179182

180183
All text and path matchers **automatically wait** for the expected condition to be met (up to `wait_timeout` seconds), making your tests resilient to page transitions and async rendering.
181184

@@ -207,6 +210,26 @@ expect(find("button")).to be_disabled
207210
expect(find("input")).to be_enabled
208211
```
209212

213+
#### Minitest Assertions
214+
215+
These assertions mimic the behavior of RSpec matchers, including **auto-waiting**.
216+
217+
```ruby
218+
# Check for content (auto-waiting)
219+
assert_text "Welcome"
220+
refute_text "Error"
221+
assert_text /welcome/i
222+
223+
# Check for specific elements (auto-waiting)
224+
assert_selector ".user-profile"
225+
refute_selector "#loading-spinner"
226+
227+
# Check current path (auto-waiting)
228+
assert_current_path "/dashboard"
229+
assert_current_path /\/users\/\d+/
230+
refute_current_path "/login"
231+
```
232+
210233
#### Assertions & Data
211234

212235
```ruby

Rakefile

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,18 @@
22

33
require "bundler/gem_tasks"
44
require "rspec/core/rake_task"
5+
require "rake/testtask"
6+
require "rubocop/rake_task"
57

68
RSpec::Core::RakeTask.new(:spec)
79

8-
require "rubocop/rake_task"
10+
Rake::TestTask.new(:test) do |t|
11+
t.libs << "lib"
12+
t.libs << "spec"
13+
t.test_files = FileList["spec/**/*_test.rb"]
14+
t.verbose = true
15+
end
916

1017
RuboCop::RakeTask.new
1118

12-
task default: %i[spec rubocop]
19+
task default: %i[spec test rubocop]

e2e.gemspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ Gem::Specification.new do |spec|
3838

3939
spec.add_development_dependency "appraisal"
4040
spec.add_development_dependency "lefthook"
41+
spec.add_development_dependency "minitest"
4142
spec.add_development_dependency "rake", "~> 13.0"
4243
spec.add_development_dependency "rspec", "~> 3.0"
4344
spec.add_development_dependency "rubocop-performance"

gemfiles/rails_7.0.gemfile.lock

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PATH
22
remote: ..
33
specs:
4-
e2e (0.4.2)
4+
e2e (0.5.0)
55
playwright-ruby-client (>= 1.40.0)
66
rack
77
rackup
@@ -105,8 +105,9 @@ GEM
105105
i18n (1.14.8)
106106
concurrent-ruby (~> 1.0)
107107
io-console (0.8.2)
108-
irb (1.16.0)
108+
irb (1.17.0)
109109
pp (>= 0.6.0)
110+
prism (>= 1.3.0)
110111
rdoc (>= 4.0.0)
111112
reline (>= 0.4.2)
112113
json (2.18.1)
@@ -303,6 +304,7 @@ DEPENDENCIES
303304
e2e!
304305
irb
305306
lefthook
307+
minitest
306308
rails (~> 7.0.0)
307309
rake (~> 13.0)
308310
rspec (~> 3.0)
@@ -335,13 +337,13 @@ CHECKSUMS
335337
diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
336338
docile (1.4.1) sha256=96159be799bfa73cdb721b840e9802126e4e03dfc26863db73647204c727f21e
337339
drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373
338-
e2e (0.4.2)
340+
e2e (0.5.0)
339341
erb (6.0.1) sha256=28ecdd99c5472aebd5674d6061e3c6b0a45c049578b071e5a52c2a7f13c197e5
340342
erubi (1.13.1) sha256=a082103b0885dbc5ecf1172fede897f9ebdb745a4b97a5e8dc63953db1ee4ad9
341343
globalid (1.3.0) sha256=05c639ad6eb4594522a0b07983022f04aa7254626ab69445a0e493aa3786ff11
342344
i18n (1.14.8) sha256=285778639134865c5e0f6269e0b818256017e8cde89993fdfcbfb64d088824a5
343345
io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc
344-
irb (1.16.0) sha256=2abe56c9ac947cdcb2f150572904ba798c1e93c890c256f8429981a7675b0806
346+
irb (1.17.0) sha256=168c4ddb93d8a361a045c41d92b2952c7a118fa73f23fe14e55609eb7a863aae
345347
json (2.18.1) sha256=fe112755501b8d0466b5ada6cf50c8c3f41e897fa128ac5d263ec09eedc9f986
346348
language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc
347349
lefthook (2.1.0) sha256=a100dc90139806e62b9aa40cf32e9edf34f6cff10c8b55ebd14a1b0add4b86bf

gemfiles/rails_7.1.gemfile.lock

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PATH
22
remote: ..
33
specs:
4-
e2e (0.4.2)
4+
e2e (0.5.0)
55
playwright-ruby-client (>= 1.40.0)
66
rack
77
rackup
@@ -113,8 +113,9 @@ GEM
113113
i18n (1.14.8)
114114
concurrent-ruby (~> 1.0)
115115
io-console (0.8.2)
116-
irb (1.16.0)
116+
irb (1.17.0)
117117
pp (>= 0.6.0)
118+
prism (>= 1.3.0)
118119
rdoc (>= 4.0.0)
119120
reline (>= 0.4.2)
120121
json (2.18.1)
@@ -315,6 +316,7 @@ DEPENDENCIES
315316
e2e!
316317
irb
317318
lefthook
319+
minitest
318320
rails (~> 7.1.0)
319321
rake (~> 13.0)
320322
rspec (~> 3.0)
@@ -349,13 +351,13 @@ CHECKSUMS
349351
diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
350352
docile (1.4.1) sha256=96159be799bfa73cdb721b840e9802126e4e03dfc26863db73647204c727f21e
351353
drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373
352-
e2e (0.4.2)
354+
e2e (0.5.0)
353355
erb (6.0.1) sha256=28ecdd99c5472aebd5674d6061e3c6b0a45c049578b071e5a52c2a7f13c197e5
354356
erubi (1.13.1) sha256=a082103b0885dbc5ecf1172fede897f9ebdb745a4b97a5e8dc63953db1ee4ad9
355357
globalid (1.3.0) sha256=05c639ad6eb4594522a0b07983022f04aa7254626ab69445a0e493aa3786ff11
356358
i18n (1.14.8) sha256=285778639134865c5e0f6269e0b818256017e8cde89993fdfcbfb64d088824a5
357359
io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc
358-
irb (1.16.0) sha256=2abe56c9ac947cdcb2f150572904ba798c1e93c890c256f8429981a7675b0806
360+
irb (1.17.0) sha256=168c4ddb93d8a361a045c41d92b2952c7a118fa73f23fe14e55609eb7a863aae
359361
json (2.18.1) sha256=fe112755501b8d0466b5ada6cf50c8c3f41e897fa128ac5d263ec09eedc9f986
360362
language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc
361363
lefthook (2.1.0) sha256=a100dc90139806e62b9aa40cf32e9edf34f6cff10c8b55ebd14a1b0add4b86bf

gemfiles/rails_7.2.gemfile.lock

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PATH
22
remote: ..
33
specs:
4-
e2e (0.4.2)
4+
e2e (0.5.0)
55
playwright-ruby-client (>= 1.40.0)
66
rack
77
rackup
@@ -107,8 +107,9 @@ GEM
107107
i18n (1.14.8)
108108
concurrent-ruby (~> 1.0)
109109
io-console (0.8.2)
110-
irb (1.16.0)
110+
irb (1.17.0)
111111
pp (>= 0.6.0)
112+
prism (>= 1.3.0)
112113
rdoc (>= 4.0.0)
113114
reline (>= 0.4.2)
114115
json (2.18.1)
@@ -309,6 +310,7 @@ DEPENDENCIES
309310
e2e!
310311
irb
311312
lefthook
313+
minitest
312314
rails (~> 7.2.0)
313315
rake (~> 13.0)
314316
rspec (~> 3.0)
@@ -343,13 +345,13 @@ CHECKSUMS
343345
diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
344346
docile (1.4.1) sha256=96159be799bfa73cdb721b840e9802126e4e03dfc26863db73647204c727f21e
345347
drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373
346-
e2e (0.4.2)
348+
e2e (0.5.0)
347349
erb (6.0.1) sha256=28ecdd99c5472aebd5674d6061e3c6b0a45c049578b071e5a52c2a7f13c197e5
348350
erubi (1.13.1) sha256=a082103b0885dbc5ecf1172fede897f9ebdb745a4b97a5e8dc63953db1ee4ad9
349351
globalid (1.3.0) sha256=05c639ad6eb4594522a0b07983022f04aa7254626ab69445a0e493aa3786ff11
350352
i18n (1.14.8) sha256=285778639134865c5e0f6269e0b818256017e8cde89993fdfcbfb64d088824a5
351353
io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc
352-
irb (1.16.0) sha256=2abe56c9ac947cdcb2f150572904ba798c1e93c890c256f8429981a7675b0806
354+
irb (1.17.0) sha256=168c4ddb93d8a361a045c41d92b2952c7a118fa73f23fe14e55609eb7a863aae
353355
json (2.18.1) sha256=fe112755501b8d0466b5ada6cf50c8c3f41e897fa128ac5d263ec09eedc9f986
354356
language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc
355357
lefthook (2.1.0) sha256=a100dc90139806e62b9aa40cf32e9edf34f6cff10c8b55ebd14a1b0add4b86bf

0 commit comments

Comments
 (0)