symbiote 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1ec0549216f3d55f7e16bd2b37aed307395e9f60
4
+ data.tar.gz: cf2d54e3824dcafa388cb6efa9539670f4bbb9b4
5
+ SHA512:
6
+ metadata.gz: 0539a73d3ee9cdd64a84dff6bec77b3ca78b648c4206be051c2839fd32bdaf5f4a33d8e053fe705b9532228ddd6fa39c2d0822e830db0ab64c7010f6ebd15eca
7
+ data.tar.gz: e84ee2e270ca6c58a3166cbe00f9eecbdb7ff30343156a42e74687f8ce9c80464b991c5e79f340f1db05992ab44f891b2d77aaa5c8f5b8f5c6bae89c01d71e31
data/.gitignore ADDED
@@ -0,0 +1,19 @@
1
+ *.gem
2
+ *.rbc
3
+ .idea
4
+ .bundle
5
+ .config
6
+ .yardoc
7
+ Gemfile.lock
8
+ InstalledFiles
9
+ _yardoc
10
+ coverage
11
+ doc/
12
+ output/
13
+ lib/bundler/man
14
+ pkg
15
+ rdoc
16
+ spec/reports
17
+ test/tmp
18
+ test/version_tmp
19
+ tmp
data/.travis.yml ADDED
@@ -0,0 +1,14 @@
1
+ script: "rake"
2
+
3
+ rvm:
4
+ - 1.9.3
5
+ - 2.0.0
6
+
7
+ branches:
8
+ only:
9
+ - master
10
+ - develop
11
+
12
+ notifications:
13
+ recipients:
14
+ - jeffnyman@gmail.com
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in symbiote.gemspec
4
+ gemspec
5
+
6
+ gem 'coveralls', require: false
data/HISTORY.md ADDED
@@ -0,0 +1,7 @@
1
+ Change Log and History
2
+ ======================
3
+
4
+ Version 0.1.0 / 2013-10-06
5
+ --------------------------
6
+
7
+ Initial development release of Symbiote. This initial release handles browser drivers, platform objects, and the start of the generators mechanism. Support is in place for both Watir-WebDriver and Selenium-WebDriver.
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Jeff Nyman
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,46 @@
1
+ Symbiote
2
+ ========
3
+
4
+ [![Build Status](https://secure.travis-ci.org/jnyman/symbiote.png)](http://travis-ci.org/jnyman/symbiote)
5
+ [![Dependency Status](https://gemnasium.com/jnyman/symbiote.png)](https://gemnasium.com/jnyman/symbiote)
6
+ [![Gem Version](https://badge.fury.io/rb/symbiote.png)](http://badge.fury.io/rb/symbiote)
7
+ [![Coverage Status](https://coveralls.io/repos/jnyman/symbiote/badge.png?branch=master)](https://coveralls.io/r/jnyman/symbiote)
8
+
9
+ Description
10
+ -----------
11
+
12
+ Symbiote is designed to be a more streamlined version of Symbiont. Specifically, it will be streamlined in terms of its feature set, based on lessons I learned during the development of Symbiont. The general interface that Symbiont exposed will still be available.
13
+
14
+ Installation
15
+ ------------
16
+
17
+ Add this line to your application's Gemfile:
18
+
19
+ gem 'symbiote'
20
+
21
+ And then execute:
22
+
23
+ $ bundle
24
+
25
+ Or install it yourself as:
26
+
27
+ $ gem install symbiote
28
+
29
+ Using Symbiote
30
+ --------------
31
+
32
+ See the [Symbiote wiki](https://github.com/jnyman/symbiote/wiki) for details on how to use the tool.
33
+
34
+ Contributing
35
+ ------------
36
+
37
+ 1. Fork the project.
38
+ 2. Create a branch for your change.
39
+ 3. Make your feature additions or bug fixes in your branch.
40
+ 4. Create unit tests (in spec) for your changes.
41
+ 5. Create acceptance tests (in specs) for your changes.
42
+ 6. Commit your changes.
43
+ 7. Push to the branch.
44
+ 8. Create a new [pull request](https://help.github.com/articles/using-pull-requests).
45
+
46
+ Do note that pull requests are very welcome and are considered better than bug reports. Please create a topic branch for every separate change that you make. When you make commits, do not change the rakefile, version or history information.
data/Rakefile ADDED
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env rake
2
+ require 'bundler/gem_tasks'
3
+ require 'rspec/core/rake_task'
4
+
5
+ namespace :spec do
6
+ desc 'Get file output for spec execution'
7
+ RSpec::Core::RakeTask.new('detail') do |config|
8
+ options = %w(--color)
9
+ options += %w(--format documentation)
10
+ options += %w(--format nested --out output/rspec-report.txt)
11
+ options += %w(--format html --out output/rspec-report.html)
12
+ config.rspec_opts = options
13
+ end
14
+ end
15
+
16
+ RSpec::Core::RakeTask.new do |config|
17
+ options = %w(--color)
18
+ options += %w(--format documentation)
19
+ config.rspec_opts = options
20
+ end
21
+
22
+ task :default => :spec
@@ -0,0 +1,8 @@
1
+ module Symbiote
2
+ module Errors
3
+
4
+ class UnableToCreatePlatform < StandardError; end
5
+ class TitleNotMatched < StandardError; end
6
+
7
+ end
8
+ end
@@ -0,0 +1,21 @@
1
+ module Symbiote
2
+ module Generators
3
+
4
+ def url_is(url)
5
+ define_method('view') do
6
+ platform.visit(url)
7
+ end
8
+ end
9
+
10
+ def title_is(title)
11
+ define_method('has_title?') do
12
+ validation_msg = "Expected title: '#{title}'; Actual title: '#{browser.title}'"
13
+ valid_title = title == browser.title if title.kind_of?(String)
14
+ valid_title = title =~ browser.title if title.kind_of?(Regexp)
15
+ raise Errors::TitleNotMatched, validation_msg unless valid_title
16
+ valid_title
17
+ end
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,5 @@
1
+ module Symbiote
2
+ def self.trace(message, level=1)
3
+ puts('*' * level + " #{message}") if ENV['TRACE'] == 'on'
4
+ end
5
+ end
@@ -0,0 +1,21 @@
1
+ module Symbiote
2
+ module Platforms
3
+ module SeleniumWebDriver
4
+ class PlatformObject
5
+
6
+ attr_reader :browser
7
+
8
+ def initialize(browser)
9
+ @browser = browser
10
+ end
11
+
12
+ ## Browser-Level Actions ##
13
+
14
+ def visit(url)
15
+ browser.navigate.to(url)
16
+ end
17
+
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,18 @@
1
+ module Symbiote
2
+ module Platforms
3
+ module SeleniumWebDriver
4
+
5
+ def self.create_platform_object_for(browser)
6
+ require 'symbiote/platform_selenium/platform_object'
7
+ return SeleniumWebDriver::PlatformObject.new(browser)
8
+ end
9
+
10
+ def self.works_with(browser)
11
+ browser.is_a?(::Selenium::WebDriver::Driver)
12
+ end
13
+
14
+ end
15
+ end
16
+ end
17
+
18
+ Symbiote::Platforms.register(:selenium_webdriver, Symbiote::Platforms::SeleniumWebDriver)
@@ -0,0 +1,21 @@
1
+ module Symbiote
2
+ module Platforms
3
+ module WatirWebDriver
4
+ class PlatformObject
5
+
6
+ attr_reader :browser
7
+
8
+ def initialize(browser)
9
+ @browser = browser
10
+ end
11
+
12
+ ## Browser-Level Actions ##
13
+
14
+ def visit(url)
15
+ browser.goto(url)
16
+ end
17
+
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,18 @@
1
+ module Symbiote
2
+ module Platforms
3
+ module WatirWebDriver
4
+
5
+ def self.create_platform_object_for(browser)
6
+ require 'symbiote/platform_watir/platform_object'
7
+ return WatirWebDriver::PlatformObject.new(browser)
8
+ end
9
+
10
+ def self.works_with(browser)
11
+ browser.is_a?(::Watir::Browser)
12
+ end
13
+
14
+ end
15
+ end
16
+ end
17
+
18
+ Symbiote::Platforms.register(:watir_webdriver, Symbiote::Platforms::WatirWebDriver)
@@ -0,0 +1,31 @@
1
+ module Symbiote
2
+ module Platforms
3
+
4
+ @drivers = {}
5
+
6
+ def self.list
7
+ @drivers
8
+ end
9
+
10
+ def self.register(driver, platform)
11
+ @drivers[driver] = platform
12
+ end
13
+
14
+ # This module determines what execution platform Symbiote will use.
15
+ # The decision is based on the browser that has been established for
16
+ # the execution profile.
17
+ #
18
+ # @param [Object] browser the browser to establish the platform for
19
+ # @returns [Object] a platform object to execute tests against
20
+ def get_platform_for(browser)
21
+ Symbiote::Platforms.list.each_value do |driver|
22
+ return driver.create_platform_object_for(browser) if driver.works_with(browser)
23
+ end
24
+ raise Errors::UnableToCreatePlatform, "Unable to create a platform object for #{browser}"
25
+ end
26
+
27
+ end
28
+ end
29
+
30
+ require 'symbiote/platform_watir'
31
+ require 'symbiote/platform_selenium'
@@ -0,0 +1,3 @@
1
+ module Symbiote
2
+ VERSION = '0.1.0'
3
+ end
data/lib/symbiote.rb ADDED
@@ -0,0 +1,65 @@
1
+ require 'symbiote/version'
2
+ require 'symbiote/logger'
3
+ require 'symbiote/errors'
4
+ require 'symbiote/platforms'
5
+ require 'symbiote/generators'
6
+
7
+ require 'watir-webdriver'
8
+ require 'selenium-webdriver'
9
+
10
+ module Symbiote
11
+ include Platforms
12
+
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
+ attr_reader :browser
22
+
23
+ def self.version
24
+ "Symbiote v#{Symbiote::VERSION}"
25
+ end
26
+
27
+ # The included callback is used to provide the core functionality of the
28
+ # library to any class or module that includes the Symbiote library. The
29
+ # calling class or module is extended with logic that the library makes
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
35
+ end
36
+
37
+ # The initialize method will be invoked when a page definition includes
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)
45
+ @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
+ end
53
+
54
+ private
55
+
56
+ # This method is crucial in that it sets up the platform instance that
57
+ # will be used by just about every module that makes calls to any
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)
63
+ end
64
+
65
+ end
@@ -0,0 +1,33 @@
1
+ # coding: utf-8
2
+ $LOAD_PATH.unshift(File.expand_path('../lib', File.dirname(__FILE__)))
3
+
4
+ require 'coveralls'
5
+ Coveralls.wear!
6
+
7
+ unless ENV['CI']
8
+ require 'simplecov'
9
+
10
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
11
+ SimpleCov::Formatter::HTMLFormatter,
12
+ Coveralls::SimpleCov::Formatter
13
+ ]
14
+ SimpleCov.start
15
+ end
16
+
17
+ require 'symbiote'
18
+ require 'watir-webdriver'
19
+ require 'selenium-webdriver'
20
+
21
+ def mock_browser_for_watir
22
+ watir_browser = double('watir')
23
+ watir_browser.stub(:is_a?).with(Watir::Browser).and_return(true)
24
+ watir_browser.stub(:is_a?).with(Selenium::WebDriver::Driver).and_return(false)
25
+ watir_browser
26
+ end
27
+
28
+ def mock_browser_for_selenium
29
+ selenium_browser = double('selenium')
30
+ selenium_browser.stub(:is_a?).with(Watir::Browser).and_return(false)
31
+ selenium_browser.stub(:is_a?).with(Selenium::WebDriver::Driver).and_return(true)
32
+ selenium_browser
33
+ end
@@ -0,0 +1,63 @@
1
+ require_relative '../spec_helper'
2
+
3
+ class PageGenerators
4
+ include Symbiote
5
+
6
+ url_is 'http://localhost:4567'
7
+ title_is 'Symbiote'
8
+ end
9
+
10
+ describe Symbiote::Generators do
11
+ let(:watir_browser) { mock_browser_for_watir }
12
+ let(:watir_definition) { PageGenerators.new(watir_browser) }
13
+
14
+ let(:selenium_browser) { mock_browser_for_selenium }
15
+ let(:selenium_definition) { PageGenerators.new(selenium_browser) }
16
+
17
+ context 'any page definition' do
18
+ context 'providing a page title to be verified' do
19
+ it 'should specify and verify the page title' do
20
+ watir_browser.should_receive(:title).twice.and_return('Symbiote')
21
+ watir_definition.has_title?
22
+
23
+ selenium_browser.should_receive(:title).twice.and_return('Symbiote')
24
+ selenium_definition.has_title?
25
+ end
26
+
27
+ it 'should raise an error if the page title is not verified' do
28
+ msg = "Expected title: 'Symbiote'; Actual title: 'Testing'"
29
+ watir_browser.should_receive(:title).twice.and_return('Testing')
30
+ expect { watir_definition.has_title? }.to raise_error(Symbiote::Errors::TitleNotMatched, msg)
31
+ end
32
+
33
+ it 'should validate the title if provided a regular expression' do
34
+ class QuickDefinition
35
+ include Symbiote
36
+ title_is (/\w+/)
37
+ end
38
+
39
+ selenium_browser.should_receive(:title).twice.and_return('Symbiote')
40
+ QuickDefinition.new(selenium_browser).has_title?
41
+ end
42
+ end
43
+ end
44
+
45
+ context 'a definition using watir-webdriver' do
46
+ context 'providing a url' do
47
+ it 'should navigate to the page when viewed' do
48
+ watir_browser.should_receive(:goto)
49
+ watir_definition.view
50
+ end
51
+ end
52
+ end
53
+
54
+ context 'a definition using selenium-webdriver' do
55
+ context 'providing a url' do
56
+ it 'should navigate to the page when viewed' do
57
+ selenium_browser.should_receive(:navigate).and_return(selenium_browser)
58
+ selenium_browser.should_receive(:to)
59
+ selenium_definition.view
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,31 @@
1
+ require_relative '../spec_helper'
2
+
3
+ class PageDefinition
4
+ include Symbiote
5
+ end
6
+
7
+ describe Symbiote do
8
+ let(:watir_browser) { mock_browser_for_watir }
9
+ let(:selenium_browser) { mock_browser_for_selenium }
10
+ let(:watir_definition) { PageDefinition.new(watir_browser) }
11
+ let(:selenium_definition) { PageDefinition.new(selenium_browser) }
12
+
13
+ context 'a definition using watir-webdriver' do
14
+ it 'should return a watir platform object' do
15
+ watir_definition.platform.should be_kind_of Symbiote::Platforms::WatirWebDriver::PlatformObject
16
+ end
17
+ end
18
+
19
+ context 'a definition using selenium-webdriver' do
20
+ it 'should return a selenium platform object' do
21
+ selenium_definition.platform.should be_kind_of Symbiote::Platforms::SeleniumWebDriver::PlatformObject
22
+ end
23
+ end
24
+
25
+ context 'a definition using an unrecognized driver' do
26
+ it 'should raise an exception' do
27
+ msg = 'Unable to create a platform object for unknown_browser'
28
+ expect { PageDefinition.new(:unknown_browser) }.to raise_error(Symbiote::Errors::UnableToCreatePlatform, msg)
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,7 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe Symbiote do
4
+ it 'should return version information' do
5
+ Symbiote.version.should == "Symbiote v#{Symbiote::VERSION}"
6
+ end
7
+ end
data/symbiote.gemspec ADDED
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'symbiote/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'symbiote'
8
+ spec.version = Symbiote::VERSION
9
+ spec.platform = Gem::Platform::RUBY
10
+ spec.author = 'Jeff Nyman'
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'
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 = %w(lib)
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'
28
+
29
+ spec.add_runtime_dependency 'watir-webdriver', '0.6.4'
30
+ spec.add_runtime_dependency 'selenium-webdriver', '2.35.1'
31
+ end
metadata ADDED
@@ -0,0 +1,154 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: symbiote
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Jeff Nyman
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-10-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 2.14.1
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 2.14.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '0.7'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '0.7'
69
+ - !ruby/object:Gem::Dependency
70
+ name: watir-webdriver
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 0.6.4
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 0.6.4
83
+ - !ruby/object:Gem::Dependency
84
+ name: selenium-webdriver
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: 2.35.1
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 2.35.1
97
+ description: Provides a DSL to construct a fluent interface for test execution libraries.
98
+ email: jeffnyman@gmail.com
99
+ executables: []
100
+ extensions: []
101
+ extra_rdoc_files: []
102
+ files:
103
+ - .gitignore
104
+ - .travis.yml
105
+ - Gemfile
106
+ - HISTORY.md
107
+ - LICENSE.txt
108
+ - README.md
109
+ - Rakefile
110
+ - lib/symbiote.rb
111
+ - lib/symbiote/errors.rb
112
+ - lib/symbiote/generators.rb
113
+ - lib/symbiote/logger.rb
114
+ - lib/symbiote/platform_selenium.rb
115
+ - lib/symbiote/platform_selenium/platform_object.rb
116
+ - lib/symbiote/platform_watir.rb
117
+ - lib/symbiote/platform_watir/platform_object.rb
118
+ - lib/symbiote/platforms.rb
119
+ - 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
+ - symbiote.gemspec
125
+ homepage: https://github.com/jnyman/symbiote
126
+ licenses:
127
+ - MIT
128
+ metadata: {}
129
+ post_install_message:
130
+ rdoc_options: []
131
+ require_paths:
132
+ - lib
133
+ required_ruby_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - '>='
136
+ - !ruby/object:Gem::Version
137
+ version: 1.9.3
138
+ required_rubygems_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ requirements: []
144
+ rubyforge_project:
145
+ rubygems_version: 2.0.2
146
+ signing_key:
147
+ specification_version: 4
148
+ summary: An endosymbiotic facultative library for web application testing.
149
+ test_files:
150
+ - spec/spec_helper.rb
151
+ - spec/symbiote/generators_spec.rb
152
+ - spec/symbiote/platform_object_spec.rb
153
+ - spec/symbiote/symbiote_spec.rb
154
+ has_rdoc: