ruby_raider 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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
  - - ">="