ruby_raider 0.1.0 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 19b563b9d03ec039ab3ca024593006e1ae78767a1005f8c8f7fa3f3182dbf5dc
4
- data.tar.gz: 289e1c754007426dc2048e4eaa930ff96518057ec273f985b2a8c8273d044880
3
+ metadata.gz: a8d336aefa187b06c4299321d8a8a4b66235dfd14974845e70006632a6450899
4
+ data.tar.gz: 10228a61500f16e12590d59f84363b7b85d186e79bf1cfb2967b63ae7788d00b
5
5
  SHA512:
6
- metadata.gz: 9a91ae26cb2ca9425fd43a7c5a4e3c501d846c15d0e37794428df32c1702f6e2f3f35c7fcd7a5d0f164d8c5c818813060998bef64012d9f638794159409fcacc
7
- data.tar.gz: 59fe1a44eef08555bf878615406a861378cc6d373a90eeeecfd0996b9bfecfff5b730543d9eab7eb503097e0614bf4d9930671011205d65087a60d9522ee8447
6
+ metadata.gz: b87195baaa2521f54deddc1c6e62ebf04a52f13f6e8880c5071f5a6ea43e3282ee14b7d121a98eee8435eb2d584fa4a5190675771eab8061409d7aeffb3d1e54
7
+ data.tar.gz: '0425969814d7f081fcacb71b510d5b5aa79d195a53511ab1b3028be602212533ad74e0150b53091ebbc43e27161c535e68c819ce483ffa8d2e423a9c1f2e814a'
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ ruby_raider-*.gem
data/.idea/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ # Default ignored files
2
+ /shelf/
3
+ /workspace.xml
4
+ # Editor-based HTTP Client requests
5
+ /httpRequests/
6
+ # Datasource local storage ignored files
7
+ /dataSources/
8
+ /dataSources.local.xml
data/.idea/modules.xml ADDED
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/ruby_raider.iml" filepath="$PROJECT_DIR$/.idea/ruby_raider.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="RUBY_MODULE" version="4">
3
+ <component name="ModuleRunConfigurationManager">
4
+ <shared />
5
+ </component>
6
+ <component name="NewModuleRootManager">
7
+ <content url="file://$MODULE_DIR$">
8
+ <sourceFolder url="file://$MODULE_DIR$/features" isTestSource="true" />
9
+ <sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
10
+ <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
11
+ </content>
12
+ <orderEntry type="jdk" jdkName="RVM: ruby-3.0.0" jdkType="RUBY_SDK" />
13
+ <orderEntry type="sourceFolder" forTests="false" />
14
+ </component>
15
+ <component name="RakeTasksCache">
16
+ <option name="myRootTask">
17
+ <RakeTaskImpl id="rake" />
18
+ </option>
19
+ </component>
20
+ </module>
data/README.md ADDED
@@ -0,0 +1,9 @@
1
+ # ruby_raider
2
+ This is a gem to make setup and start of UI automation projects easier
3
+
4
+ In order to run ruby raider you need to run the executable,
5
+ after you can select the automation framework of your choice and the test framework of your choice.
6
+
7
+ Currently we only support Watir with Rspec.
8
+
9
+ We have only tested this in mac and linux, so it works in both platforms.
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require_relative 'lib/ruby_raider'
2
+
3
+ desc 'Create a new test projects'
4
+ task :new, [:name] do |_t, args|
5
+ RubyRaider.generate_project(args.name)
6
+ end
data/bin/raider ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/ruby_raider'
4
+
5
+ RubyRaider.generate_project ARGV[0]
@@ -0,0 +1,134 @@
1
+ require_relative 'file_generator'
2
+
3
+ module RubyRaider
4
+ class CommonFileGenerator < FileGenerator
5
+ def self.generate_common_files(name)
6
+ generate_file('config.yml', "#{name}/config", config_file)
7
+ generate_file('Rakefile', name.to_s, rake_file)
8
+ generate_file('Readme.md', name.to_s, readme_file)
9
+ end
10
+
11
+ def self.readme_file
12
+ rake_file = ERB.new <<~EOF
13
+ What is Raider?
14
+ ===========
15
+
16
+ Raider is a tool to make the setup and start of automation projects in ruby easier, with one command you are
17
+ ready to go
18
+
19
+ # Pre-requisites:
20
+
21
+ Install RVM:
22
+ https://rvm.io/rvm/install
23
+
24
+ # How to use the framework:
25
+
26
+ If you want to run all the tests from your terminal do:
27
+ *rspec spec/*
28
+
29
+ If you want to run all the tests in parallel do:
30
+ *parallel_rspec spec/*
31
+
32
+ # How are specs organized:
33
+
34
+ We use 'context' as the highest grouping level to indicate in which part of the application we are as an example:
35
+
36
+ *context 'On the login page'/*
37
+
38
+ We use 'describe' from the user perspective to describe an action that the user can or cannot take:
39
+
40
+ *describe 'A user can'/*
41
+
42
+ or
43
+
44
+ *describe 'A user cannot'/*
45
+
46
+ This saves us repetition and forces us into an structure
47
+
48
+ At last we use 'it' for the specific action the user can or cannot perform:
49
+
50
+ it 'login with right credentials'
51
+
52
+ If we group all of this together it will look like
53
+
54
+ ```ruby
55
+ context 'On the login page' do
56
+ describe 'A user can' do
57
+ it 'login with the right credentials' do
58
+ end
59
+ #{' '}
60
+ end
61
+ #{' '}
62
+ describe 'A user cannot' do
63
+ it 'login with the wrong credentials' do
64
+ end
65
+ end
66
+ end
67
+ ```
68
+ #{' '}
69
+ This is readed as 'On the login page a user can login with the right credentials' and 'On the login page a user cannot login with the wrong credentials'
70
+
71
+ # How pages are organized:
72
+
73
+ ```ruby#{' '}
74
+ require_relative '../abstract/base_page'
75
+
76
+ class MainPage < BasePage
77
+
78
+ using Raider::WatirHelper
79
+
80
+ def url(_page)
81
+ '/'
82
+ end
83
+
84
+ # Actions
85
+
86
+ def change_currency(currency)
87
+ currency_dropdown.select currency
88
+ end
89
+
90
+ # Validations
91
+
92
+ def validate_currency(currency)
93
+ expect(currency_dropdown.include?(currency)).to be true
94
+ end
95
+
96
+ private
97
+
98
+ # Elements
99
+
100
+ def currency_dropdown
101
+ browser.select(class: %w[dropdown-menu currency])
102
+ end
103
+ end
104
+ ```
105
+
106
+ Pages are organized in Actions (things a user can perform on the page), Validations (assertions), and Elements.
107
+ Each page has to have a url define, and each page is using the module WatirHelper to add methods on runtime to the Watir elements
108
+
109
+ EOF
110
+ rake_file.result(binding)
111
+ end
112
+
113
+ def self.config_file
114
+ config_file = ERB.new <<~EOF
115
+ browser: :chrome
116
+ EOF
117
+ config_file.result(binding)
118
+ end
119
+
120
+ def self.rake_file
121
+ rake_file = ERB.new <<~EOF
122
+ require 'yaml'
123
+
124
+ desc 'Selects browser for automation run'
125
+ task :select_browser, [:browser] do |_t, args|
126
+ config = YAML.load_file('config/config.yml')
127
+ config['browser'] = args.browser
128
+ File.write('config/config.yml', config.to_yaml)
129
+ end
130
+ EOF
131
+ rake_file.result(binding)
132
+ end
133
+ end
134
+ end
@@ -0,0 +1,9 @@
1
+ module RubyRaider
2
+ class FileGenerator
3
+ def self.generate_file(name, path, content)
4
+ file_path = "#{path}/#{name}"
5
+ File.new(file_path, 'w+')
6
+ File.write(file_path, content)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,163 @@
1
+ require_relative 'file_generator'
2
+
3
+ module RubyRaider
4
+ class HelpersFileGenerator < FileGenerator
5
+ def self.generate_helper_files(name)
6
+ generate_file('raider.rb', "#{name}/helpers", generate_raider_helper)
7
+ generate_file('allure_helper.rb', "#{name}/helpers", generate_allure_helper)
8
+ generate_file('browser_helper.rb', "#{name}/helpers", generate_browser_helper)
9
+ generate_file('pom_helper.rb', "#{name}/helpers", generate_pom_helper)
10
+ generate_file('watir_helper.rb', "#{name}/helpers", generate_watir_helper)
11
+ generate_file('spec_helper.rb', "#{name}/helpers", generate_spec_helper)
12
+ end
13
+
14
+ def self.generate_raider_helper
15
+ spec = ERB.new <<~EOF
16
+ module Raider
17
+ require_relative 'spec_helper'
18
+ require_relative 'watir_helper'
19
+ require_relative 'pom_helper'
20
+ require_relative 'browser_helper'
21
+ require_relative 'allure_helper'
22
+ end
23
+ EOF
24
+ spec.result(binding)
25
+ end
26
+
27
+ def self.generate_allure_helper
28
+ spec = ERB.new <<~EOF
29
+ require 'allure-ruby-commons'
30
+ require 'allure-rspec'
31
+
32
+ module Raider
33
+ module AllureHelper
34
+ class << self
35
+
36
+ def configure
37
+ AllureRspec.configure do |config|
38
+ config.results_directory = 'allure-results'
39
+ config.clean_results_directory = true
40
+ end
41
+ end
42
+
43
+ def add_screenshot(name)
44
+ Allure.add_attachment(
45
+ name: name,
46
+ source: File.open("allure-results/screenshots/#{name}.png"),
47
+ type: Allure::ContentType::PNG,
48
+ test_case: true
49
+ )
50
+ end
51
+
52
+ def formatter
53
+ AllureRspecFormatter
54
+ end
55
+ end
56
+ end
57
+ end
58
+ EOF
59
+ spec.result(binding)
60
+ end
61
+
62
+ def self.generate_browser_helper
63
+ spec = ERB.new <<~EOF
64
+ require 'yaml'
65
+ require 'selenium-webdriver'
66
+ require 'watir'
67
+ require 'webdrivers'
68
+
69
+ module Raider
70
+ module BrowserHelper
71
+ class << self
72
+ attr_reader :browser
73
+
74
+ def new_browser
75
+ config = YAML.load_file('config/config.yml')
76
+ @browser = Watir::Browser.new config['browser']
77
+ end
78
+ end
79
+ end
80
+ end
81
+ EOF
82
+ spec.result(binding)
83
+ end
84
+
85
+ def self.generate_pom_helper
86
+ spec = ERB.new <<~EOF
87
+ module Raider
88
+ module PomHelper
89
+ def instance
90
+ @instance ||= new
91
+ end
92
+
93
+ def method_missing(message, *args, &block)
94
+ return super unless instance.respond_to?(message)
95
+
96
+ instance.public_send(message, *args, &block)
97
+ end
98
+
99
+ def respond_to_missing?(method, *_args, &block)
100
+ instance.respond_to?(method) || super
101
+ end
102
+ end
103
+ end
104
+ EOF
105
+ spec.result(binding)
106
+ end
107
+
108
+ def self.generate_spec_helper
109
+ spec = ERB.new <<~EOF
110
+ require 'active_support/all'
111
+ require 'rspec'
112
+ require_relative 'allure_helper'
113
+ require_relative 'browser_helper'
114
+
115
+ module Raider
116
+ module SpecHelper
117
+
118
+ AllureHelper.configure
119
+
120
+ RSpec.configure do |config|
121
+ config.formatter = AllureHelper.formatter
122
+ config.before(:each) do
123
+ BrowserHelper.new_browser
124
+ end
125
+
126
+ config.after(:each) do
127
+ browser = BrowserHelper.browser
128
+ example_name = self.class.descendant_filtered_examples.first.description
129
+ status = self.class.descendant_filtered_examples.first.execution_result.status
130
+ browser.save_screenshot("allure-results/screenshots/#\{example_name}.png") if status == :failed
131
+ AllureHelper.add_screenshot example_name if status == :failed
132
+ browser.quit
133
+ end
134
+ end
135
+ end
136
+ end
137
+ EOF
138
+ spec.result(binding)
139
+ end
140
+
141
+ def self.generate_watir_helper
142
+ spec = ERB.new <<~EOF
143
+ require 'watir'
144
+
145
+ module Raider
146
+ module WatirHelper
147
+ refine Watir::Element do
148
+ def click_when_present
149
+ wait_until_present
150
+ self.click
151
+ end
152
+
153
+ def wait_until_present
154
+ self.wait_until(&:present?)
155
+ end
156
+ end
157
+ end
158
+ end
159
+ EOF
160
+ spec.result(binding)
161
+ end
162
+ end
163
+ end
@@ -0,0 +1,61 @@
1
+ require_relative 'common_file_generator'
2
+ require_relative 'file_generator'
3
+ require_relative 'helpers_file_generator'
4
+ require_relative 'watir_file_generator'
5
+
6
+ module RubyRaider
7
+ class RspecFileGenerator < FileGenerator
8
+ def self.generate_rspec_files(name, automation)
9
+ if automation == 'watir'
10
+ CommonFileGenerator.generate_common_files(name)
11
+ WatirFileGenerator.generate_watir_files(name)
12
+ HelpersFileGenerator.generate_helper_files(name)
13
+ generate_file('login_page_spec.rb', "#{name}/spec", generate_example_spec)
14
+ generate_file('base_spec.rb', "#{name}/spec", generate_base_spec)
15
+ else
16
+ pp 'here goes selenium'
17
+ end
18
+ end
19
+
20
+ def self.generate_example_spec
21
+ spec = ERB.new <<~EOF
22
+ require_relative 'base_spec'
23
+ require_relative '../page_objects/pages/login_page'
24
+
25
+ class LoginSpec < BaseSpec
26
+ context 'On the Login Page' do
27
+
28
+ before(:each) do
29
+ LoginPage.visit
30
+ end
31
+
32
+ describe 'A user can' do
33
+ it 'login with the right credentials', :JIRA_123 do
34
+ LoginPage.login('aguspe', '12341234')
35
+ expect(LoginPage.customer_name).to eq 'Welcome back Agustin'
36
+ end
37
+ end
38
+
39
+ describe 'A user cannot' do
40
+ it 'login with the wrong credentials', :JIRA_123 do
41
+ expect(LoginPage.customer_name).to eq 'Login or register'
42
+ end
43
+ end
44
+ end
45
+ end
46
+ EOF
47
+ spec.result(binding)
48
+ end
49
+
50
+ def self.generate_base_spec
51
+ spec = ERB.new <<~EOF
52
+ require_relative '../helpers/raider'
53
+
54
+ class BaseSpec
55
+ include Raider::SpecHelper
56
+ end
57
+ EOF
58
+ spec.result(binding)
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,144 @@
1
+ require_relative 'file_generator'
2
+
3
+ module RubyRaider
4
+ class WatirFileGenerator < FileGenerator
5
+ def self.generate_watir_files(name)
6
+ generate_file('abstract_page.rb', "#{name}/page_objects/abstract", abstract_page)
7
+ generate_file('abstract_component.rb', "#{name}/page_objects/abstract", abstract_component)
8
+ generate_file('login_page.rb', "#{name}/page_objects/pages", example_page)
9
+ generate_file('header_component.rb', "#{name}/page_objects/components", example_component)
10
+ generate_file('Gemfile', name.to_s, gemfile_template)
11
+ end
12
+
13
+ def self.gemfile_template
14
+ gemfile = ERB.new <<~EOF
15
+ # frozen_string_literal: true
16
+
17
+ source 'https://rubygems.org'
18
+
19
+ gem 'activesupport'
20
+ gem 'allure-rspec'
21
+ gem 'allure-ruby-commons'
22
+ gem 'parallel_split_test'
23
+ gem 'parallel_tests'
24
+ gem 'rake'
25
+ gem 'rspec'
26
+ gem 'selenium-webdriver'
27
+ gem 'watir'
28
+ gem 'webdrivers'
29
+ EOF
30
+ gemfile.result(binding)
31
+ end
32
+
33
+ def self.example_page
34
+ page_file = ERB.new <<~EOF
35
+ require_relative '../abstract/abstract_page'
36
+ require_relative '../components/header_component'
37
+
38
+ class LoginPage < BasePage
39
+
40
+ using Raider::WatirHelper
41
+
42
+ def url(_page)
43
+ 'index.php?rt=account/login'
44
+ end
45
+
46
+ # Actions
47
+
48
+ def login(username, password)
49
+ username_field.set username
50
+ password_field.set password
51
+ login_button.click_when_present
52
+ end
53
+
54
+ private
55
+
56
+ # Elements
57
+
58
+ def username_field
59
+ browser.text_field(id: 'loginFrm_loginname')
60
+ end
61
+
62
+ def password_field
63
+ browser.text_field(id: 'loginFrm_password')
64
+ end
65
+
66
+ def login_button
67
+ browser.button(visible_text: 'Login')
68
+ end
69
+ end
70
+ EOF
71
+ page_file.result(binding)
72
+ end
73
+
74
+ def self.abstract_page
75
+ abstract_file = ERB.new <<~EOF
76
+ require 'rspec'
77
+ require_relative '../components/header_component'
78
+ require_relative '../../helpers/raider'
79
+
80
+ class BasePage
81
+
82
+ include HeaderComponent
83
+ include RSpec::Matchers
84
+ extend Raider::PomHelper
85
+
86
+ def browser
87
+ Raider::BrowserHelper.browser
88
+ end
89
+
90
+ def visit(*page)
91
+ browser.goto full_url(page.first)
92
+ end
93
+
94
+ def full_url(*page)
95
+ "#\{base_url}#\{url(*page)}"
96
+ end
97
+
98
+ def base_url
99
+ 'https://automationteststore.com/'
100
+ end
101
+
102
+ def url(_page)
103
+ raise 'Url must be defined on child pages'
104
+ end
105
+ end
106
+ EOF
107
+ abstract_file.result(binding)
108
+ end
109
+
110
+ def self.example_component
111
+ page_file = ERB.new <<~EOF
112
+ require_relative '../abstract/abstract_component'
113
+
114
+ module HeaderComponent
115
+
116
+ include BaseComponent
117
+
118
+ def customer_name
119
+ sleep 2
120
+ customer_menu.text
121
+ end
122
+
123
+ private
124
+
125
+ # Elements
126
+
127
+ def customer_menu
128
+ browser.element(id: 'customer_menu_top')
129
+ end
130
+ end
131
+ EOF
132
+ page_file.result(binding)
133
+ end
134
+
135
+ def self.abstract_component
136
+ abstract_file = ERB.new <<~EOF
137
+ require_relative '../../helpers/raider'
138
+
139
+ module BaseComponent; end
140
+ EOF
141
+ abstract_file.result(binding)
142
+ end
143
+ end
144
+ end
@@ -0,0 +1,35 @@
1
+ require 'highline'
2
+ require_relative '../generators/projects/rspec_project_generator'
3
+
4
+ module RubyRaider
5
+ class MenuGenerator
6
+ def self.generate_choice_menu(project_name)
7
+ cli = HighLine.new
8
+ cli.choose do |menu|
9
+ menu.prompt = 'Please select your automation framework'
10
+ menu.choice(:Selenium) { 'We are still working on supporting this' }
11
+ menu.choice(:Watir) {choose_test_framework('watir', project_name) }
12
+ menu.choice(:Quit, 'Exit program.') { exit }
13
+ end
14
+ end
15
+
16
+ def self.choose_test_framework(automation, project_name)
17
+ system('clear') || system('cls')
18
+ sleep 0.3
19
+ cli = HighLine.new
20
+ framework = ''
21
+ cli.choose do |menu|
22
+ menu.prompt = 'Please select your test framework'
23
+ menu.choice(:Rspec) { framework = 'Rspec'; set_rspec_framework(automation, project_name)}
24
+ menu.choice(:Cucumber) { framework = 'cucumber'; 'We are still working on supporting this' }
25
+ menu.choice(:Quit, 'Exit program.') { exit }
26
+ end
27
+ cli.say("You have chosen to use #{framework} with #{automation}")
28
+ end
29
+
30
+ def self.set_rspec_framework(automation, project_name)
31
+ RspecProjectGenerator.generate_rspec_project(project_name, automation: automation)
32
+ ProjectGenerator.install_gems(project_name)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,14 @@
1
+ require_relative 'project_generator'
2
+
3
+ module RubyRaider
4
+ class CucumberProjectGenerator
5
+ def cucumber_folder_structure(name)
6
+ Dir.mkdir name.to_s
7
+ Dir.mkdir "#{name}/features"
8
+ folders = %w[steps_definitions support]
9
+ create_children_folders("#{name}/features", folders)
10
+ Dir.mkdir "#{name}/features/support/helpers"
11
+ Dir.mkdir "#{name}/page_objects"
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ module RubyRaider
2
+ class ProjectGenerator
3
+ def self.create_children_folders(parent, folders)
4
+ folders.each { |folder| Dir.mkdir "#{parent}/#{folder}" }
5
+ end
6
+
7
+ def self.install_gems(name)
8
+ system "cd #{name} && gem install bundler && bundle install"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,23 @@
1
+ require_relative 'project_generator'
2
+ require_relative '../files/rspec_file_generator'
3
+
4
+ module RubyRaider
5
+ class RspecProjectGenerator < ProjectGenerator
6
+ def self.generate_rspec_project(name, automation: 'watir')
7
+ rspec_folder_structure(name)
8
+ rspec_files(name, automation)
9
+ end
10
+
11
+ def self.rspec_folder_structure(name)
12
+ Dir.mkdir name.to_s
13
+ folders = %w[config data page_objects helpers spec]
14
+ create_children_folders(name, folders)
15
+ pages = %w[pages components abstract]
16
+ create_children_folders("#{name}/page_objects", pages)
17
+ end
18
+
19
+ def self.rspec_files(name, automation)
20
+ RspecFileGenerator.generate_rspec_files(name, automation)
21
+ end
22
+ end
23
+ end
data/lib/ruby_raider.rb CHANGED
@@ -1,4 +1,11 @@
1
- class RubyRaider
1
+ require_relative 'generators/menu_generator'
2
+ require_relative 'generators/projects/cucumber_project_generator'
3
+ require_relative 'generators/projects/project_generator'
4
+ require_relative 'generators/projects/rspec_project_generator'
2
5
 
6
+ module RubyRaider
7
+ extend self
8
+ def generate_project(project_name)
9
+ MenuGenerator.generate_choice_menu(project_name)
10
+ end
3
11
  end
4
-
@@ -0,0 +1,18 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'ruby_raider'
3
+ s.version = '0.1.1'
4
+ s.summary = 'A gem to make setup and start of UI automation projects easier'
5
+ s.description = 'This gem contents everything you need to start doing web automation in one simple package'
6
+ s.authors = ['Agustin Pequeno']
7
+ s.email = 'agustin.pe94@gmail.com'
8
+ s.homepage = 'http://github.com/aguspe/ruby_raider'
9
+ s.files = %w[bin/* lib/* lib/**/*]
10
+ s.license = 'MIT'
11
+ s.required_ruby_version = '>= 3.0.0'
12
+ s.files = `git ls-files -z`.split("\x0")
13
+ s.bindir = 'bin'
14
+ s.executables << 'raider'
15
+ s.add_development_dependency 'rspec'
16
+
17
+ s.add_runtime_dependency 'highline'
18
+ end
@@ -0,0 +1,18 @@
1
+ require_relative '../lib/generators/files/common_file_generator'
2
+ require_relative 'spec_helper'
3
+
4
+ describe RubyRaider::CommonFileGenerator do
5
+ it 'creates a config file' do
6
+ expect(File.exist?("#{@project_name}/config/config.yml")).to be_truthy
7
+ end
8
+
9
+ it 'creates a rake file' do
10
+ expect(File.exist?("#{@project_name}/Rakefile")).to be_truthy
11
+ end
12
+
13
+ it 'creates a readMe file' do
14
+ expect(File.exist?("#{@project_name}/Readme.md")).to be_truthy
15
+ end
16
+ end
17
+
18
+
@@ -0,0 +1,31 @@
1
+ require_relative '../lib/generators/files/helpers_file_generator'
2
+ require_relative 'spec_helper'
3
+
4
+ describe RubyRaider::HelpersFileGenerator do
5
+ it 'creates a raider file' do
6
+ expect(File.exist?("#{@project_name}/helpers/raider.rb")).to be_truthy
7
+ end
8
+
9
+ it 'creates an allure helper file' do
10
+ expect(File.exist?("#{@project_name}/helpers/allure_helper.rb")).to be_truthy
11
+ end
12
+
13
+ it 'creates a browser helper file' do
14
+ expect(File.exist?("#{@project_name}/helpers/browser_helper.rb")).to be_truthy
15
+ end
16
+
17
+ it 'creates a pom helper file' do
18
+ expect(File.exist?("#{@project_name}/helpers/pom_helper.rb")).to be_truthy
19
+ end
20
+
21
+ it 'creates a spec helper file' do
22
+ expect(File.exist?("#{@project_name}/helpers/spec_helper.rb")).to be_truthy
23
+ end
24
+
25
+ it 'creates a watir helper file' do
26
+ expect(File.exist?("#{@project_name}/helpers/allure_helper.rb")).to be_truthy
27
+ end
28
+ end
29
+
30
+
31
+
@@ -0,0 +1,8 @@
1
+ require_relative '../lib/generators/menu_generator'
2
+
3
+ describe 'A menu is generated' do
4
+ it 'generates a menu' do
5
+ menu = RubyRaider::MenuGenerator.new
6
+ menu.generate_choice_menu
7
+ end
8
+ end
@@ -0,0 +1,12 @@
1
+ require_relative '../lib/generators/files/rspec_file_generator'
2
+ require_relative 'spec_helper'
3
+
4
+ describe RubyRaider::RspecFileGenerator do
5
+ it 'creates a spec file' do
6
+ expect(File.exist?("#{@project_name}/spec/login_page_spec.rb")).to be_truthy
7
+ end
8
+
9
+ it 'creates the base spec file' do
10
+ expect(File.exist?("#{@project_name}/spec/base_spec.rb")).to be_truthy
11
+ end
12
+ end
@@ -0,0 +1,39 @@
1
+ require_relative 'spec_helper'
2
+
3
+ describe RubyRaider::RspecProjectGenerator do
4
+ it 'creates a project folder' do
5
+ expect(Dir.exist?(@project_name)).to be_truthy
6
+ end
7
+
8
+ it 'creates a spec folder' do
9
+ expect(Dir.exist?("#{@project_name}/spec")).to be_truthy
10
+ end
11
+
12
+ it 'creates a page objects folder' do
13
+ expect(Dir.exist?("#{@project_name}/page_objects")).to be_truthy
14
+ end
15
+
16
+ it 'creates an abstract page object folder' do
17
+ expect(Dir.exist?("#{@project_name}/page_objects/abstract")).to be_truthy
18
+ end
19
+
20
+ it 'creates a pages folder' do
21
+ expect(Dir.exist?("#{@project_name}/page_objects/pages")).to be_truthy
22
+ end
23
+
24
+ it 'creates a components folder' do
25
+ expect(Dir.exist?("#{@project_name}/page_objects/components")).to be_truthy
26
+ end
27
+
28
+ it 'creates a helper folder' do
29
+ expect(Dir.exist?("#{@project_name}/helpers")).to be_truthy
30
+ end
31
+
32
+ it 'creates a data folder' do
33
+ expect(Dir.exist?("#{@project_name}/data")).to be_truthy
34
+ end
35
+
36
+ it 'creates a config folder' do
37
+ expect(Dir.exist?("#{@project_name}/config")).to be_truthy
38
+ end
39
+ end
@@ -0,0 +1,14 @@
1
+ require_relative '../lib/generators/projects/rspec_project_generator'
2
+ require 'fileutils'
3
+ require 'rspec'
4
+
5
+ RSpec.configure do |config|
6
+ config.before(:all) do
7
+ @project_name = 'test'
8
+ RubyRaider::RspecProjectGenerator.generate_rspec_project @project_name
9
+ end
10
+
11
+ config.after(:all) do
12
+ FileUtils.rm_rf(@project_name)
13
+ end
14
+ end
@@ -0,0 +1,25 @@
1
+ require_relative '../lib/generators/files/watir_file_generator'
2
+ require_relative 'spec_helper'
3
+
4
+ describe RubyRaider::WatirFileGenerator do
5
+ it 'creates a login page file' do
6
+ expect(File.exist?("#{@project_name}/page_objects/pages/login_page.rb")).to be_truthy
7
+ end
8
+
9
+ it 'creates an abstract page file' do
10
+ expect(File.exist?("#{@project_name}/page_objects/abstract/abstract_page.rb")).to be_truthy
11
+ end
12
+
13
+ it 'creates an abstract component file' do
14
+ expect(File.exist?("#{@project_name}/page_objects/abstract/abstract_component.rb")).to be_truthy
15
+ end
16
+
17
+ it 'creates a component file' do
18
+ expect(File.exist?("#{@project_name}/page_objects/components/header_component.rb")).to be_truthy
19
+ end
20
+
21
+ it 'creates a gemfile file' do
22
+ expect(File.exist?("#{@project_name}/Gemfile")).to be_truthy
23
+ end
24
+ end
25
+
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_raider
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Agustin Pequeno
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-20 00:00:00.000000000 Z
11
+ date: 2022-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: thor
14
+ name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -24,15 +24,54 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: highline
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  description: This gem contents everything you need to start doing web automation in
28
42
  one simple package
