class Quke::CukeRunner
Handles executing Cucumber, including sorting the arguments we pass to it
Public Class Methods
new(passed_in_args = [])
click to toggle source
When an instance of CukeRunner
is initialized it will take the arguments passed in and combine them with its own default args. Those args are a mix of ones specific to ParallelTests, and ones for Cucumber.
In essence we are getting ParallelTests to pass the following to Cucumber along with whatever args are passed in when Quke
is called.
[my_features_folder, '-r', 'lib/features', '-r', my_features_folder]
Its these args that pass our features directory to cucumber along with the user's. So to break it down
- +my_features_folder+, first arg tells Cucumber where the feature files are located - +-r 'lib/features'+, tells Cucumber to require our features folder. This is how we get it to use our +env.rb+ which handles all the setup on behalf of the user (the point of Quke) to do things like use Browserstack, or switch between running against Chrome or firefox locally - +-r my_features_folder+, if you specify a different folder for or wish to test just specific features, you are required by Cucumber to also require the folder which contains your steps. So we always set this to be sure to handle tagged scenarios, or features run in parallel.
# File lib/quke/cuke_runner.rb, line 34 def initialize(passed_in_args = []) Quke.config = Configuration.new @args = Quke.config.parallel.command_args(passed_in_args) end
Public Instance Methods
run()
click to toggle source
Executes ParallelTests, which in turn executes Cucumber passing in the arguments defined when the instance of CukeRunner
was initialized.
# File lib/quke/cuke_runner.rb, line 41 def run ParallelTests::CLI.new.run(@args) rescue SystemExit => e # Cucumber calls @kernel.exit() killing your script unless you rescue raise StandardError, "Cucumber exited in a failed state" unless e.success? end