magneton 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f0a171d1a1cbde409853b71baa46ba6769b125b6
4
- data.tar.gz: ee16018ba5b51b6f085f6893f3c745ceb20a1dd7
3
+ metadata.gz: fb2b9e102bd2a4efe57d5afb37d6e7f1a1ac8016
4
+ data.tar.gz: 0cb260de62e63a6773607e094cf7633cfd10a17a
5
5
  SHA512:
6
- metadata.gz: 2fc6a89f42afb1969387bc1fc241ff8ab17c562223f1ecb130e0f6c3cb746036a19df911511fe2e66b2353088f2d800a76931d330f11beccd65502306a80fffc
7
- data.tar.gz: 08cece00a1c35b055b9a34c495df5c1460a0ed53fa62266b3b11e3dabdcc578a02e11b12124c35541124c949bbb094a7a9ab8ae474660446e70e8d9fb2fd3439
6
+ metadata.gz: 77a3ffb04df77dcc5f5135d0fe8ab6d7608bc2dacf78453387fa45c765c5317dea86efb9e08f22885fa0fdb739ef9ba8c2445b6808d6422c0c607dae89948ee2
7
+ data.tar.gz: fbe84b92cc29c31bf95045c6f7f2c312e2ea80f84da2e0ed4dd3107987f3e7dd89af768a2f88098f574338a5563c603207a1b8d02b3e3296d24efb3e14e1ea51
@@ -0,0 +1,15 @@
1
+ .idea/
2
+ /.bundle/
3
+ /doc/
4
+ /pkg/
5
+ /spec/reports/
6
+ /tmp/
7
+ *.bundle
8
+ *.so
9
+ *.o
10
+ *.a
11
+ mkmf.log
12
+ .irb-history
13
+ .DS_Store
14
+ Gemfile.lock
15
+ coverage/
data/.rspec ADDED
@@ -0,0 +1,4 @@
1
+ --color
2
+ --format doc
3
+ --warning
4
+ --require spec_helper
data/Gemfile CHANGED
@@ -1,9 +1,12 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in cs-webautomator.gemspec
3
+ # Specify your gem's dependencies in magneton.gemspec
4
4
  gemspec
5
5
 
6
6
  gem 'thor'
7
7
  gem 'i18n'
8
8
  gem 'json'
9
9
  gem 'gherkin'
10
+ gem 'rspec'
11
+ gem "simplecov"
12
+ gem "codeclimate-test-reporter", "~> 1.0.0"
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # MAGNETON
1
+ # MAGNETON [![Circle CI](https://circleci.com/gh/concretesolutions/magneton.svg?style=shield)](https://circleci.com/gh/concretesolutions/magneton) [![Code Climate](https://codeclimate.com/github/concretesolutions/magneton.png)](https://codeclimate.com/github/concretesolutions/magneton) [![Test Coverage](https://codeclimate.com/github/concretesolutions/magneton/badges/coverage.svg)](https://codeclimate.com/github/concretesolutions/magneton/coverage) [![Issue Count](https://codeclimate.com/github/concretesolutions/magneton/badges/issue_count.svg)](https://codeclimate.com/github/concretesolutions/magneton) [![Gem Version](https://badge.fury.io/rb/magneton.svg)](https://badge.fury.io/rb/magneton)
2
2
 
3
3
  A simple gem to generate web automation project with:
4
4
 
@@ -100,6 +100,20 @@ In the file `features/support/helper.rb` you will find utilities to help your te
100
100
  Implemented so far:
101
101
  - take_screenshot
102
102
  - mouse_over
103
+ - visual matching
104
+ - crop screenshot
105
+
106
+ ##### Visual Matching
107
+
108
+ You can compare images using the `visual_matcher` method:
109
+ `expect('imagem_atual').to visual_match('imagem_baseline')`
110
+
111
+ You can create the baseline_images if you include the tag `@create_baseline_image` on your scenarios.
112
+
113
+ ##### Crop screenshot
114
+
115
+ You can crop a screenshot around element, just only use `take_screenshot_and_crop` method:
116
+ `take_screenshot_and_crop(name_file, folder_to_save, css_selector)`
103
117
 
104
118
  ## TODO
105
119
 
data/Rakefile CHANGED
@@ -1 +1,9 @@
1
1
  require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+ task :spec_tests => [:spec]
