symbiote 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 +4 -4
- data/.gitignore +39 -18
- data/.hound.yml +62 -0
- data/.rspec +3 -0
- data/.rubocop.yml +2 -0
- data/.travis.yml +5 -14
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +0 -2
- data/LICENSE.txt +17 -18
- data/README.md +47 -28
- data/Rakefile +27 -11
- data/bin/console +10 -0
- data/bin/setup +8 -0
- data/lib/symbiote.rb +26 -51
- data/lib/symbiote/data_setter.rb +51 -0
- data/lib/symbiote/elements.rb +60 -0
- data/lib/symbiote/factory.rb +24 -0
- data/lib/symbiote/pages.rb +65 -0
- data/lib/symbiote/situation.rb +53 -0
- data/lib/symbiote/version.rb +12 -1
- data/symbiote.gemspec +27 -21
- metadata +58 -60
- data/HISTORY.md +0 -7
- data/lib/symbiote/errors.rb +0 -8
- data/lib/symbiote/generators.rb +0 -21
- data/lib/symbiote/logger.rb +0 -5
- data/lib/symbiote/platform_selenium.rb +0 -18
- data/lib/symbiote/platform_selenium/platform_object.rb +0 -21
- data/lib/symbiote/platform_watir.rb +0 -18
- data/lib/symbiote/platform_watir/platform_object.rb +0 -21
- data/lib/symbiote/platforms.rb +0 -31
- data/spec/spec_helper.rb +0 -33
- data/spec/symbiote/generators_spec.rb +0 -63
- data/spec/symbiote/platform_object_spec.rb +0 -31
- data/spec/symbiote/symbiote_spec.rb +0 -7
data/lib/symbiote.rb
CHANGED
@@ -1,65 +1,40 @@
|
|
1
|
-
require
|
2
|
-
require 'symbiote/logger'
|
3
|
-
require 'symbiote/errors'
|
4
|
-
require 'symbiote/platforms'
|
5
|
-
require 'symbiote/generators'
|
1
|
+
require "symbiote/version"
|
6
2
|
|
7
|
-
require
|
8
|
-
require
|
3
|
+
require "symbiote/data_setter"
|
4
|
+
require "symbiote/situation"
|
5
|
+
require "symbiote/elements"
|
6
|
+
require "symbiote/factory"
|
7
|
+
require "symbiote/pages"
|
9
8
|
|
10
9
|
module Symbiote
|
11
|
-
|
10
|
+
module_function
|
12
11
|
|
13
|
-
# @return [Object] platform reference
|
14
|
-
# [Symbiont::Platforms::WatirWebDriver::PlatformObject]
|
15
|
-
# [Symbiont::Platforms::SeleniumWebDriver::PlatformObject]
|
16
|
-
attr_reader :platform
|
17
|
-
|
18
|
-
# @return [Object] browser reference
|
19
|
-
# [Watir::Browser]
|
20
|
-
# [Selenium::WebDriver::Driver]
|
21
12
|
attr_reader :browser
|
22
|
-
|
23
|
-
def
|
24
|
-
|
13
|
+
|
14
|
+
def included(caller)
|
15
|
+
caller.extend Symbiote::Elements
|
16
|
+
caller.extend Symbiote::Pages::Assertion
|
17
|
+
caller.__send__ :include, Symbiote::Elements::Accessor
|
18
|
+
caller.__send__ :include, Symbiote::Pages
|
19
|
+
caller.__send__ :include, Symbiote::DataSetter
|
20
|
+
end
|
21
|
+
|
22
|
+
def initialize(browser = nil, &block)
|
23
|
+
@browser = Symbiote.browser unless Symbiote.browser.nil?
|
24
|
+
@browser = browser if Symbiote.browser.nil?
|
25
|
+
instance_eval(&block) if block
|
25
26
|
end
|
26
27
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
# available as class methods. Those methods will be available only in
|
31
|
-
# the context of the class (definition) that included Symbiote.
|
32
|
-
def self.included(caller)
|
33
|
-
Symbiote.trace("#{caller.class} #{caller} attached the Symbiote")
|
34
|
-
caller.extend Symbiote::Generators
|
28
|
+
def set_browser(app = :chrome, *args)
|
29
|
+
@browser = Watir::Browser.new(app, *args)
|
30
|
+
Symbiote.browser = @browser
|
35
31
|
end
|
36
32
|
|
37
|
-
|
38
|
-
# Symbiote. A few key things are happening here that are critical to
|
39
|
-
# everything working properly:
|
40
|
-
# (1) A browser instance is being created.
|
41
|
-
# (2) A platform object is created for that browser.
|
42
|
-
#
|
43
|
-
# @param [Object] browser a browser instance with a tool driver
|
44
|
-
def initialize(browser=nil)
|
33
|
+
def browser=(browser)
|
45
34
|
@browser = browser
|
46
|
-
@browser = Watir::Browser.new if browser.nil? or browser == :watir
|
47
|
-
@browser = Selenium::WebDriver.for :firefox if browser == :selenium
|
48
|
-
|
49
|
-
Symbiote::trace("Symbiote attached to browser: #{@browser}")
|
50
|
-
|
51
|
-
establish_platform_object_for(@browser)
|
52
35
|
end
|
53
|
-
|
54
|
-
private
|
55
36
|
|
56
|
-
|
57
|
-
|
58
|
-
# platform-specific functionality.
|
59
|
-
#
|
60
|
-
# @param [Object] browser a browser instance with a tool driver
|
61
|
-
def establish_platform_object_for(browser)
|
62
|
-
@platform = get_platform_for(browser)
|
37
|
+
def browser
|
38
|
+
@browser
|
63
39
|
end
|
64
|
-
|
65
40
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
class Object
|
2
|
+
def chain(method_chain, arg = nil)
|
3
|
+
return self if method_chain.empty?
|
4
|
+
method_chain.split('.').inject(self) do |o, m|
|
5
|
+
if arg.nil?
|
6
|
+
o.send(m.intern)
|
7
|
+
else
|
8
|
+
o.send(m.intern, arg)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
module Symbiote
|
15
|
+
module DataSetter
|
16
|
+
def using(data)
|
17
|
+
data.each do |key, value|
|
18
|
+
use_data_with(key, value) if object_enabled_for(key)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
alias using_data using
|
23
|
+
alias use_data using
|
24
|
+
alias using_values using
|
25
|
+
alias use_values using
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def use_data_with(key, value)
|
30
|
+
element = send(key.to_s)
|
31
|
+
set_and_select(key, element, value)
|
32
|
+
check_and_uncheck(key, element, value)
|
33
|
+
end
|
34
|
+
|
35
|
+
def set_and_select(key, element, value)
|
36
|
+
chain("#{key}.set", value) if element.class == Watir::TextField
|
37
|
+
chain("#{key}.set") if element.class == Watir::Radio
|
38
|
+
chain("#{key}.select", value) if element.class == Watir::Select
|
39
|
+
end
|
40
|
+
|
41
|
+
def check_and_uncheck(key, element, value)
|
42
|
+
return chain("#{key}.check") if element.class == Watir::CheckBox && value
|
43
|
+
chain("#{key}.uncheck") if element.class == Watir::CheckBox
|
44
|
+
end
|
45
|
+
|
46
|
+
def object_enabled_for(key)
|
47
|
+
web_element = send(key.to_s)
|
48
|
+
web_element.enabled? && web_element.visible?
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require "watir"
|
2
|
+
require "watir-webdriver"
|
3
|
+
|
4
|
+
module Symbiote
|
5
|
+
include Situation
|
6
|
+
|
7
|
+
module_function
|
8
|
+
|
9
|
+
def elements
|
10
|
+
@elements = Watir::Container.instance_methods unless @elements
|
11
|
+
end
|
12
|
+
|
13
|
+
def hosts?(method)
|
14
|
+
Symbiote.elements.include? method.to_sym
|
15
|
+
end
|
16
|
+
|
17
|
+
module Elements
|
18
|
+
module Accessor
|
19
|
+
def reference_element(element, locator)
|
20
|
+
browser.send(element, *locator).to_subtype
|
21
|
+
rescue NoMethodError
|
22
|
+
browser.send(element, *locator)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def method_missing(method, *args)
|
27
|
+
abort("The method '#{method}' is not a recognized element method.")
|
28
|
+
super
|
29
|
+
end
|
30
|
+
|
31
|
+
def respond_to_missing?(method)
|
32
|
+
super
|
33
|
+
end
|
34
|
+
|
35
|
+
Symbiote.elements.each do |element|
|
36
|
+
define_method(element) do |*signature, &block|
|
37
|
+
identifier, locator = parse_signature(signature)
|
38
|
+
define_element_accessor(identifier, locator, element, &block)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def define_element_accessor(identifier, *locator, element, &block)
|
45
|
+
define_method(identifier.to_s.to_sym) do |*values|
|
46
|
+
if block_given?
|
47
|
+
instance_exec(*values, &block)
|
48
|
+
else
|
49
|
+
no_locator(self.class, identifier) if empty_locator(locator, values)
|
50
|
+
locator = values if locator[0].nil?
|
51
|
+
reference_element(element, locator)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def parse_signature(signature)
|
57
|
+
[signature.shift, signature.shift]
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Symbiote
|
2
|
+
module Factory
|
3
|
+
# Creates a definition context for actions. If an existing context
|
4
|
+
# exists, that context will be re-used.
|
5
|
+
def on(definition, visit = false, &block)
|
6
|
+
unless @context.is_a?(definition)
|
7
|
+
@context = definition.new(@browser) if @browser
|
8
|
+
@context = definition.new unless @browser
|
9
|
+
@context.visit if visit
|
10
|
+
end
|
11
|
+
|
12
|
+
yield @context if block
|
13
|
+
@context
|
14
|
+
end
|
15
|
+
|
16
|
+
# Creates a definition context for actions and establishes the
|
17
|
+
# context for execution.
|
18
|
+
def on_view(definition, &block)
|
19
|
+
on(definition, true, &block)
|
20
|
+
end
|
21
|
+
|
22
|
+
alias on_visit on_view
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module Symbiote
|
2
|
+
include Situation
|
3
|
+
|
4
|
+
module_function
|
5
|
+
|
6
|
+
module Pages
|
7
|
+
module Assertion
|
8
|
+
include Situation
|
9
|
+
|
10
|
+
def url_is(url)
|
11
|
+
url_is_empty if url.nil? || url.empty?
|
12
|
+
@url = url
|
13
|
+
end
|
14
|
+
|
15
|
+
def asserted_url
|
16
|
+
@url
|
17
|
+
end
|
18
|
+
|
19
|
+
def title_is(title)
|
20
|
+
title_is_empty if title.nil? || title.empty?
|
21
|
+
@title = title
|
22
|
+
end
|
23
|
+
|
24
|
+
def asserted_title
|
25
|
+
@title
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def visit(url = nil)
|
30
|
+
no_url_provided if url.nil? && asserted_url.nil?
|
31
|
+
browser.goto(url) unless url.nil?
|
32
|
+
browser.goto(asserted_url) if url.nil?
|
33
|
+
self
|
34
|
+
end
|
35
|
+
|
36
|
+
alias perform visit
|
37
|
+
alias view visit
|
38
|
+
alias navigate_to visit
|
39
|
+
alias goto visit
|
40
|
+
|
41
|
+
def asserted_url
|
42
|
+
self.class.asserted_url
|
43
|
+
end
|
44
|
+
|
45
|
+
def asserted_title
|
46
|
+
self.class.asserted_title
|
47
|
+
end
|
48
|
+
|
49
|
+
def resize(width, height)
|
50
|
+
browser.window.resize_to(width, height)
|
51
|
+
end
|
52
|
+
|
53
|
+
def position(x, y)
|
54
|
+
browser.window.move_to(x, y)
|
55
|
+
end
|
56
|
+
|
57
|
+
def url
|
58
|
+
browser.url
|
59
|
+
end
|
60
|
+
|
61
|
+
def title
|
62
|
+
browser.title
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Symbiote
|
2
|
+
module Situation
|
3
|
+
private
|
4
|
+
|
5
|
+
def url_is_empty
|
6
|
+
puts "PROBLEM: url_is assertion empty."
|
7
|
+
puts "The url_is assertion is empty on"
|
8
|
+
puts "the definition #{retrieve_class(caller)}."
|
9
|
+
abort
|
10
|
+
end
|
11
|
+
|
12
|
+
def no_url_provided
|
13
|
+
puts "PROBLEM: No url provided."
|
14
|
+
puts "You called a '#{retrieve_method(caller)}' action but the "
|
15
|
+
puts "definition #{self.class} does not have a url_is assertion."
|
16
|
+
puts "Either provide the url_is assertion or pass the url as an"
|
17
|
+
puts "argument to the visit call."
|
18
|
+
abort
|
19
|
+
end
|
20
|
+
|
21
|
+
def title_is_empty
|
22
|
+
puts "PROBLEM: title_is assertion empty."
|
23
|
+
puts "The title_is assertion is empty on"
|
24
|
+
puts "the definition #{retrieve_class(caller)}."
|
25
|
+
abort
|
26
|
+
end
|
27
|
+
|
28
|
+
def no_title_is_provided
|
29
|
+
puts "PROBLEM: No title provided."
|
30
|
+
puts "You called a '#{retrieve_method(caller)}' action but the"
|
31
|
+
puts "definition #{self.class} does not have a title_is assertion."
|
32
|
+
end
|
33
|
+
|
34
|
+
def no_locator(definition, identifier)
|
35
|
+
puts "PROBLEM: No locator provided."
|
36
|
+
puts "You are using '#{identifier}' on '#{definition}'."
|
37
|
+
puts "But there is no locator provided with it."
|
38
|
+
abort
|
39
|
+
end
|
40
|
+
|
41
|
+
def empty_locator(locator, values)
|
42
|
+
locator[0].nil? && values.empty? && !values[0].is_a?(Hash)
|
43
|
+
end
|
44
|
+
|
45
|
+
def retrieve_class(caller)
|
46
|
+
caller[1][/`.*'/][8..-3]
|
47
|
+
end
|
48
|
+
|
49
|
+
def retrieve_method(caller)
|
50
|
+
caller[0][/`.*'/][1..-2]
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/lib/symbiote/version.rb
CHANGED
@@ -1,3 +1,14 @@
|
|
1
1
|
module Symbiote
|
2
|
-
|
2
|
+
module_function
|
3
|
+
|
4
|
+
VERSION = "0.2.0".freeze
|
5
|
+
|
6
|
+
def version
|
7
|
+
"""
|
8
|
+
Symbiote v#{Symbiote::VERSION}
|
9
|
+
watir: #{Gem.loaded_specs['watir'].version}
|
10
|
+
watir-webdriver: #{Gem.loaded_specs['watir-webdriver'].version}
|
11
|
+
selenium-webdriver: #{Gem.loaded_specs['selenium-webdriver'].version}
|
12
|
+
"""
|
13
|
+
end
|
3
14
|
end
|
data/symbiote.gemspec
CHANGED
@@ -4,28 +4,34 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'symbiote/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = "symbiote"
|
8
8
|
spec.version = Symbiote::VERSION
|
9
|
-
spec.
|
10
|
-
spec.
|
11
|
-
spec.email = 'jeffnyman@gmail.com'
|
12
|
-
spec.description = 'Provides a DSL to construct a fluent interface for test execution libraries.'
|
13
|
-
spec.summary = 'An endosymbiotic facultative library for web application testing.'
|
14
|
-
spec.homepage = 'https://github.com/jnyman/symbiote'
|
15
|
-
spec.license = 'MIT'
|
9
|
+
spec.authors = ["Jeff Nyman"]
|
10
|
+
spec.email = ["jeffnyman@gmail.com"]
|
16
11
|
|
17
|
-
spec.
|
18
|
-
spec.
|
19
|
-
spec.
|
20
|
-
spec.
|
21
|
-
|
22
|
-
spec.required_ruby_version = '>= 1.9.3'
|
23
|
-
|
24
|
-
spec.add_development_dependency 'bundler', '~> 1.3'
|
25
|
-
spec.add_development_dependency 'rake'
|
26
|
-
spec.add_development_dependency 'rspec', '~> 2.14.1'
|
27
|
-
spec.add_development_dependency 'simplecov', '~> 0.7'
|
12
|
+
spec.summary = %q{Provides a semantic DSL to construct fluent interfaces for test execution logic.}
|
13
|
+
spec.description = %q{Provides a semantic DSL to construct fluent interfaces for test execution logic.}
|
14
|
+
spec.homepage = "https://github.com/jnyman/symbiote"
|
15
|
+
spec.license = "MIT"
|
28
16
|
|
29
|
-
spec.
|
30
|
-
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
|
+
f.match(%r{^(test|spec|features)/})
|
19
|
+
end
|
20
|
+
spec.bindir = "exe"
|
21
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
|
+
spec.require_paths = ["lib"]
|
23
|
+
|
24
|
+
spec.add_development_dependency "bundler", "~> 1.13"
|
25
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
26
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
27
|
+
spec.add_development_dependency "rubocop"
|
28
|
+
spec.add_development_dependency "pry"
|
29
|
+
|
30
|
+
spec.add_runtime_dependency "watir"
|
31
|
+
|
32
|
+
spec.post_install_message = %{
|
33
|
+
(::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::)
|
34
|
+
Symbiote #{Symbiote::VERSION} has been installed.
|
35
|
+
(::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::)
|
36
|
+
}
|
31
37
|
end
|
metadata
CHANGED
@@ -1,154 +1,152 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: symbiote
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Nyman
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-10-20 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
|
-
version: '1.
|
19
|
+
version: '1.13'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
26
|
+
version: '1.13'
|
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
|
-
version: '0'
|
33
|
+
version: '10.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
40
|
+
version: '10.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: '3.0'
|
48
48
|
type: :development
|
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:
|
54
|
+
version: '3.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: rubocop
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0
|
61
|
+
version: '0'
|
62
62
|
type: :development
|
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
|
68
|
+
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: pry
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0
|
76
|
-
type: :
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0
|
82
|
+
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: watir
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: '0'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
97
|
-
description: Provides a DSL to construct
|
98
|
-
|
96
|
+
version: '0'
|
97
|
+
description: Provides a semantic DSL to construct fluent interfaces for test execution
|
98
|
+
logic.
|
99
|
+
email:
|
100
|
+
- jeffnyman@gmail.com
|
99
101
|
executables: []
|
100
102
|
extensions: []
|
101
103
|
extra_rdoc_files: []
|
102
104
|
files:
|
103
|
-
- .gitignore
|
104
|
-
- .
|
105
|
+
- ".gitignore"
|
106
|
+
- ".hound.yml"
|
107
|
+
- ".rspec"
|
108
|
+
- ".rubocop.yml"
|
109
|
+
- ".travis.yml"
|
110
|
+
- CODE_OF_CONDUCT.md
|
105
111
|
- Gemfile
|
106
|
-
- HISTORY.md
|
107
112
|
- LICENSE.txt
|
108
113
|
- README.md
|
109
114
|
- Rakefile
|
115
|
+
- bin/console
|
116
|
+
- bin/setup
|
110
117
|
- lib/symbiote.rb
|
111
|
-
- lib/symbiote/
|
112
|
-
- lib/symbiote/
|
113
|
-
- lib/symbiote/
|
114
|
-
- lib/symbiote/
|
115
|
-
- lib/symbiote/
|
116
|
-
- lib/symbiote/platform_watir.rb
|
117
|
-
- lib/symbiote/platform_watir/platform_object.rb
|
118
|
-
- lib/symbiote/platforms.rb
|
118
|
+
- lib/symbiote/data_setter.rb
|
119
|
+
- lib/symbiote/elements.rb
|
120
|
+
- lib/symbiote/factory.rb
|
121
|
+
- lib/symbiote/pages.rb
|
122
|
+
- lib/symbiote/situation.rb
|
119
123
|
- lib/symbiote/version.rb
|
120
|
-
- spec/spec_helper.rb
|
121
|
-
- spec/symbiote/generators_spec.rb
|
122
|
-
- spec/symbiote/platform_object_spec.rb
|
123
|
-
- spec/symbiote/symbiote_spec.rb
|
124
124
|
- symbiote.gemspec
|
125
125
|
homepage: https://github.com/jnyman/symbiote
|
126
126
|
licenses:
|
127
127
|
- MIT
|
128
128
|
metadata: {}
|
129
|
-
post_install_message:
|
129
|
+
post_install_message: "\n(::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::)\n
|
130
|
+
\ Symbiote 0.2.0 has been installed.\n(::) (::) (::) (::) (::) (::) (::) (::) (::)
|
131
|
+
(::) (::) (::)\n "
|
130
132
|
rdoc_options: []
|
131
133
|
require_paths:
|
132
134
|
- lib
|
133
135
|
required_ruby_version: !ruby/object:Gem::Requirement
|
134
136
|
requirements:
|
135
|
-
- -
|
137
|
+
- - ">="
|
136
138
|
- !ruby/object:Gem::Version
|
137
|
-
version:
|
139
|
+
version: '0'
|
138
140
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
139
141
|
requirements:
|
140
|
-
- -
|
142
|
+
- - ">="
|
141
143
|
- !ruby/object:Gem::Version
|
142
144
|
version: '0'
|
143
145
|
requirements: []
|
144
146
|
rubyforge_project:
|
145
|
-
rubygems_version: 2.
|
147
|
+
rubygems_version: 2.5.1
|
146
148
|
signing_key:
|
147
149
|
specification_version: 4
|
148
|
-
summary:
|
149
|
-
|
150
|
-
|
151
|
-
- spec/symbiote/generators_spec.rb
|
152
|
-
- spec/symbiote/platform_object_spec.rb
|
153
|
-
- spec/symbiote/symbiote_spec.rb
|
154
|
-
has_rdoc:
|
150
|
+
summary: Provides a semantic DSL to construct fluent interfaces for test execution
|
151
|
+
logic.
|
152
|
+
test_files: []
|