ruby_raider 0.9.3 → 0.9.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/integration.yml +5 -5
  3. data/.github/workflows/selenium.yml +22 -0
  4. data/.github/workflows/watir.yml +22 -0
  5. data/README.md +24 -18
  6. data/lib/generators/automation/templates/account.tt +2 -2
  7. data/lib/generators/automation/templates/appium_caps.tt +2 -2
  8. data/lib/generators/automation/templates/home.tt +3 -2
  9. data/lib/generators/automation/templates/login.tt +2 -2
  10. data/lib/generators/automation/templates/page.tt +4 -4
  11. data/lib/generators/automation/templates/partials/element.tt +1 -1
  12. data/lib/generators/automation/templates/partials/home_page_selector.tt +2 -2
  13. data/lib/generators/automation/templates/partials/initialize_selector.tt +1 -1
  14. data/lib/generators/automation/templates/partials/pdp_page_selector.tt +2 -2
  15. data/lib/generators/automation/templates/partials/selenium_login.tt +1 -1
  16. data/lib/generators/automation/templates/partials/url_methods.tt +1 -1
  17. data/lib/generators/automation/templates/partials/visit_method.tt +2 -2
  18. data/lib/generators/automation/templates/pdp.tt +3 -2
  19. data/lib/generators/cucumber/templates/env.tt +6 -7
  20. data/lib/generators/cucumber/templates/feature.tt +7 -3
  21. data/lib/generators/cucumber/templates/partials/appium_env.tt +1 -4
  22. data/lib/generators/cucumber/templates/partials/driver_world.tt +4 -3
  23. data/lib/generators/cucumber/templates/partials/mobile_steps.tt +7 -7
  24. data/lib/generators/cucumber/templates/partials/selenium_env.tt +6 -6
  25. data/lib/generators/cucumber/templates/partials/watir_env.tt +1 -4
  26. data/lib/generators/cucumber/templates/partials/web_steps.tt +10 -3
  27. data/lib/generators/cucumber/templates/steps.tt +3 -3
  28. data/lib/generators/cucumber/templates/world.tt +1 -1
  29. data/lib/generators/generator.rb +15 -5
  30. data/lib/generators/helper_generator.rb +1 -1
  31. data/lib/generators/invoke_generators.rb +2 -6
  32. data/lib/generators/menu_generator.rb +7 -21
  33. data/lib/generators/rspec/rspec_generator.rb +1 -1
  34. data/lib/generators/rspec/templates/spec.tt +7 -7
  35. data/lib/generators/templates/common/config.tt +1 -1
  36. data/lib/generators/templates/common/gemfile.tt +13 -13
  37. data/lib/generators/templates/common/partials/automation_gems.tt +1 -1
  38. data/lib/generators/templates/common/partials/web_config.tt +1 -1
  39. data/lib/generators/templates/common/read_me.tt +21 -15
  40. data/lib/generators/templates/common/rubocop.tt +1 -1
  41. data/lib/generators/templates/helpers/allure_helper.tt +2 -2
  42. data/lib/generators/templates/helpers/driver_helper.tt +10 -8
  43. data/lib/generators/templates/helpers/partials/allure_imports.tt +1 -1
  44. data/lib/generators/templates/helpers/partials/allure_requirements.tt +1 -1
  45. data/lib/generators/templates/helpers/partials/driver_and_options.tt +3 -3
  46. data/lib/generators/templates/helpers/partials/quit_driver.tt +5 -6
  47. data/lib/generators/templates/helpers/partials/screenshot.tt +6 -7
  48. data/lib/generators/templates/helpers/spec_helper.tt +5 -5
  49. data/lib/utilities/utilities.rb +1 -1
  50. data/lib/version +1 -1
  51. data/spec/integration/commands/scaffolding_commands_spec.rb +1 -1
  52. data/spec/integration/commands/utility_commands_spec.rb +3 -3
  53. data/spec/integration/generators/actions_generator_spec.rb +1 -1
  54. data/spec/integration/generators/automation_generator_spec.rb +4 -4
  55. data/spec/integration/generators/common_generator_spec.rb +13 -20
  56. data/spec/integration/generators/cucumber_generator_spec.rb +2 -2
  57. data/spec/integration/generators/helpers_generator_spec.rb +13 -13
  58. data/spec/integration/generators/rspec_generator_spec.rb +2 -2
  59. data/spec/{support → integration}/settings_helper.rb +1 -3
  60. data/spec/integration/spec_helper.rb +33 -0
  61. data/spec/system/selenium_spec.rb +40 -0
  62. data/spec/system/watir_spec.rb +40 -0
  63. metadata +8 -6
  64. data/.github/workflows/rspec_selenium.yml +0 -42
  65. data/.github/workflows/rspec_watir.yml +0 -42
  66. data/spec/spec_helper.rb +0 -35
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 02747aaf5daa92a26aec43eefd65d6e3a9d84b3b83a0c0b678174f7f93d3725a
4
- data.tar.gz: 3b754cbe2bb76ade7f7c37f5d7cee232c08432a9b4a3bf148fc9ec046a379a39
3
+ metadata.gz: 279c26bb0d8d1a27d95b0510587e6828e2164c84a334c41b84b57db98f04867c
4
+ data.tar.gz: c024426fe0bbb58b912ac6bf07a0867110dc340c4946d4e3eab499e25a38b2ce
5
5
  SHA512:
