ruby_raider 3.7.0 → 3.8.0
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/README.md +1 -1
- data/lib/generators/infrastructure/templates/azure_pipelines.tt +2 -1
- data/lib/generators/infrastructure/templates/github.tt +2 -1
- data/lib/generators/infrastructure/templates/github_appium.tt +6 -4
- data/lib/generators/templates/common/gemfile.tt +1 -1
- data/lib/generators/templates/common/read_me.tt +8 -0
- data/lib/version +1 -1
- data/spec/integration/content/azure_content_spec.rb +4 -3
- data/spec/integration/content/ci_content_spec.rb +12 -1
- data/spec/integration/content/gemfile_content_spec.rb +2 -2
- data/spec/integration/content/readme_content_spec.rb +8 -0
- data/spec/integration/content/rspec_reporter_content_spec.rb +2 -2
- data/spec/integration/end_to_end_spec.rb +8 -8
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9cd1d87871eeb4bad99f5952f35a7f81da1f54d9170536ebd959ebe19403d63d
|
|
4
|
+
data.tar.gz: 0bdb788bce2e8245483176ebe5118ff046fef892ae8767d74986384d9747deba
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0a9f31493361abd7af6a78f8afe18a7d6f82569c364ed08c17445705bc3e0e5ef770a0da54b927139996393622a49306433b8aa0deccd61483a8af724b432fcc
|
|
7
|
+
data.tar.gz: 85c9d92cf395f858f4c2977a382c96385ebb82992cdc6ad100477ed8c9d91f34a6ea302a3cea26a612e5b682b4ad1b3d398449420abc6e5f58c3b5eaa8ccebbb
|
data/README.md
CHANGED
|
@@ -60,7 +60,7 @@ Every generated project comes with:
|
|
|
60
60
|
|
|
61
61
|
- **Page Object Model** — Base page and component classes with example pages
|
|
62
62
|
- **Test examples** — Working login tests against the [Raider Test Store](https://raider-test-site.onrender.com/)
|
|
63
|
-
- **Raider reporting** — RSpec and Cucumber projects include [raider_reporter](https://github.com/RaiderHQ/raider_reporter), which writes results to `raider-results/` and uploads runs when `RAIDER_TOKEN` and `RAIDER_ENDPOINT` are set
|
|
63
|
+
- **Raider reporting** — RSpec and Cucumber projects include [raider_reporter](https://github.com/RaiderHQ/raider_reporter), which writes results to `raider-results/` and uploads runs when `RAIDER_TOKEN` and `RAIDER_ENDPOINT` are set; generated CI runs the suite through `raider-reporter exec` with `RAIDER_QUARANTINE`, so quarantined tests do not fail the build
|
|
64
64
|
- **GitHub Actions CI** — Ready-to-use test pipeline
|
|
65
65
|
- **Rake tasks** — Default, smoke, and regression tasks with tag-based filtering
|
|
66
66
|
- **Retry support** — RSpec retry with configurable retry count via `RETRY_COUNT` env var
|
|
@@ -21,11 +21,12 @@ jobs:
|
|
|
21
21
|
inputs: { versionSpec: '3.4' }
|
|
22
22
|
- script: bundle install
|
|
23
23
|
displayName: Install gems
|
|
24
|
-
- script: <%- if cucumber? -%>bundle exec cucumber features/ --format pretty<%- else -%>bundle exec rspec spec/ --format documentation<%- end %>
|
|
24
|
+
- script: <%- if cucumber? -%>bundle exec raider-reporter exec -- bundle exec cucumber features/ --format pretty<%- else -%>bundle exec raider-reporter exec -- bundle exec rspec spec/ --format documentation<%- end %>
|
|
25
25
|
displayName: Run tests
|
|
26
26
|
env:
|
|
27
27
|
RAIDER_TOKEN: $(RAIDER_TOKEN)
|
|
28
28
|
RAIDER_ENDPOINT: $(RAIDER_ENDPOINT)
|
|
29
|
+
RAIDER_QUARANTINE: 1
|
|
29
30
|
- task: PublishPipelineArtifact@1
|
|
30
31
|
condition: always()
|
|
31
32
|
inputs: { targetPath: raider-results, artifact: raider-results-$(System.JobPositionInPhase)-$(System.JobAttempt) }
|
|
@@ -34,11 +34,12 @@ jobs:
|
|
|
34
34
|
chrome-version: stable
|
|
35
35
|
|
|
36
36
|
- name: Run tests
|
|
37
|
-
run: <%- if framework == 'cucumber' -%>bundle exec cucumber features --format pretty<%- else -%>bundle exec rspec spec --format documentation<%- end %>
|
|
37
|
+
run: <%- if framework == 'cucumber' -%>bundle exec raider-reporter exec -- bundle exec cucumber features --format pretty<%- else -%>bundle exec raider-reporter exec -- bundle exec rspec spec --format documentation<%- end %>
|
|
38
38
|
env:
|
|
39
39
|
HEADLESS: true
|
|
40
40
|
RAIDER_TOKEN: ${{ secrets.RAIDER_TOKEN }}
|
|
41
41
|
RAIDER_ENDPOINT: ${{ vars.RAIDER_ENDPOINT }}
|
|
42
|
+
RAIDER_QUARANTINE: "1"
|
|
42
43
|
|
|
43
44
|
- name: Upload Raider results
|
|
44
45
|
uses: actions/upload-artifact@v4
|
|
@@ -46,14 +46,15 @@ jobs:
|
|
|
46
46
|
|
|
47
47
|
- name: Run tests
|
|
48
48
|
<%- if cucumber? -%>
|
|
49
|
-
run: bundle exec cucumber features/ --format pretty
|
|
49
|
+
run: bundle exec raider-reporter exec -- bundle exec cucumber features/ --format pretty
|
|
50
50
|
<%- else -%>
|
|
51
|
-
run: bundle exec rspec spec/ --format documentation
|
|
51
|
+
run: bundle exec raider-reporter exec -- bundle exec rspec spec/ --format documentation
|
|
52
52
|
<%- end -%>
|
|
53
53
|
env:
|
|
54
54
|
APP_PATH: ${{ github.workspace }}/apps/RaiderTestApp.app
|
|
55
55
|
RAIDER_TOKEN: ${{ secrets.RAIDER_TOKEN }}
|
|
56
56
|
RAIDER_ENDPOINT: ${{ vars.RAIDER_ENDPOINT }}
|
|
57
|
+
RAIDER_QUARANTINE: "1"
|
|
57
58
|
|
|
58
59
|
- name: Upload Raider results
|
|
59
60
|
uses: actions/upload-artifact@v4
|
|
@@ -105,14 +106,15 @@ jobs:
|
|
|
105
106
|
profile: pixel_8
|
|
106
107
|
script: |
|
|
107
108
|
<%- if cucumber? -%>
|
|
108
|
-
bundle exec cucumber features/ --format pretty
|
|
109
|
+
bundle exec raider-reporter exec -- bundle exec cucumber features/ --format pretty
|
|
109
110
|
<%- else -%>
|
|
110
|
-
bundle exec rspec spec/ --format documentation
|
|
111
|
+
bundle exec raider-reporter exec -- bundle exec rspec spec/ --format documentation
|
|
111
112
|
<%- end -%>
|
|
112
113
|
env:
|
|
113
114
|
APP_PATH: ${{ github.workspace }}/apps/app-release.apk
|
|
114
115
|
RAIDER_TOKEN: ${{ secrets.RAIDER_TOKEN }}
|
|
115
116
|
RAIDER_ENDPOINT: ${{ vars.RAIDER_ENDPOINT }}
|
|
117
|
+
RAIDER_QUARANTINE: "1"
|
|
116
118
|
|
|
117
119
|
- name: Upload Raider results
|
|
118
120
|
uses: actions/upload-artifact@v4
|
|
@@ -108,6 +108,14 @@ Without `RAIDER_TOKEN`, nothing is uploaded and the suite output is unchanged. F
|
|
|
108
108
|
report and to Raider. See the [raider_reporter README](https://github.com/RaiderHQ/raider_reporter) for details.
|
|
109
109
|
<%- end -%>
|
|
110
110
|
|
|
111
|
+
<%- unless azure? && mobile? -%>
|
|
112
|
+
### Quarantine
|
|
113
|
+
|
|
114
|
+
CI runs the suite through `bundle exec raider-reporter exec -- …` with `RAIDER_QUARANTINE` set. Tests quarantined in
|
|
115
|
+
Raider still run and are still reported (as `quarantined`), and a build whose only failures are quarantined stays green.
|
|
116
|
+
Local runs keep quarantine off. To turn it off in CI, remove `RAIDER_QUARANTINE` from the pipeline.
|
|
117
|
+
|
|
118
|
+
<%- end -%>
|
|
111
119
|
<%- if azure? && mobile? -%>
|
|
112
120
|
## CI
|
|
113
121
|
|
data/lib/version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.
|
|
1
|
+
3.8.0
|
|
@@ -27,9 +27,9 @@ describe 'Azure Pipelines content' do
|
|
|
27
27
|
let(:yml) { YAML.safe_load(raw) }
|
|
28
28
|
let(:run_command) do
|
|
29
29
|
if framework == 'cucumber'
|
|
30
|
-
'bundle exec cucumber features/ --format pretty'
|
|
30
|
+
'bundle exec raider-reporter exec -- bundle exec cucumber features/ --format pretty'
|
|
31
31
|
else
|
|
32
|
-
'bundle exec rspec spec/ --format documentation'
|
|
32
|
+
'bundle exec raider-reporter exec -- bundle exec rspec spec/ --format documentation'
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
|
|
@@ -49,7 +49,8 @@ describe 'Azure Pipelines content' do
|
|
|
49
49
|
|
|
50
50
|
it 'passes exactly the Raider settings to the test step' do
|
|
51
51
|
step = yml['jobs'][0]['steps'].find { |s| s['script'] == run_command }
|
|
52
|
-
expect(step['env']).to eq('RAIDER_TOKEN' => '$(RAIDER_TOKEN)', 'RAIDER_ENDPOINT' => '$(RAIDER_ENDPOINT)'
|
|
52
|
+
expect(step['env']).to eq('RAIDER_TOKEN' => '$(RAIDER_TOKEN)', 'RAIDER_ENDPOINT' => '$(RAIDER_ENDPOINT)',
|
|
53
|
+
'RAIDER_QUARANTINE' => 1)
|
|
53
54
|
expect(yml['variables']['HEADLESS']).to eq('true')
|
|
54
55
|
end
|
|
55
56
|
|
|
@@ -75,7 +75,18 @@ describe 'CI pipeline content' do
|
|
|
75
75
|
expect(test_steps).not_to be_empty
|
|
76
76
|
test_steps.each do |step|
|
|
77
77
|
expect(step['env']).to include('RAIDER_TOKEN' => '${{ secrets.RAIDER_TOKEN }}',
|
|
78
|
-
'RAIDER_ENDPOINT' => '${{ vars.RAIDER_ENDPOINT }}'
|
|
78
|
+
'RAIDER_ENDPOINT' => '${{ vars.RAIDER_ENDPOINT }}',
|
|
79
|
+
'RAIDER_QUARANTINE' => '1')
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it 'runs every test command through raider-reporter exec' do
|
|
84
|
+
expect(test_steps).not_to be_empty
|
|
85
|
+
test_steps.each do |step|
|
|
86
|
+
command = step['run'] || step['with']['script']
|
|
87
|
+
wrapped = command.scan(/raider-reporter exec -- bundle exec #{runner}\b/).size
|
|
88
|
+
expect(wrapped).to be_positive
|
|
89
|
+
expect(command.scan(/bundle exec #{runner}\b/).size).to eq(wrapped)
|
|
79
90
|
end
|
|
80
91
|
end
|
|
81
92
|
|
|
@@ -127,7 +127,7 @@ describe 'Gemfile content' do
|
|
|
127
127
|
let(:gemfile) { read_generated("#{FrameworkIndex::RSPEC}_#{automation}", 'Gemfile') }
|
|
128
128
|
|
|
129
129
|
it 'includes raider_reporter' do
|
|
130
|
-
expect(gemfile).to include("gem 'raider_reporter', '~> 0.
|
|
130
|
+
expect(gemfile).to include("gem 'raider_reporter', '~> 0.8'")
|
|
131
131
|
end
|
|
132
132
|
|
|
133
133
|
it 'has no allure gems' do
|
|
@@ -143,7 +143,7 @@ describe 'Gemfile content' do
|
|
|
143
143
|
let(:gemfile) { read_generated("#{FrameworkIndex::CUCUMBER}_#{automation}", 'Gemfile') }
|
|
144
144
|
|
|
145
145
|
it 'includes raider_reporter' do
|
|
146
|
-
expect(gemfile).to include("gem 'raider_reporter', '~> 0.
|
|
146
|
+
expect(gemfile).to include("gem 'raider_reporter', '~> 0.8'")
|
|
147
147
|
end
|
|
148
148
|
|
|
149
149
|
it 'drops allure-cucumber' do
|
|
@@ -16,6 +16,10 @@ describe 'Generated Readme content' do
|
|
|
16
16
|
'https://github.com/RaiderHQ/raider_reporter')
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
+
it 'explains quarantine in CI' do
|
|
20
|
+
expect(readme).to include('### Quarantine', 'RAIDER_QUARANTINE', 'raider-reporter exec')
|
|
21
|
+
end
|
|
22
|
+
|
|
19
23
|
it 'points to the local HTML report' do
|
|
20
24
|
expect(readme).to include('raider-results/index.html')
|
|
21
25
|
expect(readme).not_to match(/allure/i)
|
|
@@ -34,6 +38,10 @@ describe 'Generated Readme content' do
|
|
|
34
38
|
'https://github.com/RaiderHQ/raider_reporter')
|
|
35
39
|
end
|
|
36
40
|
|
|
41
|
+
it 'explains quarantine in CI' do
|
|
42
|
+
expect(readme).to include('### Quarantine', 'RAIDER_QUARANTINE', 'raider-reporter exec')
|
|
43
|
+
end
|
|
44
|
+
|
|
37
45
|
it 'does not mention Allure' do
|
|
38
46
|
expect(readme).not_to match(/allure/i)
|
|
39
47
|
end
|
|
@@ -18,8 +18,8 @@ describe 'RSpec projects without Allure' do
|
|
|
18
18
|
expect(File).not_to exist(File.join(project_name, 'allure-results'))
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
it 'pins raider_reporter 0.
|
|
22
|
-
expect(read_generated(project_name, 'Gemfile')).to include("gem 'raider_reporter', '~> 0.
|
|
21
|
+
it 'pins raider_reporter 0.8' do
|
|
22
|
+
expect(read_generated(project_name, 'Gemfile')).to include("gem 'raider_reporter', '~> 0.8'")
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
end
|
|
@@ -104,10 +104,10 @@ describe 'End-to-End Project Generation and Execution' do
|
|
|
104
104
|
expect(bundle_install(project)).to be true
|
|
105
105
|
end
|
|
106
106
|
|
|
107
|
-
it 'resolves raider_reporter 0.
|
|
107
|
+
it 'resolves raider_reporter 0.8 from RubyGems and ships the raider-reporter executable', :aggregate_failures do
|
|
108
108
|
skip 'Bundle install failed' unless bundle_install(project)
|
|
109
109
|
|
|
110
|
-
expect(File.read(File.join(project, 'Gemfile.lock'))).to match(/^ raider_reporter \(0\.
|
|
110
|
+
expect(File.read(File.join(project, 'Gemfile.lock'))).to match(/^ raider_reporter \(0\.8\.\d+\)$/)
|
|
111
111
|
result = run_in_project(project, 'bundle exec raider-reporter --help', timeout: 60)
|
|
112
112
|
expect(result[:exit_code]).to eq(0), "STDOUT: #{result[:stdout]}\nSTDERR: #{result[:stderr]}"
|
|
113
113
|
expect(result[:stdout] + result[:stderr]).to include('raider-reporter comment')
|
|
@@ -163,11 +163,11 @@ describe 'End-to-End Project Generation and Execution' do
|
|
|
163
163
|
"STDERR: #{result[:stderr]}"
|
|
164
164
|
end
|
|
165
165
|
|
|
166
|
-
it 'resolves raider_reporter 0.
|
|
166
|
+
it 'resolves raider_reporter 0.8 from RubyGems and requires its Cucumber plugin', :aggregate_failures do
|
|
167
167
|
skip 'Bundle install failed' unless bundle_install(project)
|
|
168
168
|
|
|
169
169
|
lockfile = File.read(File.join(project, 'Gemfile.lock'))
|
|
170
|
-
expect(lockfile).to match(/^ raider_reporter \(0\.
|
|
170
|
+
expect(lockfile).to match(/^ raider_reporter \(0\.8\.\d+\)$/)
|
|
171
171
|
expect(File.read(File.join(project, 'features/support/env.rb'))).to include("require 'raider_reporter/cucumber'")
|
|
172
172
|
end
|
|
173
173
|
|
|
@@ -310,12 +310,12 @@ describe 'End-to-End Project Generation and Execution' do
|
|
|
310
310
|
describe 'Selenium + RSpec' do
|
|
311
311
|
let(:project) { generate_azure_project('rspec') }
|
|
312
312
|
|
|
313
|
-
it 'ships azure-pipelines.yml and resolves raider_reporter 0.
|
|
313
|
+
it 'ships azure-pipelines.yml and resolves raider_reporter 0.8', :aggregate_failures do
|
|
314
314
|
expect(File).to exist(File.join(project, 'azure-pipelines.yml'))
|
|
315
315
|
expect(File).not_to exist(File.join(project, '.github/workflows'))
|
|
316
316
|
skip 'Bundle install failed' unless bundle_install(project)
|
|
317
317
|
|
|
318
|
-
expect(File.read(File.join(project, 'Gemfile.lock'))).to match(/^ raider_reporter \(0\.
|
|
318
|
+
expect(File.read(File.join(project, 'Gemfile.lock'))).to match(/^ raider_reporter \(0\.8\.\d+\)$/)
|
|
319
319
|
end
|
|
320
320
|
|
|
321
321
|
it 'records provider azure_pipelines and an azure_pipelines: build key in run.json', :aggregate_failures, :slow do
|
|
@@ -332,11 +332,11 @@ describe 'End-to-End Project Generation and Execution' do
|
|
|
332
332
|
describe 'Selenium + Cucumber' do
|
|
333
333
|
let(:project) { generate_azure_project('cucumber') }
|
|
334
334
|
|
|
335
|
-
it 'ships azure-pipelines.yml and resolves raider_reporter 0.
|
|
335
|
+
it 'ships azure-pipelines.yml and resolves raider_reporter 0.8', :aggregate_failures do
|
|
336
336
|
expect(File).to exist(File.join(project, 'azure-pipelines.yml'))
|
|
337
337
|
skip 'Bundle install failed' unless bundle_install(project)
|
|
338
338
|
|
|
339
|
-
expect(File.read(File.join(project, 'Gemfile.lock'))).to match(/^ raider_reporter \(0\.
|
|
339
|
+
expect(File.read(File.join(project, 'Gemfile.lock'))).to match(/^ raider_reporter \(0\.8\.\d+\)$/)
|
|
340
340
|
end
|
|
341
341
|
|
|
342
342
|
it 'records provider azure_pipelines and an azure_pipelines: build key in run.json', :aggregate_failures, :slow do
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ruby_raider
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.8.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Agustin Pequeno
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 2026-10-24 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: rake
|
|
@@ -354,7 +354,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
354
354
|
- !ruby/object:Gem::Version
|
|
355
355
|
version: '0'
|
|
356
356
|
requirements: []
|
|
357
|
-
rubygems_version:
|
|
357
|
+
rubygems_version: 3.6.2
|
|
358
358
|
specification_version: 4
|
|
359
359
|
summary: A gem to make setup and start of UI automation projects easier
|
|
360
360
|
test_files: []
|