Desktop app - #42
Conversation
There was a problem hiding this comment.
Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit
reek
lib/generators/menu_generator.rb|38| LongParameterList: MenuGenerator#set_up_framework has 4 parameters [https://github.com/troessner/reek/blob/v6.1.4/docs/Long-Parameter-List.md]
lib/generators/rspec/rspec_examples_generator.rb|5| InstanceVariableAssumption: RspecExamplesGenerator assumes too much for instance variable '@_initializer' [https://github.com/troessner/reek/blob/v6.1.4/docs/Instance-Variable-Assumption.md]
| AUTOMATION_TYPES = %w[android ios selenium watir cross_platform].freeze | ||
| FRAMEWORKS = %w[cucumber rspec].freeze | ||
|
|
||
| def create_settings(framework, automation, examples, visual) |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
LongParameterList: create_settings has 4 parameters [https://github.com/troessner/reek/blob/v6.1.4/docs/Long-Parameter-List.md]
| class InstallationScreen < BaseScreen | ||
| include InvokeGenerators | ||
|
|
||
| attr_accessor :entry_text |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
Attribute: InstallationScreen#entry_text is a writable attribute [https://github.com/troessner/reek/blob/v6.1.4/docs/Attribute.md]
| stretchy true | ||
| label('Project Name') { | ||
| top 0 | ||
| halign :center |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
DuplicateMethodCall: InstallationScreen#launch calls 'halign :center' 10 times [https://github.com/troessner/reek/blob/v6.1.4/docs/Duplicate-Method-Call.md]
| } | ||
|
|
||
| @mobile_automation = combobox { | ||
| top 3 |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
DuplicateMethodCall: InstallationScreen#launch calls 'top 3' 2 times [https://github.com/troessner/reek/blob/v6.1.4/docs/Duplicate-Method-Call.md]
| @mobile_automation = combobox { | ||
| top 3 | ||
| halign :center | ||
| visible false |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
DuplicateMethodCall: InstallationScreen#launch calls 'visible false' 3 times [https://github.com/troessner/reek/blob/v6.1.4/docs/Duplicate-Method-Call.md]
| gens.each { |generator| generators.push generator } | ||
| end | ||
|
|
||
| def add_examples(generators) |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
UtilityFunction: InvokeGenerators#add_examples doesn't depend on instance state (maybe move it to another class?) [https://github.com/troessner/reek/blob/v6.1.4/docs/Utility-Function.md]
| end | ||
| end | ||
|
|
||
| def add_generator(generators, *gens) |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
UtilityFunction: InvokeGenerators#add_generator doesn't depend on instance state (maybe move it to another class?) [https://github.com/troessner/reek/blob/v6.1.4/docs/Utility-Function.md]
| generators.push('AutomationExamples') | ||
| end | ||
|
|
||
| def invoke_generator(structure = {}) |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
UtilityFunction: InvokeGenerators#invoke_generator doesn't depend on instance state (maybe move it to another class?) [https://github.com/troessner/reek/blob/v6.1.4/docs/Utility-Function.md]
| private | ||
|
|
||
| def framework_choice(framework, automation_type) | ||
| def framework_choice(framework, automation_type, with_examples: true) |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
BooleanParameter: MenuGenerator#framework_choice has boolean parameter 'with_examples' [https://github.com/troessner/reek/blob/v6.1.4/docs/Boolean-Parameter.md]
| def choose_visual_automation | ||
| prompt.select('Do you want to add visual automation with applitools?') do |menu| | ||
| menu.choice :Yes, -> { true } | ||
| menu.choice :Yes, -> { true } |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
FeatureEnvy: MenuGenerator#choose_visual_automation refers to 'menu' more than self (maybe move it to another class?) [https://github.com/troessner/reek/blob/v6.1.4/docs/Feature-Envy.md]
There was a problem hiding this comment.
Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit
rubocop
lib/desktop/runner_screen.rb|58 col 24| Avoid using {...} for multi-line blocks.
lib/desktop/runner_screen.rb|68 col 1| Extra empty line detected at block body end.
lib/desktop/runner_screen.rb|71 col 34| Avoid using {...} for multi-line blocks.
lib/desktop/runner_screen.rb|74 col 24| Avoid using {...} for multi-line blocks.
lib/desktop/runner_screen.rb|84 col 1| Extra empty line detected at block body end.
ruby_raider.gemspec|28 col 3| Dependencies should be sorted in an alphabetical order within their section of the gemspec. Dependency glimmer-dsl-libui should appear before tty-prompt.
spec/automation_generator_spec.rb|35 col 20| Prefer not_to over to_not.
spec/automation_generator_spec.rb|39 col 20| Prefer not_to over to_not.
spec/automation_generator_spec.rb|63 col 20| Prefer not_to over to_not.
spec/automation_generator_spec.rb|67 col 20| Prefer not_to over to_not.
| @@ -0,0 +1,129 @@ | |||
| # frozen_string_literal: true | |||
| require_relative 'base_screen' | |||
There was a problem hiding this comment.
[rubocop] <Layout/EmptyLineAfterMagicComment> reported by reviewdog 🐶
Add an empty line after magic comments.
| require_relative 'base_screen' | |
| require_relative 'base_screen' |
| attr_accessor :entry_text | ||
|
|
||
| def launch | ||
| window('Ruby Raider', 1240, 800) { |
There was a problem hiding this comment.
[rubocop] <Style/BlockDelimiters> reported by reviewdog 🐶
Avoid using {...} for multi-line blocks.
| window('Ruby Raider', 1240, 800) { | |
| window('Ruby Raider', 1240, 800) do |
| window('Ruby Raider', 1240, 800) { | ||
| margined true | ||
|
|
||
| horizontal_box { |
There was a problem hiding this comment.
[rubocop] <Style/BlockDelimiters> reported by reviewdog 🐶
Avoid using {...} for multi-line blocks.
| horizontal_box { | |
| horizontal_box do |
| margined true | ||
|
|
||
| horizontal_box { | ||
| #area { |
There was a problem hiding this comment.
[rubocop] <Layout/LeadingCommentSpace> reported by reviewdog 🐶
Missing space after #.
| #area { | |
| # area { |
|
|
||
| horizontal_box { | ||
| #area { | ||
| #image(File.expand_path('/Users/apeque01/Desktop/main_folder/Projects/Open source/ruby_raider/logo_transparent_background-1.png', __dir__), width: 400, height: 600) |
There was a problem hiding this comment.
[rubocop] <Layout/LeadingCommentSpace> reported by reviewdog 🐶
Missing space after #.
| #image(File.expand_path('/Users/apeque01/Desktop/main_folder/Projects/Open source/ruby_raider/logo_transparent_background-1.png', __dir__), width: 400, height: 600) | |
| # image(File.expand_path('/Users/apeque01/Desktop/main_folder/Projects/Open source/ruby_raider/logo_transparent_background-1.png', __dir__), width: 400, height: 600) |
| } | ||
| } | ||
|
|
||
| tab { |
There was a problem hiding this comment.
[rubocop] <Style/BlockDelimiters> reported by reviewdog 🐶
Avoid using {...} for multi-line blocks.
| tab { | |
| tab do |
| tab { | ||
| stretchy true | ||
|
|
||
| tab_item('Tests') { |
There was a problem hiding this comment.
[rubocop] <Style/BlockDelimiters> reported by reviewdog 🐶
Avoid using {...} for multi-line blocks.
| tab_item('Tests') { | |
| tab_item('Tests') do |
| tab_item('Tests') { | ||
| files = Dir.glob(File.join('spec', '*_spec.rb')) | ||
| tests = files.map { |file| TEST.new(file) } | ||
| vertical_box { |
There was a problem hiding this comment.
[rubocop] <Style/BlockDelimiters> reported by reviewdog 🐶
Avoid using {...} for multi-line blocks.
| vertical_box { | |
| vertical_box do |
| @tests = refined_table( | ||
| model_array: tests, | ||
| table_columns: { | ||
| 'File Name' => :text, |
There was a problem hiding this comment.
[rubocop] <Style/TrailingCommaInHashLiteral> reported by reviewdog 🐶
Avoid comma after the last item of a hash.
| 'File Name' => :text, | |
| 'File Name' => :text |
| } | ||
| } | ||
|
|
||
| tab_item('Configuration') { |
There was a problem hiding this comment.
[rubocop] <Style/BlockDelimiters> reported by reviewdog 🐶
Avoid using {...} for multi-line blocks.
| tab_item('Configuration') { | |
| tab_item('Configuration') do |
| require_relative 'base_screen' | ||
| require_relative '../generators/invoke_generators' | ||
|
|
||
| class InstallationScreen < BaseScreen |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
InstanceVariableAssumption: InstallationScreen assumes too much for instance variable '@example_checkbox' [https://github.com/troessner/reek/blob/v6.1.4/docs/Instance-Variable-Assumption.md]
|
|
||
| def set_up_framework(automation, framework, visual_automation) | ||
| generate_framework(automation, framework, visual_automation) | ||
| def set_up_framework(automation, framework, visual_automation, with_examples) |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
LongParameterList: MenuGenerator#set_up_framework has 4 parameters [https://github.com/troessner/reek/blob/v6.1.4/docs/Long-Parameter-List.md]
|
|
||
| require_relative '../generator' | ||
|
|
||
| class RspecExamplesGenerator < Generator |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
InstanceVariableAssumption: RspecExamplesGenerator assumes too much for instance variable '@_initializer' [https://github.com/troessner/reek/blob/v6.1.4/docs/Instance-Variable-Assumption.md]
| button('▶') do | ||
| left 0 | ||
| on_clicked do | ||
| output = Open3.popen3("#{@framework} #{@tests.selected_item}") do |_stdin, stdout, _stderr| |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
DuplicateMethodCall: HeaderBar#add_header calls '@tests.selected_item' 2 times [https://github.com/troessner/reek/blob/v6.1.4/docs/Duplicate-Method-Call.md]
| left 2 | ||
| files = Dir.glob(File.join(@folder, @extension)) | ||
| items files | ||
| selected_item files.first |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
DuplicateMethodCall: HeaderBar#add_header calls 'files.first' 2 times [https://github.com/troessner/reek/blob/v6.1.4/docs/Duplicate-Method-Call.md]
| end | ||
| button('■') do | ||
| left 1 | ||
| on_clicked do |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
DuplicateMethodCall: HeaderBar#add_header calls 'on_clicked do ... end' 2 times [https://github.com/troessner/reek/blob/v6.1.4/docs/Duplicate-Method-Call.md]
| button('■') do | ||
| left 1 | ||
| on_clicked do | ||
| pp 'stop' |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
DuplicateMethodCall: HeaderBar#add_header calls 'pp 'stop'' 2 times [https://github.com/troessner/reek/blob/v6.1.4/docs/Duplicate-Method-Call.md]
| module HeaderBar | ||
| include Glimmer | ||
|
|
||
| def add_header |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
TooManyStatements: HeaderBar#add_header has approx 29 statements [https://github.com/troessner/reek/blob/v6.1.4/docs/Too-Many-Statements.md]
| require_relative '../base_screen' | ||
|
|
||
| class RunnerScreen < BaseScreen | ||
| attr_accessor :contacts |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
Attribute: RunnerScreen#contacts is a writable attribute [https://github.com/troessner/reek/blob/v6.1.4/docs/Attribute.md]
| require 'yaml' | ||
| require_relative '../base_screen' | ||
|
|
||
| class RunnerScreen < BaseScreen |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
TooManyInstanceVariables: RunnerScreen has at least 8 instance variables [https://github.com/troessner/reek/blob/v6.1.4/docs/Too-Many-Instance-Variables.md]
| @text_box = multiline_entry do | ||
| text @file.read | ||
|
|
||
| on_changed do |e| |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
UncommunicativeVariableName: RunnerScreen has the variable name 'e' [https://github.com/troessner/reek/blob/v6.1.4/docs/Uncommunicative-Variable-Name.md]
| stretchy false # Smart default option for appending to horizontal_box | ||
| text <=> [self, :entry_text, { after_write: lambda { |text| | ||
| @project_name = text | ||
| $stdout.flush |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
DuplicateMethodCall: InstallationScreen#launch calls '$stdout.flush' 2 times [https://github.com/troessner/reek/blob/v6.1.4/docs/Duplicate-Method-Call.md]
| tab_item('Installer') do | ||
| vertical_box do | ||
| vertical_box do | ||
| stretchy false |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
DuplicateMethodCall: InstallationScreen#launch calls 'stretchy false' 14 times [https://github.com/troessner/reek/blob/v6.1.4/docs/Duplicate-Method-Call.md]
|
|
||
| @mobile_automation = combobox do | ||
| stretchy false | ||
| visible false |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
DuplicateMethodCall: InstallationScreen#launch calls 'visible false' 3 times [https://github.com/troessner/reek/blob/v6.1.4/docs/Duplicate-Method-Call.md]
|
|
||
| @web_automation = combobox do | ||
| stretchy false | ||
| visible true |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
DuplicateMethodCall: InstallationScreen#launch calls 'visible true' 3 times [https://github.com/troessner/reek/blob/v6.1.4/docs/Duplicate-Method-Call.md]
| require_relative 'base_screen' | ||
| require_relative '../generators/invoke_generators' | ||
|
|
||
| class InstallationScreen < BaseScreen |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
InstanceVariableAssumption: InstallationScreen assumes too much for instance variable '@installation_box' [https://github.com/troessner/reek/blob/v6.1.4/docs/Instance-Variable-Assumption.md]
| require_relative 'base_screen' | ||
| require_relative '../generators/invoke_generators' | ||
|
|
||
| class InstallationScreen < BaseScreen |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
TooManyInstanceVariables: InstallationScreen has at least 9 instance variables [https://github.com/troessner/reek/blob/v6.1.4/docs/Too-Many-Instance-Variables.md]
|
|
||
| attr_accessor :entry_text | ||
|
|
||
| def launch |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
TooManyStatements: InstallationScreen#launch has approx 71 statements [https://github.com/troessner/reek/blob/v6.1.4/docs/Too-Many-Statements.md]
| require 'yaml' | ||
| require_relative 'base_screen' | ||
|
|
||
| class RunnerScreen < BaseScreen |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
TooManyInstanceVariables: RunnerScreen has at least 8 instance variables [https://github.com/troessner/reek/blob/v6.1.4/docs/Too-Many-Instance-Variables.md]
| @text_box = multiline_entry do | ||
| text @file.read | ||
|
|
||
| on_changed do |e| |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
UncommunicativeVariableName: RunnerScreen has the variable name 'e' [https://github.com/troessner/reek/blob/v6.1.4/docs/Uncommunicative-Variable-Name.md]
| map '-n' => 'new' | ||
|
|
||
| desc 'open', 'It opens the Ruby Raider desktop app' | ||
| def open |
There was a problem hiding this comment.
[reek] reported by reviewdog 🐶
UtilityFunction: RubyRaider::Raider#open doesn't depend on instance state (maybe move it to another class?) [https://github.com/troessner/reek/blob/v6.1.4/docs/Utility-Function.md]
* All tests running green * Fix rubocop and add extra tests * Added the last tab on the runner screen and I'm working to divide it on components * finish runner desktop screen * Delete runner_screen.rb * fix raider open command issue * Fix lack of items * bump version * bump version * Remove the desktop app * Remove all desktop references --------- Co-authored-by: aguspe <agustin.pe94@gmail.com>
* Fix spelling mistake * Add extra tasks * FInish scaffolding * Upgrade version * Update README.md * Expand existing tasks with Url,Path & browser * Fix lack of ruby raider on rspec * Upgrade to 0.2.7 * convert strings to symbols in new browser * Add command to run all the tests in a project * Upgrade version to 0.2.8 * Upgrade version to 0.2.9 * Add ability to pass the path to scaffolding commands * Add ability to delete page objects and aliases to options * Create CONTRIBUTING.md * Create CODE_OF_CONDUCT.md * Create LICENSE * Update issue templates * Add ability to delete pages, features and specs and aliases to options * Bump raider version * Update README.md * Update README.md * Update README.md * Update Readme * Add support for multiple paths on the config file and added tests for it * Update readme template * Correct typo * Remove extra link from readme files * Added support to generate helpers * Adds ReadMe for helpers * Update Readme * Add scaffold command * Run Rubocop autocorrect * Remove rubocop offenses * Add scaffolding support for rspec and cucumber * Upgrade version * Update readme * Update README.md * Update README.md * Update README.md * Make option to pass browser options available * Transforming helpers into normal modules * Add options to create config file * Finish passing browser options * Upgrade version * Hotfix for bug issue * Update version with hotfix * Create rubocop.yml * Update rubocop.yml * Update rubocop.yml * Update rubocop.yml * Update rubocop.yml * Update README.md * Update README.md * Add rspec workflow (#25) * Add rspec workflow * Add rspec workflow * Add rspec workflow * Test with working directory * Test with working directory * Testing * Testing * Testing * Testing * Add checkout Co-authored-by: aguspe <agustin.pe94@gmail.com> * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md (#27) Some small textual corrections/adjustments. * Task/add workflow for rspec (#26) * Add rspec workflow * Add rspec workflow * Add rspec workflow * Test with working directory * Test with working directory * Testing * Testing * Testing * Testing * Add checkout * Add rubocop corrections * Ruby version specified * Fix rubocop issues * Fix allure source issue * Fix rubocop issues * Fix rubocop issues * Fix rubocop issues I still need to fix the inheritance issues * Fix all rspec tests * Get latest ruby version * Update ruby version on reek workflow * Update lib/commands/scaffolding_commands.rb Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update lib/commands/scaffolding_commands.rb Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update lib/commands/scaffolding_commands.rb Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update lib/commands/scaffolding_commands.rb Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: aguspe <agustin.pe94@gmail.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * browser options working (#24) * browser options working * Update version and fix minor bugs Co-authored-by: aguspe <agustin.pe94@gmail.com> * Improve menu (#28) * New menu finished * Rebuild menu Co-authored-by: aguspe <agustin.pe94@gmail.com> * Fixed menu bug (#29) Co-authored-by: aguspe <agustin.pe94@gmail.com> * Update README.md (#30) * Update README.md Updated README.md with more information on how to use, and added some styling / layout * Update README.md * Update README.md Cleaned up the Markdown and html * Update README.md changed text to ruby for the help command list so highlighting works * Update README.md Changed the order of the readme, for better readability and added clear / more information to commands from the projects homepage * Add parallelization (#31) * Add parallelization * start adding parallelization * Improve parallel running command * correct_rubocop_offenses Co-authored-by: aguspe <agustin.pe94@gmail.com> * update version * change parallelization options and bump version * Add support for android (#33) * Add support for android * Android for both cucumber and rspec working * Refactor iOS to support the new app * Added tests * Bump version Co-authored-by: aguspe <agustin.pe94@gmail.com> * Update README.md * Delete android_test directory * Refactor frameworks and fix smells (#34) * Start refactoring to have green pipelines * FIx most of the rubocop offenses * Added shared examples * Green pipeline, all tests working except scaffolding * Fix scaffolding tests * Fix small details and bump version Co-authored-by: aguspe <agustin.pe94@gmail.com> * Create x platform framework (#35) * Create x platform framework * Fixed configuration issue * Fixed issues with framework generation Co-authored-by: aguspe <agustin.pe94@gmail.com> * Improve formatting (#36) * Improve formatting * Remove extra opts Co-authored-by: aguspe <agustin.pe94@gmail.com> * Visual login (#37) * Visual login * Visual testing finished Co-authored-by: aguspe <agustin.pe94@gmail.com> * Change version command * Upgrade version * Upgrade version * Update README.md * Update README.md * Update README.md * Update README.md * Readme updated * Update README.md * Update README.md * Update README.md * Implementation of watir with visual testing (#39) * Implementation of watir with visual testing * Added tests * Fix small identation issues * Update read me and update version Co-authored-by: aguspe <agustin.pe94@gmail.com> * Add open ai support (#40) * Add support for open ai * Finish adding initial support for open ai --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Simplify open_ai command * FIx order of gems * Add logger for the open ai functionality * Add file optimization (#41) * Add support for optimizing files using open ai * Fix mobile build download issue * Add extra cuke command * Split down command structure --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Correct typo * Up version * Require prompt * Update command name * Fix version print issue * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Create FUNDING.yml * Desktop app (#42) * All tests running green * Fix rubocop and add extra tests * Added the last tab on the runner screen and I'm working to divide it on components * finish runner desktop screen * Delete runner_screen.rb * fix raider open command issue * Fix lack of items * bump version * bump version * Remove the desktop app * Remove all desktop references --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Fix reek and rubocop issues (#45) Co-authored-by: aguspe <agustin.pe94@gmail.com> * Add auto assign issues * Fix reek issues for all web and mobile frameworks but not visual (#47) Co-authored-by: aguspe <agustin.pe94@gmail.com> * Add runner application (#48) * All tests running green * Fix rubocop and add extra tests * Added the last tab on the runner screen and I'm working to divide it on components * finish runner desktop screen * Add runner screen back * Refactored tests and prepare desktop app * Upgrade version and fix load issues * Fix cucumber bug * Update version * Update Read Me * Fix allure issue * Upgrade version * Fix version issue on the gemfile --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Improve cucumber web frameworks (#49) * Improve cucumber web frameworks * Rollback headless command --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Hotfix push for cucumber issues * Update version * Change visual testing app and add better support for selenium and wat… (#50) * Change visual testing app and add better support for selenium and watir visual testing * Update version * Update version * Update version --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Add support for cucumber with visual automation (#51) * Add support for cucumber with visual automation * Improve visual automation and tests setup * Improve support for cucumber and visual support, added helpers * Fix Reek issues and having the selenium cucumber implementation working * Update lib/generators/automation/automation_generator.rb Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update lib/generators/automation/automation_generator.rb Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Improve alignment issues * Improve read me and identation * Upgrade version --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Fix mobile issues and update version (#52) Co-authored-by: aguspe <agustin.pe94@gmail.com> * Remove raider file (#56) * Initial removal of the raider file * All tests running green * All tests running green --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Remove desktop application (#57) Co-authored-by: aguspe <agustin.pe94@gmail.com> * Improve module inclusion on frameworks (#58) * Improve module inclusion on frameworks * Upgrade versions and support visual testing better --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Upgrade mobile versions (#59) Co-authored-by: aguspe <agustin.pe94@gmail.com> * first sparkling upgrade (#60) Co-authored-by: aguspe <agustin.pe94@gmail.com> * Update README.md (#61) * Update read_me.tt (#62) * Add-logger (#44) * All tests running green * Fix rubocop and add extra tests * add logger, add logger to scaffolding so it is include in the raider module * expose default log level, remove set log level func - it is possible to use the def delegator level= instead * fix reek smells create by logger implementation * test push * add error * revert changes * Update logger PR * Remove duplicate logger --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> Co-authored-by: Niki Rasmussen <nikirasmussen@DK-43Y0H72.emea.media.global.loc> * Remove unnecesary warnings (#63) * Remove unnecesary warnings * Remove duplicated share example --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Fix appium cucumber (#64) * Add allure require * Update version --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Remove selenium deprecation and webdriver dependency (#65) Co-authored-by: aguspe <agustin.pe94@gmail.com> * Add git ignore and web workflows (#66) * Add github actions and gitignore file * Update tests and version --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Update version and components (#67) * Update version and components * FIx tests --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Add support for multiple browser options (#68) * Add support for multiple browser options * Add missing example on config for sparkling watir projects --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Use temporary directory for saving screenshots for allure (#69) * Add support for multiple browser options * Use Tmpdir to store screenshots and pass file object straight to Allure * Fix wrong indentation * Remove screenshot folder * Remove creation of screenshot folder in GH Actions * Use Tmpdir to store screenshots and pass file object straight to Allure --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Upgrade version * Add dynamic support for version and provide a parsed version (#70) Co-authored-by: aguspe <agustin.pe94@gmail.com> * Update Faraday Version * Faraday Version Update * Update README.md Update table view * Update mobile_steps.tt (#79) Commit was tested in all framework combinations * Update spec_helper.tt (#81) Initialised and assigned value to the variable screenshot. Tested on all combinations. Co-authored-by: Agustin Pequeno <33221555+aguspe@users.noreply.github.com> * Conditional path to Appium Helper (#80) * Conditional path to appium helper Path is created for cross platforms frameworks. Tested for all combinations. * Update spec.tt * Update README.md (#82) * Update README.md * Utility command for starting Appium server (#83) ReadMe File updated with a new command. * Update read_me.tt (#84) Updated with a missing appium command * Test files folder structure (#86) Aligned folder structure to Ruby on Rails convention. Added Rake task for running integration and system tests. * Integration pipeline (#88) * Update integration.yml * Update README.md * Update README.md * Create system.yml (#90) * Create system.yml * Update ruby_raider_spec.rb * Update ruby_raider_spec.rb * Update ruby_raider_spec.rb * Update ruby_raider_spec.rb * Update ruby_raider_spec.rb Indentations * Pipeline environment * Update ruby_raider_spec.rb Meet rubocop requirements * Update ruby_raider_spec.rb * Update system.yml Pipeline triggered on a push to master * Readme update (#91) * Update read_me.tt Deleted information about scaffolding commands * Update README.md * Update ruby_raider.gemspec (#92) 0.8.6 version * Rake task showing raider version (#93) * Rake task for generated projects * Added txt file for gem version Fixed raider version command and added rake task for generated projects * Deleted irrelevant rake tasks * Cleaned the syntax * Cleaned syntax to match Rubocop requirements * Fixed variables names and values * Scaffolding commands (#94) * Scaffolding commands refinement Debugged files generated with scaffolding commands, updated integration tests to match the refined files paths, updated Readme. Run integration and system tests locally. * Refined scaffolding commands Updated the generated files, added command for steps, updated readme. Run integration and system tests locally. Tested also web frameworks. * Created two separate methods for scaffolding Run integration and system test * Changes to pass reek review * Disabled reek condition * Update sponsors list (#96) * Axe implementation (#95) * IN PROGRESS: axe implementation I updated generators: menu, gemfile, driver_helper and spec.tt. The condition doesn't work though. * Update menu_generator.rb * Finish the axe framework generation --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> Co-authored-by: Agustin Pequeno <33221555+aguspe@users.noreply.github.com> * Configured trusted publisher (#97) * Add test workflow * Add github workflow * Update Rakefile --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Remove open ai (#98) * Remove open AI from raider * Update version --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Remove faraday dependency (#99) Co-authored-by: aguspe <agustin.pe94@gmail.com> * Test selenium workflow (#100) * Test selenium workflow * Update flow * Updare ruby raider * Retry flow * Retry flow * Retry flow * Add command to pass parameters * Update flow * Update tests * Update tests * Update tests * Update tests * Update tests * Update tests * Update version * Update lib/ruby_raider.rb Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Correct rubocop and reek issues * Update rubocop * Fix rubocop --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Add watir flow (#101) * Add watir flow * Bug fix --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Remove dotenv uneeded dependency * Update appium setup capabilities (#103) * Update appium setup capabilities * Update appium setup capabilities --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Remove sparkling watir (#104) * Remove sparkling watir * Bump version --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Update menu generator (#105) * Simplify menu and code generation * Add axe cucumber * Fix cucumber appium --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Update Readme * Add new flow names (#102) * Add new flow names * Remove system tests and update rspec watir flow * try without headless * remove bundle install * Update selenium tests * Update selenium tests * Try with pure github flows * Use browserstack again * Try only using github actions * Try again * Try again * Update pipelines * Fix and update integration tests * Try a different way * Try a different way * Update tests * Remove rubocop warning * Fix tests * Update README.md * Update README.md * Update README.md * Update README.md (#112) * Update README.md * Update README.md * Update README.md * Start adding dynamic plugin support (#111) * Start adding dynamic plugin support * Correct extra space * Update Gemfile Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Add and remove commands dynamically * Plugin working * Plugin command running * Fix tests * Fix plugins and update read_me * Update version --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update plugins and version * Improve error handling (#113) * Improbe error handling * update version * Improve error handling * Update gemfile version * Update README.md * Update README.md (#126) * Update gems, and remove extra templates (#127) * downgrade allure version (#128) * update version * Add browserstack support * Update README.md (#129) * Fix allure issue and update read me (#130) * Prepare for beta (#131) * Fix before beta (#132) * Prepare for beta * Update browser * Update README.md (#134) * Update README.md * Update README.md (#135) * Update read_me.tt (#136) * Update LICENSE to Apache (#137) * Update README.md (#138) * Fix minor bug on selenium builds (#140) * Update README.md (#141) * Add support in the menu for github (#143) * Add gitlab support (#144) * Update version * Fix integration pipeline (#145) * Update README.md * Update README.md * Update integration.yml * Update reek.yml * Update rubocop.yml * Update selenium.yml * Update watir.yml * Update push_gem.yml * Update README.md * Call template optimization (#146) * Refactor template system with caching, consolidation, and end-to-end testing ## Template System Refactoring ### Phase 1: Template Renderer Infrastructure - Add TemplateRenderer module with clean partial() API - Implement PartialCache with compiled ERB object caching (10x performance) - Add PartialResolver for context-aware path resolution - Create custom error classes with helpful messages - Mix TemplateRenderer into Generator base class ### Phase 2: Template Migration - Migrate 27 ERB.new() calls to partial() helper across 14 templates - Replace verbose File.read(File.expand_path(...)) with partial('name') - Eliminate ~2,430 characters of boilerplate code - Standardize whitespace handling (trim_mode, strip options) ### Phase 3: Template Consolidation - Delete 7 duplicate template files - Consolidate selenium_login/watir_login into unified login.tt - Consolidate selenium_account/watir_account into unified account.tt - Merge ios_caps/android_caps/cross_platform_caps into appium_caps.tt - Extract browserstack_config.tt (shared logic used 2x) - Refactor driver_and_options.tt: 115 lines → 7-line dispatcher - Split into focused partials: axe_driver, selenium_driver, appium_driver ### Phase 4: Testing & Documentation - Add comprehensive unit tests (spec/generators/template_renderer_spec.rb) - Create end-to-end test spec with actual test execution - Add docs/template_rendering.md (500+ lines usage guide) - Add docs/testing_strategy.md (comprehensive testing guide) ## End-to-End Testing Implementation - Add spec/integration/end_to_end_spec.rb - Tests now generate projects, install dependencies, and run tests - Integration tests fail if generated tests fail (full verification) - Cover 5 web frameworks with full execution - Structure validation for mobile/visual frameworks ## Bug Fixes - Fix PartialResolver to search subdirectories (templates/*/partials/) - Add proper timeout handling with Timeout module - Fix binding context resolution for Thor templates ## Metrics - Templates: 61 → 54 files (-11%) - ERB.new() calls: 27 → 0 (-100%) - driver_and_options.tt: 115 lines → 7 lines (-94%) - Template render (cached): 135ms → 13.5ms (10x faster) - Test coverage: 262 examples (unit + integration + e2e) ## Breaking Changes None - 100% backward compatible. All framework combinations tested and passing. * Add CLAUDE.md to .gitignore * Fix CI pipelines and remove docs - Update reek.yml: Change ruby-version from 'head' to '3.3' with bundler-cache - Update rubocop.yml: Change ruby-version from 'head' to '3.3' with bundler-cache - Remove docs/template_rendering.md - Remove docs/testing_strategy.md The 'head' ruby version was causing 404 errors in CI. Using stable 3.3 version instead. * Add fully automated release system - Add .github/workflows/release.yml * Triggers on version tags (v*.*.*) * Runs tests, builds gem, creates release * Automatically publishes to RubyGems * Generates changelog from commits * Creates GitHub Release with notes - Add bin/release script * One-command release: bin/release [major|minor|patch] * Validates tests, linters, and repo state * Updates lib/version automatically * Creates commit and tag * Pushes to GitHub (triggers workflow) - Add RELEASE.md (comprehensive documentation) * Complete release process guide * Semantic versioning guide * Troubleshooting section * Manual release backup method * Configuration details - Add RELEASE_QUICK_GUIDE.md (TL;DR version) * Quick reference for releases * One-command usage * First-time setup steps ## Usage Release a new version with a single command: ```bash bin/release patch # Bug fixes (1.1.4 -> 1.1.5) bin/release minor # New features (1.1.4 -> 1.2.0) bin/release major # Breaking changes (1.1.4 -> 2.0.0) ``` Everything else is automated via GitHub Actions. ## First-Time Setup Add RUBYGEMS_API_KEY secret to GitHub repository settings. * Fix RuboCop and Reek issues - Add RSpec configuration to .rubocop.yml for test-specific patterns - Exclude spec files from Metrics/BlockLength check - All 44 files pass with zero offenses - Reek passes with zero issues * Enhance release workflow with manual trigger and changelog Added manual trigger for release workflow with version input and improved changelog generation. * Change condition to check repository owner for release * Add manual release trigger and remove auto-publish to RubyGems (#147) Removes automatic RubyGems publishing to give maintainers control over when gems are published. Workflow now creates GitHub releases with gem files attached, allowing manual verification before publishing. * Update pipelines * pipeline fixed (#148) * simplify pipelines (#149) * Fix/allure loading error (#150) * simplify pipelines * fixed tests * Fix PR review comments: rubocop and reek warnings - Add RSpec/BeforeAfterAll inline disable comments to system specs - Extract SystemTestHelper module to fix DuplicateMethodCall and TooManyStatements - Add reek suppressions for UtilityFunction and ControlParameter - Fix capybara rack-test error with run_server = false - Add capybara minitest support in test_helper.tt - Add setup job to system_tests.yml to prevent cache conflicts --------- * Bump version to 2.0.0 * Use RELEASE_TOKEN to bypass branch protection in release workflow * Use GitHub App token for release workflow branch protection bypass * Fix infinite recursion in TemplateRenderError#to_s and re-raise TemplateError - Use super() instead of message in to_s to avoid infinite recursion - Re-raise TemplateError subclasses before generic StandardError rescue - Add test fixture templates for partial rendering tests * Add E2E, content validation, command routing, and menu tests (#151) * Ruby Raider v3.0.0 - Add Minitest and Capybara as first-class framework and automation types - Add optional web add-ons: accessibility (axe), visual regression (chunky_png), performance (Lighthouse) - Add LLM integration (OpenAI, Anthropic, Ollama) for AI-assisted scaffolding - Add adopt command for importing existing test projects - Add enhanced scaffolding: CRUD generation, URL analysis, components, from_url - Add video recording support for all framework combinations - Add CLI features: skip flags, reporter selection, retry, tags, destroy, template overrides - Add GitHub Actions and GitLab CI/CD pipeline generation - Add Steep type checking with RBS signatures - Add E2E tests, content validation, command routing, and menu tests - Add terminal logo display on project creation - Refactor Applitools to chunky_png for free local visual regression - Refactor axe from automation type to optional add-on - Update README with full feature documentation and new logo * fix comments * fix comments * fix comments * fixing rake pipeline * raider 3.0.0 * Update lib/generators/menu_generator.rb Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Remove Sponsors section from README Removed the Sponsors section and BrowserStack testing note. * Change release information link in README Updated the link for more information and releases. * Change release information link format in README Updated the link format for the release information in the README. * Update website links in README.md * Update README.md * Correct link syntax for Ruby Raider website Fix link formatting in README for website reference. * Fix link formatting in README.md * fix_utilities (#152) * Bump version to 3.0.1 * Remove LLM, plugins, capybara, minitest, adopt, reporter selection, ruby version selection, gitlab CI, and skip_ci Simplify Ruby Raider by removing low-value features: - LLM integration and plugin system - Capybara and Minitest as framework options - Adopt project import feature - Reporter selection (allure is now always included) - Ruby version selection and .ruby-version generation - GitLab CI/CD option and CI platform selector (GitHub Actions is now default) - --skip_ci flag (CI is always generated) * Remove visual regression and Lighthouse performance addons Simplify addon options — only accessibility (axe) remains as an optional add-on. Removes visual_addon/chunky_png and lighthouse_addon/performance templates, generators, menu steps, CLI flags, and all related tests. * Remove CRUD scaffold, template overrides, selective scaffold, and spec-from-page Simplify scaffolding to basic commands only: page, spec, feature, steps, helper, component, and scaffold (generates page + test). Removes --crud, --with, --from options and interactive scaffold menu. * version bump * Fix broken tests after merge — delete stale files from removed features --------- Co-authored-by: Gert van der Spoel <github@3edge.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Jonas <jonasah97@gmail.com> Co-authored-by: nikipedersen <82040834+nikipedersen@users.noreply.github.com> Co-authored-by: Niki Rasmussen <nikirasmussen@DK-43Y0H72.emea.media.global.loc> Co-authored-by: Kasper Tonsgaard <kaspertonsgaard@gmail.com> Co-authored-by: natalia-ss <155972960+natalia-ss@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* FInish scaffolding * Upgrade version * Update README.md * Expand existing tasks with Url,Path & browser * Fix lack of ruby raider on rspec * Upgrade to 0.2.7 * convert strings to symbols in new browser * Add command to run all the tests in a project * Upgrade version to 0.2.8 * Upgrade version to 0.2.9 * Add ability to pass the path to scaffolding commands * Add ability to delete page objects and aliases to options * Create CONTRIBUTING.md * Create CODE_OF_CONDUCT.md * Create LICENSE * Update issue templates * Add ability to delete pages, features and specs and aliases to options * Bump raider version * Update README.md * Update README.md * Update README.md * Update Readme * Add support for multiple paths on the config file and added tests for it * Update readme template * Correct typo * Remove extra link from readme files * Added support to generate helpers * Adds ReadMe for helpers * Update Readme * Add scaffold command * Run Rubocop autocorrect * Remove rubocop offenses * Add scaffolding support for rspec and cucumber * Upgrade version * Update readme * Update README.md * Update README.md * Update README.md * Make option to pass browser options available * Transforming helpers into normal modules * Add options to create config file * Finish passing browser options * Upgrade version * Hotfix for bug issue * Update version with hotfix * Create rubocop.yml * Update rubocop.yml * Update rubocop.yml * Update rubocop.yml * Update rubocop.yml * Update README.md * Update README.md * Add rspec workflow (#25) * Add rspec workflow * Add rspec workflow * Add rspec workflow * Test with working directory * Test with working directory * Testing * Testing * Testing * Testing * Add checkout Co-authored-by: aguspe <agustin.pe94@gmail.com> * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md (#27) Some small textual corrections/adjustments. * Task/add workflow for rspec (#26) * Add rspec workflow * Add rspec workflow * Add rspec workflow * Test with working directory * Test with working directory * Testing * Testing * Testing * Testing * Add checkout * Add rubocop corrections * Ruby version specified * Fix rubocop issues * Fix allure source issue * Fix rubocop issues * Fix rubocop issues * Fix rubocop issues I still need to fix the inheritance issues * Fix all rspec tests * Get latest ruby version * Update ruby version on reek workflow * Update lib/commands/scaffolding_commands.rb Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update lib/commands/scaffolding_commands.rb Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update lib/commands/scaffolding_commands.rb Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update lib/commands/scaffolding_commands.rb Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: aguspe <agustin.pe94@gmail.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * browser options working (#24) * browser options working * Update version and fix minor bugs Co-authored-by: aguspe <agustin.pe94@gmail.com> * Improve menu (#28) * New menu finished * Rebuild menu Co-authored-by: aguspe <agustin.pe94@gmail.com> * Fixed menu bug (#29) Co-authored-by: aguspe <agustin.pe94@gmail.com> * Update README.md (#30) * Update README.md Updated README.md with more information on how to use, and added some styling / layout * Update README.md * Update README.md Cleaned up the Markdown and html * Update README.md changed text to ruby for the help command list so highlighting works * Update README.md Changed the order of the readme, for better readability and added clear / more information to commands from the projects homepage * Add parallelization (#31) * Add parallelization * start adding parallelization * Improve parallel running command * correct_rubocop_offenses Co-authored-by: aguspe <agustin.pe94@gmail.com> * update version * change parallelization options and bump version * Add support for android (#33) * Add support for android * Android for both cucumber and rspec working * Refactor iOS to support the new app * Added tests * Bump version Co-authored-by: aguspe <agustin.pe94@gmail.com> * Update README.md * Delete android_test directory * Refactor frameworks and fix smells (#34) * Start refactoring to have green pipelines * FIx most of the rubocop offenses * Added shared examples * Green pipeline, all tests working except scaffolding * Fix scaffolding tests * Fix small details and bump version Co-authored-by: aguspe <agustin.pe94@gmail.com> * Create x platform framework (#35) * Create x platform framework * Fixed configuration issue * Fixed issues with framework generation Co-authored-by: aguspe <agustin.pe94@gmail.com> * Improve formatting (#36) * Improve formatting * Remove extra opts Co-authored-by: aguspe <agustin.pe94@gmail.com> * Visual login (#37) * Visual login * Visual testing finished Co-authored-by: aguspe <agustin.pe94@gmail.com> * Change version command * Upgrade version * Upgrade version * Update README.md * Update README.md * Update README.md * Update README.md * Readme updated * Update README.md * Update README.md * Update README.md * Implementation of watir with visual testing (#39) * Implementation of watir with visual testing * Added tests * Fix small identation issues * Update read me and update version Co-authored-by: aguspe <agustin.pe94@gmail.com> * Add open ai support (#40) * Add support for open ai * Finish adding initial support for open ai --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Simplify open_ai command * FIx order of gems * Add logger for the open ai functionality * Add file optimization (#41) * Add support for optimizing files using open ai * Fix mobile build download issue * Add extra cuke command * Split down command structure --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Correct typo * Up version * Require prompt * Update command name * Fix version print issue * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Create FUNDING.yml * Desktop app (#42) * All tests running green * Fix rubocop and add extra tests * Added the last tab on the runner screen and I'm working to divide it on components * finish runner desktop screen * Delete runner_screen.rb * fix raider open command issue * Fix lack of items * bump version * bump version * Remove the desktop app * Remove all desktop references --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Fix reek and rubocop issues (#45) Co-authored-by: aguspe <agustin.pe94@gmail.com> * Add auto assign issues * Fix reek issues for all web and mobile frameworks but not visual (#47) Co-authored-by: aguspe <agustin.pe94@gmail.com> * Add runner application (#48) * All tests running green * Fix rubocop and add extra tests * Added the last tab on the runner screen and I'm working to divide it on components * finish runner desktop screen * Add runner screen back * Refactored tests and prepare desktop app * Upgrade version and fix load issues * Fix cucumber bug * Update version * Update Read Me * Fix allure issue * Upgrade version * Fix version issue on the gemfile --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Improve cucumber web frameworks (#49) * Improve cucumber web frameworks * Rollback headless command --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Hotfix push for cucumber issues * Update version * Change visual testing app and add better support for selenium and wat… (#50) * Change visual testing app and add better support for selenium and watir visual testing * Update version * Update version * Update version --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Add support for cucumber with visual automation (#51) * Add support for cucumber with visual automation * Improve visual automation and tests setup * Improve support for cucumber and visual support, added helpers * Fix Reek issues and having the selenium cucumber implementation working * Update lib/generators/automation/automation_generator.rb Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update lib/generators/automation/automation_generator.rb Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Improve alignment issues * Improve read me and identation * Upgrade version --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Fix mobile issues and update version (#52) Co-authored-by: aguspe <agustin.pe94@gmail.com> * Remove raider file (#56) * Initial removal of the raider file * All tests running green * All tests running green --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Remove desktop application (#57) Co-authored-by: aguspe <agustin.pe94@gmail.com> * Improve module inclusion on frameworks (#58) * Improve module inclusion on frameworks * Upgrade versions and support visual testing better --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Upgrade mobile versions (#59) Co-authored-by: aguspe <agustin.pe94@gmail.com> * first sparkling upgrade (#60) Co-authored-by: aguspe <agustin.pe94@gmail.com> * Update README.md (#61) * Update read_me.tt (#62) * Add-logger (#44) * All tests running green * Fix rubocop and add extra tests * add logger, add logger to scaffolding so it is include in the raider module * expose default log level, remove set log level func - it is possible to use the def delegator level= instead * fix reek smells create by logger implementation * test push * add error * revert changes * Update logger PR * Remove duplicate logger --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> Co-authored-by: Niki Rasmussen <nikirasmussen@DK-43Y0H72.emea.media.global.loc> * Remove unnecesary warnings (#63) * Remove unnecesary warnings * Remove duplicated share example --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Fix appium cucumber (#64) * Add allure require * Update version --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Remove selenium deprecation and webdriver dependency (#65) Co-authored-by: aguspe <agustin.pe94@gmail.com> * Add git ignore and web workflows (#66) * Add github actions and gitignore file * Update tests and version --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Update version and components (#67) * Update version and components * FIx tests --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Add support for multiple browser options (#68) * Add support for multiple browser options * Add missing example on config for sparkling watir projects --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Use temporary directory for saving screenshots for allure (#69) * Add support for multiple browser options * Use Tmpdir to store screenshots and pass file object straight to Allure * Fix wrong indentation * Remove screenshot folder * Remove creation of screenshot folder in GH Actions * Use Tmpdir to store screenshots and pass file object straight to Allure --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Upgrade version * Add dynamic support for version and provide a parsed version (#70) Co-authored-by: aguspe <agustin.pe94@gmail.com> * Update Faraday Version * Faraday Version Update * Update README.md Update table view * Update mobile_steps.tt (#79) Commit was tested in all framework combinations * Update spec_helper.tt (#81) Initialised and assigned value to the variable screenshot. Tested on all combinations. Co-authored-by: Agustin Pequeno <33221555+aguspe@users.noreply.github.com> * Conditional path to Appium Helper (#80) * Conditional path to appium helper Path is created for cross platforms frameworks. Tested for all combinations. * Update spec.tt * Update README.md (#82) * Update README.md * Utility command for starting Appium server (#83) ReadMe File updated with a new command. * Update read_me.tt (#84) Updated with a missing appium command * Test files folder structure (#86) Aligned folder structure to Ruby on Rails convention. Added Rake task for running integration and system tests. * Integration pipeline (#88) * Update integration.yml * Update README.md * Update README.md * Create system.yml (#90) * Create system.yml * Update ruby_raider_spec.rb * Update ruby_raider_spec.rb * Update ruby_raider_spec.rb * Update ruby_raider_spec.rb * Update ruby_raider_spec.rb Indentations * Pipeline environment * Update ruby_raider_spec.rb Meet rubocop requirements * Update ruby_raider_spec.rb * Update system.yml Pipeline triggered on a push to master * Readme update (#91) * Update read_me.tt Deleted information about scaffolding commands * Update README.md * Update ruby_raider.gemspec (#92) 0.8.6 version * Rake task showing raider version (#93) * Rake task for generated projects * Added txt file for gem version Fixed raider version command and added rake task for generated projects * Deleted irrelevant rake tasks * Cleaned the syntax * Cleaned syntax to match Rubocop requirements * Fixed variables names and values * Scaffolding commands (#94) * Scaffolding commands refinement Debugged files generated with scaffolding commands, updated integration tests to match the refined files paths, updated Readme. Run integration and system tests locally. * Refined scaffolding commands Updated the generated files, added command for steps, updated readme. Run integration and system tests locally. Tested also web frameworks. * Created two separate methods for scaffolding Run integration and system test * Changes to pass reek review * Disabled reek condition * Update sponsors list (#96) * Axe implementation (#95) * IN PROGRESS: axe implementation I updated generators: menu, gemfile, driver_helper and spec.tt. The condition doesn't work though. * Update menu_generator.rb * Finish the axe framework generation --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> Co-authored-by: Agustin Pequeno <33221555+aguspe@users.noreply.github.com> * Configured trusted publisher (#97) * Add test workflow * Add github workflow * Update Rakefile --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Remove open ai (#98) * Remove open AI from raider * Update version --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Remove faraday dependency (#99) Co-authored-by: aguspe <agustin.pe94@gmail.com> * Test selenium workflow (#100) * Test selenium workflow * Update flow * Updare ruby raider * Retry flow * Retry flow * Retry flow * Add command to pass parameters * Update flow * Update tests * Update tests * Update tests * Update tests * Update tests * Update tests * Update version * Update lib/ruby_raider.rb Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Correct rubocop and reek issues * Update rubocop * Fix rubocop --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Add watir flow (#101) * Add watir flow * Bug fix --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Remove dotenv uneeded dependency * Update appium setup capabilities (#103) * Update appium setup capabilities * Update appium setup capabilities --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Remove sparkling watir (#104) * Remove sparkling watir * Bump version --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Update menu generator (#105) * Simplify menu and code generation * Add axe cucumber * Fix cucumber appium --------- Co-authored-by: aguspe <agustin.pe94@gmail.com> * Update Readme * Add new flow names (#102) * Add new flow names * Remove system tests and update rspec watir flow * try without headless * remove bundle install * Update selenium tests * Update selenium tests * Try with pure github flows * Use browserstack again * Try only using github actions * Try again * Try again * Update pipelines * Fix and update integration tests * Try a different way * Try a different way * Update tests * Remove rubocop warning * Fix tests * Update README.md * Update README.md * Update README.md * Update README.md (#112) * Update README.md * Update README.md * Update README.md * Start adding dynamic plugin support (#111) * Start adding dynamic plugin support * Correct extra space * Update Gemfile Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Add and remove commands dynamically * Plugin working * Plugin command running * Fix tests * Fix plugins and update read_me * Update version --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update plugins and version * Improve error handling (#113) * Improbe error handling * update version * Improve error handling * Update gemfile version * Update README.md * Update README.md (#126) * Update gems, and remove extra templates (#127) * downgrade allure version (#128) * update version * Add browserstack support * Update README.md (#129) * Fix allure issue and update read me (#130) * Prepare for beta (#131) * Fix before beta (#132) * Prepare for beta * Update browser * Update README.md (#134) * Update README.md * Update README.md (#135) * Update read_me.tt (#136) * Update LICENSE to Apache (#137) * Update README.md (#138) * Fix minor bug on selenium builds (#140) * Update README.md (#141) * Add support in the menu for github (#143) * Add gitlab support (#144) * Update version * Fix integration pipeline (#145) * Update README.md * Update README.md * Update integration.yml * Update reek.yml * Update rubocop.yml * Update selenium.yml * Update watir.yml * Update push_gem.yml * Update README.md * Call template optimization (#146) * Refactor template system with caching, consolidation, and end-to-end testing ## Template System Refactoring ### Phase 1: Template Renderer Infrastructure - Add TemplateRenderer module with clean partial() API - Implement PartialCache with compiled ERB object caching (10x performance) - Add PartialResolver for context-aware path resolution - Create custom error classes with helpful messages - Mix TemplateRenderer into Generator base class ### Phase 2: Template Migration - Migrate 27 ERB.new() calls to partial() helper across 14 templates - Replace verbose File.read(File.expand_path(...)) with partial('name') - Eliminate ~2,430 characters of boilerplate code - Standardize whitespace handling (trim_mode, strip options) ### Phase 3: Template Consolidation - Delete 7 duplicate template files - Consolidate selenium_login/watir_login into unified login.tt - Consolidate selenium_account/watir_account into unified account.tt - Merge ios_caps/android_caps/cross_platform_caps into appium_caps.tt - Extract browserstack_config.tt (shared logic used 2x) - Refactor driver_and_options.tt: 115 lines → 7-line dispatcher - Split into focused partials: axe_driver, selenium_driver, appium_driver ### Phase 4: Testing & Documentation - Add comprehensive unit tests (spec/generators/template_renderer_spec.rb) - Create end-to-end test spec with actual test execution - Add docs/template_rendering.md (500+ lines usage guide) - Add docs/testing_strategy.md (comprehensive testing guide) ## End-to-End Testing Implementation - Add spec/integration/end_to_end_spec.rb - Tests now generate projects, install dependencies, and run tests - Integration tests fail if generated tests fail (full verification) - Cover 5 web frameworks with full execution - Structure validation for mobile/visual frameworks ## Bug Fixes - Fix PartialResolver to search subdirectories (templates/*/partials/) - Add proper timeout handling with Timeout module - Fix binding context resolution for Thor templates ## Metrics - Templates: 61 → 54 files (-11%) - ERB.new() calls: 27 → 0 (-100%) - driver_and_options.tt: 115 lines → 7 lines (-94%) - Template render (cached): 135ms → 13.5ms (10x faster) - Test coverage: 262 examples (unit + integration + e2e) ## Breaking Changes None - 100% backward compatible. All framework combinations tested and passing. * Add CLAUDE.md to .gitignore * Fix CI pipelines and remove docs - Update reek.yml: Change ruby-version from 'head' to '3.3' with bundler-cache - Update rubocop.yml: Change ruby-version from 'head' to '3.3' with bundler-cache - Remove docs/template_rendering.md - Remove docs/testing_strategy.md The 'head' ruby version was causing 404 errors in CI. Using stable 3.3 version instead. * Add fully automated release system - Add .github/workflows/release.yml * Triggers on version tags (v*.*.*) * Runs tests, builds gem, creates release * Automatically publishes to RubyGems * Generates changelog from commits * Creates GitHub Release with notes - Add bin/release script * One-command release: bin/release [major|minor|patch] * Validates tests, linters, and repo state * Updates lib/version automatically * Creates commit and tag * Pushes to GitHub (triggers workflow) - Add RELEASE.md (comprehensive documentation) * Complete release process guide * Semantic versioning guide * Troubleshooting section * Manual release backup method * Configuration details - Add RELEASE_QUICK_GUIDE.md (TL;DR version) * Quick reference for releases * One-command usage * First-time setup steps ## Usage Release a new version with a single command: ```bash bin/release patch # Bug fixes (1.1.4 -> 1.1.5) bin/release minor # New features (1.1.4 -> 1.2.0) bin/release major # Breaking changes (1.1.4 -> 2.0.0) ``` Everything else is automated via GitHub Actions. ## First-Time Setup Add RUBYGEMS_API_KEY secret to GitHub repository settings. * Fix RuboCop and Reek issues - Add RSpec configuration to .rubocop.yml for test-specific patterns - Exclude spec files from Metrics/BlockLength check - All 44 files pass with zero offenses - Reek passes with zero issues * Enhance release workflow with manual trigger and changelog Added manual trigger for release workflow with version input and improved changelog generation. * Change condition to check repository owner for release * Add manual release trigger and remove auto-publish to RubyGems (#147) Removes automatic RubyGems publishing to give maintainers control over when gems are published. Workflow now creates GitHub releases with gem files attached, allowing manual verification before publishing. Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com> * Update pipelines * pipeline fixed (#148) Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * simplify pipelines (#149) Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * Fix/allure loading error (#150) * simplify pipelines * fixed tests * Fix PR review comments: rubocop and reek warnings - Add RSpec/BeforeAfterAll inline disable comments to system specs - Extract SystemTestHelper module to fix DuplicateMethodCall and TooManyStatements - Add reek suppressions for UtilityFunction and ControlParameter - Fix capybara rack-test error with run_server = false - Add capybara minitest support in test_helper.tt - Add setup job to system_tests.yml to prevent cache conflicts --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * Bump version to 2.0.0 * Use RELEASE_TOKEN to bypass branch protection in release workflow * Use GitHub App token for release workflow branch protection bypass * Fix infinite recursion in TemplateRenderError#to_s and re-raise TemplateError - Use super() instead of message in to_s to avoid infinite recursion - Re-raise TemplateError subclasses before generic StandardError rescue - Add test fixture templates for partial rendering tests * Add E2E, content validation, command routing, and menu tests (#151) * Ruby Raider v3.0.0 - Add Minitest and Capybara as first-class framework and automation types - Add optional web add-ons: accessibility (axe), visual regression (chunky_png), performance (Lighthouse) - Add LLM integration (OpenAI, Anthropic, Ollama) for AI-assisted scaffolding - Add adopt command for importing existing test projects - Add enhanced scaffolding: CRUD generation, URL analysis, components, from_url - Add video recording support for all framework combinations - Add CLI features: skip flags, reporter selection, retry, tags, destroy, template overrides - Add GitHub Actions and GitLab CI/CD pipeline generation - Add Steep type checking with RBS signatures - Add E2E tests, content validation, command routing, and menu tests - Add terminal logo display on project creation - Refactor Applitools to chunky_png for free local visual regression - Refactor axe from automation type to optional add-on - Update README with full feature documentation and new logo * fix comments * fix comments * fix comments * fixing rake pipeline * raider 3.0.0 * Update lib/generators/menu_generator.rb Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Remove Sponsors section from README Removed the Sponsors section and BrowserStack testing note. * Change release information link in README Updated the link for more information and releases. * Change release information link format in README Updated the link format for the release information in the README. * Update website links in README.md * Update README.md * Correct link syntax for Ruby Raider website Fix link formatting in README for website reference. * Fix link formatting in README.md * fix_utilities (#152) * Bump version to 3.0.1 * Remove LLM, plugins, capybara, minitest, adopt, reporter selection, ruby version selection, gitlab CI, and skip_ci Simplify Ruby Raider by removing low-value features: - LLM integration and plugin system - Capybara and Minitest as framework options - Adopt project import feature - Reporter selection (allure is now always included) - Ruby version selection and .ruby-version generation - GitLab CI/CD option and CI platform selector (GitHub Actions is now default) - --skip_ci flag (CI is always generated) * Remove visual regression and Lighthouse performance addons Simplify addon options — only accessibility (axe) remains as an optional add-on. Removes visual_addon/chunky_png and lighthouse_addon/performance templates, generators, menu steps, CLI flags, and all related tests. * Remove CRUD scaffold, template overrides, selective scaffold, and spec-from-page Simplify scaffolding to basic commands only: page, spec, feature, steps, helper, component, and scaffold (generates page + test). Removes --crud, --with, --from options and interactive scaffold menu. * Remove ruby version requirement * Restore required_ruby_version in gemspec * Remove debug capabilities * version bump --------- Co-authored-by: Gert van der Spoel <github@3edge.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Jonas <jonasah97@gmail.com> Co-authored-by: nikipedersen <82040834+nikipedersen@users.noreply.github.com> Co-authored-by: Niki Rasmussen <nikirasmussen@DK-43Y0H72.emea.media.global.loc> Co-authored-by: Kasper Tonsgaard <kaspertonsgaard@gmail.com> Co-authored-by: natalia-ss <155972960+natalia-ss@users.noreply.github.com> Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
The main goal of this PR is to add support for a Desktop UI interface using https://github.com/AndyObtiva/glimmer-dsl-libui
This PR also adds: