page_magic 1.2.6 → 2.0.0.alpha1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +19 -3
  3. data/.simplecov +5 -3
  4. data/.zsh_config +6 -0
  5. data/Dockerfile +10 -0
  6. data/Gemfile +12 -12
  7. data/Gemfile.lock +133 -126
  8. data/Makefile +13 -0
  9. data/README.md +78 -14
  10. data/Rakefile +12 -2
  11. data/VERSION +1 -1
  12. data/circle.yml +4 -2
  13. data/lib/active_support/core_ext/object/to_query.rb +84 -0
  14. data/lib/page_magic.rb +7 -4
  15. data/lib/page_magic/class_methods.rb +4 -1
  16. data/lib/page_magic/driver.rb +3 -0
  17. data/lib/page_magic/drivers.rb +6 -5
  18. data/lib/page_magic/drivers/poltergeist.rb +2 -0
  19. data/lib/page_magic/drivers/rack_test.rb +3 -1
  20. data/lib/page_magic/drivers/selenium.rb +4 -2
  21. data/lib/page_magic/element.rb +19 -10
  22. data/lib/page_magic/element/locators.rb +4 -1
  23. data/lib/page_magic/element/query.rb +33 -33
  24. data/lib/page_magic/element/query_builder.rb +61 -0
  25. data/lib/page_magic/element/selector.rb +3 -0
  26. data/lib/page_magic/element/selector_methods.rb +3 -0
  27. data/lib/page_magic/element_context.rb +9 -12
  28. data/lib/page_magic/element_definition_builder.rb +10 -4
  29. data/lib/page_magic/elements.rb +51 -8
  30. data/lib/page_magic/exceptions.rb +4 -33
  31. data/lib/page_magic/instance_methods.rb +6 -1
  32. data/lib/page_magic/matcher.rb +12 -3
  33. data/lib/page_magic/session.rb +7 -5
  34. data/lib/page_magic/session_methods.rb +2 -0
  35. data/lib/page_magic/utils/string.rb +14 -0
  36. data/lib/page_magic/wait_methods.rb +3 -0
  37. data/lib/page_magic/watcher.rb +2 -0
  38. data/lib/page_magic/watchers.rb +4 -1
  39. data/page_magic.gemspec +19 -13
  40. data/spec/element_spec.rb +2 -0
  41. data/spec/lib/active_support/core_ext/object/to_query_test.rb +78 -0
  42. data/spec/page_magic/class_methods_spec.rb +2 -0
  43. data/spec/page_magic/driver_spec.rb +2 -0
  44. data/spec/page_magic/drivers/poltergeist_spec.rb +2 -0
  45. data/spec/page_magic/drivers/rack_test_spec.rb +2 -0
  46. data/spec/page_magic/drivers/selenium_spec.rb +2 -0
  47. data/spec/page_magic/drivers_spec.rb +2 -0
  48. data/spec/page_magic/element/locators_spec.rb +2 -0
  49. data/spec/page_magic/element/query_builder_spec.rb +110 -0
  50. data/spec/page_magic/element/query_spec.rb +35 -77
  51. data/spec/page_magic/element/selector_spec.rb +14 -7
  52. data/spec/page_magic/element_context_spec.rb +5 -10
  53. data/spec/page_magic/element_definition_builder_spec.rb +3 -1
  54. data/spec/page_magic/elements_spec.rb +19 -5
  55. data/spec/page_magic/instance_methods_spec.rb +2 -0
  56. data/spec/page_magic/matcher_spec.rb +3 -1
  57. data/spec/page_magic/session_methods_spec.rb +2 -0
  58. data/spec/page_magic/session_spec.rb +3 -4
  59. data/spec/page_magic/utils/string_spec.rb +36 -0
  60. data/spec/page_magic/wait_methods_spec.rb +5 -3
  61. data/spec/page_magic/watchers_spec.rb +2 -0
  62. data/spec/page_magic_spec.rb +5 -7
  63. data/spec/spec_helper.rb +3 -0
  64. data/spec/support/shared_contexts.rb +3 -1
  65. data/spec/support/shared_contexts/files_context.rb +2 -0
  66. data/spec/support/shared_contexts/nested_elements_html_context.rb +2 -0
  67. data/spec/support/shared_contexts/rack_application_context.rb +2 -0
  68. data/spec/support/shared_contexts/webapp_fixture_context.rb +3 -1
  69. data/spec/support/shared_examples.rb +2 -0
  70. data/spec/watcher_spec.rb +3 -0
  71. 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([:field, :locator])
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([:css, :locator])
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
- expect(capybara_session.all(*Query.find(:text_field).build(name: 'field_name')).size).to eq(1)
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
- expect(capybara_session.all(*Query.find(:element).build(xpath: '//div/input')).size).to eq(1)
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
- expect(capybara_session.all(*Query.find(:text_field).build(id: 'field_id')).size).to eq(1)
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
- expect(capybara_session.all(*Query.find(:text_field).build(label: 'enter text')).size).to eq(1)
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
- expect(capybara_session.all(*Query.find(:link).build(text: 'a link')).size).to eq(1)
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.link :pass_through, css: 'a' do |args|
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.link :links, css: 'a'
56
+ elements_page.links :links, css: 'a'
55
57
  links = described_class.new(page).links