6
- metadata.gz: 3831dcce4173d9612da9a8710401c0f532b61f5811c4ef4f3fa3215329fcdb5768a256e61c6de33bb666ffba3745b078119dcef7feeea6173e94f396a9280c4c
7
- data.tar.gz: 0e56906c04bdbea1f0925e7bb91ba4d799ec91fa47550cec9ba540960c1d4512c5c2f57f25e3ddda9fc79bbd5c3273187ad27c41e8dde3a541ee1cda6fd43f37
6
+ metadata.gz: '028fcaca7bd181054203e2d50d54fa2399608725379ffd63e003f2efd43f9b6274fa9a014e7ffb0da28eff2f077b48fb4d4d6ae5c53f3db9f14f1958f4e451e4'
7
+ data.tar.gz: 9ef33293321c2f08b1942c2c82d2bc0be57f9245335be00bcefe4d145a5c7abb842e5274ba313e21dec17e756cbf6fc4f9fa7f4d74887e630791a4ae0adbde91
@@ -8,13 +8,13 @@ jobs:
8
8
  runs-on: ubuntu-latest
9
9
 
10
10
  steps:
11
+ - name: Checkout repository
12
+ uses: actions/checkout@v4
13
+
11
14
  - name: Set up Ruby
12
- uses: ruby/setup-ruby@f20f1eae726df008313d2e0d78c5e602562a1bcf
15
+ uses: ruby/setup-ruby@v1
13
16
  with:
14
- ruby-version: head
15
-
16
- - name: Checkout repository
17
- uses: actions/checkout@v3
17
+ ruby-version: 3.1.0
18
18
 
19
19
  - name: Install gems
20
20
  run: bundle install
