diff --git a/.github/workflows/rspec_selenium.yml b/.github/workflows/selenium.yml similarity index 73% rename from .github/workflows/rspec_selenium.yml rename to .github/workflows/selenium.yml index 8d5ad54..bf11cac 100644 --- a/.github/workflows/rspec_selenium.yml +++ b/.github/workflows/selenium.yml @@ -1,9 +1,9 @@ -name: Rspec Selenium Test on Ubuntu +name: Selenium Tests on Ubuntu on: [ pull_request ] jobs: build: - name: Selenium-Rspec pipeline + name: Selenium based frameworks pipeline runs-on: ubuntu-latest steps: @@ -19,4 +19,4 @@ jobs: run: bundle install - name: Build and run system tests - run: rspec spec/system/selenium_rspec_spec.rb + run: rspec spec/system/selenium_spec.rb diff --git a/.github/workflows/watir.yml b/.github/workflows/watir.yml new file mode 100644 index 0000000..d560e73 --- /dev/null +++ b/.github/workflows/watir.yml @@ -0,0 +1,22 @@ +name: Watir Test on Ubuntu +on: [ pull_request ] + +jobs: + build: + name: Watir based frameworks pipeline + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: 3.1.0 + + - name: Install gems + run: bundle install + + - name: Build and run system tests + run: rspec spec/system/watir_spec.rb diff --git a/spec/integration/commands/scaffolding_commands_spec.rb b/spec/integration/commands/scaffolding_commands_spec.rb index b202972..076b816 100644 --- a/spec/integration/commands/scaffolding_commands_spec.rb +++ b/spec/integration/commands/scaffolding_commands_spec.rb @@ -3,7 +3,7 @@ require_relative '../../../lib/generators/common_generator' require_relative '../../../lib/commands/scaffolding_commands' require_relative '../../../lib/scaffolding/scaffolding' -require_relative '../../spec_helper' +require_relative '../spec_helper' describe ScaffoldingCommands do let(:scaffold) { described_class } diff --git a/spec/integration/commands/utility_commands_spec.rb b/spec/integration/commands/utility_commands_spec.rb index 23fdf9c..7692038 100644 --- a/spec/integration/commands/utility_commands_spec.rb +++ b/spec/integration/commands/utility_commands_spec.rb @@ -4,7 +4,7 @@ require_relative '../../../lib/generators/common_generator' require_relative '../../../lib/commands/utility_commands' require_relative '../../../lib/scaffolding/scaffolding' -require_relative '../../spec_helper' +require_relative '../spec_helper' describe UtilityCommands do let(:utility) { described_class } diff --git a/spec/integration/generators/actions_generator_spec.rb b/spec/integration/generators/actions_generator_spec.rb index 901bf6c..4babf0e 100644 --- a/spec/integration/generators/actions_generator_spec.rb +++ b/spec/integration/generators/actions_generator_spec.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true require_relative '../../../lib/generators/actions/actions_generator' -require_relative '../../spec_helper' +require_relative '../spec_helper' describe ActionsGenerator do shared_examples 'creates web automation framework' do |name| diff --git a/spec/integration/generators/automation_generator_spec.rb b/spec/integration/generators/automation_generator_spec.rb index a3fdb5e..3eb214e 100644 --- a/spec/integration/generators/automation_generator_spec.rb +++ b/spec/integration/generators/automation_generator_spec.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true require_relative '../../../lib/generators/automation/automation_generator' -require_relative '../../spec_helper' +require_relative '../spec_helper' describe AutomationGenerator do shared_examples 'creates web automation framework' do |name| diff --git a/spec/integration/generators/common_generator_spec.rb b/spec/integration/generators/common_generator_spec.rb index 2bc0651..6666cb1 100644 --- a/spec/integration/generators/common_generator_spec.rb +++ b/spec/integration/generators/common_generator_spec.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true require_relative '../../../lib/generators/common_generator' -require_relative '../../spec_helper' +require_relative '../spec_helper' describe CommonGenerator do shared_examples 'creates common files' do |name| diff --git a/spec/integration/generators/cucumber_generator_spec.rb b/spec/integration/generators/cucumber_generator_spec.rb index ca0ff21..a2272dd 100644 --- a/spec/integration/generators/cucumber_generator_spec.rb +++ b/spec/integration/generators/cucumber_generator_spec.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true require_relative '../../../lib/generators/cucumber/cucumber_generator' -require_relative '../../spec_helper' +require_relative '../spec_helper' describe CucumberGenerator do shared_examples 'creates cucumber files' do |project_name, file_name| diff --git a/spec/integration/generators/helpers_generator_spec.rb b/spec/integration/generators/helpers_generator_spec.rb index ef3fe15..238b67c 100644 --- a/spec/integration/generators/helpers_generator_spec.rb +++ b/spec/integration/generators/helpers_generator_spec.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true require_relative '../../../lib/generators/helper_generator' -require_relative '../../spec_helper' +require_relative '../spec_helper' describe HelpersGenerator do shared_examples 'creates common helpers' do |name| diff --git a/spec/integration/generators/rspec_generator_spec.rb b/spec/integration/generators/rspec_generator_spec.rb index d9316c7..d1386c1 100644 --- a/spec/integration/generators/rspec_generator_spec.rb +++ b/spec/integration/generators/rspec_generator_spec.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true require_relative '../../../lib/generators/rspec/rspec_generator' -require_relative '../../spec_helper' +require_relative '../spec_helper' describe RspecGenerator do shared_examples 'creates factory files' do |project_name| diff --git a/spec/support/settings_helper.rb b/spec/integration/settings_helper.rb similarity index 71% rename from spec/support/settings_helper.rb rename to spec/integration/settings_helper.rb index 1d9ce71..24ec943 100644 --- a/spec/support/settings_helper.rb +++ b/spec/integration/settings_helper.rb @@ -4,13 +4,11 @@ module SettingsHelper def create_settings(options) automation = options[:automation] - visual = options[:visual] framework = options[:framework] { automation:, framework:, - name: "#{framework}_#{automation}#{'_visual' if visual}", - visual: + name: "#{framework}_#{automation}" } end end diff --git a/spec/spec_helper.rb b/spec/integration/spec_helper.rb similarity index 71% rename from spec/spec_helper.rb rename to spec/integration/spec_helper.rb index 1852da8..6b34759 100644 --- a/spec/spec_helper.rb +++ b/spec/integration/spec_helper.rb @@ -2,8 +2,8 @@ require 'fileutils' require 'rspec' -require_relative '../lib/generators/invoke_generators' -require_relative 'support/settings_helper' +require_relative '../../lib/generators/invoke_generators' +require_relative 'settings_helper' AUTOMATION_TYPES = %w[android ios selenium watir cross_platform axe applitools].freeze FRAMEWORKS = %w[cucumber rspec].freeze @@ -23,10 +23,8 @@ config.after(:all) do FRAMEWORKS.each do |framework| AUTOMATION_TYPES.each do |automation| - [true, false].each do |visual| - settings = create_settings(framework:, automation:, visual:) - FileUtils.rm_rf(settings[:name]) - end + settings = create_settings(framework:, automation:) + FileUtils.rm_rf(settings[:name]) end end end diff --git a/spec/system/selenium_rspec_spec.rb b/spec/system/selenium_rspec_spec.rb deleted file mode 100644 index 6f68d2a..0000000 --- a/spec/system/selenium_rspec_spec.rb +++ /dev/null @@ -1,15 +0,0 @@ -require_relative '../../lib/ruby_raider' - -describe 'Selenium and Rspec framework' do - before do - RubyRaider::Raider.new.invoke(:new, nil, %w[selenium_rspec -p framework:rspec automation:selenium]) - end - - after do - FileUtils.rm_rf('selenium_rspec') - end - - it 'creates a selenium and rspec framework' do - system('cd selenium_rspec && bundle install && raider utility browser_options chrome headless && bundle exec rspec') - end -end diff --git a/spec/system/selenium_spec.rb b/spec/system/selenium_spec.rb new file mode 100644 index 0000000..97ced4b --- /dev/null +++ b/spec/system/selenium_spec.rb @@ -0,0 +1,40 @@ +require_relative '../../lib/ruby_raider' + +FRAMEWORKS = %w[cucumber rspec].freeze + +describe 'Selenium based frameworks' do + before do + FRAMEWORKS.each do |framework| + RubyRaider::Raider + .new.invoke(:new, nil, %W[selenium_#{framework} -p framework:#{framework} automation:selenium]) + end + end + + after do + FRAMEWORKS.each do |framework| + FileUtils.rm_rf("selenium_#{framework}") + end + end + + shared_examples 'creates web automation framework' do |type| + it 'executes without errors' do + run_tests_with(type) + expect($stdout).not_to match(/StandardError/) + end + end + + context 'with rspec' do + include_examples 'creates web automation framework', 'rspec' + end + + context 'with cucumber' do + include_examples 'creates web automation framework', 'cucumber' + end + + private + + def run_tests_with(framework) + folder = framework == 'rspec' ? 'spec' : 'features' + system("cd selenium_#{framework} && bundle install && raider utility browser_options chrome headless && bundle exec #{framework} #{folder}") + end +end diff --git a/spec/system/watir_spec.rb b/spec/system/watir_spec.rb new file mode 100644 index 0000000..c440ef3 --- /dev/null +++ b/spec/system/watir_spec.rb @@ -0,0 +1,39 @@ +require_relative '../../lib/ruby_raider' + +FRAMEWORKS = %w[cucumber rspec].freeze + +describe 'Watir based frameworks' do + before do + FRAMEWORKS.each do |framework| + RubyRaider::Raider + .new.invoke(:new, nil, %W[watir_#{framework} -p framework:#{framework} automation:watir]) + end + end + + after do + FRAMEWORKS.each do |framework| + FileUtils.rm_rf("watir_#{framework}") + end + end + + shared_examples 'creates web automation framework' do |type| + it 'executes without errors' do + run_tests_with(type) + expect($stdout).not_to match(/StandardError/) + end + end + + context 'with rspec' do + include_examples 'creates web automation framework', 'rspec' + end + + context 'with cucumber' do + include_examples 'creates web automation framework', 'cucumber' + end + + private + + def run_tests_with(framework) + system("cd selenium_#{framework} && bundle install && raider utility browser_options chrome headless && bundle exec #{framework}") + end +end