chemistrykit 3.0.1 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,18 @@
1
+ #3.1.0 (2013-07-07)
2
+ Updated logging mechanism for concurrent tests and to output junit xml.
3
+
4
+ - Bumped version to 3.1.0 to prepare for release.
5
+ - cleaned out some random debug code
6
+ - fixed code quality issues and removed some debugging information
7
+ - updated concurency to use uuid for partial logs, cleaned up tests
8
+ - fixed other features so they would pass
9
+ - fixed more code quality issues
10
+ - added facility that would create partial test output for concurrent tests
11
+ - ensured all log files could be directed to the same directory
12
+ - fixed code quality issue and added test to ensure html report output would work
13
+ - added in configurable junit export with stdout
14
+ - added logging feature and tests, and expanded the configuration for logging
15
+
1
16
  #3.0.1 (2013-07-05)
2
17
  Made the base url available in the env for formula usage
3
18
 
data/chemistrykit.gemspec CHANGED
@@ -2,13 +2,13 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "chemistrykit"
5
- s.version = "3.0.1"
5
+ s.version = "3.1.0"
6
6
  s.platform = Gem::Platform::RUBY
7
7
  s.authors = ["Dave Haeffner", "Jason Fox"]
8
8
  s.email = ["dave@arrgyle.com", "jason@arrgyle.com"]
9
9
  s.homepage = "https://github.com/arrgyle/chemistrykit"
10
10
  s.summary = "A simple and opinionated web testing framework for Selenium that follows convention over configuration."
11
- s.description = "Made the base url available in the env for formula usage"
11
+ s.description = "Updated logging mechanism for concurrent tests and to output junit xml."
12
12
  s.license = 'MIT'
13
13
 
14
14
  s.files = `git ls-files`.split($/)
@@ -20,15 +20,15 @@ Gem::Specification.new do |s|
20
20
  s.required_ruby_version = '>=1.9'
21
21
 
22
22
  s.add_dependency "thor", "~> 0.17.0"
23
- s.add_dependency "rspec", "~> 2.12.0"
23
+ s.add_dependency "rspec", "~> 2.13.0"
24
+ s.add_dependency "yarjuf", "~> 1.0.5"
24
25
  s.add_dependency "selenium-webdriver", "~> 2.29.0"
25
- s.add_dependency "ci_reporter", "~> 1.8.3"
26
26
  s.add_dependency "rest-client", "~> 1.6.7"
27
27
  s.add_dependency "selenium-connect", "~> 2.1.1"
28
28
  s.add_dependency "parallel_tests", "~> 0.15.0"
29
29
  s.add_dependency "parallel", "~> 0.7.0"
30
30
 
31
- s.add_development_dependency "rspec", "~> 2.12.0"
31
+ s.add_development_dependency "rspec", "~> 2.13.0"
32
32
  s.add_development_dependency "aruba", "~> 0.5.1"
33
33
  s.add_development_dependency "cucumber", "~> 1.2.1"
34
34
  s.add_development_dependency "rake", "~> 10.0.3"
@@ -29,7 +29,6 @@ Feature: Brewing a ChemistryKit project
29
29
  end
30
30
  end
31
31
  """
32
-
33
32
  Scenario: Localhost
34
33
  Given a file named "config.yaml" with:
35
34
  """
@@ -40,7 +39,7 @@ Feature: Brewing a ChemistryKit project
40
39
  When I run `ckit brew`
41
40
  Then the stdout should contain "1 example, 0 failures"
42
41
  And the following files should exist:
43
- | evidence/SPEC-Bookie.xml |
42
+ | evidence/results_junit.xml |
44
43
  | evidence/server.log |
45
44
 
46
45
 
@@ -28,6 +28,7 @@ Feature: Support for concurency
28
28
  end
29
29
  end
30
30
  """
31
+
31
32
  Scenario: I can run the tests in parallel
32
33
  When I overwrite config.yaml with:
33
34
  """
@@ -43,6 +44,8 @@ Feature: Support for concurency
43
44
  When I run `ckit brew`
44
45
  Then the stdout should contain "4 processes for 2 beakers"
45
46
  And the stdout should contain "3 examples, 0 failures"