@@ -0,0 +1,22 @@
1
+ name: Selenium Tests on Ubuntu
2
+ on: [ pull_request ]
3
+
4
+ jobs:
5
+ build:
6
+ name: Selenium based frameworks pipeline
7
+ runs-on: ubuntu-latest
8
+
9
+ steps:
10
+ - name: Checkout repository
11
+ uses: actions/checkout@v4
12
+
13
+ - name: Set up Ruby
14
+ uses: ruby/setup-ruby@v1
15
+ with:
16
+ ruby-version: 3.1.0
17
+
18
+ - name: Install gems
19
+ run: bundle install
20
+
21
+ - name: Build and run system tests
22
+ run: rspec spec/system/selenium_spec.rb
@@ -0,0 +1,22 @@
1
+ name: Watir Tests on Ubuntu
2
+ on: [ pull_request ]
3
+
4
+ jobs:
5
+ build:
6
+ name: Watir based frameworks pipeline
7
+ runs-on: ubuntu-latest
8
+
9
+ steps:
10
+ - name: Checkout repository
11
+ uses: actions/checkout@v4
12
+
13
+ - name: Set up Ruby
14
+ uses: ruby/setup-ruby@v1
15
+ with:
16
+ ruby-version: 3.1.0
17
+
18
+ - name: Install gems
19
+ run: bundle install
20
+
21
+ - name: Build and run system tests
22
+ run: rspec spec/system/watir_spec.rb
data/README.md CHANGED
@@ -33,21 +33,25 @@
33
33
  Ruby Raider is a generator and scaffolding gem to make UI test automation easier
34
34
 
35
35
  ### At the moment Ruby Raider supports generating the following frameworks:
36
- | Web Testing Framework | Visual Testing Framework | Mobile Testing Framework |
37
- |----------------------------|---------------------------------------------|-------------------------------------------|
38
- | Cucumber and Selenium | Cucumber, Applitools and Selenium | Cucumber and Appium for IOS |
39
- | Rspec and Selenium | Rspec, Applitools and Selenium | Rspec and Appium for IOS |
40
- | Cucumber and Watir | | Cucumber and Appium for Android |
41
- | Rspec and Watir | | Rspec and Appium for Android |
42
- | | | Cucumber and Appium Cross-platform |
43
- | | | Rspec and Appium Cross-platform |
36
+
37
+ | Web Testing Framework | Visual Testing Framework | Mobile Testing Framework | Accessibility Testing Framework |
38
+ |-----------------------|-----------------------------------|------------------------------------|---------------------------------|
39
+ | Cucumber and Selenium | Cucumber, Applitools and Selenium | Cucumber and Appium for IOS | Cucumber and Axe for web |
40
+ | Rspec and Selenium | Rspec, Applitools and Selenium | Rspec and Appium for IOS | Rspec and Axe for web |
41
+ | Cucumber and Watir | | Cucumber and Appium for Android | |
42
+ | Rspec and Watir | | Rspec and Appium for Android | |
43
+ | | | Cucumber and Appium Cross-platform | |
44
+ | | | Rspec and Appium Cross-platform | |
44
45
 