56
- expect(links.find_all { |e| e.class == Element }.size).to eq(2)
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
  module PageMagic
2
4
  describe InstanceMethods do
3
5
  include_context :webapp_fixture
@@ -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: /b[a]r/ })
166
+ described_class.new(parameters: { foo: /bar/ })
165
167
  end
166
168
 
167
169
  it 'returns true for a match on the regexp' do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PageMagic
2
4
  describe SessionMethods do
3
5
  include_context :webapp_fixture
@@ -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 = [:mapped_page_using_string, :mapped_page_using_regex]
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) { 'http://example.com' }
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
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PageMagic
2
4
  describe Watchers do
3
5
  let(:element) { OpenStruct.new(text: :current_value) }
@@ -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::UnspportedBrowserException
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
- Dir["#{__dir__}/shared_contexts/*.rb"].each do |file|
1
+ # frozen_string_literal: true
2
+
3
+ Dir["#{__dir__}/shared_contexts/*.rb"].sort.each do |file|
2
4
  require file
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  shared_context :files do
2
4
  require 'tmpdir'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  shared_context :nested_elements_html do
2
4
  require 'sinatra/base'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  shared_context :rack_application do
2
4
  let(:rack_application) do
3
5
  Class.new do
@@ -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
- <input id='form_button' type='submit' value='a button'/>
26
+ <button id='form_button' type='submit' value='a button'/>
25
27
  </form>
26
28
 
27
29
  ELEMENTS
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PageMagic
2
4
  shared_examples 'session accessor' do
3
5
  it 'includes session methods' do
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: 1.2.6
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: 2016-07-28 00:00:00.000000000 Z
11
+ date: 2021-05-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: capybara
14
+ name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '2.5'
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: '2.5'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: activesupport
28
+ name: capybara
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '4'
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: '4'
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: '2.0'
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: '2.0'
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
- name: rubocop
70
+ name: redcarpet
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - "~>"
73
+ - - ">="
60
74
  - !ruby/object:Gem::Version
61
- version: '0.34'
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.34'
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
- name: yard
84
+ name: rubocop
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - "~>"
87
+ - - ">="
74
88
  - !ruby/object:Gem::Version
75
- version: '0.8'
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.8'
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
- name: redcarpet
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: '3.3'
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: '3.3'
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
- name: github-markup
112
+ name: yard
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: '1.4'
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: '1.4'
124
+ version: '0.8'
111
125
  description: Framework for modeling and interacting with webpages which wraps capybara
112
- email: info@lad-tech.com
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: '0'
222
+ version: 1.3.1
200
223
  requirements: []
201
- rubyforge_project:
202
- rubygems_version: 2.4.8
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: []