4
+
5
+ desc 'Run the specs.'
6
+ RSpec::Core::RakeTask.new do |task|
7
+ task.pattern = 'spec/*_test.rb'
8
+ task.verbose = false
9
+ end
@@ -0,0 +1,16 @@
1
+ machine:
2
+ ruby:
3
+ version: 2.3.0
4
+ environment:
5
+ CODECLIMATE_REPO_TOKEN: c992e4ea792ab168d686a2b1779b2adf2c95d64a47145c87d2ba50d70b398428
6
+
7
+ dependencies:
8
+ override:
9
+ - gem install bundler
10
+ - gem install rake
11
+ - bundle install
12
+
13
+ test:
14
+ override:
15
+ - bundle exec rake spec_tests
16
+ - bundle exec codeclimate-test-reporter
@@ -1,3 +1,3 @@
1
1
  module MAGNETON
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0'
3
3
  end
@@ -1,4 +1,6 @@
1
- reports/*
2
- .DS_Store
3
- screenshots/
4
1
  features_report.html
2
+ screenshots/test_failed
3
+ screenshots/diffs
4
+ screenshots/current_images
5
+ .DS_Store
6
+ .gitkeep
@@ -10,3 +10,10 @@ gem 'rspec'
10
10
  gem 'syntax'
11
11
  gem 'poltergeist'
12
12
  gem 'rubocop'
13
+ gem 'pry-byebug'
14
+ gem 'chunky_png', '1.3.7'
15
+ gem 'imatcher', '0.1.5'
16
+ gem 'os'
17
+ gem 'i18n'
18
+ gem 'pry'
19
+ gem 'pry-byebug'
@@ -62,6 +62,7 @@ Install and include in PATH
62
62
  - [chromedriver](https://sites.google.com/a/chromium.org/chromedriver/)
63
63
  - [phantomjs](http://phantomjs.org/)
64
64
  - [internetExplorerDriver](http://www.seleniumhq.org/download/)
65
+ - [Firefox Geckodriver](https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver)
65
66
 
66
67
  Install [Webdriver Safari extension](http://selenium-release.storage.googleapis.com/2.48/SafariDriver.safariextz).
67
68
 
@@ -0,0 +1,29 @@
1
+ desc "Executar os testes em dev usando o Chrome"
2
+ task :test_chrome_dev do
3
+ puts "Executando test:chrome:dev"
4
+ sh "bundle exec cucumber -p chrome -p dev"
5
+ end
6
+
7
+ desc "Executar os testes em dev usando o Firefox"
8
+ task :test_firefox_dev do
9
+ puts "Executando test:firefox:dev"
10
+ sh "bundle exec cucumber -p firefox -p dev"
11
+ end
12
+
13
+ desc "Executar os testes em dev usando o Safari"
14
+ task :test_safari_dev do
15
+ puts "Executando test:safari:dev"
16
+ sh "bundle exec cucumber -p safari -p dev"
17
+ end
18
+
19
+ desc "Executar os testes em dev usando o Poltergeist"
20
+ task :test_poltergeist_dev do
21
+ puts "Executando test:poltergeist:dev"
22
+ sh "bundle exec cucumber -p poltergeist -p dev"
23
+ end
24
+
25
+ desc "Executar os testes em dev usando o Internet Explorer"
26
+ task :test_internet_explorer_dev do
27
+ puts "Executando test:internet_explorer:dev"
28
+ sh "bundle exec cucumber -p internet_explorer -p dev"
29
+ end
@@ -5,6 +5,12 @@ require 'site_prism'
5
5
  require 'rspec'
6
6
  require 'yaml'
7
7
  require 'capybara/poltergeist'
8
+ require 'fileutils'
9
+ require "i18n"
10
+ require_relative 'helper.rb'
11
+ require 'imatcher'
12
+ require 'chunky_png'
13
+ require 'os'
8
14
 
9
15
  BROWSER = ENV['BROWSER']
10
16
  ENVIRONMENT_TYPE = ENV['ENVIRONMENT_TYPE']
@@ -12,22 +18,22 @@ ENVIRONMENT_TYPE = ENV['ENVIRONMENT_TYPE']
12
18
  ## register driver according with browser chosen
13
19
  Capybara.register_driver :selenium do |app|
14
20
  if BROWSER.eql?('chrome')
15
- Capybara::Selenium::Driver.new(app,
16
- :browser => :chrome,
17
- :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.chrome(
18
- 'chromeOptions' => {
19
- 'args' => [ "--start-maximized" ]
20
- }
21
+ caps = Selenium::WebDriver::Remote::Capabilities.chrome(
22
+ 'chromeOptions' => {
23
+ "args" => [ "--window-size=1600,1300"]
24
+ }
21
25
  )
22
- )
26
+ Capybara::Selenium::Driver.new(app, {:browser => :chrome, :desired_capabilities => caps})
23
27
  elsif BROWSER.eql?('firefox')
24
- Capybara::Selenium::Driver.new(app, :browser => :firefox)
28
+ Capybara::Selenium::Driver.new(app, browser: :firefox)
25
29
  elsif BROWSER.eql?('internet_explorer')
26
- Capybara::Selenium::Driver.new(app, :browser => :internet_explorer)
30
+ Capybara::Selenium::Driver.new(app, browser: :internet_explorer)
27
31
  elsif BROWSER.eql?('safari')
28
- Capybara::Selenium::Driver.new(app, :browser => :safari)
32
+ Capybara::Selenium::Driver.new(app, browser: :safari)
29
33
  elsif BROWSER.eql?('poltergeist')
30
34
  options = { js_errors: false }
31
35
  Capybara::Poltergeist::Driver.new(app, options)
32
36
  end
33
37
  end
38
+
39
+ IMATCHER = Imatcher::Matcher.new mode: :grayscale, tolerance: 1
@@ -1,19 +1,51 @@
1
1
  # encoding: utf-8
2
2
  # !/usr/bin/env ruby
3
- require 'fileutils'
4
3
  class Helper
5
4
  def mouse_over(element_selector)
6
5
  element = Capybara.page.driver.browser.find_element(:css, element_selector)
7
6
  Capybara.page.driver.browser.mouse.move_to element
8
7
  end
9
8
 
10
- def take_screenshot(name_file, folder='screenshots/test_screens')
11
- file = "#{folder}/#{name_file}.png"
12
- FileUtils.mkdir_p(folder) unless File.exists?(folder)
13
- if BROWSER.eql?('poltergeist')
14
- Capybara.page.save_screenshot(file)
15
- else
16
- Capybara.page.driver.browser.save_screenshot(file)
17
- end
18
- end
9
+ def take_screenshot(name_file, folder = 'screenshots/test_screens')
10
+ file = "#{folder}/#{name_file}.png"
11
+ FileUtils.mkdir_p(folder) unless File.exist?(folder)
12
+ if BROWSER.eql?('poltergeist')
13
+ Capybara.page.save_screenshot(file)
14
+ else
15
+ Capybara.page.driver.browser.save_screenshot(file)
16
+ end
17
+ end
18
+
19
+ def take_screenshot_and_crop(name_file, folder = 'screenshots/croped_files', css_element_crop)
20
+ file = "#{folder}/#{name_file}.png"
21
+ FileUtils.mkdir_p(folder) unless File.exist?(folder)
22
+ #scroll to element
23
+ element = Capybara.page.driver.browser.find_element(:css, css_element_crop)
24
+ element.location_once_scrolled_into_view
25
+
26
+ # get location and size of element
27
+ location = element.location
28
+ size = element.size
29
+
30
+ # take original screenshot
31
+ take_screenshot('image_to_crop')
32
+
33
+ # read original screenshot
34
+ image = ChunkyPNG::Image.from_file('screenshots/test_screens/image_to_crop.png')
35
+
36
+ # get X, Y, width and height
37
+ left = location['x']
38
+ top = location['y']
39
+ right = size['width']
40
+ bottom = size['height']
41
+
42
+ # crop original image and save
43
+ # crop original image
44
+ if OS.mac?
45
+ image.crop!(left * 2 , top * 2, right * 2, bottom * 2)
46
+ else
47
+ image.crop!(left , top, right, bottom)
48
+ end
49
+ image.save(file)
50
+ end
19
51
  end
@@ -4,6 +4,8 @@ Before do |feature|
4
4
  ## variable which loads the data file according to the environment
5
5
  CONFIG = YAML.load_file(File.dirname(__FILE__) + "/config/#{ENVIRONMENT_TYPE}.yaml")
6
6
 
7
+ I18n.config.available_locales = :en
8
+
7
9
  ## configure the chosen browser
8
10
  Capybara.configure do |config|
9
11
  config.default_driver = :selenium
@@ -22,8 +24,10 @@ After do |scenario|
22
24
  if scenario.failed?
23
25
  @helper.take_screenshot(scenario.name, 'screenshots/test_failed')
24
26
  end
25
- ## if the browser is different from poltergeist, kills instance
26
- unless BROWSER.eql?('poltergeist')
27
- Capybara.current_session.driver.quit
28
- end
27
+ end
28
+
29
+ After('@create_baseline_image') do |scenario|
30
+ # Add screenshot to baseline folder.
31
+ @helper = Helper.new
32
+ @helper.take_screenshot(scenario.name, 'screenshots/baseline')
29
33
  end
@@ -11,3 +11,21 @@ RSpec::Matchers.define :all_list_elements_eq do |expected|
11
11
  "expected that all elements in #{actual} list would be equals #{expected}"
12
12
  end
13
13
  end
14
+
15
+ RSpec::Matchers.define :visual_match do |expected|
16
+ match do |actual|
17
+ base_path = File.expand_path(".", Dir.pwd) + '/screenshots/'
18
+ file_atual = File.join(base_path, 'current_images/') + actual + '.png'
19
+ file_baseline = File.join(base_path, 'baseline/') + expected + '.png'
20
+ file_diff = File.join(base_path, 'diffs/') + actual + '_diff_' + expected + '.png'
21
+ comparison = IMATCHER.compare(file_atual, file_baseline)
22
+ @score = comparison.score
23
+ if comparison.match? != true
24
+ comparison.difference_image.save(file_diff)
25
+ end
26
+ expect(comparison.match?).to be true
27
+ end
28
+ failure_message_for_should do |actual|
29
+ "expected that two images are equals, but they are #{@score} different"
30
+ end
31
+ end
@@ -18,9 +18,10 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_runtime_dependency 'bundler', '>= 1.7'
22
- spec.add_runtime_dependency 'rake', '>= 10.0'
23
- spec.add_runtime_dependency 'thor', '>= 0.19.1'
24
- spec.add_runtime_dependency 'i18n', '>= 0.6.11'
21
+ spec.add_runtime_dependency 'bundler', '~> 1.7'
22
+ spec.add_runtime_dependency 'rake', '~> 10.0'
23
+ spec.add_runtime_dependency 'thor', '~> 0.19'
24
+ spec.add_runtime_dependency 'i18n', '~> 0.6'
25
25
  spec.add_runtime_dependency 'gherkin', '2.12.2'
26
+
26
27
  end
@@ -0,0 +1,177 @@
1
+ require 'fileutils'
2
+ require 'simplecov'
3
+ SimpleCov.start
4
+
5
+ describe 'MAGNETON' do
6
+
7
+ before(:each) do
8
+ @project_name = 'web_automator'
9
+ end
10
+
11
+ after(:each) do
12
+ FileUtils.rm_rf(@project_name)
13
+ end
14
+
15
+ describe 'Magneton gem commands test' do
16
+ context 'Create new project using default command' do
17
+ it 'Returns project created with all files' do
18
+ system "magneton new #{@project_name}"
19
+
20
+ expect(Dir.entries(@project_name)).to include('.gitignore', 'Gemfile', 'README.md', 'cucumber.yml', 'features', 'readme_img')
21
+ expect(Dir.entries("#{@project_name}/features")).to include('pages', 'specifications', 'steps_definitions', 'support')
22
+ expect(Dir.entries("#{@project_name}/features/pages")).to include('.gitkeep')
23
+ expect(Dir.entries("#{@project_name}/features/specifications")).to include('.gitkeep')
24
+ expect(Dir.entries("#{@project_name}/features/steps_definitions")).to include('.gitkeep')
25
+ expect(Dir.entries("#{@project_name}/features/support")).to include('config', 'env.rb', 'helper.rb', 'hooks.rb', 'matchers')
26
+ expect(Dir.entries("#{@project_name}/features/support/config")).to include('dev.yaml', 'hmg.yaml')
27
+ expect(Dir.entries("#{@project_name}/features/support/matchers")).to include('custom.rb')
28
+ end
29
+ end
30
+
31
+ context 'Try creates new project with a invalid argument' do
32
+ it 'Project will not be generated' do
33
+ system "magneton new '#{@project_name}' invalid argument"
34
+
35
+ expect(Dir.entries(".")).not_to include("#{@project_name}")
36
+ end
37
+ end
38
+
39
+ context 'Using I18n to translate files' do
40
+ it 'Generates a feature using I18n to portuguese language' do
41
+ system "magneton new '#{@project_name}'"
42
+
43
+ feature_name = 'magneton'
44
+
45
+ Dir.chdir(@project_name)
46
+
47
+ system "magneton generate feature '#{feature_name}' --lang=pt"
48
+
49
+ Dir.chdir('../')
50
+
51
+ expect(File.readlines("#{@project_name}/features/specifications/#{feature_name}.feature")).
52
+ to include("# language: pt\n", "Funcionalidade: #{feature_name.capitalize}\n", "\n", " Contexto:\n", " # Insira os passos\n", "\n", " Cenário: Primeiro Cenário\n", " # Insira os passos\n")
53
+ expect(File.readlines("#{@project_name}/features/steps_definitions/#{feature_name}_steps.rb")).
54
+ to include("######### DADO #########\n", "\n", "######### QUANDO #########\n", "\n", "######### ENTãO #########\n")
55
+ end
56
+
57
+ it 'Generates a feature using english language' do
58
+ system "magneton new '#{@project_name}'"
59
+
60
+ feature_name = 'magneton'
61
+
62
+ Dir.chdir(@project_name)
63
+
64
+ system "magneton generate feature '#{feature_name}'"
65
+
66
+ Dir.chdir('../')
67
+
68
+ expect(File.readlines("#{@project_name}/features/specifications/#{feature_name}.feature")).
69
+ to include("# language: en\n", "Feature: #{feature_name.capitalize}\n", "\n", " Background:\n", " # Insert steps\n", "\n", " Scenario: First Scenario\n", " # Insert steps\n")
70
+ expect(File.readlines("#{@project_name}/features/steps_definitions/#{feature_name}_steps.rb")).
71
+ to include("######### GIVEN #########\n", "\n", "######### WHEN #########\n", "\n", "######### THEN #########\n")
72
+ end
73
+ end
74
+
75
+ context 'This command should generates a Feature(all files)' do
76
+ it 'Generate a feature' do
77
+ system "magneton new '#{@project_name}'"
78
+
79
+ Dir.chdir(@project_name)
80
+
81
+ feature_name = 'magneton'
82
+
83
+ system "magneton generate feature '#{feature_name}'"
84
+
85
+ Dir.chdir('../')
86
+
87
+ expect(Dir.entries("#{@project_name}/features/specifications")).to include("#{feature_name}.feature")
88
+ expect(Dir.entries("#{@project_name}/features/steps_definitions")).to include("#{feature_name}_steps.rb")
89
+ expect(Dir.entries("#{@project_name}/features/pages")).to include("#{feature_name}_page.rb")
90
+ end
91
+ end
92
+
93
+ context 'Try Generates a feature with a invalid argument' do
94
+ it 'Feature will be not created' do
95
+ system "magneton new '#{@project_name}'"
96
+
97
+ feature_name = 'magneton'
98
+
99
+ Dir.chdir(@project_name)
100
+
101
+ system "magneton generate feature '#{feature_name}' invalid_argument"
102
+
103
+ Dir.chdir('../')
104
+
105
+ expect(Dir.entries("#{@project_name}/features/specifications")).not_to include("#{feature_name}.feature")
106
+ expect(Dir.entries("#{@project_name}/features/steps_definitions")).not_to include("#{feature_name}_steps.rb")
107
+ expect(Dir.entries("#{@project_name}/features/pages")).not_to include("#{feature_name}_page.rb")
108
+ end
109
+ end
110
+
111
+ context 'Generates a page' do
112
+ it 'Comamand cant generates .feature and steps_definition files ' do
113
+ system "magneton new #{@project_name}"
114
+
115
+ feature_name = 'magneton'
116
+
117
+ Dir.chdir(@project_name)
118
+
119
+ system "magneton generate page #{feature_name}"
120
+
121
+ Dir.chdir('../')
122
+
123
+ expect(Dir.entries("#{@project_name}/features/specifications")).not_to include("#{feature_name}.feature")
124
+ expect(Dir.entries("#{@project_name}/features/steps_definitions")).not_to include("#{feature_name}_steps.rb")
125
+ end
126
+ end
127
+
128
+ context 'Try Generates a feature with a invalid argument' do
129
+ it 'Page will be not created' do
130
+ system "magneton new #{@project_name}"
131
+
132
+ feature_name = 'magneton'
133
+
134
+ Dir.chdir(@project_name)
135
+
136
+ system "magneton generate page #{feature_name} invalid_argument"
137
+
138
+ Dir.chdir('../')
139
+
140
+ expect(Dir.entries("#{@project_name}/features/pages")).not_to include("#{feature_name}_page.rb")
141
+ end
142
+ end
143
+
144
+ context 'Generates a step definition' do
145
+ it 'Comamand cant generates .feature and page files ' do
146
+ system "magneton new #{@project_name}"
147
+
148
+ feature_name = 'magneton'
149
+
150
+ Dir.chdir(@project_name)
151
+
152
+ system "magneton generate step #{feature_name}"
153
+
154
+ Dir.chdir('../')
155
+
156
+ expect(Dir.entries("#{@project_name}/features/specifications")).not_to include("#{feature_name}.feature")
157
+ expect(Dir.entries("#{@project_name}/features/pages")).not_to include("#{feature_name}_page.rb")
158
+ end
159
+ end
160
+
161
+ context 'Try Generates a step with a invalid argument' do
162
+ it 'Step will be not created' do
163
+ system "magneton new #{@project_name}"
164
+
165
+ feature_name = 'magneton'
166
+
167
+ Dir.chdir(@project_name)
168
+
169
+ system "magneton generate step #{feature_name} invalid_argument"
170
+
171
+ Dir.chdir('../')
172
+
173
+ expect(Dir.entries("#{@project_name}/features/steps_definitions")).not_to include("#{feature_name}_steps.rb")
174
+ end
175
+ end
176
+ end
177
+ end
@@ -0,0 +1,106 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # The generated `.rspec` file contains `--require spec_helper` which will cause
4
+ # this file to always be loaded, without a need to explicitly require it in any
5
+ # files.
6
+ #
7
+ # Given that it is always loaded, you are encouraged to keep this file as
8
+ # light-weight as possible. Requiring heavyweight dependencies from this file
9
+ # will add to the boot time of your test suite on EVERY test run, even for an
10
+ # individual file that may not need all of that loaded. Instead, consider making
11
+ # a separate helper file that requires the additional dependencies and performs
12
+ # the additional setup, and require it from the spec files that actually need
13
+ # it.
14
+ #
15
+ # The `.rspec` file also contains a few flags that are not defaults but that
16
+ # users commonly want.
17
+ #
18
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
19
+ require 'simplecov'
20
+ SimpleCov.start
21
+
22
+ RSpec.configure do |config|
23
+ # rspec-expectations config goes here. You can use an alternate
24
+ # assertion/expectation library such as wrong or the stdlib/minitest
25
+ # assertions if you prefer.
26
+ config.expect_with :rspec do |expectations|
27
+ # This option will default to `true` in RSpec 4. It makes the `description`
28
+ # and `failure_message` of custom matchers include text for helper methods
29
+ # defined using `chain`, e.g.:
30
+ # be_bigger_than(2).and_smaller_than(4).description
31
+ # # => "be bigger than 2 and smaller than 4"
32
+ # ...rather than:
33
+ # # => "be bigger than 2"
34
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
35
+ end
36
+
37
+ # rspec-mocks config goes here. You can use an alternate test double
38
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
39
+ config.mock_with :rspec do |mocks|
40
+ # Prevents you from mocking or stubbing a method that does not exist on
41
+ # a real object. This is generally recommended, and will default to
42
+ # `true` in RSpec 4.
43
+ mocks.verify_partial_doubles = true
44
+ end
45
+
46
+ # This option will default to `:apply_to_host_groups` in RSpec 4 (and will
47
+ # have no way to turn it off -- the option exists only for backwards
48
+ # compatibility in RSpec 3). It causes shared context metadata to be
49
+ # inherited by the metadata hash of host groups and examples, rather than
50
+ # triggering implicit auto-inclusion in groups with matching metadata.
51
+ config.shared_context_metadata_behavior = :apply_to_host_groups
52
+
53
+ # The settings below are suggested to provide a good initial experience
54
+ # with RSpec, but feel free to customize to your heart's content.
55
+ =begin
56
+ # This allows you to limit a spec run to individual examples or groups
57
+ # you care about by tagging them with `:focus` metadata. When nothing
58
+ # is tagged with `:focus`, all examples get run. RSpec also provides
59
+ # aliases for `it`, `describe`, and `context` that include `:focus`
60
+ # metadata: `fit`, `fdescribe` and `fcontext`, respectively.
61
+ config.filter_run_when_matching :focus
62
+
63
+ # Allows RSpec to persist some state between runs in order to support
64
+ # the `--only-failures` and `--next-failure` CLI options. We recommend
65
+ # you configure your source control system to ignore this file.
66
+ config.example_status_persistence_file_path = "spec/examples.txt"
67
+
68
+ # Limits the available syntax to the non-monkey patched syntax that is
69
+ # recommended. For more details, see:
70
+ # - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/
71
+ # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
72
+ # - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode
73
+ config.disable_monkey_patching!
74
+
75
+ # This setting enables warnings. It's recommended, but in some cases may
76
+ # be too noisy due to issues in dependencies.
77
+ config.warnings = true
78
+
79
+ # Many RSpec users commonly either run the entire suite or an individual
80
+ # file, and it's useful to allow more verbose output when running an
81
+ # individual spec file.
82
+ if config.files_to_run.one?
83
+ # Use the documentation formatter for detailed output,
84
+ # unless a formatter has already been configured
85
+ # (e.g. via a command-line flag).
86
+ config.default_formatter = 'doc'
87
+ end
88
+
89
+ # Print the 10 slowest examples and example groups at the
90
+ # end of the spec run, to help surface which specs are running
91
+ # particularly slow.
92
+ config.profile_examples = 10
93
+
94
+ # Run specs in random order to surface order dependencies. If you find an
95
+ # order dependency and want to debug it, you can fix the order by providing
96
+ # the seed, which is printed after each run.
97
+ # --seed 1234
98
+ config.order = :random
99
+
100
+ # Seed global randomization in this process using the `--seed` CLI option.
101
+ # Setting this allows you to use `--seed` to deterministically reproduce
102
+ # test failures related to randomization by passing the same `--seed` value
103
+ # as the one that triggered the failure.
104
+ Kernel.srand config.seed
105
+ =end
106
+ end
metadata CHANGED
@@ -1,71 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: magneton
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samanta Cicilia
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-04 00:00:00.000000000 Z
11
+ date: 2016-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.7'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: thor
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.19.1
47
+ version: '0.19'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.19.1
54
+ version: '0.19'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: i18n
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.6.11
61
+ version: '0.6'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.6.11
68
+ version: '0.6'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: gherkin
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -89,12 +89,15 @@ executables:
89
89
  extensions: []
90
90
  extra_rdoc_files: []
91
91
  files:
92
+ - ".gitignore"
93
+ - ".rspec"
92
94
  - Gemfile
93
95
  - LICENSE.txt
94
96
  - README.md
95
97
  - Rakefile
96
98
  - bin/magneton
97
99
  - bin/magneton-helpers.rb
100
+ - circle.yml
98
101
  - lib/magneton/locales/en.yml
99
102
  - lib/magneton/locales/pt.yml
100
103
  - lib/magneton/magneton.rb
@@ -102,6 +105,7 @@ files:
102
105
  - lib/skeleton/.gitignore
103
106
  - lib/skeleton/Gemfile
104
107
  - lib/skeleton/README.md
108
+ - lib/skeleton/Rakefile
105
109
  - lib/skeleton/cucumber.yml
106
110
  - lib/skeleton/features/pages/.gitkeep
107
111
  - lib/skeleton/features/specifications/.gitkeep
@@ -114,10 +118,14 @@ files:
114
118
  - lib/skeleton/features/support/matchers/custom.rb
115
119
  - lib/skeleton/readme_img/step_1.png
116
120
  - lib/skeleton/readme_img/step_2.png
121
+ - lib/skeleton/screenshots/.gitkeep
122
+ - lib/skeleton/screenshots/baseline/.gitkeep
117
123
  - lib/templates/feature.tt
118
124
  - lib/templates/page.tt
119
125
  - lib/templates/steps.tt
120
126
  - magneton.gemspec
127
+ - spec/magneton_test.rb
128
+ - spec/spec_helper.rb
121
129
  homepage: https://github.com/concretesolutions/magneton
122
130
  licenses:
123
131
  - MIT
@@ -143,4 +151,6 @@ signing_key:
143
151
  specification_version: 4
144
152
  summary: Generates an Web Test Automation project with Cucumber, SitePrism, Capybara
145
153
  and Selenium.
146
- test_files: []
154
+ test_files:
155
+ - spec/magneton_test.rb
156
+ - spec/spec_helper.rb