45
46
  ***In order to run the Appium tests, download the example [app](https://github.com/saucelabs/my-demo-app-rn).***
46
- ***Remember to use the full path of the app that you download in the capabilities file and start the server using one of the commands below:***
47
+ ***Remember to use the full path of the app that you download in the capabilities file and start the server using one of
48
+ the commands below:***
49
+
47
50
  ```ruby
48
51
  raider u start_appium
49
- appium --base-path /wd/hub
52
+ appium --base - path /wd/ hub
50
53
  ```
54
+
51
55
  ***In order to run the visual tests with applitools, you need to create an account and get your api key, you can read
52
56
  more [here](https://applitools.com/docs/topics/overview/obtain-api-key.html#:~:text=If%20you%20already%20have%20an,Your%20key%20will%20be%20displayed.)
53
57
  .***
@@ -81,13 +85,13 @@ Select the ones you will like to work with.
81
85
  If you already know which frameworks you want to use, you can do:
82
86
 
83
87
  ```ruby
84
- raider new [name_of_project] -p framework:[framework] automation:[automation_type] visual:[boolean] axe:[boolean]
88
+ raider new [name_of_project] - p framework : [framework] automation : [automation_type] visual : [boolean] axe : [boolean]
85
89
  ```
86
90
 
87
91
  An example of the command above would be:
88
92
 
89
93
  ```ruby
90
- raider new test_project -p framework:rspec automation:selenium visual:false axe:true
94
+ raider new test_project -p framework : rspec automation: selenium visual : false axe : true
91
95
  ```
92
96
 
93
97
  Where [frameworks] is a comma separated list of the frameworks you want to use.
@@ -97,12 +101,12 @@ Where [frameworks] is a comma separated list of the frameworks you want to use.
97
101
  ###### Anything between square brackets([...]) is where your imput goes
98
102
 
99
103
  ```ruby
100
- Commands:
104
+ Commands :
101
105
  raider generate # Provides access to all the scaffolding commands
102
- raider help [COMMAND] # Describe available commands or one specific command
103
- raider new [PROJECT_NAME] # Creates a new framework based on settings picked
104
- raider utility # Provides access to all the utility commands
105
- raider version # It shows the version of Ruby Raider you are currently using
106
+ raider help [COMMAND] # Describe available commands or one specific command
107
+ raider new [PROJECT_NAME] # Creates a new framework based on settings picked
108
+ raider utility # Provides access to all the utility commands
109
+ raider version # It shows the version of Ruby Raider you are currently using
106
110
  ```
107
111
 
108
112
  All the basic commands have their corresponding shortcut:
@@ -113,6 +117,7 @@ All the basic commands have their corresponding shortcut:
113
117
  * v for version
114
118
 
115
119
  ### Scaffolding Commands
120
+
116
121
  Ruby Raider also supports scaffolding:
117
122
 
118
123
  * To create a new page object you do: ```raider g page [PAGE_NAME]```
@@ -134,9 +139,10 @@ raider u path [PATH_NAME] - -helper or -h
134
139
 
135
140
  If you don't specify an option, path will assume you want to change the default path for pages.
136
141
 
137
-
138
142
  ### Appium Server Command
143
+
139
144
  To initialise Appium server run this command:
145
+
140
146
  ```ruby
141
147
  raider u start_appium
142
148
  ```
@@ -1,5 +1,5 @@
1
- <%- if automation == 'selenium' -%>
1
+ <%- if selenium_based? -%>
2
2
  <%=- ERB.new(File.read(File.expand_path('./partials/selenium_account.tt', __dir__)), trim_mode: '-').result(binding) -%>
3
- <%- elsif automation == 'watir' -%>
3
+ <%- elsif watir? -%>
4
4
  <%=- ERB.new(File.read(File.expand_path('./partials/watir_account.tt', __dir__)), trim_mode: '-').result(binding) -%>
5
5
  <%- end -%>
@@ -1,6 +1,6 @@
1
- <% if automation.include?('ios') %>
1
+ <% if ios? %>
2
2
  <%= ERB.new(File.read(File.expand_path('./partials/ios_caps.tt', __dir__))).result(binding) -%>
3
- <% elsif automation == 'android' %>
3
+ <% elsif android? %>
4
4
  <%= ERB.new(File.read(File.expand_path('./partials/android_caps.tt', __dir__))).result(binding) -%>
5
5
  <% else %>
6
6
  <%= ERB.new(File.read(File.expand_path('./partials/cross_platform_caps.tt', __dir__))).result(binding) -%>
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative '../abstract/page'
4
+
4
5
  class Home < Page
5
6
 
6
7
  # Actions
@@ -14,6 +15,6 @@ class Home < Page
14
15
  # Elements
15
16
 
16
17
  def backpack_image
17
- <%= ERB.new(File.read(File.expand_path('./partials/home_page_selector.tt', __dir__)), trim_mode: '-').result(binding) %>
18
+ <%= ERB.new(File.read(File.expand_path('./partials/home_page_selector.tt', __dir__)), trim_mode: '-').result(binding) -%>
18
19
  end
19
- end
20
+ end
@@ -1,5 +1,5 @@
1
- <%- if automation == 'selenium' -%>
1
+ <%- if selenium_based? -%>
2
2
  <%=- ERB.new(File.read(File.expand_path('./partials/selenium_login.tt', __dir__)), trim_mode: '-').result(binding) -%>
3
- <%- elsif automation == 'watir' -%>
3
+ <%- elsif watir? -%>
4
4
  <%=- ERB.new(File.read(File.expand_path('./partials/watir_login.tt', __dir__)), trim_mode: '-').result(binding) -%>
5
5
  <%- end -%>
@@ -3,7 +3,7 @@ require_relative '../components/header'
3
3
  <%- end -%>
4
4
 
5
5
  class Page
6
- <%- if automation == 'cross_platform' -%>
6
+ <%- if cross_platform? -%>
7
7
  include AppiumHelper
8
8
  <%- end -%>
9
9
  <%=- ERB.new(File.read(File.expand_path('./partials/initialize_selector.tt', __dir__))).result(binding) -%>
@@ -14,17 +14,17 @@ class Page
14
14
  self.class.to_s.sub('Page', ' Page')
15
15
  end
16
16
 
17
- <%- if automation == 'selenium' -%>
17
+ <%- if selenium_based? -%>
18
18
  # Components
19
19
 
20
20
  def header
21
21
  Header.new(driver.find_element(id: 'customer_menu_top'))
22
22
  end
23
- <%- elsif automation == 'watir' -%>
23
+ <%- elsif watir? -%>
24
24
  # Components
25
25
 
26
26
  def header
27
27
  Header.new(browser.element(id: 'customer_menu_top'))
28
28
  end
29
29
  <%- end -%>
30
- end
30
+ end
@@ -1,4 +1,4 @@
1
- <% if %w[selenium appium_ios appium_android].include?(automation) -%>
1
+ <% if %w[selenium axe applitools appium_ios appium_android].include?(automation) -%>
2
2
  driver.find_element
3
3
  <% else -%>
4
4
  browser.element
@@ -1,6 +1,6 @@
1
- <%- if automation == 'ios' -%>
1
+ <%- if ios? -%>
2
2
  driver.find_element(predicate: 'label == "Sauce Labs Backpack"')
3
- <%- elsif automation == 'android' -%>
3
+ <%- elsif android? -%>
4
4
  driver.find_element(xpath: '(//android.view.ViewGroup[@content-desc="store item"])[1]/android.view.ViewGroup[1]')
5
5
  <%- else -%>
6
6
  element(ios: { predicate: 'label == "Sauce Labs Backpack"' },
@@ -1,4 +1,4 @@
1
- <% if automation == 'watir' %>
1
+ <% if watir? %>
2
2
  attr_reader :browser
3
3
 
4
4
  def initialize(browser)
@@ -1,6 +1,6 @@
1
- <%- if automation == 'ios' -%>
1
+ <%- if ios? -%>
2
2
  driver.find_element(accessibility_id: 'Add To Cart button')
3
- <%- elsif automation == 'android' -%>
3
+ <%- elsif android? -%>
4
4
  driver.find_element(xpath: '//android.view.ViewGroup[@content-desc="Add To Cart button"]/android.widget.TextView')
5
5
  <%- else -%>
6
6
  element(ios: { accessibility_id: 'Add To Cart button' },
@@ -31,4 +31,4 @@ class Login < Page
31
31
  def login_button
32
32
  driver.find_element(xpath: "//button[@title='Login']")
33
33
  end
34
- end
34
+ end
@@ -1,4 +1,4 @@
1
- <% if %w[selenium watir].include?(automation) %>
1
+ <% if web? %>
2
2
  def full_url(*page)
3
3
  "#{base_url}#{url(*page)}"
4
4
  end
@@ -1,5 +1,5 @@
1
- <% if %w[selenium watir].include? automation %>
1
+ <% if web? %>
2
2
  def visit(*page)
3
- <% if automation == 'selenium' %>@driver.navigate.to full_url(page.first) <% else %>@browser.goto full_url(page.first)<% end %>
3
+ <% if selenium_based? %>@driver.navigate.to full_url(page.first) <% else %>@browser.goto full_url(page.first)<% end %>
4
4
  end
5
5
  <% end %>
@@ -1,4 +1,5 @@
1
1
  require_relative '../abstract/page'
2
+
2
3
  class Pdp < Page
3
4
 
4
5
  # Actions
@@ -12,6 +13,6 @@ class Pdp < Page
12
13
  # Elements
13
14
 
14
15
  def add_to_cart_button
15
- <%= ERB.new(File.read(File.expand_path('./partials/pdp_page_selector.tt', __dir__)), trim_mode: '-').result(binding) %>
16
+ <%= ERB.new(File.read(File.expand_path('./partials/pdp_page_selector.tt', __dir__)), trim_mode: '-').result(binding) -%>
16
17
  end
17
- end
18
+ end
@@ -1,8 +1,7 @@
1
- <%- case automation
2
- when 'selenium' -%>
3
- <%=- ERB.new(File.read(File.expand_path('./partials/selenium_env.tt', __dir__)), trim_mode: '-').result(binding) -%>
4
- <%- when 'watir' -%>
5
- <%=- ERB.new(File.read(File.expand_path('./partials/watir_env.tt', __dir__)), trim_mode: '-').result(binding) -%>
1
+ <%- if selenium_based? -%>
2
+ <%= ERB.new(File.read(File.expand_path('./partials/selenium_env.tt', __dir__)), trim_mode: '-').result(binding) -%>
3
+ <%- elsif mobile? -%>
4
+ <%= ERB.new(File.read(File.expand_path('./partials/appium_env.tt', __dir__)), trim_mode: '-').result(binding) -%>
6
5
  <%- else -%>
7
- <%=- ERB.new(File.read(File.expand_path('./partials/appium_env.tt', __dir__)), trim_mode: '-').result(binding) -%>
8
- <%- end -%>
6
+ <%= ERB.new(File.read(File.expand_path('./partials/watir_env.tt', __dir__)), trim_mode: '-').result(binding) -%>
7
+ <%- end -%>
@@ -1,16 +1,20 @@
1
- <% if %w[selenium watir].include? automation -%>
1
+ <%- if web? -%>
2
2
  Feature: Login Page
3
3
 
4
4
  Scenario: A user can login
5
5
  Given I'm a registered user on the login page
6
6
  When I login with my credentials
7
+ <%- if axe? -%>
8
+ Then the page should be axe clean
9
+ <%- else -%>
7
10
  Then I'm logged in
11
+ <% end -%>
8
12
 
9
- <% else -%>
13
+ <%- else -%>
10
14
  Feature: Home Page
11
15
 
12
16
  Scenario: A user can go to the product details page
13
17
  Given I'm an anonymous user on the home page
14
18
  When I select one of the products
15
19
  Then I'm redirected to the product details page
16
- <% end %>
20
+ <%- end %>
@@ -1,8 +1,5 @@
1
1
  require 'tmpdir'
2
2
  require_relative '../../helpers/allure_helper'
3
- require_relative '../../helpers/driver_helper'
4
-
5
- include DriverHelper
6
3
 
7
4
  Before do
8
5
  AllureHelper.configure
@@ -15,4 +12,4 @@ After do |scenario|
15
12
  AllureHelper.add_screenshot(scenario.name, screenshot)
16
13
  end
17
14
  driver.quit_driver
18
- end
15
+ end
@@ -1,11 +1,12 @@
1
1
  require_relative '../../helpers/driver_helper'
2
- <%- if visual_automation -%>
2
+ <%- if visual? -%>
3
3
  require_relative '../../helpers/visual_helper'
4
4
  <%- end -%>
5
- <%- if automation == 'selenium' -%>
5
+ <%- if selenium_based? -%>
6
6
  require_relative '../../models/user_factory'
7
7
 
8
- World(DriverHelper<%- if visual_automation -%>, VisualHelper<%- end -%>)
8
+ World(DriverHelper<%- if visual? -%>, VisualHelper<%- end -%>)
9
9
  <%- else -%>
10
+
10
11
  World(DriverHelper)
11
12
  <%- end -%>
@@ -1,20 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- <% if automation == 'cross_platform' -%>
3
+ <%- if cross_platform? -%>
4
4
  require_relative '../../helpers/appium_helper'
5
5
  <%- end -%>
6
6
  require_relative '../../page_objects/pages/home'
7
7
  require_relative '../../page_objects/pages/pdp'
8
8
 
9
9
  Given("I'm an anonymous user on the home page") do
10
- @home_page = Home.new(driver)
10
+ @home_page = Home.new(driver)
11
11
  end
12
12
 
13
13
  When('I select one of the products') do
14
- @home_page.go_to_backpack_pdp
14
+ @home_page.go_to_backpack_pdp
15
15
  end
16
16
 
17
- When("I'm redirected to the product details page") do
18
- pdp_page = Pdp.new(driver)
19
- expect(pdp_page.add_to_cart_text).to eq 'Add To Cart'
20
- end
17
+ Then("I'm redirected to the product details page") do
18
+ pdp_page = Pdp.new(driver)
19
+ expect(pdp_page.add_to_cart_text).to eq 'Add To Cart'
20
+ end
@@ -1,5 +1,5 @@
1
- <%- if visual_automation -%>
2
1
  # frozen_string_literal: true
2
+ <%- if visual? -%>
3
3
 
4
4
  require 'tmpdir'
5
5
  require_relative '../../helpers/allure_helper'
@@ -30,14 +30,14 @@ After do |scenario|
30
30
  end
31
31
 
32
32
  <%- else -%>
33
- # frozen_string_literal: true
34
33
 
34
+ <%- if axe? && cucumber? -%>
35
+ require 'axe-rspec'
36
+ <%- end -%>
37
+ require 'rspec'
35
38
  require 'tmpdir'
36
- require_relative '../../helpers/driver_helper'
37
39
  require_relative '../../helpers/allure_helper'
38
40
 
39
- include DriverHelper
40
-
41
41
  Before do
42
42
  driver.manage.window.maximize
43
43
  end
@@ -49,4 +49,4 @@ After do |scenario|
49
49
  end
50
50
  driver.quit
51
51
  end
52
- <%- end -%>
52
+ <%- end -%>
@@ -2,9 +2,6 @@
2
2
 
3
3
  require 'tmpdir'
4
4
  require_relative '../../helpers/allure_helper'
5
- require_relative '../../helpers/browser_helper'
6
-
7
- include BrowserHelper
8
5
 
9
6
  Before do
10
7
  browser.window.maximize
@@ -16,4 +13,4 @@ After do |scenario|
16
13
  AllureHelper.add_screenshot(scenario.name, screenshot)
17
14
  end
18
15
  browser.quit
19
- end
16
+ end
@@ -5,7 +5,7 @@ require_relative '../../page_objects/pages/login'
5
5
 
6
6
  Given("I'm a {user} on the login page") do |user|
7
7
  @user = user
8
- @login_page = Login.new(<% if automation == 'watir' %>browser<% else %>driver<% end %>)
8
+ @login_page = Login.new(<% if watir? %>browser<% else %>driver<% end %>)
9
9
  @login_page.visit
10
10
  end
11
11
 
@@ -13,11 +13,18 @@ When('I login with my credentials') do
13
13
  @login_page.login(@user['username'], @user['password'])
14
14
  end
15
15
 
16
+ <%- if axe? -%>
17
+ Then('the page should be axe clean') do
18
+ account = Account.new(driver)
19
+ expect(account.page).to be_axe_clean
20
+ end
21
+ <%- else -%>
16
22
  Then("I'm logged in") do
17
- account_page = Account.new(<% if automation == 'watir' %>browser<% else %>driver<% end %>)
18
- <%- if visual_automation == true -%>
23
+ account_page = Account.new(<% if watir? %>browser<% else %>driver<% end %>)
24
+ <%- if visual? -%>
19
25
  check_page account_page
20
26
  <%- else -%>
21
27
  expect(account_page.header.customer_name).to eq "Welcome back #{@user['name']}"
22
28
  <%- end -%>
23
29
  end
30
+ <%- end -%>
@@ -1,5 +1,5 @@
1
- <% if %w[selenium watir].include? automation -%>
1
+ <%- if web? -%>
2
2
  <%= ERB.new(File.read(File.expand_path('./partials/web_steps.tt', __dir__)), trim_mode: '-').result(binding).strip! -%>
3
- <% else -%>
3
+ <%- else -%>
4
4
  <%= ERB.new(File.read(File.expand_path('./partials/mobile_steps.tt', __dir__)), trim_mode: '-').result(binding).strip! -%>
5
- <% end -%>
5
+ <%- end -%>
@@ -1,4 +1,4 @@
1
- <%- if automation == 'watir' -%>
1
+ <%- if watir? -%>
2
2
  <%=- ERB.new(File.read(File.expand_path('./partials/watir_world.tt', __dir__)), trim_mode: '-').result(binding).strip! -%>
3
3
  <%- else -%>
4
4
  <%=- ERB.new(File.read(File.expand_path('./partials/driver_world.tt', __dir__)), trim_mode: '-').result(binding).strip! -%>
@@ -8,8 +8,6 @@ class Generator < Thor::Group
8
8
  argument :automation
9
9
  argument :framework
10
10
  argument :name
11
- argument :visual_automation, optional: true
12
- argument :axe_support, optional: true
13
11
 
14
12
  def self.source_paths
15
13
  base_path = File.dirname(__FILE__)
@@ -38,6 +36,14 @@ class Generator < Thor::Group
38
36
  (args & %w[android ios]).count.positive?
39
37
  end
40
38
 
39
+ def ios?
40
+ args.include?('ios')
41
+ end
42
+
43
+ def android?
44
+ args.include?('android')
45
+ end
46
+
41
47
  def rspec?
42
48
  args.include?('rspec')
43
49
  end
@@ -47,7 +53,7 @@ class Generator < Thor::Group
47
53
  end
48
54
 
49
55
  def visual?
50
- args[3]
56
+ args.include?('applitools')
51
57
  end
52
58
 
53
59
  def watir?
@@ -55,11 +61,15 @@ class Generator < Thor::Group
55
61
  end
56
62
 
57
63
  def web?
58
- (args & (%w[selenium watir])).count.positive?
64
+ (args & (%w[selenium watir axe applitools])).count.positive?
59
65
  end
60
66
 
61
67
  def axe?
62
- args.last
68
+ args.include?('axe')
69
+ end
70
+
71
+ def selenium_based?
72
+ (args & %w[selenium axe applitools]).count.positive?
63
73
  end
64
74
 
65
75
  private
@@ -24,7 +24,7 @@ class HelpersGenerator < Generator
24
24
  end
25
25
 
26
26
  def generate_browser_helper
27
- return if selenium? || mobile?
27
+ return if selenium_based? || mobile?
28
28
 
29
29
  template('helpers/browser_helper.tt', "#{name}/helpers/browser_helper.rb")
30
30
  end
@@ -19,9 +19,7 @@ module InvokeGenerators
19
19
  automation: structure[:automation],
20
20
  framework:,
21
21
  generator:,
22
- name: structure[:name],
23
- visual: to_bool(structure[:visual]),
24
- axe_support: to_bool(structure[:axe_support])
22
+ name: structure[:name]
25
23
  })
26
24
  end
27
25
  end
@@ -34,9 +32,7 @@ module InvokeGenerators
34
32
  Object.const_get("#{structure[:generator]}Generator")
35
33
  .new([structure[:automation],
36
34
  structure[:framework],
37
- structure[:name],
38
- structure[:visual],
39
- structure[:axe_support]]).invoke_all
35
+ structure[:name]]).invoke_all
40
36
  end
41
37
 
42
38
  def to_bool(string)