29
43
  email: agustin.pe94@gmail.com
30
- executables: []
44
+ executables:
45
+ - raider
31
46
  extensions: []
32
47
  extra_rdoc_files: []
33
48
  files:
49
+ - ".gitignore"
50
+ - ".idea/.gitignore"
51
+ - ".idea/modules.xml"
52
+ - ".idea/ruby_raider.iml"
53
+ - README.md
54
+ - Rakefile
55
+ - bin/raider
56
+ - lib/generators/files/common_file_generator.rb
57
+ - lib/generators/files/file_generator.rb
58
+ - lib/generators/files/helpers_file_generator.rb
59
+ - lib/generators/files/rspec_file_generator.rb
60
+ - lib/generators/files/watir_file_generator.rb
61
+ - lib/generators/menu_generator.rb
62
+ - lib/generators/projects/cucumber_project_generator.rb
63
+ - lib/generators/projects/project_generator.rb
64
+ - lib/generators/projects/rspec_project_generator.rb
34
65
  - lib/ruby_raider.rb
35
- homepage: https://rubygems.org/gems/ruby_raider
66
+ - ruby_raider.gemspec
67
+ - spec/common_file_generator_spec.rb
68
+ - spec/helpers_file_generator_spec.rb
69
+ - spec/menu_generator_spec.rb
70
+ - spec/rspec_file_generator_spec.rb
71
+ - spec/rspec_project_generator_spec.rb
72
+ - spec/spec_helper.rb
73
+ - spec/watir_file_generator_spec.rb
74
+ homepage: http://github.com/aguspe/ruby_raider
36
75
  licenses:
37
76
  - MIT
38
77
  metadata: {}
@@ -44,7 +83,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
44
83
  requirements:
45
84
  - - ">="
46
85
  - !ruby/object:Gem::Version
47
- version: '0'
86
+ version: 3.0.0
48
87
  required_rubygems_version: !ruby/object:Gem::Requirement
49
88
  requirements:
50
89
  - - ">="