page_magic 1.2.6 → 2.0.0.alpha1
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 +5 -5
- data/.rubocop.yml +19 -3
- data/.simplecov +5 -3
- data/.zsh_config +6 -0
- data/Dockerfile +10 -0
- data/Gemfile +12 -12
- data/Gemfile.lock +133 -126
- data/Makefile +13 -0
- data/README.md +78 -14
- data/Rakefile +12 -2
- data/VERSION +1 -1
- data/circle.yml +4 -2
- data/lib/active_support/core_ext/object/to_query.rb +84 -0
- data/lib/page_magic.rb +7 -4
- data/lib/page_magic/class_methods.rb +4 -1
- data/lib/page_magic/driver.rb +3 -0
- data/lib/page_magic/drivers.rb +6 -5
- data/lib/page_magic/drivers/poltergeist.rb +2 -0
- data/lib/page_magic/drivers/rack_test.rb +3 -1
- data/lib/page_magic/drivers/selenium.rb +4 -2
- data/lib/page_magic/element.rb +19 -10
- data/lib/page_magic/element/locators.rb +4 -1
- data/lib/page_magic/element/query.rb +33 -33
- data/lib/page_magic/element/query_builder.rb +61 -0
- data/lib/page_magic/element/selector.rb +3 -0
- data/lib/page_magic/element/selector_methods.rb +3 -0
- data/lib/page_magic/element_context.rb +9 -12
- data/lib/page_magic/element_definition_builder.rb +10 -4
- data/lib/page_magic/elements.rb +51 -8
- data/lib/page_magic/exceptions.rb +4 -33
- data/lib/page_magic/instance_methods.rb +6 -1
- data/lib/page_magic/matcher.rb +12 -3
- data/lib/page_magic/session.rb +7 -5
- data/lib/page_magic/session_methods.rb +2 -0
- data/lib/page_magic/utils/string.rb +14 -0
- data/lib/page_magic/wait_methods.rb +3 -0
- data/lib/page_magic/watcher.rb +2 -0
- data/lib/page_magic/watchers.rb +4 -1
- data/page_magic.gemspec +19 -13
- data/spec/element_spec.rb +2 -0
- data/spec/lib/active_support/core_ext/object/to_query_test.rb +78 -0
- data/spec/page_magic/class_methods_spec.rb +2 -0
- data/spec/page_magic/driver_spec.rb +2 -0
- data/spec/page_magic/drivers/poltergeist_spec.rb +2 -0
- data/spec/page_magic/drivers/rack_test_spec.rb +2 -0
- data/spec/page_magic/drivers/selenium_spec.rb +2 -0
- data/spec/page_magic/drivers_spec.rb +2 -0
- data/spec/page_magic/element/locators_spec.rb +2 -0
- data/spec/page_magic/element/query_builder_spec.rb +110 -0
- data/spec/page_magic/element/query_spec.rb +35 -77
- data/spec/page_magic/element/selector_spec.rb +14 -7
- data/spec/page_magic/element_context_spec.rb +5 -10
- data/spec/page_magic/element_definition_builder_spec.rb +3 -1
- data/spec/page_magic/elements_spec.rb +19 -5
- data/spec/page_magic/instance_methods_spec.rb +2 -0
- data/spec/page_magic/matcher_spec.rb +3 -1
- data/spec/page_magic/session_methods_spec.rb +2 -0
- data/spec/page_magic/session_spec.rb +3 -4
- data/spec/page_magic/utils/string_spec.rb +36 -0
- data/spec/page_magic/wait_methods_spec.rb +5 -3
- data/spec/page_magic/watchers_spec.rb +2 -0
- data/spec/page_magic_spec.rb +5 -7
- data/spec/spec_helper.rb +3 -0
- data/spec/support/shared_contexts.rb +3 -1
- data/spec/support/shared_contexts/files_context.rb +2 -0
- data/spec/support/shared_contexts/nested_elements_html_context.rb +2 -0
- data/spec/support/shared_contexts/rack_application_context.rb +2 -0
- data/spec/support/shared_contexts/webapp_fixture_context.rb +3 -1
- data/spec/support/shared_examples.rb +2 -0
- data/spec/watcher_spec.rb +3 -0
- metadata +62 -40
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module PageMagic
|
2
4
|
class Element
|
3
5
|
describe Selector do
|
@@ -33,7 +35,7 @@ module PageMagic
|
|
33
35
|
described_class.new(supports_type: true)
|
34
36
|
end
|
35
37
|
it 'includes the element type in the result' do
|
36
|
-
expect(subject.build(:field, :locator)).to eq([
|
38
|
+
expect(subject.build(:field, :locator)).to eq(%i[field locator])
|
37
39
|
end
|
38
40
|
end
|
39
41
|
|
@@ -54,7 +56,7 @@ module PageMagic
|
|
54
56
|
end
|
55
57
|
|
56
58
|
it 'is added to the result' do
|
57
|
-
expect(subject.build(:field, :locator)).to eq([
|
59
|
+
expect(subject.build(:field, :locator)).to eq(%i[css locator])
|
58
60
|
end
|
59
61
|
end
|
60
62
|
end
|
@@ -128,23 +130,28 @@ module PageMagic
|
|
128
130
|
let(:capybara_session) { Capybara::Session.new(:rack_test, rack_app).tap { |s| s.visit('/elements') } }
|
129
131
|
|
130
132
|
it 'finds elements by name' do
|
131
|
-
|
133
|
+
query = QueryBuilder.find(:text_field).build({ name: 'field_name' })
|
134
|
+
expect(query.execute(capybara_session)[:name]).to eq('field_name')
|
132
135
|
end
|
133
136
|
|
134
137
|
it 'finds elements by xpath' do
|
135
|
-
|
138
|
+
query = QueryBuilder.find(:element).build({ xpath: '//div/label/input' })
|
139
|
+
expect(query.execute(capybara_session)[:name]).to eq('field_name')
|
136
140
|
end
|
137
141
|
|
138
142
|
it 'finds elements by id' do
|
139
|
-
|
143
|
+
query = QueryBuilder.find(:text_field).build({ id: 'field_id' })
|
144
|
+
expect(query.execute(capybara_session)[:name]).to eq('field_name')
|
140
145
|
end
|
141
146
|
|
142
147
|
it 'finds elements by label' do
|
143
|
-
|
148
|
+
query = QueryBuilder.find(:text_field).build({ label: 'enter text' })
|
149
|
+
expect(query.execute(capybara_session)[:name]).to eq('field_name')
|
144
150
|
end
|
145
151
|
|
146
152
|
it 'finds elements by text' do
|
147
|
-
|
153
|
+
query = QueryBuilder.find(:link).build({ text: 'a link' })
|
154
|
+
expect(query.execute(capybara_session).text).to eq('a link')
|
148
155
|
end
|
149
156
|
end
|
150
157
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module PageMagic
|
2
4
|
describe ElementContext do
|
3
5
|
include_context :webapp_fixture
|
@@ -31,7 +33,7 @@ module PageMagic
|
|
31
33
|
end
|
32
34
|
|
33
35
|
it 'passes arguments through to the element definition' do
|
34
|
-
elements_page.
|
36
|
+
elements_page.links :pass_through, css: 'a' do |args|
|
35
37
|
args[:passed_through] = true
|
36
38
|
end
|
37
39
|
args = {}
|
@@ -51,19 +53,12 @@ module PageMagic
|
|
51
53
|
|
52
54
|
context 'more than one match found in the browser' do
|
53
55
|
it 'returns an array of element definitions' do
|
54
|
-
elements_page.
|
56
|
+
elements_page.links :links, css: 'a'
|
55
57
|
links = described_class.new(page).links
|
56
|
-
expect(links.find_all { |e| e.
|
58
|
+
expect(links.find_all { |e| e.kind_of?(Element) }.size).to eq(2)
|
57
59
|
expect(links.collect(&:text)).to eq(['a link', 'link in a form'])
|
58
60
|
end
|
59
61
|
end
|
60
|
-
context 'no results found' do
|
61
|
-
it 'raises an error' do
|
62
|
-
elements_page.link :missing, css: 'wrong'
|
63
|
-
expected_message = described_class::ELEMENT_NOT_FOUND_MSG % 'css "wrong"'
|
64
|
-
expect { described_class.new(page).missing }.to raise_exception(ElementMissingException, expected_message)
|
65
|
-
end
|
66
|
-
end
|
67
62
|
end
|
68
63
|
|
69
64
|
context 'method found on page_element' do
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module PageMagic
|
2
4
|
describe ElementDefinitionBuilder do
|
3
5
|
describe '#initialize' do
|
@@ -69,7 +71,7 @@ module PageMagic
|
|
69
71
|
element: Object.new,
|
70
72
|
options: options)
|
71
73
|
|
72
|
-
expect(builder.build_query).to eq([:xpath, '//xpath', options])
|
74
|
+
expect(builder.build_query).to eq(Element::Query.new([:xpath, '//xpath', options]))
|
73
75
|
end
|
74
76
|
end
|
75
77
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# rubocop:disable Metrics/ModuleLength
|
2
4
|
module PageMagic
|
3
5
|
describe Elements do
|
@@ -17,12 +19,19 @@ module PageMagic
|
|
17
19
|
|
18
20
|
let(:child_selector) { { id: 'child' } }
|
19
21
|
|
22
|
+
context 'element types' do
|
23
|
+
it 'provides all of the type provided by capybara' do
|
24
|
+
capybara_elements = Capybara::Selector.all.except(*%i[element datalist_input datalist_option id xpath css]).keys
|
25
|
+
expect(described_class::TYPES).to include(*capybara_elements)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
20
29
|
describe '#element' do
|
21
30
|
it 'sets the selector and type' do
|
22
31
|
expected_definition = ElementDefinitionBuilder.new(definition_class: Element,
|
23
32
|
type: :text_field,
|
24
33
|
selector: child_selector,
|
25
|
-
options: {})
|
34
|
+
options: { multiple_results: false })
|
26
35
|
subject.text_field :alias, child_selector
|
27
36
|
expect(instance.element_by_name(:alias)).to eq(expected_definition)
|
28
37
|
end
|
@@ -113,8 +122,7 @@ module PageMagic
|
|
113
122
|
subject.class_eval do
|
114
123
|
link(:hello, text: 'world')
|
115
124
|
|
116
|
-
def hello
|
117
|
-
end
|
125
|
+
def hello; end
|
118
126
|
end
|
119
127
|
end.to raise_error(InvalidMethodNameException)
|
120
128
|
end
|
@@ -122,8 +130,7 @@ module PageMagic
|
|
122
130
|
it 'should not allow element names that match method names' do
|
123
131
|
expect do
|
124
132
|
subject.class_eval do
|
125
|
-
def hello
|
126
|
-
end
|
133
|
+
def hello; end
|
127
134
|
|
128
135
|
link(:hello, text: 'world')
|
129
136
|
end
|
@@ -150,6 +157,13 @@ module PageMagic
|
|
150
157
|
end
|
151
158
|
end
|
152
159
|
|
160
|
+
describe '#elements' do
|
161
|
+
it 'is an alias of #element allowing page_magic to find multiple results' do
|
162
|
+
expected = described_class.public_instance_method(:element)
|
163
|
+
expect(described_class.public_instance_method(:elements)).to eq(expected)
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
153
167
|
describe '#element_definitions' do
|
154
168
|
it 'should return your a copy of the core definition' do
|
155
169
|
subject.text_field :alias, child_selector
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# rubocop:disable Metrics/ModuleLength
|
2
4
|
module PageMagic
|
3
5
|
describe Matcher do
|
@@ -161,7 +163,7 @@ module PageMagic
|
|
161
163
|
|
162
164
|
context 'parameter requirement is a regexp' do
|
163
165
|
subject do
|
164
|
-
described_class.new(parameters: { foo: /
|
166
|
+
described_class.new(parameters: { foo: /bar/ })
|
165
167
|
end
|
166
168
|
|
167
169
|
it 'returns true for a match on the regexp' do
|
@@ -124,7 +124,7 @@ module PageMagic
|
|
124
124
|
context 'more than one match on path' do
|
125
125
|
it 'orders the results by specificity ' do
|
126
126
|
subject.define_page_mappings %r{/page} => :mapped_page_using_regex, '/page' => :mapped_page_using_string
|
127
|
-
expected_result = [
|
127
|
+
expected_result = %i[mapped_page_using_string mapped_page_using_regex]
|
128
128
|
expect(subject.instance_eval { matches('/page') }).to eq(expected_result)
|
129
129
|
end
|
130
130
|
end
|
@@ -155,15 +155,14 @@ module PageMagic
|
|
155
155
|
|
156
156
|
it 'checks the current page' do
|
157
157
|
page.class_eval do
|
158
|
-
def my_method
|
159
|
-
end
|
158
|
+
def my_method; end
|
160
159
|
end
|
161
160
|
expect(subject.respond_to?(:my_method)).to eq(true)
|
162
161
|
end
|
163
162
|
end
|
164
163
|
|
165
164
|
describe '#url' do
|
166
|
-
let!(:base_url) {
|
165
|
+
let!(:base_url) { "http://example.com" }
|
167
166
|
let!(:path) { 'home' }
|
168
167
|
let!(:expected_url) { "#{base_url}/#{path}" }
|
169
168
|
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'page_magic/utils/string'
|
4
|
+
module PageMagic
|
5
|
+
module Utils
|
6
|
+
describe String do
|
7
|
+
describe '.classify' do
|
8
|
+
context 'parameter is symbol' do
|
9
|
+
it 'returns a string' do
|
10
|
+
expect(described_class.classify(:Symbol)).to eq('Symbol')
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'parameter is string' do
|
15
|
+
it 'returns a string' do
|
16
|
+
expect(described_class.classify(:String)).to eq('String')
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'single word' do
|
21
|
+
context 'first letter is lower case' do
|
22
|
+
it 'converts the first letter to uppercase' do
|
23
|
+
expect(described_class.classify(:symbol)).to eq('Symbol')
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'snakecase' do
|
29
|
+
it 'removes underscores and capitalises each word' do
|
30
|
+
expect(described_class.classify(:snake_case)).to eq('SnakeCase')
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module PageMagic
|
2
4
|
describe WaitMethods do
|
3
5
|
subject do
|
@@ -9,20 +11,20 @@ module PageMagic
|
|
9
11
|
let(:default_options) { { timeout_after: 0.1, retry_every: 0.05 } }
|
10
12
|
|
11
13
|
it 'waits until the prescribed thing has happened' do
|
12
|
-
expect { subject.wait_until(default_options) { true } }.to_not raise_exception
|
14
|
+
expect { subject.wait_until(**default_options) { true } }.to_not raise_exception
|
13
15
|
end
|
14
16
|
|
15
17
|
it 'should keep trying for a specified period' do
|
16
18
|
start_time = Time.now
|
17
19
|
|
18
|
-
expect { subject.wait_until(default_options) { false } }.to raise_exception TimeoutException
|
20
|
+
expect { subject.wait_until(**default_options) { false } }.to raise_exception TimeoutException
|
19
21
|
|
20
22
|
expect(Time.now - default_options[:timeout_after]).to be > start_time
|
21
23
|
end
|
22
24
|
|
23
25
|
context 'timeout_after specified' do
|
24
26
|
it 'throws an exception if when the prescribed action does not happen in time' do
|
25
|
-
expect { subject.wait_until(default_options) { false } }.to raise_error TimeoutException
|
27
|
+
expect { subject.wait_until(**default_options) { false } }.to raise_error TimeoutException
|
26
28
|
end
|
27
29
|
end
|
28
30
|
|
data/spec/page_magic_spec.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'page_magic'
|
2
4
|
|
3
5
|
describe PageMagic do
|
@@ -56,6 +58,8 @@ describe PageMagic do
|
|
56
58
|
end
|
57
59
|
|
58
60
|
describe '.session' do
|
61
|
+
include_context :rack_application
|
62
|
+
|
59
63
|
let(:url) { 'http://url.com/' }
|
60
64
|
let(:application) { rack_application.new }
|
61
65
|
|
@@ -75,12 +79,6 @@ describe PageMagic do
|
|
75
79
|
end
|
76
80
|
end
|
77
81
|
|
78
|
-
include_context :rack_application
|
79
|
-
it 'sets the base url for the session' do
|
80
|
-
session = described_class.session(application: application, url: url)
|
81
|
-
expect(session.current_url).to eq(url)
|
82
|
-
end
|
83
|
-
|
84
82
|
context 'specifying a rack application' do
|
85
83
|
it 'configures capybara to run against the app' do
|
86
84
|
session = described_class.session(application: application, url: url)
|
@@ -99,7 +97,7 @@ describe PageMagic do
|
|
99
97
|
|
100
98
|
context 'driver for browser not found' do
|
101
99
|
it 'raises an error' do
|
102
|
-
expected_exception = described_class::
|
100
|
+
expected_exception = described_class::UnsupportedBrowserException
|
103
101
|
expect { described_class.session(browser: :invalid, url: url) }.to raise_exception expected_exception
|
104
102
|
end
|
105
103
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'bundler'
|
1
3
|
Bundler.require
|
2
4
|
$LOAD_PATH.unshift("#{File.dirname(__FILE__)}/lib")
|
3
5
|
require 'support/shared_contexts'
|
@@ -6,3 +8,4 @@ require 'support/shared_examples'
|
|
6
8
|
require 'simplecov' if ENV['coverage']
|
7
9
|
|
8
10
|
require 'page_magic'
|
11
|
+
Capybara.server = :webrick
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
shared_context :webapp_fixture do
|
2
4
|
require 'sinatra/base'
|
3
5
|
|
@@ -21,7 +23,7 @@ shared_context :webapp_fixture do
|
|
21
23
|
<label>enter text
|
22
24
|
<input id='field_id' name='field_name' class='input_class' type='text' value='filled in'/>
|
23
25
|
</label>
|
24
|
-
<
|
26
|
+
<button id='form_button' type='submit' value='a button'/>
|
25
27
|
</form>
|
26
28
|
|
27
29
|
ELEMENTS
|
data/spec/watcher_spec.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module PageMagic
|
2
4
|
describe Watcher do
|
3
5
|
describe '#initialize' do
|
@@ -37,6 +39,7 @@ module PageMagic
|
|
37
39
|
context 'block supplied to constructor' do
|
38
40
|
def method_on_self(value = nil)
|
39
41
|
return @value unless value
|
42
|
+
|
40
43
|
@value = value
|
41
44
|
end
|
42
45
|
|
metadata
CHANGED
@@ -1,115 +1,129 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: page_magic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0.alpha1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Leon Davis
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-05-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0'
|
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
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: capybara
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '3.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: github-markup
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: jeweler
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
|
-
- - "
|
59
|
+
- - ">="
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
61
|
+
version: '0'
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
|
-
- - "
|
66
|
+
- - ">="
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
70
|
+
name: redcarpet
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
|
-
- - "
|
73
|
+
- - ">="
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0
|
75
|
+
version: '0'
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
|
-
- - "
|
80
|
+
- - ">="
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
84
|
+
name: rubocop
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
|
-
- - "
|
87
|
+
- - ">="
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0
|
89
|
+
version: '0'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- - "
|
94
|
+
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
98
|
+
name: ruby-debug-ide
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
|
-
- - "
|
101
|
+
- - ">="
|
88
102
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
103
|
+
version: '0'
|
90
104
|
type: :development
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
|
-
- - "
|
108
|
+
- - ">="
|
95
109
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
110
|
+
version: '0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
112
|
+
name: yard
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
115
|
- - "~>"
|
102
116
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
117
|
+
version: '0.8'
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
107
121
|
requirements:
|
108
122
|
- - "~>"
|
109
123
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
124
|
+
version: '0.8'
|
111
125
|
description: Framework for modeling and interacting with webpages which wraps capybara
|
112
|
-
email: info@
|
126
|
+
email: info@lvl-up.uk
|
113
127
|
executables: []
|
114
128
|
extensions: []
|
115
129
|
extra_rdoc_files:
|
@@ -121,12 +135,16 @@ files:
|
|
121
135
|
- ".rubocop.yml"
|
122
136
|
- ".simplecov"
|
123
137
|
- ".yardopts"
|
138
|
+
- ".zsh_config"
|
139
|
+
- Dockerfile
|
124
140
|
- Gemfile
|
125
141
|
- Gemfile.lock
|
142
|
+
- Makefile
|
126
143
|
- README.md
|
127
144
|
- Rakefile
|
128
145
|
- VERSION
|
129
146
|
- circle.yml
|
147
|
+
- lib/active_support/core_ext/object/to_query.rb
|
130
148
|
- lib/page_magic.rb
|
131
149
|
- lib/page_magic/class_methods.rb
|
132
150
|
- lib/page_magic/driver.rb
|
@@ -137,6 +155,7 @@ files:
|
|
137
155
|
- lib/page_magic/element.rb
|
138
156
|
- lib/page_magic/element/locators.rb
|
139
157
|
- lib/page_magic/element/query.rb
|
158
|
+
- lib/page_magic/element/query_builder.rb
|
140
159
|
- lib/page_magic/element/selector.rb
|
141
160
|
- lib/page_magic/element/selector_methods.rb
|
142
161
|
- lib/page_magic/element_context.rb
|
@@ -147,11 +166,13 @@ files:
|
|
147
166
|
- lib/page_magic/matcher.rb
|
148
167
|
- lib/page_magic/session.rb
|
149
168
|
- lib/page_magic/session_methods.rb
|
169
|
+
- lib/page_magic/utils/string.rb
|
150
170
|
- lib/page_magic/wait_methods.rb
|
151
171
|
- lib/page_magic/watcher.rb
|
152
172
|
- lib/page_magic/watchers.rb
|
153
173
|
- page_magic.gemspec
|
154
174
|
- spec/element_spec.rb
|
175
|
+
- spec/lib/active_support/core_ext/object/to_query_test.rb
|
155
176
|
- spec/page_magic/class_methods_spec.rb
|
156
177
|
- spec/page_magic/driver_spec.rb
|
157
178
|
- spec/page_magic/drivers/poltergeist_spec.rb
|
@@ -159,6 +180,7 @@ files:
|
|
159
180
|
- spec/page_magic/drivers/selenium_spec.rb
|
160
181
|
- spec/page_magic/drivers_spec.rb
|
161
182
|
- spec/page_magic/element/locators_spec.rb
|
183
|
+
- spec/page_magic/element/query_builder_spec.rb
|
162
184
|
- spec/page_magic/element/query_spec.rb
|
163
185
|
- spec/page_magic/element/selector_spec.rb
|
164
186
|
- spec/page_magic/element_context_spec.rb
|
@@ -168,6 +190,7 @@ files:
|
|
168
190
|
- spec/page_magic/matcher_spec.rb
|
169
191
|
- spec/page_magic/session_methods_spec.rb
|
170
192
|
- spec/page_magic/session_spec.rb
|
193
|
+
- spec/page_magic/utils/string_spec.rb
|
171
194
|
- spec/page_magic/wait_methods_spec.rb
|
172
195
|
- spec/page_magic/watchers_spec.rb
|
173
196
|
- spec/page_magic_spec.rb
|
@@ -183,7 +206,7 @@ homepage: https://github.com/ladtech/page_magic
|
|
183
206
|
licenses:
|
184
207
|
- ruby
|
185
208
|
metadata: {}
|
186
|
-
post_install_message:
|
209
|
+
post_install_message:
|
187
210
|
rdoc_options: []
|
188
211
|
require_paths:
|
189
212
|
- lib
|
@@ -194,13 +217,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
194
217
|
version: '2.1'
|
195
218
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
196
219
|
requirements:
|
197
|
-
- - "
|
220
|
+
- - ">"
|
198
221
|
- !ruby/object:Gem::Version
|
199
|
-
version:
|
222
|
+
version: 1.3.1
|
200
223
|
requirements: []
|
201
|
-
|
202
|
-
|
203
|
-
signing_key:
|
224
|
+
rubygems_version: 3.1.4
|
225
|
+
signing_key:
|
204
226
|
specification_version: 4
|
205
227
|
summary: Framework for modeling and interacting with webpages
|
206
228
|
test_files: []
|