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.
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: []