47
+ And the file "evidence/results_junit.xml" should not exist
48
+ And there should be "2" unique results files in the "evidence" directory
46
49
 
47
50
  Scenario: I can run a specific beaker in parallel
48
51
  When I overwrite config.yaml with:
@@ -0,0 +1,94 @@
1
+ #logging.feature
2
+ Feature: Log handling
3
+ In order to examine the results of my test suite
4
+ As a test harness user
5
+ I want to see all of the logs in a central location
6
+
7
+ Background: Setup the project
8
+ Given I run `ckit new logging-test`
9
+ And I cd to "logging-test"
10
+ And a file named "formulas/bookie.rb" with:
11
+ """
12
+ module Formulas
13
+ class Bookie < Formula
14
+ def open(url)
15
+ @driver.get url
16
+ end
17
+ end
18
+ end
19
+ """
20
+ And a file named "beakers/first_beaker.rb" with:
21
+ """
22
+ describe "First", :depth => 'shallow' do
23
+ let(:book) { Formulas::Bookie.new(@driver) }
24
+
25
+ it "loads an external web page" do
26
+ book.open "http://www.google.com"
27
+ end
28
+ end
29
+ """
30
+ And a file named "beakers/second_beaker.rb" with:
31
+ """
32
+ describe "Second", :depth => 'shallow' do
33
+ let(:book) { Formulas::Bookie.new(@driver) }
34
+
35
+ it "loads an external web page" do
36
+ book.open "http://www.google.com"
37
+ end
38
+ end
39
+ """
40
+
41
+ Scenario: I can output junit xml results by default
42
+ When I run `ckit brew`
43
+ Then the stdout should contain "2 examples, 0 failures"
44
+ And the following files should exist:
45
+ | evidence/results_junit.xml |
46
+
47
+ Scenario: I can output custom junit xml results
48
+ Given a file named "config.yaml" with:
49
+ """
50
+ log:
51
+ path: 'my_evidence'
52
+ results_file: 'my_results.xml'
53
+ format: 'junit'
54
+ selenium_connect:
55
+ log: 'evidence'
56
+ host: 'localhost'
57
+ """
58
+ When I run `ckit brew`
59
+ Then the stdout should contain "2 examples, 0 failures"
60
+ And the following files should exist:
61
+ | my_evidence/my_results.xml |
62
+
63
+ Scenario: I can output html results
64
+ Given a file named "config.yaml" with:
65
+ """
66
+ log:
67
+ results_file: 'report.html'
68
+ format: 'html'
69
+ """
70
+ And I run `ckit brew`
71
+ Then the stdout should contain "2 examples, 0 failures"
72
+ And the following files should exist:
73
+ | evidence/report.html |
74
+
75
+ Scenario: I define one log location to rule them all
76
+ Given a file named "config.yaml" with:
77
+ """
78
+ log:
79
+ path: 'my_evidence'
80
+ selenium_connect:
81
+ host: 'localhost'
82
+ """
83
+ When I run `ckit brew`
84
+ Then the stdout should contain "2 examples, 0 failures"
85
+ And the following files should exist:
86
+ | my_evidence/results_junit.xml |
87
+ | my_evidence/server.log |
88
+
89
+ Scenario: I can runtime override the results output file name
90
+ When I run `ckit brew --results_file results_junit_01.xml`
91
+ Then the stdout should contain "2 examples, 0 failures"
92
+ And the following files should exist:
93
+ | evidence/results_junit_01.xml |
94
+
data/features/new.feature CHANGED
@@ -15,5 +15,4 @@ Feature: ckit new
15
15
  | evidence |
16
16
  And the following files should exist:
17
17
  | config.yaml |
18
- | .rspec |
19
18
  | formulas/lib/formula.rb |
@@ -10,3 +10,12 @@ end
10
10
  Then(/^the exit code should be (\d+)$/) do |exit_status|
11
11
  @last_exit_status.should == exit_status.to_i
12
12
  end
