ruby_raider 0.1.9 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +4 -4
  2. data/.reek.yml +3 -0
  3. data/.rubocop.yml +6 -0
  4. data/Rakefile +2 -0
  5. data/bin/raider +1 -0
  6. data/lib/generators/automation_generator.rb +43 -0
  7. data/lib/generators/common_generator.rb +31 -0
  8. data/lib/generators/cucumber_generator.rb +19 -0
  9. data/lib/generators/generator.rb +16 -0
  10. data/lib/generators/helper_generator.rb +48 -0
  11. data/lib/generators/menu_generator.rb +27 -14
  12. data/lib/generators/rspec_generator.rb +16 -0
  13. data/lib/generators/templates/automation/abstract_component.tt +7 -0
  14. data/lib/generators/templates/automation/abstract_page.tt +10 -0
  15. data/lib/generators/templates/automation/appium_settings.tt +8 -0
  16. data/lib/generators/templates/automation/component.tt +9 -0
  17. data/lib/generators/templates/automation/confirmation_page.tt +19 -0
  18. data/lib/generators/templates/automation/home_page.tt +20 -0
  19. data/lib/generators/templates/automation/login_page.tt +8 -0
  20. data/lib/generators/templates/automation/partials/appium_login.tt +28 -0
  21. data/lib/generators/templates/automation/partials/driver_selector.tt +9 -0
  22. data/lib/generators/templates/automation/partials/element.tt +5 -0
  23. data/lib/generators/templates/automation/partials/require_raider.tt +5 -0
  24. data/lib/generators/templates/automation/partials/selenium_login.tt +40 -0
  25. data/lib/generators/templates/automation/partials/url_methods.tt +13 -0
  26. data/lib/generators/templates/automation/partials/visit_method.tt +9 -0
  27. data/lib/generators/templates/automation/partials/watir_login.tt +41 -0
  28. data/lib/generators/templates/common/config.tt +1 -0
  29. data/lib/generators/templates/common/gemfile.tt +21 -0
  30. data/lib/generators/templates/common/partials/automation_gems.tt +10 -0
  31. data/lib/generators/templates/common/rakefile.tt +10 -0
  32. data/lib/generators/templates/common/read_me.tt +99 -0
  33. data/lib/generators/templates/cucumber/env.tt +8 -0
  34. data/lib/generators/templates/cucumber/feature.tt +6 -0
  35. data/lib/generators/templates/cucumber/partials/appium_env.tt +13 -0
  36. data/lib/generators/templates/cucumber/partials/mobile_steps.tt +17 -0
  37. data/lib/generators/templates/cucumber/partials/selenium_appium_env.tt +13 -0
  38. data/lib/generators/templates/cucumber/partials/watir_env.tt +13 -0
  39. data/lib/generators/templates/cucumber/partials/web_steps.tt +15 -0
  40. data/lib/generators/templates/cucumber/steps.tt +5 -0
  41. data/lib/generators/templates/helpers/allure_helper.tt +32 -0
  42. data/lib/generators/templates/helpers/browser_helper.tt +19 -0
  43. data/lib/generators/templates/helpers/driver_helper.tt +18 -0
  44. data/lib/generators/templates/helpers/partials/allure_imports.tt +5 -0
  45. data/lib/generators/templates/helpers/partials/allure_requirements.tt +6 -0
  46. data/lib/generators/templates/helpers/partials/driver_requirements.tt +14 -0
  47. data/lib/generators/templates/helpers/partials/new_driver.tt +11 -0
  48. data/lib/generators/templates/helpers/partials/quit_driver.tt +8 -0
  49. data/lib/generators/templates/helpers/partials/require_automation.tt +5 -0
  50. data/lib/generators/templates/helpers/partials/screenshot.tt +8 -0
  51. data/lib/generators/templates/helpers/pom_helper.tt +19 -0
  52. data/lib/generators/templates/helpers/raider_helper.tt +15 -0
  53. data/lib/generators/templates/helpers/selenium_helper.tt +36 -0
  54. data/lib/generators/templates/helpers/spec_helper.tt +37 -0
  55. data/lib/generators/templates/helpers/watir_helper.tt +16 -0
  56. data/lib/generators/templates/rspec/base_spec.tt +5 -0
  57. data/lib/generators/templates/rspec/spec.tt +37 -0
  58. data/lib/ruby_raider.rb +5 -4
  59. data/ruby_raider.gemspec +7 -1
  60. data/spec/automation_generator_spec.rb +192 -0
  61. data/spec/common_generator_spec.rb +141 -0
  62. data/spec/cucumber_generator_spec.rb +71 -0
  63. data/spec/helpers_generator_spec.rb +133 -0
  64. data/spec/rspec_generator_spec.rb +63 -0
  65. data/spec/spec_helper.rb +3 -3
  66. metadata +116 -43
  67. data/lib/generators/files/automation_file_generator.rb +0 -61
  68. data/lib/generators/files/common_file_generator.rb +0 -38
  69. data/lib/generators/files/cucumber_file_generator.rb +0 -33
  70. data/lib/generators/files/file_generator.rb +0 -11
  71. data/lib/generators/files/helpers_file_generator.rb +0 -70
  72. data/lib/generators/files/rspec_file_generator.rb +0 -29
  73. data/lib/generators/projects/cucumber_project_generator.rb +0 -34
  74. data/lib/generators/projects/project_generator.rb +0 -27
  75. data/lib/generators/projects/rspec_project_generator.rb +0 -26
  76. data/lib/generators/templates/automation/abstract_component_template.rb +0 -22
  77. data/lib/generators/templates/automation/abstract_page_template.rb +0 -82
  78. data/lib/generators/templates/automation/appium_settings_template.rb +0 -16
  79. data/lib/generators/templates/automation/component_template.rb +0 -16
  80. data/lib/generators/templates/automation/confirmation_page_template.rb +0 -26
  81. data/lib/generators/templates/automation/home_page_template.rb +0 -26
  82. data/lib/generators/templates/automation/login_page_template.rb +0 -113
  83. data/lib/generators/templates/common/config_template.rb +0 -9
  84. data/lib/generators/templates/common/gemfile_template.rb +0 -52
  85. data/lib/generators/templates/common/rake_file_template.rb +0 -16
  86. data/lib/generators/templates/common/read_me_template.rb +0 -104
  87. data/lib/generators/templates/cucumber/env_template.rb +0 -38
  88. data/lib/generators/templates/cucumber/example_feature_template.rb +0 -15
  89. data/lib/generators/templates/cucumber/example_steps_template.rb +0 -21
  90. data/lib/generators/templates/helpers/allure_helper_template.rb +0 -47
  91. data/lib/generators/templates/helpers/browser_helper_template.rb +0 -26
  92. data/lib/generators/templates/helpers/driver_helper_template.rb +0 -54
  93. data/lib/generators/templates/helpers/pom_helper_template.rb +0 -25
  94. data/lib/generators/templates/helpers/raider_helper_template.rb +0 -27
  95. data/lib/generators/templates/helpers/selenium_helper_template.rb +0 -42
  96. data/lib/generators/templates/helpers/spec_helper_template.rb +0 -74
  97. data/lib/generators/templates/helpers/watir_helper_template.rb +0 -24
  98. data/lib/generators/templates/rspec/base_spec_template.rb +0 -13
  99. data/lib/generators/templates/rspec/example_spec_template.rb +0 -56
  100. data/lib/generators/templates/template.rb +0 -14
  101. data/spec/automation_file_generator_spec.rb +0 -59
  102. data/spec/common_file_generator_spec.rb +0 -27
  103. data/spec/cucumber_file_generator_spec.rb +0 -26
  104. data/spec/cucumber_project_generator_spec.rb +0 -60
  105. data/spec/helpers_file_generator_spec.rb +0 -73
  106. data/spec/rspec_file_generator_spec.rb +0 -21
  107. data/spec/rspec_project_generator_spec.rb +0 -69
