ruby_raider 0.3.3 → 0.3.6
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/.github/workflows/reek.yml +23 -0
- data/.github/workflows/rspec.yml +27 -0
- data/.github/workflows/rubocop.yml +28 -0
- data/.rubocop.yml +3 -1
- data/README.md +37 -20
- data/Rakefile +11 -7
- data/lib/commands/scaffolding_commands.rb +116 -0
- data/lib/commands/utility_commands.rb +67 -0
- data/lib/generators/menu_generator.rb +67 -52
- data/lib/generators/templates/common/read_me.tt +13 -10
- data/lib/generators/templates/cucumber/env.tt +3 -3
- data/lib/generators/templates/cucumber/partials/selenium_appium_env.tt +6 -4
- data/lib/generators/templates/cucumber/partials/watir_env.tt +6 -5
- data/lib/generators/templates/helpers/allure_helper.tt +1 -1
- data/lib/generators/templates/helpers/browser_helper.tt +5 -5
- data/lib/generators/templates/helpers/driver_helper.tt +2 -3
- data/lib/generators/templates/helpers/partials/driver_and_options.tt +25 -0
- data/lib/generators/templates/helpers/partials/quit_driver.tt +3 -3
- data/lib/generators/templates/helpers/partials/screenshot.tt +3 -3
- data/lib/generators/templates/helpers/partials/select_driver.tt +3 -3
- data/lib/generators/templates/helpers/spec_helper.tt +2 -2
- data/lib/ruby_raider.rb +4 -119
- data/lib/scaffolding/scaffolding.rb +11 -2
- data/lib/utilities/utilities.rb +10 -0
- data/ruby_raider.gemspec +1 -1
- data/spec/scaffolding_spec.rb +234 -0
- metadata +9 -4
- data/lib/generators/templates/helpers/partials/new_driver.tt +0 -12
- data/spec/ruby_raider_spec.rb +0 -213
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa0c6d643c3cde2157842b7627cd91377aab6e76d47f6f4136c14a6999eacedf
|
4
|
+
data.tar.gz: 94105992da2846eb8585d10d8b2c471418b6c8544ef2db948ea3a62c950006d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ab37f89743262fa6fddfa3a72791e118bfb46f01596177cc488f9900207835ddf4478dd16f53d017ca58d1e11a72f7e4431a64035f25c8958949e1d2934bef9
|
7
|
+
data.tar.gz: ea715071ad366384139705627bf4ad0b5bee9665d3ee3dc4853debc735acea6ebc1ae32860188cf235bb62da47463bb97ac3c17d2509a99f76067fe4500270c5
|
@@ -0,0 +1,23 @@
|
|
1
|
+
name: Reek Code Review
|
2
|
+
|
3
|
+
on: [pull_request]
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
reek:
|
7
|
+
name: runner / reek
|
8
|
+
runs-on: ubuntu-latest
|
9
|
+
steps:
|
10
|
+
- name: Set up Ruby
|
11
|
+
uses: ruby/setup-ruby@f20f1eae726df008313d2e0d78c5e602562a1bcf
|
12
|
+
with:
|
13
|
+
ruby-version: head
|
14
|
+
|
15
|
+
- name: Check out code
|
16
|
+
uses: actions/checkout@v1
|
17
|
+
|
18
|
+
- name: reek
|
19
|
+
uses: reviewdog/action-reek@v1
|
20
|
+
with:
|
21
|
+
reek_version: gemfile
|
22
|
+
reporter: github-pr-review # Default is github-pr-check
|
23
|
+
fail_on_error: true
|
@@ -0,0 +1,27 @@
|
|
1
|
+
name: Rspec Tests
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ "*" ]
|
6
|
+
pull_request:
|
7
|
+
branches: [ "*" ]
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
build:
|
11
|
+
name: CI
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
|
14
|
+
steps:
|
15
|
+
- name: Set up Ruby
|
16
|
+
uses: ruby/setup-ruby@f20f1eae726df008313d2e0d78c5e602562a1bcf
|
17
|
+
with:
|
18
|
+
ruby-version: head
|
19
|
+
|
20
|
+
- name: Checkout repository
|
21
|
+
uses: actions/checkout@v3
|
22
|
+
|
23
|
+
- name: Install gems
|
24
|
+
run: bundle install
|
25
|
+
|
26
|
+
- name: Build and test with rspec
|
27
|
+
run: bundle exec rspec spec
|
@@ -0,0 +1,28 @@
|
|
1
|
+
name: Rubocop
|
2
|
+
|
3
|
+
on: [pull_request]
|
4
|
+
|
5
|
+
permissions:
|
6
|
+
contents: read
|
7
|
+
pull-requests: write
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
rubocop:
|
11
|
+
name: runner / rubocop
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
steps:
|
14
|
+
- name: Set up Ruby
|
15
|
+
uses: ruby/setup-ruby@f20f1eae726df008313d2e0d78c5e602562a1bcf
|
16
|
+
with:
|
17
|
+
ruby-version: head
|
18
|
+
|
19
|
+
- name: Check out code
|
20
|
+
uses: actions/checkout@v1
|
21
|
+
|
22
|
+
- name: rubocop
|
23
|
+
uses: reviewdog/action-rubocop@v2
|
24
|
+
with:
|
25
|
+
rubocop_version: gemfile
|
26
|
+
rubocop_extensions: rubocop-rspec:gemfile
|
27
|
+
reporter: github-pr-review # Default is github-pr-check
|
28
|
+
fail_on_error: true
|
data/.rubocop.yml
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
# Ruby Raider
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
[](https://badge.fury.io/rb/ruby_raider)
|
4
|
+
[](https://github.com/RubyRaider/ruby_raider/actions/workflows/rspec.yml)
|
5
|
+
|
6
|
+
This is a gem to make setup and start of UI automation projects easier.
|
7
|
+
|
8
|
+
You can find more information and updates on releases in : [https://ruby-raider.com/](https://ruby-raider.com/)
|
5
9
|
|
6
10
|
Just do:
|
7
11
|
|
@@ -11,39 +15,52 @@ then do:
|
|
11
15
|
|
12
16
|
**raider new [name_of_project]**
|
13
17
|
|
14
|
-
and you will have a new project in the folder you are in
|
18
|
+
and you will have a new project in the folder you are in.
|
19
|
+
|
20
|
+
Currently we support:
|
21
|
+
|
22
|
+
* Generating a framework with Cucumber and Selenium
|
23
|
+
|
24
|
+
* Generating a framework with Rspec and Selenium
|
15
25
|
|
16
|
-
|
26
|
+
* Generating a framework with Cucumber and Watir
|
17
27
|
|
18
|
-
*
|
19
|
-
* Gerating a Watir with both Cucumber and Rspec framework
|
20
|
-
* Generating an Appium project with Rspec and Cucumber on IOS
|
28
|
+
* Generating a framework with Rspec and Watir
|
21
29
|
|
22
|
-
|
30
|
+
* Generating a framework with Rspec and Appium for IOS
|
23
31
|
|
24
|
-
|
32
|
+
* Generating a framework with Cucumber and Appium for IOS
|
33
|
+
|
34
|
+
In order to run the Appium tests, download the example [app](https://github.com/cloudgrey-io/the-app/releases/tag/v1.10.0).
|
35
|
+
|
36
|
+
This works in all the platforms (Tested on Mac OS, Linux and Windows).
|
25
37
|
|
26
38
|
**Ruby raider provides the following list of commands**
|
27
39
|
```
|
28
|
-
|
40
|
+
Commands:
|
41
|
+
raider browser [BROWSER] # Sets the default browser for a project
|
42
|
+
|
43
|
+
raider browser_options [OPTIONS] # Sets the browser options for the project
|
29
44
|
|
30
|
-
raider feature [FEATURE_NAME]
|
45
|
+
raider feature [FEATURE_NAME] # Creates a new feature
|
46
|
+
|
47
|
+
raider help [COMMAND] # Describes available commands or one specific command
|
31
48
|
|
32
|
-
raider
|
49
|
+
raider helper [HELPER_NAME] # Creates a new helper
|
33
50
|
|
34
|
-
raider
|
51
|
+
raider new [PROJECT_NAME] # Creates a new framework based on settings picked
|
35
52
|
|
36
|
-
raider
|
53
|
+
raider page [PAGE_NAME] # Creates a new page object
|
37
54
|
|
38
|
-
raider
|
55
|
+
raider path [PATH] # Sets the default path for scaffolding
|
39
56
|
|
40
|
-
raider
|
57
|
+
raider raid # Runs all the tests in a project
|
41
58
|
|
42
|
-
raider
|
59
|
+
raider scaffold [SCAFFOLD_NAME] # Generates everything needed to start automating
|
43
60
|
|
44
|
-
raider spec [SPEC_NAME]
|
61
|
+
raider spec [SPEC_NAME] # Creates a new spec
|
45
62
|
|
46
|
-
raider url [URL]
|
63
|
+
raider url [URL] # Sets the default url for a project
|
47
64
|
```
|
48
65
|
|
49
66
|
It's possible to add the option --path or -p if you want to specify where to create your features, pages, helpers and
|
@@ -57,4 +74,4 @@ raider path [PATH_NAME] --spec or -s
|
|
57
74
|
raider path [PATH_NAME] --helper or -h
|
58
75
|
```
|
59
76
|
|
60
|
-
If you don't specify an option path will assume you want to change the default path for pages
|
77
|
+
If you don't specify an option, path will assume you want to change the default path for pages.
|
data/Rakefile
CHANGED
@@ -1,15 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'lib/ruby_raider'
|
4
|
+
require_relative 'lib/commands/scaffolding_commands'
|
4
5
|
|
5
|
-
desc '
|
6
|
-
task :new
|
6
|
+
desc 'Creates a new test project'
|
7
|
+
task :new do
|
7
8
|
RubyRaider.start
|
8
|
-
RubyRaider.new(args.name)
|
9
9
|
end
|
10
10
|
|
11
|
-
desc '
|
12
|
-
task :page, [:name] do |_t, args|
|
13
|
-
|
14
|
-
|
11
|
+
desc 'Creates a page'
|
12
|
+
task :page, [:name, :path] do |_t, args|
|
13
|
+
ScaffoldingCommands.new.invoke(:page, nil, %W[:#{args.name} --path #{args.path}])
|
14
|
+
end
|
15
|
+
|
16
|
+
desc 'Sets a browser'
|
17
|
+
task :browser, [:type, :options] do |_t, args|
|
18
|
+
ScaffoldingCommands.new.invoke(:browser, nil, %W[:#{args.type} --opts #{args.options}])
|
15
19
|
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../generators/menu_generator'
|
4
|
+
require_relative '../scaffolding/scaffolding'
|
5
|
+
require_relative '../commands/utility_commands'
|
6
|
+
|
7
|
+
class ScaffoldingCommands < UtilityCommands
|
8
|
+
desc 'new [PROJECT_NAME]', 'Creates a new framework based on settings picked'
|
9
|
+
|
10
|
+
def new(project_name)
|
11
|
+
MenuGenerator.new(project_name).generate_choice_menu
|
12
|
+
end
|
13
|
+
|
14
|
+
map '-n' => 'new'
|
15
|
+
|
16
|
+
desc 'page [PAGE_NAME]', 'Creates a new page object'
|
17
|
+
option :path,
|
18
|
+
type: :string, required: false, desc: 'The path where your page will be created', aliases: '-p'
|
19
|
+
option :delete,
|
20
|
+
type: :boolean, required: false, desc: 'This will delete the selected page', aliases: '-d'
|
21
|
+
|
22
|
+
def page(name)
|
23
|
+
path = options[:path] || load_config_path('page')
|
24
|
+
if options[:delete]
|
25
|
+
Scaffolding.new([name, path]).delete_class
|
26
|
+
else
|
27
|
+
Scaffolding.new([name, path]).generate_class
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
map '-pg' => 'page'
|
32
|
+
|
33
|
+
desc 'feature [FEATURE_NAME]', 'Creates a new feature'
|
34
|
+
option :path,
|
35
|
+
type: :string, required: false, desc: 'The path where your feature will be created', aliases: '-p'
|
36
|
+
option :delete,
|
37
|
+
type: :boolean, required: false, desc: 'This will delete the selected feature', aliases: '-d'
|
38
|
+
|
39
|
+
def feature(name)
|
40
|
+
path = options[:path] || load_config_path('feature')
|
41
|
+
if options[:delete]
|
42
|
+
Scaffolding.new([name, path]).delete_feature
|
43
|
+
else
|
44
|
+
Scaffolding.new([name, path]).generate_feature
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
map '-f' => 'feature'
|
49
|
+
|
50
|
+
desc 'spec [SPEC_NAME]', 'Creates a new spec'
|
51
|
+
option :path,
|
52
|
+
type: :string, required: false, desc: 'The path where your spec will be created', aliases: '-p'
|
53
|
+
option :delete,
|
54
|
+
type: :boolean, required: false, desc: 'This will delete the selected spec', aliases: '-d'
|
55
|
+
|
56
|
+
def spec(name)
|
57
|
+
path = options[:path] || load_config_path('spec')
|
58
|
+
if options[:delete]
|
59
|
+
Scaffolding.new([name, path]).delete_spec
|
60
|
+
else
|
61
|
+
Scaffolding.new([name, path]).generate_spec
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
map '-s' => 'spec'
|
66
|
+
|
67
|
+
desc 'helper [HELPER_NAME]', 'Creates a new helper'
|
68
|
+
option :path,
|
69
|
+
type: :string, required: false, desc: 'The path where your helper will be created', aliases: '-p'
|
70
|
+
option :delete,
|
71
|
+
type: :boolean, required: false, desc: 'This will delete the selected helper', aliases: '-d'
|
72
|
+
|
73
|
+
def helper(name)
|
74
|
+
path = options[:path] || load_config_path('helper')
|
75
|
+
if options[:delete]
|
76
|
+
Scaffolding.new([name, path]).delete_helper
|
77
|
+
else
|
78
|
+
Scaffolding.new([name, path]).generate_helper
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
map '-h' => 'helper'
|
83
|
+
|
84
|
+
desc 'scaffold [SCAFFOLD_NAME]', 'It generates everything needed to start automating'
|
85
|
+
|
86
|
+
def scaffold(name)
|
87
|
+
if Pathname.new('spec').exist? && !Pathname.new('features').exist?
|
88
|
+
Scaffolding.new([name, load_config_path('spec')]).generate_spec
|
89
|
+
elsif Pathname.new('features').exist?
|
90
|
+
Scaffolding.new([name, load_config_path('feature')]).generate_feature
|
91
|
+
end
|
92
|
+
Scaffolding.new([name, load_config_path('page')]).generate_class
|
93
|
+
end
|
94
|
+
|
95
|
+
map '-sf' => 'scaffold'
|
96
|
+
|
97
|
+
desc 'config', 'Creates configuration file'
|
98
|
+
option :delete,
|
99
|
+
type: :boolean, required: false, desc: 'This will delete the config file', aliases: '-d'
|
100
|
+
|
101
|
+
def config
|
102
|
+
if options[:delete]
|
103
|
+
Scaffolding.new.delete_config
|
104
|
+
else
|
105
|
+
Scaffolding.new.generate_config
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
map '-c' => 'config'
|
110
|
+
|
111
|
+
no_commands do
|
112
|
+
def load_config_path(type)
|
113
|
+
YAML.load_file('config/config.yml')["#{type}_path"] if YAML.load_file('config/config.yml')
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'thor'
|
4
|
+
require_relative '../utilities/utilities'
|
5
|
+
|
6
|
+
class UtilityCommands < Thor
|
7
|
+
desc 'path [PATH]', 'Sets the default path for scaffolding'
|
8
|
+
option :feature,
|
9
|
+
type: :boolean, required: false, desc: 'The default path for your features', aliases: '-f'
|
10
|
+
option :helper,
|
11
|
+
type: :boolean, required: false, desc: 'The default path for your helpers', aliases: '-h'
|
12
|
+
option :spec,
|
13
|
+
type: :boolean, required: false, desc: 'The default path for your specs', aliases: '-s'
|
14
|
+
|
15
|
+
def path(default_path)
|
16
|
+
type = options.empty? ? 'page' : options.keys.first
|
17
|
+
Utilities.new.send("#{type}_path=", default_path)
|
18
|
+
end
|
19
|
+
|
20
|
+
map '-p' => 'path'
|
21
|
+
|
22
|
+
desc 'url [URL]', 'Sets the default url for a project'
|
23
|
+
|
24
|
+
def url(default_url)
|
25
|
+
Utilities.new.url = default_url
|
26
|
+
end
|
27
|
+
|
28
|
+
map '-u' => 'url'
|
29
|
+
|
30
|
+
desc 'browser [BROWSER]', 'Sets the default browser for a project'
|
31
|
+
option :opts,
|
32
|
+
type: :array, required: false, desc: 'The options you want your browser to run with', aliases: '-o'
|
33
|
+
option :delete,
|
34
|
+
type: :boolean, required: false, desc: 'This will delete your browser options', aliases: '-d'
|
35
|
+
|
36
|
+
def browser(default_browser = nil)
|
37
|
+
Utilities.new.browser = default_browser if default_browser
|
38
|
+
browser_options(options[:opts]) if options[:opts] || options[:delete]
|
39
|
+
end
|
40
|
+
|
41
|
+
map '-b' => 'browser'
|
42
|
+
|
43
|
+
desc 'browser_options [OPTIONS]', 'Sets the browser options for the project'
|
44
|
+
option :delete,
|
45
|
+
type: :boolean, required: false, desc: 'This will delete your browser options', aliases: '-d'
|
46
|
+
|
47
|
+
def browser_options(*opts)
|
48
|
+
Utilities.new.browser_options = opts unless opts.empty?
|
49
|
+
Utilities.new.delete_browser_options if options[:delete]
|
50
|
+
end
|
51
|
+
|
52
|
+
map '-bo' => 'browser_options'
|
53
|
+
|
54
|
+
desc 'raid', 'It runs all the tests in a project'
|
55
|
+
|
56
|
+
def raid
|
57
|
+
Utilities.new.run
|
58
|
+
end
|
59
|
+
|
60
|
+
map '-r' => 'raid'
|
61
|
+
|
62
|
+
desc 'config', 'Creates a new config file'
|
63
|
+
option :path,
|
64
|
+
type: :string, required: false, desc: 'The path where your config file will be created', aliases: '-p'
|
65
|
+
option :delete,
|
66
|
+
type: :boolean, required: false, desc: 'This will delete the selected config file', aliases: '-d'
|
67
|
+
end
|
@@ -8,64 +8,79 @@ require_relative 'helper_generator'
|
|
8
8
|
require_relative 'rspec_generator'
|
9
9
|
|
10
10
|
class MenuGenerator
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
11
|
+
attr_reader :cli, :name, :generators
|
12
|
+
|
13
|
+
def initialize(project_name)
|
14
|
+
@cli = HighLine.new
|
15
|
+
@name = project_name
|
16
|
+
@generators = %w[Automation Common Helpers]
|
17
|
+
end
|
18
|
+
|
19
|
+
def generate_choice_menu
|
20
|
+
@cli.choose do |menu|
|
21
|
+
menu.prompt = 'Please select your automation framework'
|
22
|
+
menu.choice('Selenium') { choose_test_framework('selenium') }
|
23
|
+
menu.choice('Watir') { choose_test_framework('watir') }
|
24
|
+
menu.choice('Appium') { choose_test_framework('appium') }
|
25
|
+
menu.choice('Quit') { exit }
|
21
26
|
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def choose_test_framework(automation)
|
30
|
+
system('clear') || system('cls')
|
31
|
+
sleep 0.3
|
32
|
+
automation = automation == 'appium' ? choose_mobile_platform : automation
|
33
|
+
select_test_framework(automation)
|
34
|
+
end
|
35
|
+
|
36
|
+
def set_framework(automation, framework)
|
37
|
+
add_generator framework.capitalize
|
38
|
+
generators.each { |generator| invoke_generator(automation, framework, generator) }
|
39
|
+
system "cd #{name} && gem install bundler && bundle install"
|
40
|
+
end
|
22
41
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
menu.choice('Rspec') do
|
31
|
-
framework = 'rspec'
|
32
|
-
set_framework(automation, framework, project_name)
|
33
|
-
end
|
34
|
-
menu.choice('Cucumber') do
|
35
|
-
framework = 'cucumber'
|
36
|
-
set_framework(automation, framework, project_name)
|
37
|
-
end
|
38
|
-
menu.choice('Quit') { exit }
|
39
|
-
end
|
40
|
-
@cli.say("You have chosen to use #{framework} with #{automation}")
|
42
|
+
def choose_mobile_platform
|
43
|
+
@cli.choose do |menu|
|
44
|
+
menu.prompt = 'Please select your mobile platform'
|
45
|
+
menu.choice('iOS') { 'appium_ios' }
|
46
|
+
error_handling(menu, 'Android')
|
47
|
+
error_handling(menu, 'Cross Platform')
|
48
|
+
menu.choice('Quit') { exit }
|
41
49
|
end
|
50
|
+
end
|
51
|
+
|
52
|
+
protected
|
42
53
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
54
|
+
def add_generator(*opts)
|
55
|
+
opts.each { |opt| @generators.push opt }
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
def framework_choice(invoker, framework, automation_type)
|
61
|
+
invoker.choice(framework) do
|
62
|
+
set_framework(automation_type, framework.downcase)
|
63
|
+
@cli.say("You have chosen to use #{framework} with #{automation_type}")
|
53
64
|
end
|
65
|
+
end
|
54
66
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
menu.choice('Android') do
|
60
|
-
pp 'Android appium is coming soon. Thank you for the interest'
|
61
|
-
exit
|
62
|
-
end
|
63
|
-
menu.choice('Cross Platform') do
|
64
|
-
pp 'Cross platform appium is coming soon. Thank you for the interest'
|
65
|
-
exit
|
66
|
-
end
|
67
|
-
menu.choice('Quit') { exit }
|
68
|
-
end
|
67
|
+
def error_handling(invoker, platform)
|
68
|
+
invoker.choice(platform) do
|
69
|
+
pp "#{platform} appium is coming soon. Thank you for the interest"
|
70
|
+
exit
|
69
71
|
end
|
70
72
|
end
|
73
|
+
|
74
|
+
def select_test_framework(automation)
|
75
|
+
@cli.choose do |menu|
|
76
|
+
menu.prompt = 'Please select your test framework'
|
77
|
+
framework_choice(menu, 'Rspec', automation)
|
78
|
+
framework_choice(menu, 'Cucumber', automation)
|
79
|
+
menu.choice('Quit') { exit }
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def invoke_generator(automation, framework, generator)
|
84
|
+
Object.const_get("#{generator}Generator").new([automation, framework, name]).invoke_all
|
85
|
+
end
|
71
86
|
end
|
@@ -25,25 +25,28 @@ This works in all the platforms (Tested on Mac OS, Linux and Windows)
|
|
25
25
|
|
26
26
|
**Ruby raider provides the following list of commands**
|
27
27
|
```
|
28
|
-
|
28
|
+
Commands:
|
29
|
+
raider browser [BROWSER] # Sets the default browser for a project
|
29
30
|
|
30
|
-
raider feature [FEATURE_NAME]
|
31
|
+
raider feature [FEATURE_NAME] # Creates a new feature
|
31
32
|
|
32
|
-
raider help [COMMAND]
|
33
|
+
raider help [COMMAND] # Describe available commands or one specific command
|
33
34
|
|
34
|
-
raider helper [HELPER_NAME]
|
35
|
+
raider helper [HELPER_NAME] # Creates a new helper
|
35
36
|
|
36
|
-
raider new [PROJECT_NAME]
|
37
|
+
raider new [PROJECT_NAME] # Creates a new framework based on settings picked
|
37
38
|
|
38
|
-
raider page [PAGE_NAME]
|
39
|
+
raider page [PAGE_NAME] # Creates a new page object
|
39
40
|
|
40
|
-
raider path [PATH]
|
41
|
+
raider path [PATH] # Sets the default path for scaffolding
|
41
42
|
|
42
|
-
raider raid
|
43
|
+
raider raid # It runs all the tests in a project
|
43
44
|
|
44
|
-
raider
|
45
|
+
raider scaffold [SCAFFOLD_NAME] # It generates everything needed to start automating
|
45
46
|
|
46
|
-
raider
|
47
|
+
raider spec [SPEC_NAME] # Creates a new spec
|
48
|
+
|
49
|
+
raider url [URL] # Sets the default url for a project
|
47
50
|
```
|
48
51
|
|
49
52
|
It's possible to add the option --path or -p if you want to specify where to create your features, pages, helpers and
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<% case automation
|
2
2
|
when 'selenium' -%>
|
3
|
-
<%= ERB.new(File.read(File.expand_path('./partials/selenium_appium_env.tt', __dir__))).result(binding)
|
3
|
+
<%= ERB.new(File.read(File.expand_path('./partials/selenium_appium_env.tt', __dir__))).result(binding) %>
|
4
4
|
<% when 'watir' -%>
|
5
|
-
<%= ERB.new(File.read(File.expand_path('./partials/watir_env.tt', __dir__))).result(binding)
|
5
|
+
<%= ERB.new(File.read(File.expand_path('./partials/watir_env.tt', __dir__))).result(binding) %>
|
6
6
|
<% else -%>
|
7
|
-
<%= ERB.new(File.read(File.expand_path('./partials/appium_env.tt', __dir__))).result(binding)
|
7
|
+
<%= ERB.new(File.read(File.expand_path('./partials/appium_env.tt', __dir__))).result(binding) %>
|
8
8
|
<% end -%>
|
@@ -1,11 +1,13 @@
|
|
1
1
|
require_relative '../../helpers/driver_helper'
|
2
2
|
|
3
|
+
include Raider::DriverHelper
|
4
|
+
|
3
5
|
Before do
|
4
|
-
|
6
|
+
new_driver
|
5
7
|
end
|
6
8
|
|
7
9
|
After do |scenario|
|
8
|
-
|
10
|
+
driver.save_screenshot("allure-results/screenshots/#{scenario.name}.png")
|
9
11
|
Raider::AllureHelper.add_screenshot(scenario.name)
|
10
|
-
|
11
|
-
end
|
12
|
+
driver.quit
|
13
|
+
end
|
@@ -1,12 +1,13 @@
|
|
1
1
|
require_relative '../../helpers/browser_helper'
|
2
2
|
|
3
|
+
include Raider::BrowserHelper
|
4
|
+
|
3
5
|
Before do
|
4
|
-
|
5
|
-
@browser = Raider::BrowserHelper.new_browser
|
6
|
+
new_browser
|
6
7
|
end
|
7
8
|
|
8
9
|
After do |scenario|
|
9
|
-
|
10
|
+
browser.screenshot.save("allure-results/screenshots/#{scenario.name}.png")
|
10
11
|
Raider::AllureHelper.add_screenshot(scenario.name)
|
11
|
-
|
12
|
-
end
|
12
|
+
browser.quit
|
13
|
+
end
|
@@ -16,7 +16,7 @@ module Raider
|
|
16
16
|
def add_screenshot(screenshot_name)
|
17
17
|
Allure.add_attachment(
|
18
18
|
name: name,
|
19
|
-
source:
|
19
|
+
source: File.open("allure-results/screenshots/#{screenshot_name}.png"),
|
20
20
|
type: Allure::ContentType::PNG,
|
21
21
|
test_case: true
|
22
22
|
)
|
@@ -7,13 +7,13 @@ require 'webdrivers'
|
|
7
7
|
|
8
8
|
module Raider
|
9
9
|
module BrowserHelper
|
10
|
-
class << self
|
11
10
|
attr_reader :browser
|
12
11
|
|
13
|
-
def new_browser(
|
14
|
-
|
15
|
-
|
12
|
+
def new_browser(*args)
|
13
|
+
@config = YAML.load_file('config/config.yml')
|
14
|
+
browser = @config['browser'].to_sym
|
15
|
+
args = args.empty? ? @config['browser_options'] : args
|
16
|
+
@browser = Watir::Browser.new(browser, options: { args: args })
|
16
17
|
end
|
17
|
-
end
|
18
18
|
end
|
19
19
|
end
|