13
+
14
+ Then(/^there should be "(.*?)" unique results files in the "(.*?)" directory$/) do |number_files, logs_path|
15
+ files = Dir.glob(File.join(current_dir, logs_path, '*.xml'))
16
+ count = 0
17
+ files.each do |file|
18
+ count += 1 if file =~ /parallel_part_\w{8}-(\w{4}-){3}\w{12}\.xml/
19
+ end
20
+ count.should == number_files.to_i
21
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'thor'
4
4
  require 'rspec'
5
- require 'ci/reporter/rake/rspec_loader'
5
+ require 'yarjuf'
6
6
  require 'chemistrykit/cli/new'
7
7
  require 'chemistrykit/cli/formula'
8
8
  require 'chemistrykit/cli/beaker'
@@ -11,6 +11,8 @@ require 'chemistrykit/catalyst'
11
11
  require 'chemistrykit/formula/base'
12
12
  require 'selenium-connect'
13
13
  require 'chemistrykit/configuration'
14
+ require 'parallel_tests'
15
+ require 'chemistrykit/parallel_tests_mods'
14
16
 
15
17
  module ChemistryKit
16
18
  module CLI
@@ -39,14 +41,17 @@ module ChemistryKit
39
41
  method_option :beakers, type: :array
40
42
  # This is set if the thread is being run in parallel so as not to trigger recursive concurency
41
43
  method_option :parallel, default: false
44
+ method_option :results_file, default: false
42
45
 
43
46
  def brew
44
47
  config = load_config options['config']
45
48
  # TODO perhaps the params should be rolled into the available
46
49
  # config object injected into the system?
47
50
  pass_params if options['params']
48
- turn_stdout_stderr_on_off
49
- set_logs_dir
51
+
52
+ # replace certain config values with run time flags as needed
53
+ config = override_configs options, config
54
+
50
55
  load_page_objects
51
56
  setup_tags
52
57
  # configure rspec
@@ -59,10 +64,19 @@ module ChemistryKit
59
64
  else
60
65
  run_rspec beakers
61
66
  end
67
+
62
68
  end
63
69
 
64
70
  protected
65
71
 
72
+ def override_configs(options, config)
73
+ # TODO expand this to allow for more overrides as needed
74
+ if options['results_file']
75
+ config.log.results_file = options['results_file']
76
+ end
77
+ config
78
+ end
79
+
66
80
  def pass_params
67
81
  options['params'].each_pair do |key, value|
68
82
  ENV[key] = value
@@ -74,14 +88,6 @@ module ChemistryKit
74
88
  loader.get_formulas(File.join(Dir.getwd, 'formulas')).each { |file| require file }
75
89
  end
76
90
 
77
- def set_logs_dir
78
- ENV['CI_REPORTS'] = File.join(Dir.getwd, 'evidence')
79
- end
80
-
81
- def turn_stdout_stderr_on_off
82
- ENV['CI_CAPTURE'] = 'on'
83
- end
84
-
85
91
  def load_config(file_name)
86
92
  config_file = File.join(Dir.getwd, file_name)
87
93
  ChemistryKit::Configuration.initialize_with_yaml config_file
@@ -128,12 +134,16 @@ module ChemistryKit
128
134
  c.order = 'random'
129
135
  c.default_path = 'beakers'
130
136
  c.pattern = '**/*_beaker.rb'
137
+ c.output_stream = $stdout
138
+ c.add_formatter 'progress'
139
+ if config.concurrency == 1 || options['parallel']
140
+ c.add_formatter(config.log.format, File.join(Dir.getwd, config.log.path, config.log.results_file))
141
+ end
131
142
  end
132
143
  end
133
144
 
134
145
  def run_in_parallel(beakers, concurrency)
135
- require 'parallel_tests'
136
- require 'chemistrykit/parallel_tests_mods'
146
+
137
147
  ParallelTests::CLI.new.run(%w(--type rspec) + ['-n', concurrency.to_s] + %w(-o --beakers=) + beakers)
138
148
  end
139
149
 
@@ -1,22 +1,46 @@
1
1
  # Encoding: utf-8
2
2
 
3
3
  require 'yaml'
4
+ require 'ostruct'
4
5
 
5
6
  module ChemistryKit
6
7
  # Default configuration class
7
8
  class Configuration
8
9
 