@@ -1,74 +0,0 @@
1
- require_relative '../template'
2
-
3
- class SpecHelperTemplate < Template
4
- def require_driver
5
- "require_relative '#{@automation == 'watir' ? 'browser_helper' : 'driver_helper'}'"
6
- end
7
-
8
- def select_helper
9
- @automation == 'watir' ? 'BrowserHelper.new_browser' : 'DriverHelper.new_driver'
10
- end
11
-
12
- def before_configuration
13
- driver_setup = if %w[selenium watir].include?(@automation)
14
- select_helper
15
- else
16
- <<-EOF.chomp
17
- #{select_helper}
18
- DriverHelper.driver.start_driver
19
- EOF
20
- end
21
-
22
- <<-EOF.chomp
23
-
24
- config.before(:each) do
25
- #{driver_setup}
26
- end
27
- EOF
28
- end
29
-
30
- def quit_driver
31
- case @automation
32
- when 'selenium'
33
- 'DriverHelper.driver.quit'
34
- when 'watir'
35
- 'BrowserHelper.browser.quit'
36
- else
37
- 'DriverHelper.driver.quit_driver'
38
- end
39
- end
40
-
41
- def save_screenshot
42
- driver = @automation == 'watir' ? 'browser' : 'driver'
43
- "#{driver}.save_screenshot(\"allure-results/screenshots/\#{example_name}.png\") if status == :failed"
44
- end
45
-
46
- def body
47
- <<~EOF
48
- require 'active_support/all'
49
- require 'rspec'
50
- require_relative 'allure_helper'
51
- #{require_driver}
52
-
53
- module Raider
54
- module SpecHelper
55
-
56
- AllureHelper.configure
57
-
58
- RSpec.configure do |config|
59
- config.formatter = AllureHelper.formatter
60
- #{before_configuration}
61
-
62
- config.after(:each) do
63
- example_name = self.class.descendant_filtered_examples.first.description
64
- status = self.class.descendant_filtered_examples.first.execution_result.status
65
- #{save_screenshot}
66
- AllureHelper.add_screenshot example_name if status == :failed
67
- #{quit_driver}
68
- end
69
- end
70
- end
71
- end
72
- EOF
73
- end
74
- end
@@ -1,24 +0,0 @@
1
- require_relative '../template'
2
-
3
- class WatirHelperTemplate < Template
4
- def body
5
- <<~EOF
6
- require 'watir'
7
-
8
- module Raider
9
- module WatirHelper
10
- refine Watir::Element do
11
- def click_when_present
12
- wait_until_present
13
- self.click
14
- end
15
-
16
- def wait_until_present
17
- self.wait_until(&:present?)
18
- end
19
- end
20
- end
21
- end
22
- EOF
23
- end
24
- end
@@ -1,13 +0,0 @@
1
- require_relative '../template'
2
-
3
- class BaseSpecTemplate < Template
4
- def body
5
- <<~EOF
6
- require_relative '../helpers/raider'
7
-
8
- class BaseSpec
9
- include Raider::SpecHelper
10
- end
11
- EOF
12
- end
13
- end
@@ -1,56 +0,0 @@
1
- require_relative '../template'
2
-
3
- class ExampleSpecTemplate < Template
4
- def examples
5
- if %w[selenium watir].include? @automation
6
- <<-EOF.chomp
7
- describe 'Login' do
8
- before(:each) do
9
- LoginPage.visit
10
- end
11
-
12
- it 'can login with valid credentials' do
13
- LoginPage.login('aguspe', '12341234')
14
- expect(LoginPage.header.customer_name).to eq 'Welcome back Agustin'
15
- end
16
-
17
- it 'cannot login with wrong credentials' do
18
- LoginPage.login('aguspe', 'wrongPassword')
19
- expect(LoginPage.header.customer_name).to be_empty
20
- end
21
- end
22
- EOF
23
- else
24
- <<-EOF.chomp
25
- describe 'Login' do
26
- it 'Login with valid credentials' do
27
- HomePage.go_to_login
28
- LoginPage.login('alice', 'mypassword')
29
- expect(ConfirmationPage.login_message).to eq 'You are logged in as alice'
30
- end
31
- end
32
- EOF
33
- end
34
- end
35
-
36
- def requirements
37
- unless %w[selenium watir].include? @automation
38
- <<~EOF.chomp
39
- require_relative '../page_objects/pages/confirmation_page'
40
- require_relative '../page_objects/pages/home_page'
41
- EOF
42
- end
43
- end
44
-
45
- def body
46
- <<~EOF
47
- #{requirements}
48
- require_relative 'base_spec'
49
- require_relative '../page_objects/pages/login_page'
50
-
51
- class LoginSpec < BaseSpec
52
- #{examples}
53
- end
54
- EOF
55
- end
56
- end
@@ -1,14 +0,0 @@
1
- require 'erb'
2
-
3
- class Template
4
- def initialize(args = {})
5
- @automation = args[:automation]
6
- @name = args[:name]
7
- @framework = args[:framework]
8
- end
9
-
10
- def parsed_body
11
- parsed_body = ERB.new body
12
- parsed_body.result(binding)
13
- end
14
- end
@@ -1,59 +0,0 @@
1
- require_relative '../lib/generators/files/automation_file_generator'
2
- require_relative 'spec_helper'
3
-
4
- describe RubyRaider::AutomationFileGenerator do
5
- context 'On a web project' do
6
- before(:all) do
7
- @name = 'Rspec-watir-1'
8
- RubyRaider::RspecProjectGenerator.generate_rspec_project('watir', @name)
9
- end
10
-
11
- it 'creates a login page file' do
12
- expect(File.exist?("#{@name}/page_objects/pages/login_page.rb")).to be_truthy
13
- end
14
-
15
- it 'creates an abstract page file' do
16
- expect(File.exist?("#{@name}/page_objects/abstract/abstract_page.rb")).to be_truthy
17
- end
18
-
19
- it 'creates an abstract component file' do
20
- expect(File.exist?("#{@name}/page_objects/abstract/abstract_component.rb")).to be_truthy
21
- end
22
-
23
- it 'creates a component file' do
24
- expect(File.exist?("#{@name}/page_objects/components/header_component.rb")).to be_truthy
25
- end
26
-
27
- it 'creates a gemfile file' do
28
- expect(File.exist?("#{@name}/Gemfile")).to be_truthy
29
- end
30
-
31
- after(:all) do
32
- FileUtils.rm_rf(@name)
33
- end
34
-
35
- context 'On a mobile project' do
36
- before(:all) do
37
- @name = 'Rspec-appium-ios'
38
- RubyRaider::RspecProjectGenerator.generate_rspec_project('appium_ios', @name)
39
- end
40
-
41
- it 'creates a login page file' do
42
- expect(File.exist?("#{@name}/page_objects/pages/home_page.rb")).to be_truthy
43
- end
44
-
45
- it 'creates a login page file' do
46
- expect(File.exist?("#{@name}/page_objects/pages/confirmation_page.rb")).to be_truthy
47
- end
48
-
49
- it 'creates a login page file' do
50
- expect(File.exist?("#{@name}/appium.txt")).to be_truthy
51
- end
52
-
53
- after(:all) do
54
- FileUtils.rm_rf(@name)
55
- end
56
- end
57
- end
58
- end
59
-
@@ -1,27 +0,0 @@
1
- require_relative '../lib/generators/files/common_file_generator'
2
- require_relative 'spec_helper'
3
-
4
- describe RubyRaider::CommonFileGenerator do
5
- before(:all) do
6
- @name = 'Cucumber-watir-1'
7
- RubyRaider::CucumberProjectGenerator.generate_cucumber_project('watir', @name)
8
- end
9
-
10
- it 'creates a config file' do
11
- expect(File.exist?("#{@name}/config/config.yml")).to be_truthy
12
- end
13
-
14
- it 'creates a rake file' do
15
- expect(File.exist?("#{@name}/Rakefile")).to be_truthy
16
- end
17
-
18
- it 'creates a readMe file' do
19
- expect(File.exist?("#{@name}/Readme.md")).to be_truthy
20
- end
21
-
22
- after(:all) do
23
- FileUtils.rm_rf(@name)
24
- end
25
- end
26
-
27
-
@@ -1,26 +0,0 @@
1
- require_relative '../lib/generators/files/rspec_file_generator'
2
- require_relative 'spec_helper'
3
-
4
- describe RubyRaider::RspecFileGenerator do
5
- before(:all) do
6
- @name = 'Cucumber-watir-2'
7
- RubyRaider::CucumberProjectGenerator.generate_cucumber_project('watir', @name)
8
- end
9
-
10
- it 'creates a feature file' do
11
- expect(File.exist?("#{@name}/features/login.feature")).to be_truthy
12
- end
13
-
14
- it 'creates a step definitions file' do
15
- expect(File.exist?("#{@name}/features/step_definitions/login_steps.rb")).to be_truthy
16
- end
17
-
18
- it 'creates an env file' do
19
- expect(File.exist?("#{@name}/features/support/env.rb")).to be_truthy
20
- end
21
-
22
- after(:all) do
23
- FileUtils.rm_rf(@name)
24
- end
25
- end
26
-
@@ -1,60 +0,0 @@
1
- require_relative 'spec_helper'
2
-
3
- describe RubyRaider::CucumberProjectGenerator do
4
- before(:all) do
5
- @name = 'Cucumber'
6
- RubyRaider::CucumberProjectGenerator.generate_cucumber_project('selenium', @name)
7
- end
8
-
9
- it 'creates a project folder' do
10
- expect(Dir.exist?(@name)).to be_truthy
11
- end
12
-
13
- it 'creates a features folder' do
14
- expect(Dir.exist?("#{@name}/features")).to be_truthy
15
- end
16
-
17
- it 'creates a config folder' do
18
- expect(Dir.exist?("#{@name}/config")).to be_truthy
19
- end
20
-
21
- it 'creates a page_objects object folder' do
22
- expect(Dir.exist?("#{@name}/page_objects")).to be_truthy
23
- end
24
-
25
- it 'creates an allure results folder' do
26
- expect(Dir.exist?("#{@name}/allure-results")).to be_truthy
27
- end
28
-
29
- it 'creates a step definitions folder' do
30
- expect(Dir.exist?("#{@name}/features/step_definitions")).to be_truthy
31
- end
32
-
33
- it 'creates a support folder' do
34
- expect(Dir.exist?("#{@name}/features/support")).to be_truthy
35
- end
36
-
37
- it 'creates a helpers folder' do
38
- expect(Dir.exist?("#{@name}/features/support/helpers")).to be_truthy
39
- end
40
-
41
- it 'creates an abstract folder' do
42
- expect(Dir.exist?("#{@name}/page_objects/abstract")).to be_truthy
43
- end
44
-
45
- it 'creates a pages folder' do
46
- expect(Dir.exist?("#{@name}/page_objects/pages")).to be_truthy
47
- end
48
-
49
- it 'creates a components folder' do
50
- expect(Dir.exist?("#{@name}/page_objects/components")).to be_truthy
51
- end
52
-
53
- it 'creates a screenshot folder' do
54
- expect(Dir.exist?("#{@name}/allure-results/screenshots")).to be_truthy
55
- end
56
-
57
- after(:all) do
58
- FileUtils.rm_rf(@name)
59
- end
60
- end
@@ -1,73 +0,0 @@
1
- require_relative '../lib/generators/files/helpers_file_generator'
2
- require_relative 'spec_helper'
3
-
4
- describe RubyRaider::HelpersFileGenerator do
5
- context 'When the users selects rspec' do
6
- before(:all) do
7
- @name = 'Rspec-watir-2'
8
- RubyRaider::RspecProjectGenerator.generate_rspec_project('selenium', @name)
9
- end
10
-
11
- it 'creates a raider file' do
12
- expect(File.exist?("#{@name}/helpers/raider.rb")).to be_truthy
13
- end
14
-
15
- it 'creates an allure helper file' do
16
- expect(File.exist?("#{@name}/helpers/allure_helper.rb")).to be_truthy
17
- end
18
-
19
- it 'creates a driver helper file', :watir do
20
- expect(File.exist?("#{@name}/helpers/driver_helper.rb")).to be_truthy
21
- end
22
-
23
- it 'creates a pom helper file' do
24
- expect(File.exist?("#{@name}/helpers/pom_helper.rb")).to be_truthy
25
- end
26
-
27
- it 'creates a spec helper file' do
28
- expect(File.exist?("#{@name}/helpers/spec_helper.rb")).to be_truthy
29
- end
30
-
31
- it 'creates a watir helper file' do
32
- expect(File.exist?("#{@name}/helpers/allure_helper.rb")).to be_truthy
33
- end
34
-
35
- after(:all) do
36
- FileUtils.rm_rf(@name)
37
- end
38
- end
39
-
40
- context 'when the user selects cucumber' do
41
- before(:all) do
42
- @name = 'Cucumber-watir-3'
43
- RubyRaider::CucumberProjectGenerator.generate_cucumber_project('watir', @name)
44
- end
45
-
46
- it 'creates a raider file' do
47
- expect(File.exist?("#{@name}/features/support/helpers/raider.rb")).to be_truthy
48
- end
49
-
50
- it 'creates an allure helper file' do
51
- expect(File.exist?("#{@name}/features/support/helpers/allure_helper.rb")).to be_truthy
52
- end
53
-
54
- it 'creates a browser helper file', :watir do
55
- expect(File.exist?("#{@name}/features/support/helpers/browser_helper.rb")).to be_truthy
56
- end
57
-
58
- it 'creates a pom helper file' do
59
- expect(File.exist?("#{@name}/features/support/helpers/pom_helper.rb")).to be_truthy
60
- end
61
-
62
- it 'creates a watir helper file' do
63
- expect(File.exist?("#{@name}/features/support/helpers/allure_helper.rb")).to be_truthy
64
- end
65
-
66
- after(:all) do
67
- FileUtils.rm_rf(@name)
68
- end
69
- end
70
- end
71
-
72
-
73
-
@@ -1,21 +0,0 @@
1
- require_relative '../lib/generators/files/rspec_file_generator'
2
- require_relative 'spec_helper'
3
-
4
- describe RubyRaider::RspecFileGenerator do
5
- before(:all) do
6
- @name = 'Rspec-watir-3'
7
- RubyRaider::RspecProjectGenerator.generate_rspec_project('watir', @name)
8
- end
9
-
10
- it 'creates a spec file' do
11
- expect(File.exist?("#{@name}/spec/login_page_spec.rb")).to be_truthy
12
- end
13
-
14
- it 'creates the base spec file' do
15
- expect(File.exist?("#{@name}/spec/base_spec.rb")).to be_truthy
16
- end
17
-
18
- after(:all) do
19
- FileUtils.rm_rf(@name)
20
- end
21
- end
@@ -1,69 +0,0 @@
1
- require_relative 'spec_helper'
2
-
3
- describe RubyRaider::RspecProjectGenerator do
4
- context 'On a web project' do
5
- before(:all) do
6
- @name = 'Rspec'
7
- RubyRaider::RspecProjectGenerator.generate_rspec_project('selenium', @name)
8
- end
9
-
10
- it 'creates a project folder' do
11
- expect(Dir.exist?(@name)).to be_truthy
12
- end
13
-
14
- it 'creates a spec folder' do
15
- expect(Dir.exist?("#{@name}/spec")).to be_truthy
16
- end
17
-
18
- it 'creates a page objects folder' do
19
- expect(Dir.exist?("#{@name}/page_objects")).to be_truthy
20
- end
21
-
22
- it 'creates an abstract page object folder' do
23
- expect(Dir.exist?("#{@name}/page_objects/abstract")).to be_truthy
24
- end
25
-
26
- it 'creates a pages folder' do
27
- expect(Dir.exist?("#{@name}/page_objects/pages")).to be_truthy
28
- end
29
-
30
- it 'creates a components folder' do
31
- expect(Dir.exist?("#{@name}/page_objects/components")).to be_truthy
32
- end
33
-
34
- it 'creates a helper folder' do
35
- expect(Dir.exist?("#{@name}/helpers")).to be_truthy
36
- end
37
-
38
- it 'creates a data folder' do
39
- expect(Dir.exist?("#{@name}/data")).to be_truthy
40
- end
41
-
42
- it 'creates a config folder' do
43
- expect(Dir.exist?("#{@name}/config")).to be_truthy
44
- end
45
-
46
- after(:all) do
47
- FileUtils.rm_rf(@name)
48
- end
49
- end
50
-
51
- context 'On a mobile project' do
52
- before(:all) do
53
- @name = 'appium-ios-1'
54
- RubyRaider::RspecProjectGenerator.generate_rspec_project('appium_ios', @name)
55
- end
56
-
57
- it "doesn't creates a config folder" do
58
- expect(Dir.exist?("#{@name}/config")).to be_falsey
59
- end
60
-
61
- it "doesn't creates a components folder" do
62
- expect(Dir.exist?("#{@name}/page_objects/components")).to be_falsey
63
- end
64
-
65
- after(:all) do
66
- FileUtils.rm_rf(@name)
67
- end
68
- end
69
- end