integra 0.0.1
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 +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +43 -0
- data/Rakefile +1 -0
- data/bin/integra +47 -0
- data/integra.gemspec +32 -0
- data/lib/integra.rb +29 -0
- data/lib/integra/autorun.rb +72 -0
- data/lib/integra/commands.rb +55 -0
- data/lib/integra/config.rb +16 -0
- data/lib/integra/defaults/placeholders.rb +30 -0
- data/lib/integra/drivers/poltergeist.rb +13 -0
- data/lib/integra/drivers/selenium.rb +1 -0
- data/lib/integra/ext/gherkin.rb +22 -0
- data/lib/integra/logger.rb +22 -0
- data/lib/integra/template/features/support/placeholders.rb +10 -0
- data/lib/integra/template/features/support/steps.rb +56 -0
- data/lib/integra/template/i18n/sample.en.feature +9 -0
- data/lib/integra/template/i18n/sample.pt.feature +9 -0
- data/lib/integra/template/integra +2 -0
- data/lib/integra/template/rspec +6 -0
- data/lib/integra/version.rb +4 -0
- metadata +196 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ba28710f95525dfe85086db933f38d3e77819e4f
|
4
|
+
data.tar.gz: 6c00e2048eb5bd4b3220c3a56ac8e59b32442740
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f3802a54d043b5e49e6361e8ef9ed9ebca279dd201328fb383ecf2e507d60e7c4d902b5875623fd25c16db14d6ed81603cb4b5e7d2d7ae7048d5454aea803af6
|
7
|
+
data.tar.gz: 7549ca51fa1c1f5f386f57164ab8bc7ae8e6dbbebbacf6f0d26a531a7a7a7878ab333dad295b542b2cd0f71553c19e9e86ee88bf9275c3eeadba120f2cc5206f
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Endel Dreyer
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# Integra
|
2
|
+
|
3
|
+
A nice set of defaults for integration tests, no matter what language your
|
4
|
+
application is written in.
|
5
|
+
|
6
|
+
## Requirements
|
7
|
+
|
8
|
+
- [ruby >= 1.9.2](http://rvm.io/)
|
9
|
+
- [phantomjs](https://github.com/ariya/phantomjs)
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
|
13
|
+
Install it globally in your system:
|
14
|
+
|
15
|
+
$ gem install integra
|
16
|
+
|
17
|
+
## How to use
|
18
|
+
|
19
|
+
Goto your project root and run the initializer:
|
20
|
+
|
21
|
+
$ cd ~/Projects/my-nice-project/
|
22
|
+
$ integra init localhost
|
23
|
+
|
24
|
+
For custom [gherkin](https://github.com/cucumber/gherkin) language support, use
|
25
|
+
the `--lang=` option:
|
26
|
+
|
27
|
+
$ integra init --lang=pt
|
28
|
+
|
29
|
+
## The defaults
|
30
|
+
|
31
|
+
- [turnip](https://github.com/jnicklas/turnip/)
|
32
|
+
- [turnip_formatter](https://github.com/gongo/turnip_formatter/)
|
33
|
+
- [capybara](https://github.com/jnicklas/capybara)
|
34
|
+
- [rspec](https://github.com/rspec/rspec)
|
35
|
+
- [poltergeist](https://github.com/jonleighton/poltergeist)
|
36
|
+
|
37
|
+
## Contributing
|
38
|
+
|
39
|
+
1. Fork it
|
40
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
41
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
42
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
43
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/integra
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$: << './lib'
|
3
|
+
require 'optparse'
|
4
|
+
require 'integra'
|
5
|
+
|
6
|
+
options = {
|
7
|
+
:command => (ARGV[0].kind_of?(String) && !ARGV[0].start_with?('-')) ? ARGV.shift : :run,
|
8
|
+
:args => ARGV.select {|arg| !arg.start_with?('-') }
|
9
|
+
}
|
10
|
+
|
11
|
+
config_file = File.expand_path('.integra')
|
12
|
+
if File.exists?(config_file)
|
13
|
+
ARGV.concat open(config_file).read.split("\n")
|
14
|
+
end
|
15
|
+
|
16
|
+
OptionParser.new do |opts|
|
17
|
+
opts.banner = "Usage: integra [options]"
|
18
|
+
opts.separator "Options:"
|
19
|
+
|
20
|
+
opts.on_tail("-v", "--version", "Show version") do |v|
|
21
|
+
puts "#{Integra::NAME} v#{Integra::VERSION}"
|
22
|
+
exit
|
23
|
+
end
|
24
|
+
|
25
|
+
opts.on_tail("-h", "--help", "Show help") do |v|
|
26
|
+
puts opts
|
27
|
+
exit
|
28
|
+
end
|
29
|
+
|
30
|
+
opts.on("--project_name=", "Project name") do |name|
|
31
|
+
options[:project_name] = name
|
32
|
+
end
|
33
|
+
|
34
|
+
opts.on("--app_host=", "Application host to be tested") do |host|
|
35
|
+
options[:app_host] = host
|
36
|
+
end
|
37
|
+
|
38
|
+
opts.on("--lang=", "Specify gherkin language") do |lang|
|
39
|
+
options[:lang] = lang
|
40
|
+
end
|
41
|
+
|
42
|
+
opts.on("--driver=", "Specify default capybara driver") do |driver|
|
43
|
+
options[:driver] = driver
|
44
|
+
end
|
45
|
+
end.parse!
|
46
|
+
|
47
|
+
Integra.command!(options)
|
data/integra.gemspec
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'integra/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = Integra::NAME
|
8
|
+
spec.version = Integra::VERSION
|
9
|
+
spec.authors = ["Endel Dreyer"]
|
10
|
+
spec.email = ["endel.dreyer@gmail.com"]
|
11
|
+
|
12
|
+
spec.description = %q{A nice set of defaults for integration tests, no matter what language your application is written in.}
|
13
|
+
spec.summary = %q{Integration testing tools.}
|
14
|
+
spec.homepage = "https://github.com/endel/integra"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = `git ls-files`.split($/)
|
18
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
|
22
|
+
spec.add_dependency 'rspec', '>= 2.14.1'
|
23
|
+
spec.add_dependency 'poltergeist', '>= 1.4.1'
|
24
|
+
spec.add_dependency 'capybara', '>= 2.1.0'
|
25
|
+
spec.add_dependency 'turnip', '>= 1.1.0'
|
26
|
+
spec.add_dependency 'turnip_formatter', '>= 0.2.7'
|
27
|
+
spec.add_dependency 'gnawrnip', '>= 0.1.3'
|
28
|
+
spec.add_dependency 'colorize', '>= 0.6.0'
|
29
|
+
|
30
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
31
|
+
spec.add_development_dependency "rake"
|
32
|
+
end
|
data/lib/integra.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require "integra/version"
|
2
|
+
|
3
|
+
module Integra
|
4
|
+
autoload :Commands, 'integra/commands'
|
5
|
+
autoload :Config, 'integra/config'
|
6
|
+
autoload :Logger, 'integra/logger'
|
7
|
+
|
8
|
+
module Drivers; end
|
9
|
+
|
10
|
+
class << self
|
11
|
+
attr_accessor :logger, :config
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.command!(options={})
|
15
|
+
@logger = Logger.new
|
16
|
+
@config = Config.new(options)
|
17
|
+
|
18
|
+
Commands.send(options[:command], options)
|
19
|
+
end
|
20
|
+
|
21
|
+
# Return a directory with the project libraries.
|
22
|
+
def self.gem_libdir
|
23
|
+
t = ["#{File.dirname(File.expand_path($0))}/../lib/#{Integra::NAME}",
|
24
|
+
"#{Gem.dir}/gems/#{Integra::NAME}-#{Integra::VERSION}/lib/#{Integra::NAME}"]
|
25
|
+
t.each {|i| return i if File.readable?(i) }
|
26
|
+
raise "both paths are invalid: #{t}"
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'integra'
|
2
|
+
|
3
|
+
#
|
4
|
+
# simulate rspec command call for rspec autorun
|
5
|
+
#
|
6
|
+
$0 = 'rspec'
|
7
|
+
require 'rspec/autorun'
|
8
|
+
|
9
|
+
require "turnip"
|
10
|
+
require "turnip/rspec"
|
11
|
+
require 'turnip/capybara'
|
12
|
+
require "turnip_formatter"
|
13
|
+
|
14
|
+
require 'integra/ext/gherkin'
|
15
|
+
require 'integra/defaults/placeholders'
|
16
|
+
|
17
|
+
# Load all steps
|
18
|
+
Dir.glob("features/steps/**.rb") { |f| load f, true }
|
19
|
+
|
20
|
+
# Load all support files
|
21
|
+
Dir.glob("features/support/**.rb") { |f| load f, true }
|
22
|
+
|
23
|
+
require 'capybara'
|
24
|
+
require 'capybara/rspec'
|
25
|
+
require 'capybara/webkit'
|
26
|
+
|
27
|
+
#
|
28
|
+
# Take screenshots on every step
|
29
|
+
#
|
30
|
+
require 'gnawrnip'
|
31
|
+
Gnawrnip.ready!
|
32
|
+
Gnawrnip.configure do |c|
|
33
|
+
c.publisher_driver = :js
|
34
|
+
c.make_animation = true
|
35
|
+
c.frame_interval = 2000 # milliseconds
|
36
|
+
c.frame_size = [640, 360] # width, height
|
37
|
+
end
|
38
|
+
|
39
|
+
#
|
40
|
+
# Configure Selenium + Vagrant | Multiple browsers
|
41
|
+
# http://www.without-brains.net/blog/2012/08/01/capybara-and-selenium-with-vagrant/
|
42
|
+
#
|
43
|
+
|
44
|
+
Capybara.app_host = Integra.config.app_host
|
45
|
+
Capybara.default_wait_time = 10
|
46
|
+
Capybara.ignore_hidden_elements = false
|
47
|
+
|
48
|
+
#
|
49
|
+
# Setup driver
|
50
|
+
#
|
51
|
+
require "integra/drivers/#{Integra.config.driver}"
|
52
|
+
Capybara.default_driver = Integra.config.driver
|
53
|
+
|
54
|
+
#
|
55
|
+
# RSpec configuration
|
56
|
+
#
|
57
|
+
RSpec.configure do |c|
|
58
|
+
c.project_name = Integra.config.project_name
|
59
|
+
|
60
|
+
c.before(:type => :feature) do
|
61
|
+
#
|
62
|
+
# Use Firefox as default user-agent
|
63
|
+
#
|
64
|
+
page.driver.add_headers({
|
65
|
+
"User-Agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:25.0) Gecko/20100101 Firefox/25.0"
|
66
|
+
}) if page.driver.respond_to?(:add_headers)
|
67
|
+
end
|
68
|
+
|
69
|
+
c.after(:type => :feature) do |group|
|
70
|
+
#page.save_screenshot("./tmp/screenshots/#{example.description.downcase}-#{Integra.config.driver}.png")
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Integra
|
2
|
+
module Commands
|
3
|
+
extend self
|
4
|
+
|
5
|
+
def run(options)
|
6
|
+
Integra.logger.log("Running: #{Integra.config.app_host}", :green)
|
7
|
+
require 'integra/autorun'
|
8
|
+
end
|
9
|
+
|
10
|
+
def init(options)
|
11
|
+
require 'fileutils'
|
12
|
+
|
13
|
+
if (app_host = options[:args].first)
|
14
|
+
Integra.config.app_host = self.build_url(app_host)
|
15
|
+
end
|
16
|
+
|
17
|
+
# Create '.integra' file.
|
18
|
+
['integra', 'rspec'].each do |file|
|
19
|
+
File.open(File.expand_path("./.#{file}"), 'w+') do |f|
|
20
|
+
data = open("#{Integra.gem_libdir}/template/#{file}").read
|
21
|
+
#
|
22
|
+
# replace config variables
|
23
|
+
#
|
24
|
+
data.gsub!('{lang}', Integra.config.lang.to_s)
|
25
|
+
data.gsub!('{app_host}', Integra.config.app_host.to_s)
|
26
|
+
f.write(data)
|
27
|
+
end
|
28
|
+
Integra.logger.action('create', "./.#{file}")
|
29
|
+
end
|
30
|
+
|
31
|
+
# Create 'features' and 'support' directories
|
32
|
+
FileUtils.mkdir_p(File.expand_path('./features/support/'))
|
33
|
+
|
34
|
+
# Sample feature
|
35
|
+
FileUtils.cp(Integra.gem_libdir + "/template/i18n/sample.#{Integra.config.lang}.feature", File.expand_path('./features/sample.feature'))
|
36
|
+
Integra.logger.action('create', './features/sample.feature')
|
37
|
+
|
38
|
+
support_dest = './features/support/'
|
39
|
+
Dir.glob(Integra.gem_libdir + "/template/features/support/*.rb").each do |source|
|
40
|
+
unless File.exists?(File.expand_path("#{support_dest}#{File.basename(source)}"))
|
41
|
+
FileUtils.cp(source, File.expand_path(support_dest))
|
42
|
+
Integra.logger.action('create', "#{support_dest}#{File.basename(source)}")
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
protected
|
48
|
+
|
49
|
+
def build_url(url)
|
50
|
+
url = "http://#{url}" if !url.start_with?('http')
|
51
|
+
url
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
|
3
|
+
module Integra
|
4
|
+
class Config < OpenStruct
|
5
|
+
def initialize(options)
|
6
|
+
configs = {}
|
7
|
+
|
8
|
+
configs[:driver] = (options[:driver] || 'poltergeist').to_sym
|
9
|
+
configs[:lang] = (options[:lang] || 'en').to_sym
|
10
|
+
configs[:app_host] = options[:app_host] || 'http://localhost'
|
11
|
+
configs[:project_name] = options[:project_name] || File.basename(File.expand_path('.'))
|
12
|
+
|
13
|
+
super(configs)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
placeholder :url do
|
2
|
+
match /([a-z0-9A-Z\.\-\/]+)/ do |url|
|
3
|
+
url
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
7
|
+
placeholder :float do
|
8
|
+
match /[0-9\.]+/ do |float|
|
9
|
+
float.to_i
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
placeholder :int do
|
14
|
+
match /[0-9]+/ do |int|
|
15
|
+
int.to_i
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
placeholder :selector do
|
20
|
+
match /'([^']+)'/ do |selector|
|
21
|
+
selector
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
placeholder :email do
|
26
|
+
match /([a-z0-9\.\-@]+)/ do |email|
|
27
|
+
email
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'capybara/poltergeist'
|
2
|
+
|
3
|
+
Capybara.register_driver :poltergeist do |app|
|
4
|
+
Capybara::Poltergeist::Driver.new(app, {
|
5
|
+
:timeout => 35, # seconds to communicate with phantomjs
|
6
|
+
:phantomjs_logger => Logger.new($stdout),
|
7
|
+
:phantomjs_options => [
|
8
|
+
'--load-images=no', '--ignore-ssl-errors=yes', '--local-to-remote-url-access=yes'
|
9
|
+
],
|
10
|
+
#:debug => true,
|
11
|
+
:window_size => [1280, 1024]
|
12
|
+
})
|
13
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'selenium-webdriver'
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#
|
2
|
+
# Override default iso_code for pt support
|
3
|
+
#
|
4
|
+
|
5
|
+
module Gherkin
|
6
|
+
module Parser
|
7
|
+
class Parser
|
8
|
+
|
9
|
+
# Initialize the parser. +machine_name+ refers to a state machine table.
|
10
|
+
def initialize(formatter, raise_on_error=true, machine_name='root', force_ruby=false, iso_code=Integra.config.lang.to_s)
|
11
|
+
@formatter = formatter
|
12
|
+
@listener = Listener::FormatterListener.new(@formatter)
|
13
|
+
@raise_on_error = raise_on_error
|
14
|
+
@machine_name = machine_name
|
15
|
+
@machines = []
|
16
|
+
@lexer = Gherkin::Lexer::I18nLexer.new(self, force_ruby, iso_code)
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'logger'
|
2
|
+
require 'colorize'
|
3
|
+
|
4
|
+
module Integra
|
5
|
+
class Logger
|
6
|
+
def initialize
|
7
|
+
@logger = ::Logger.new(STDOUT)
|
8
|
+
@logger.formatter = proc do |severity, datetime, progname, msg|
|
9
|
+
"#{msg}\n"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def log(action, color=:green)
|
14
|
+
@logger.info("#{action.send(color)}")
|
15
|
+
end
|
16
|
+
|
17
|
+
def action(name, description)
|
18
|
+
@logger.info("#{name.green}\t#{description}")
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
#
|
2
|
+
# ---------
|
3
|
+
# URL Steps
|
4
|
+
# ---------
|
5
|
+
# step "access :url" do |url|
|
6
|
+
# visit url
|
7
|
+
# end
|
8
|
+
#
|
9
|
+
# Defining a step alias:
|
10
|
+
# step "access homepage" do
|
11
|
+
# step "access /"
|
12
|
+
# end
|
13
|
+
#
|
14
|
+
# -----------
|
15
|
+
# Login steps
|
16
|
+
# -----------
|
17
|
+
# step "login with :email and :password" do |email, password|
|
18
|
+
# click_link 'link_login'
|
19
|
+
#
|
20
|
+
# within('#login') do
|
21
|
+
# fill_in 'user', :with => email
|
22
|
+
# fill_in 'password', :with => password
|
23
|
+
# end
|
24
|
+
#
|
25
|
+
# find('#submit').click
|
26
|
+
# sleep 10 # wait for redirects...
|
27
|
+
# end
|
28
|
+
#
|
29
|
+
# step "i'm logged in" do
|
30
|
+
# step "access homepage"
|
31
|
+
# step "login with username@domain.com p4ssw0rd"
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
# --------------
|
35
|
+
# CSS assertions
|
36
|
+
# --------------
|
37
|
+
# step "element :selector should exist" do |selector|
|
38
|
+
# page.should have_selector(selector)
|
39
|
+
# end
|
40
|
+
#
|
41
|
+
# step "elemento :selector shouldn't exist" do |selector|
|
42
|
+
# page.should_not have_selector(selector)
|
43
|
+
# end
|
44
|
+
#
|
45
|
+
# -----------
|
46
|
+
# Utilities
|
47
|
+
# -----------
|
48
|
+
# step "wait for ajax" do
|
49
|
+
# Timeout.timeout(Capybara.default_wait_time) do
|
50
|
+
# loop do
|
51
|
+
# active = page.evaluate_script('jQuery.active')
|
52
|
+
# break if active == 0
|
53
|
+
# end
|
54
|
+
# end
|
55
|
+
# end
|
56
|
+
#
|
@@ -0,0 +1,9 @@
|
|
1
|
+
Feature: Pretty Formatter
|
2
|
+
In order to have pretty gherkin
|
3
|
+
I want to verify that all prettified cucumber features parse OK
|
4
|
+
|
5
|
+
Scenario: Parse all the features in Cucumber
|
6
|
+
Given I have Cucumber's source code next to Gherkin's
|
7
|
+
And I find all of the .feature files
|
8
|
+
When I send each prettified original through the "pretty" machinery
|
9
|
+
Then the machinery output should be identical to the prettified original
|
@@ -0,0 +1,9 @@
|
|
1
|
+
Funcionalidade: Formatter Bonito
|
2
|
+
Para se ter maxixe muito
|
3
|
+
Quero verificar se todos os recursos pepino embelezados analisar OK
|
4
|
+
|
5
|
+
Cenário: Analisar todos os recursos do Pepino
|
6
|
+
Dado que eu tenho o código fonte do pepino ao lado do Gherkin
|
7
|
+
E eu encontrar todos os arquivos de funcionalidades
|
8
|
+
Quando eu enviar cada original prettified através do mecanismo "bastante"
|
9
|
+
Então a saída de máquinas devem ser idênticas ao original prettified
|
metadata
ADDED
@@ -0,0 +1,196 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: integra
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Endel Dreyer
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-11-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.14.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.14.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: poltergeist
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.4.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.4.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: capybara
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 2.1.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 2.1.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: turnip
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.1.0
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.1.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: turnip_formatter
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.2.7
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.2.7
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: gnawrnip
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.1.3
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.1.3
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: colorize
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.6.0
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.6.0
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: bundler
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '1.3'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ~>
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '1.3'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rake
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
description: A nice set of defaults for integration tests, no matter what language
|
140
|
+
your application is written in.
|
141
|
+
email:
|
142
|
+
- endel.dreyer@gmail.com
|
143
|
+
executables:
|
144
|
+
- integra
|
145
|
+
extensions: []
|
146
|
+
extra_rdoc_files: []
|
147
|
+
files:
|
148
|
+
- .gitignore
|
149
|
+
- Gemfile
|
150
|
+
- LICENSE.txt
|
151
|
+
- README.md
|
152
|
+
- Rakefile
|
153
|
+
- bin/integra
|
154
|
+
- integra.gemspec
|
155
|
+
- lib/integra.rb
|
156
|
+
- lib/integra/autorun.rb
|
157
|
+
- lib/integra/commands.rb
|
158
|
+
- lib/integra/config.rb
|
159
|
+
- lib/integra/defaults/placeholders.rb
|
160
|
+
- lib/integra/drivers/poltergeist.rb
|
161
|
+
- lib/integra/drivers/selenium.rb
|
162
|
+
- lib/integra/ext/gherkin.rb
|
163
|
+
- lib/integra/logger.rb
|
164
|
+
- lib/integra/template/features/support/placeholders.rb
|
165
|
+
- lib/integra/template/features/support/steps.rb
|
166
|
+
- lib/integra/template/i18n/sample.en.feature
|
167
|
+
- lib/integra/template/i18n/sample.pt.feature
|
168
|
+
- lib/integra/template/integra
|
169
|
+
- lib/integra/template/rspec
|
170
|
+
- lib/integra/version.rb
|
171
|
+
homepage: https://github.com/endel/integra
|
172
|
+
licenses:
|
173
|
+
- MIT
|
174
|
+
metadata: {}
|
175
|
+
post_install_message:
|
176
|
+
rdoc_options: []
|
177
|
+
require_paths:
|
178
|
+
- lib
|
179
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
180
|
+
requirements:
|
181
|
+
- - '>='
|
182
|
+
- !ruby/object:Gem::Version
|
183
|
+
version: '0'
|
184
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
185
|
+
requirements:
|
186
|
+
- - '>='
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: '0'
|
189
|
+
requirements: []
|
190
|
+
rubyforge_project:
|
191
|
+
rubygems_version: 2.1.8
|
192
|
+
signing_key:
|
193
|
+
specification_version: 4
|
194
|
+
summary: Integration testing tools.
|
195
|
+
test_files: []
|
196
|
+
has_rdoc:
|