9
- attr_accessor :concurrency,
10
- :base_url,
11
- :selenium_connect
10
+ attr_accessor :base_url,
11
+ :concurrency
12
+
13
+ attr_reader :log
14
+
15
+ attr_writer :selenium_connect
12
16
 
13
17
  def initialize(hash)
14
18
  # set defaults
15
19
  @concurrency = 1
20
+ @selenium_connect = {}
21
+ @log = OpenStruct.new
22
+ @log.path = 'evidence'
23
+ @log.results_file = 'results_junit.xml'
24
+ @log.format = 'JUnit'
16
25
 
17
26
  # overide with argument
18
27
  populate_with_hash hash
19
- validate_config
28
+ end
29
+
30
+ def log=(log_hash)
31
+ log_hash.each do |key, value|
32
+ value = 'JUnit' if key == :format && value =~ /junit/i
33
+ @log.send("#{key}=", value) unless value.nil?
34
+ end
35
+ end
36
+
37
+ def selenium_connect
38
+ # return the default log unless the sc log is set
39
+ if @selenium_connect[:log].nil?
40
+ @selenium_connect[:log] = @log.path
41
+ return @selenium_connect
42
+ end
43
+ @selenium_connect
20
44
  end
21
45
 
22
46
  def self.initialize_with_yaml(file)
@@ -35,12 +59,6 @@ module ChemistryKit
35
59
  end
36
60
  end
37
61
 
38
- def validate_config
39
- if @selenium_connect && @selenium_connect[:host] != 'saucelabs' && @concurrency > 1
40
- raise ArgumentError.new 'Concurrency is only supported for the host: "saucelabs"!'
41
- end
42
- end
43
-
44
62
  # private static to symbolize recursivly a loaded yaml
45
63
  def self.symbolize_keys(hash)
46
64
  hash.reduce({}) do |result, (key, value)|
@@ -2,12 +2,12 @@
2
2
 
3
3
  require 'parallel_tests/rspec/runner'
4
4
  require 'parallel_tests/test/runner'
5
+ require 'securerandom'
5
6
 
6
7
  module ParallelTests
7
8
  module RSpec
8
9
  # Monkey Patching the ParallelTest RSpec Runner class to work with CKit's config and binary
9
10
  class Runner < ParallelTests::Test::Runner
10
-
11
11
  class << self
12
12
 
13
13
  def run_tests(test_files, process_number, num_processes, options)
@@ -20,7 +20,6 @@ module ParallelTests
20
20
 
21
21
  cmd = [exe, options[:test_options]].compact.join(' ')
22
22
  cmd << test_files.join(' ')
23
- puts cmd
24
23
 
25
24
  # This concatenates the command into `bundle exec ckit brew --beakers=beaker1 beaker2 beaker3 etc`
26
25
  # Which enables each test group to be run in its own command
@@ -33,7 +32,9 @@ module ParallelTests
33
32
  end
34
33
 
35
34
  def determine_executable
36
- 'bundle exec ckit brew --parallel'
35
+ uuid = SecureRandom.uuid
36
+ file_name = "parallel_part_#{uuid}.xml"
37
+ "bundle exec ckit brew --parallel --results_file #{file_name}"
37
38
  end
38
39
 
39
40
  def test_file_name
@@ -1,7 +1,11 @@
1
1
  # Default Chemisty Kit Configuration File
2
2
 
3
3
  base_url: http://google.com
4
- concurrency: 2
4
+ concurrency: 1
5
+ log:
6
+ path: #you may override the default log path 'evidence'
7
+ results_file: #you may override the default file name 'results_junit.xml'
8
+ format: #you may override the default format 'junit'
5
9
  selenium_connect:
6
10
  #Setup & Debugging
7
11
  jar:
@@ -7,25 +7,38 @@ describe ChemistryKit::Configuration do
7
7
  VALID_BASE_URL = 'http://google.com'
8
8
  VALID_CONCURRENCY = 1
9
9
  VALID_CONFIG_FILE = 'config.yaml'
10
+ VALID_LOG_PATH = 'evidence'
11
+ VALID_JUNIT = 'results_junit.xml'
12
+ VALID_FORMAT_JUNIT = 'junit'
13
+ VALID_JUNIT_FORMAT_OUT = 'JUnit'
10
14
 
11
15
  before(:each) do
12
16
  @valid_selenium_connect_hash = { log: 'evidence', host: 'localhost' }
17
+ @valid_log_hash = { path: VALID_LOG_PATH, results_file: VALID_JUNIT, format: VALID_FORMAT_JUNIT }
13
18
  @valid_config_hash = {
14
19
  base_url: VALID_BASE_URL,
15
20
  concurrency: VALID_CONCURRENCY,
16
- selenium_connect: @valid_selenium_connect_hash
21
+ selenium_connect: @valid_selenium_connect_hash,
22
+ log: @valid_log_hash
17
23
  }
18
24
  end
19
25
 
20
26
  def validate_config(config)
21
27
  config.concurrency.should eq VALID_CONCURRENCY
22
28
  config.base_url.should eq VALID_BASE_URL
29
+ config.log.path.should eq VALID_LOG_PATH
30
+ config.log.results_file.should eq VALID_JUNIT
31
+ config.log.format.should eq VALID_JUNIT_FORMAT_OUT
23
32
  config.selenium_connect.should eq @valid_selenium_connect_hash
24
33
  end
25
34
 
26
35
  it 'should initialize with sane defaults' do
27
36
  config = ChemistryKit::Configuration.new({})
28
- config.concurrency.should eq 1
37
+ config.concurrency.should eq VALID_CONCURRENCY
38
+ config.log.path.should eq VALID_LOG_PATH
39
+ config.log.results_file.should eq VALID_JUNIT
40
+ config.log.format.should eq VALID_JUNIT_FORMAT_OUT
41
+ config.selenium_connect.should eq({ log: VALID_LOG_PATH })
29
42
  end
30
43
 
31
44
  it 'should initialize with a hash of configurations' do
@@ -43,14 +56,18 @@ describe ChemistryKit::Configuration do
43
56
  end.to raise_error ArgumentError, 'The config key: "bad" is unknown!'
44
57
  end
45
58
 
46
- it 'should throw an error if concurrency is configured and the host is not saucelabs' do
47
- expect do
48
- config_hash = {
49
- base_url: VALID_BASE_URL,
50
- concurrency: 2,
51
- selenium_connect: @valid_selenium_connect_hash
52
- }
53
- ChemistryKit::Configuration.new(config_hash)
54
- end.to raise_error ArgumentError, 'Concurrency is only supported for the host: "saucelabs"!'
59
+ it 'should correct the format to JUnit' do
60
+ config = ChemistryKit::Configuration.new(@valid_config_hash)
61
+ config.log.format.should eq 'JUnit'
62
+ end
63
+
64
+ it 'selenium_connect log should default to the main log' do
65
+ config = ChemistryKit::Configuration.new({ log: { path: 'main-path' } })
66
+ config.selenium_connect.should eq({ log: 'main-path' })
67
+ end
68
+
69
+ it 'mainlog should not overide selenium_connect log' do
70
+ config = ChemistryKit::Configuration.new({ log: { path: 'main-path' }, selenium_connect: { log: 'sc-log' } })
71
+ config.selenium_connect.should eq({ log: 'sc-log' })
55
72
  end
56
73
  end
@@ -2,6 +2,10 @@
2
2
 
3
3
  base_url: http://google.com
4
4
  concurrency: 1
5
+ log:
6
+ path: 'evidence'
7
+ results_file: 'results_junit.xml'
8
+ format: 'junit'
5
9
  selenium_connect:
6
10
  log: 'evidence'
7
11
  host: 'localhost'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chemistrykit
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-07-05 00:00:00.000000000 Z
13
+ date: 2013-07-08 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: thor
@@ -35,7 +35,7 @@ dependencies:
35
35
  requirements:
36
36
  - - ~>
37
37
  - !ruby/object:Gem::Version
38
- version: 2.12.0
38
+ version: 2.13.0
39
39
  type: :runtime
40
40
  prerelease: false
41
41
  version_requirements: !ruby/object:Gem::Requirement
@@ -43,15 +43,15 @@ dependencies:
43
43
  requirements:
44
44
  - - ~>
45
45
  - !ruby/object:Gem::Version
46
- version: 2.12.0
46
+ version: 2.13.0
47
47
  - !ruby/object:Gem::Dependency
48
- name: selenium-webdriver
48
+ name: yarjuf
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: 2.29.0
54
+ version: 1.0.5
55
55
  type: :runtime
56
56
  prerelease: false
57
57
  version_requirements: !ruby/object:Gem::Requirement
@@ -59,15 +59,15 @@ dependencies:
59
59
  requirements:
60
60
  - - ~>
61
61
  - !ruby/object:Gem::Version
62
- version: 2.29.0
62
+ version: 1.0.5
63
63
  - !ruby/object:Gem::Dependency
64
- name: ci_reporter
64
+ name: selenium-webdriver
65
65
  requirement: !ruby/object:Gem::Requirement
66
66
  none: false
67
67
  requirements:
68
68
  - - ~>
69
69
  - !ruby/object:Gem::Version
70
- version: 1.8.3
70
+ version: 2.29.0
71
71
  type: :runtime
72
72
  prerelease: false
73
73
  version_requirements: !ruby/object:Gem::Requirement
@@ -75,7 +75,7 @@ dependencies:
75
75
  requirements:
76
76
  - - ~>
77
77
  - !ruby/object:Gem::Version
78
- version: 1.8.3
78
+ version: 2.29.0
79
79
  - !ruby/object:Gem::Dependency
80
80
  name: rest-client
81
81
  requirement: !ruby/object:Gem::Requirement
@@ -147,7 +147,7 @@ dependencies:
147
147
  requirements:
148
148
  - - ~>
149
149
  - !ruby/object:Gem::Version
150
- version: 2.12.0
150
+ version: 2.13.0
151
151
  type: :development
152
152
  prerelease: false
153
153
  version_requirements: !ruby/object:Gem::Requirement
@@ -155,7 +155,7 @@ dependencies:
155
155
  requirements:
156
156
  - - ~>
157
157
  - !ruby/object:Gem::Version
158
- version: 2.12.0
158
+ version: 2.13.0
159
159
  - !ruby/object:Gem::Dependency
160
160
  name: aruba
161
161
  requirement: !ruby/object:Gem::Requirement
@@ -220,7 +220,7 @@ dependencies:
220
220
  - - ~>
221
221
  - !ruby/object:Gem::Version
222
222
  version: 0.9.0
223
- description: Made the base url available in the env for formula usage
223
+ description: Updated logging mechanism for concurrent tests and to output junit xml.
224
224
  email:
225
225
  - dave@arrgyle.com
226
226
  - jason@arrgyle.com
@@ -250,6 +250,7 @@ files:
250
250
  - features/exit_status.feature
251
251
  - features/global-config.feature
252
252
  - features/load_page_objects.feature
253
+ - features/logging.feature
253
254
  - features/multi-config.feature
254
255
  - features/new.feature
255
256
  - features/step_definitions/steps.rb
@@ -266,7 +267,6 @@ files:
266
267
  - lib/chemistrykit/parallel_tests_mods.rb
267
268
  - lib/templates/beaker.tt
268
269
  - lib/templates/beaker_with_formula.tt
269
- - lib/templates/chemistrykit/.rspec
270
270
  - lib/templates/chemistrykit/beakers/.gitkeep
271
271
  - lib/templates/chemistrykit/config.yaml.tt
272
272
  - lib/templates/chemistrykit/evidence/.gitkeep
@@ -301,7 +301,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
301
301
  version: '0'
302
302
  segments:
303
303
  - 0
304
- hash: -4251143556691358263
304
+ hash: 3010255625255682660
305
305
  requirements: []
306
306
  rubyforge_project:
307
307
  rubygems_version: 1.8.25
@@ -316,6 +316,7 @@ test_files:
316
316
  - features/exit_status.feature
317
317
  - features/global-config.feature
318
318
  - features/load_page_objects.feature
319
+ - features/logging.feature
319
320
  - features/multi-config.feature
320
321
  - features/new.feature
321
322
  - features/step_definitions/steps.rb
@@ -1 +0,0 @@
1
- --format CI::Reporter::RSpec