page_magic 0.11.0.alpha3 → 0.11.0.alpha5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d1859255acffb538a691d28d73ce14bcf0725d6f
4
- data.tar.gz: 3a64fd4a58dd5aa358bd5dcc15d5cf0108d94754
3
+ metadata.gz: cd7f970881ca342aebac6a622629e2256c7b3772
4
+ data.tar.gz: c1a87cb1706b7d2bc40fc521a9cc5af55fea6c40
5
5
  SHA512:
6
- metadata.gz: 54fc9710a9013f621a4bec82eeec5da843070aba85b1d12e4259da4452b4e23648caf13c010615a4c942f36eb31ff95ffd4d1f215a893060e6c74502c090d818
7
- data.tar.gz: 0b8801158b735c37b39101e26c604a4483f01c960c99d6d9ec35a3aa72c980face0b0143bea687da5a5c0a793d20490d9dc0719f9f6725def9fc4dfb70524e69
6
+ metadata.gz: 00119f1eacd5c3d0001a020fe938b1dfd3fa1340b21800f7a7087ecc43e375d3ffae769c4f3eca2b96404e7c19d605a448e4b35b2f2202bb43e58bfa11ffdf43
7
+ data.tar.gz: 243f27af8b0adfd0c58a9e254b128d0c60e4da10eff2d1e421435b1d65b22e30324adba474d92499df6bd0b2f008e203389e45510aa0dd24e82c1e0ffce1165f
data/Gemfile CHANGED
@@ -13,4 +13,6 @@ end
13
13
 
14
14
  group :development do
15
15
  gem "jeweler"
16
+ gem 'guard'
17
+ gem 'guard-ctags-bundler'
16
18
  end
data/Gemfile.lock CHANGED
@@ -9,13 +9,17 @@ GEM
9
9
  rack (>= 1.0.0)
10
10
  rack-test (>= 0.5.4)
11
11
  xpath (~> 2.0)
12
+ celluloid (0.15.2)
13
+ timers (~> 1.1.0)
12
14
  childprocess (0.3.9)
13
15
  ffi (~> 1.0, >= 1.0.11)
14
16
  cliver (0.2.2)
17
+ coderay (1.1.0)
15
18
  diff-lcs (1.2.4)
16
19
  faraday (0.8.9)
17
20
  multipart-post (~> 1.2.0)
18
21
  ffi (1.9.3)
22
+ formatador (0.2.5)
19
23
  git (1.2.6)
20
24
  github_api (0.10.2)
21
25
  addressable
@@ -24,6 +28,14 @@ GEM
24
28
  multi_json (~> 1.4)
25
29
  nokogiri (~> 1.6.0)
26
30
  oauth2
31
+ guard (2.6.1)
32
+ formatador (>= 0.2.4)
33
+ listen (~> 2.7)
34
+ lumberjack (~> 1.0)
35
+ pry (>= 0.9.12)
36
+ thor (>= 0.18.1)
37
+ guard-ctags-bundler (1.0.2)
38
+ guard (~> 2.0)
27
39
  hashie (2.0.5)
28
40
  highline (1.6.21)
29
41
  jeweler (2.0.1)
@@ -38,6 +50,12 @@ GEM
38
50
  json (1.8.1)
39
51
  jwt (0.1.11)
40
52
  multi_json (>= 1.5)
53
+ listen (2.7.8)
54
+ celluloid (>= 0.15.2)
55
+ rb-fsevent (>= 0.9.3)
56
+ rb-inotify (>= 0.9)
57
+ lumberjack (1.0.6)
58
+ method_source (0.8.2)
41
59
  mime-types (1.25)
42
60
  mini_portile (0.5.1)
43
61
  multi_json (1.7.3)
@@ -56,12 +74,19 @@ GEM
56
74
  cliver (~> 0.2.1)
57
75
  multi_json (~> 1.0)
58
76
  websocket-driver (>= 0.2.0)
77
+ pry (0.10.0)
78
+ coderay (~> 1.1.0)
79
+ method_source (~> 0.8.1)
80
+ slop (~> 3.4)
59
81
  rack (1.5.2)
60
82
  rack-protection (1.5.0)
61
83
  rack
62
84
  rack-test (0.6.2)
63
85
  rack (>= 1.0)
64
86
  rake (10.2.2)
87
+ rb-fsevent (0.9.4)
88
+ rb-inotify (0.9.5)
89
+ ffi (>= 0.5.0)
65
90
  rdoc (4.1.1)
66
91
  json (~> 1.4)
67
92
  rspec (2.14.1)
@@ -86,7 +111,10 @@ GEM
86
111
  rack (~> 1.4)
87
112
  rack-protection (~> 1.4)
88
113
  tilt (~> 1.3, >= 1.3.4)
114
+ slop (3.5.0)
115
+ thor (0.19.1)
89
116
  tilt (1.4.1)
117
+ timers (1.1.0)
90
118
  wait (0.5.1)
91
119
  watir-webdriver (0.6.4)
92
120
  selenium-webdriver (>= 2.18.0)
@@ -100,6 +128,8 @@ PLATFORMS
100
128
 
101
129
  DEPENDENCIES
102
130
  capybara
131
+ guard
132
+ guard-ctags-bundler
103
133
  jeweler
104
134
  poltergeist
105
135
  rspec
data/Guardfile ADDED
@@ -0,0 +1,8 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard 'ctags-bundler', :src_path => [".", "app", "lib", "spec/support"], :stdlib => true do
5
+ watch(/^(app|lib|spec\/support)\/.*\.rb$/)
6
+ watch(/^*.rb$/)
7
+ watch('Gemfile.lock')
8
+ end
data/README.md CHANGED
@@ -1 +1,7 @@
1
1
  [![Build Status](https://travis-ci.org/Ladtech/page_magic.png)](https://travis-ci.org/Ladtech/page_magic)
2
+ #PageMagic
3
+ PageMagic is an API for testing web applications.
4
+
5
+ It has a simple but powerful DSL which makes modelling and interacting with your pages easy.
6
+
7
+ More docs coming soon.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.11.0.alpha3
1
+ 0.11.0.alpha5
@@ -1,13 +1,24 @@
1
1
  module PageMagic
2
2
 
3
+ module MethodObserver
4
+ def singleton_method_added arg
5
+ @singleton_methods_added = true unless arg == :singleton_method_added
6
+ end
7
+
8
+ def singleton_methods_added?
9
+ @singleton_methods_added == true
10
+ end
11
+ end
12
+
3
13
  class Element
4
14
  attr_reader :type, :name, :selector, :browser_element
5
15
 
6
- include AjaxSupport, Elements
16
+ include Elements
7
17
 
8
18
  class << self
9
19
  def inherited clazz
10
- clazz.extend(Elements, AjaxSupport)
20
+ clazz.extend(Elements)
21
+
11
22
  def clazz.selector selector=nil
12
23
  return @selector unless selector
13
24
  @selector = selector
@@ -15,17 +26,21 @@ module PageMagic
15
26
  end
16
27
  end
17
28
 
18
- def initialize name, parent_page_element, type=nil, selector, &block
19
- if selector.is_a?(Hash)
20
- @selector = selector
21
- else
22
- @browser_element = selector
23
- end
29
+ def initialize name, parent_page_element, options, &block
30
+ options = {type: :element, selector: {}, browser_element: nil}.merge(options)
31
+ @browser_element = options[:browser_element]
32
+ @selector = options[:selector]
33
+
34
+ @before_hook = proc {}
35
+ @after_hook = proc {}
36
+ @parent_page_element, @type, @name = parent_page_element, options[:type], name.to_s.downcase.to_sym
24
37
 
25
- @before_hook = proc{}
26
- @after_hook = proc{}
27
- @parent_page_element, @type, @name = parent_page_element, type, name.to_s.downcase.to_sym
28
- instance_eval &block if block_given?
38
+ extend MethodObserver
39
+ expand &block if block
40
+ end
41
+
42
+ def expand *args, &block
43
+ instance_exec *args, &block
29
44
  end
30
45
 
31
46
  def selector selector=nil
@@ -34,7 +49,7 @@ module PageMagic
34
49
  end
35
50
 
36
51
  def section?
37
- !element_definitions.empty?
52
+ !element_definitions.empty? || singleton_methods_added?
38
53
  end
39
54
 
40
55
  def session
@@ -65,34 +80,44 @@ module PageMagic
65
80
 
66
81
  def browser_element *args
67
82
  return @browser_element if @browser_element
68
- raise UndefinedSelectorException, "Pass a selector/define one on the class" unless @selector
83
+ raise UndefinedSelectorException, "Pass a selector/define one on the class" if @selector.empty?
69
84
  if @selector
70
- method, selector = @selector.to_a.flatten
71
- browser_element = @parent_page_element.browser_element
72
- @browser_element = case method
73
- when :id
74
- browser_element.find("##{selector}")
75
- when :xpath
76
- browser_element.find(:xpath, selector)
77
- when :name
78
- browser_element.find("*[name='#{selector}']")
79
- when :label
80
- browser_element.find_field(selector)
81
- when :text
82
- if @type == :link
83
- browser_element.find_link(selector)
84
- elsif @type == :button
85
- browser_element.find_button(selector)
86
- else
87
- raise UnsupportedSelectorException
88
- end
89
- when :css
90
- browser_element.find(:css, selector)
91
- else
92
- raise UnsupportedSelectorException
93
- end
85
+ selector_copy = @selector.dup
86
+ method = selector.keys.first
87
+ selector = selector_copy.delete(method)
88
+ options = selector_copy
89
+
90
+
91
+ finder_method, selector_type, selector_arg = case method
92
+ when :id
93
+ [:find, "##{selector}"]
94
+ when :xpath
95
+ [:find, :xpath, selector]
96
+ when :name
97
+ [:find, "*[name='#{selector}']"]
98
+ when :css
99
+ [:find, :css, selector]
100
+ when :label
101
+ [:find_field, selector]
102
+ when :text
103
+ if @type == :link
104
+ [:find_link, selector]
105
+ elsif @type == :button
106
+ [:find_button, selector]
107
+ else
108
+ raise UnsupportedSelectorException
109
+ end
110
+
111
+ else
112
+ raise UnsupportedSelectorException
113
+ end
114
+
115
+
116
+ finder_args = [selector_type, selector_arg].compact
117
+ finder_args << options unless options.empty?
118
+ @browser_element = @parent_page_element.browser_element.send(finder_method, *finder_args)
94
119
  end
95
120
  @browser_element
96
121
  end
97
122
  end
98
- end
123
+ end
@@ -59,13 +59,14 @@ module PageMagic
59
59
  def apply_hooks(options)
60
60
  _self = self
61
61
  page_element, capybara_method = options[:page_element], options[:capybara_method]
62
-
63
- original_method = page_element.method(capybara_method)
64
-
65
- page_element.define_singleton_method capybara_method do |*arguments, &block|
66
- _self.call_hook &options[:before_hook]
67
- original_method.call *arguments, &block
68
- _self.call_hook &options[:after_hook]
62
+ if page_element.respond_to?(capybara_method)
63
+ original_method = page_element.method(capybara_method)
64
+
65
+ page_element.define_singleton_method capybara_method do |*arguments, &block|
66
+ _self.call_hook &options[:before_hook]
67
+ original_method.call *arguments, &block
68
+ _self.call_hook &options[:after_hook]
69
+ end
69
70
  end
70
71
  end
71
72
 
@@ -33,11 +33,17 @@ module PageMagic
33
33
 
34
34
  first_arg = args.first
35
35
  if first_arg.is_a?(Symbol)
36
- name, selector = args
36
+ name, object = args
37
+ options = {type: type}
38
+ if object.is_a?(Hash)
39
+ options[:selector] = object
40
+ else
41
+ options[:browser_element] = object
42
+ end
37
43
 
38
44
  add_element_definition(name) do |*args_for_block|
39
- page_section = PageMagic::Element.new name, args_for_block.delete_at(0), type, selector
40
- page_section.instance_exec *args_for_block, &(block || Proc.new {})
45
+ page_section = PageMagic::Element.new name, args_for_block.delete_at(0), options
46
+ page_section.expand *args_for_block, &(block || Proc.new {})
41
47
  page_section
42
48
  end
43
49
 
@@ -50,7 +56,7 @@ module PageMagic
50
56
  end
51
57
 
52
58
  add_element_definition(name) do |parent_browser_element|
53
- section_class.new(name, parent_browser_element, :section, selector|| section_class.selector)
59
+ section_class.new(name, parent_browser_element, type: :section, selector: (selector || section_class.selector))
54
60
  end
55
61
 
56
62
  end
@@ -1,8 +1,6 @@
1
1
  module PageMagic
2
2
  attr_reader :browser, :session
3
3
 
4
- include AjaxSupport
5
-
6
4
  def initialize session=Session.new(Capybara.current_session), options={}, &block
7
5
 
8
6
  @browser = session.raw_session
data/lib/page_magic.rb CHANGED
@@ -3,7 +3,6 @@ require 'capybara'
3
3
  require 'page_magic/exceptions'
4
4
  require 'page_magic/browser'
5
5
  require 'page_magic/session'
6
- require 'page_magic/ajax_support'
7
6
  require 'page_magic/elements'
8
7
  require 'page_magic/element_context'
9
8
  require 'page_magic/element'
data/spec/element_spec.rb CHANGED
@@ -46,11 +46,11 @@ describe 'Page elements' do
46
46
 
47
47
  describe 'browser_element' do
48
48
  it 'should raise an error if a selector has not been specified' do
49
- expect { PageMagic::Element.new(:name, Object.new, :type).browser_element }.to raise_error(PageMagic::UndefinedSelectorException)
49
+ expect { PageMagic::Element.new(:name, Object.new, type: :element).browser_element }.to raise_error(PageMagic::UndefinedSelectorException)
50
50
  end
51
51
  end
52
52
 
53
- describe 'location' do
53
+ describe '#browser_element' do
54
54
  let!(:browser) { double('browser') }
55
55
  let!(:page) do
56
56
  page_class = Class.new do
@@ -59,58 +59,102 @@ describe 'Page elements' do
59
59
  page_class.new
60
60
  end
61
61
 
62
+ context 'options supplied to selector' do
63
+ it 'passes them on to the cappybara finder method' do
64
+ options = {key: :value}
65
+ xpath_selector = '//input'
66
+ expect(Capybara.current_session).to receive(:find).with(:xpath, xpath_selector, options)
67
+ PageMagic::Element.new(:my_input, page, type: :text_field, selector: {xpath: xpath_selector}.merge(options)).browser_element
68
+ end
69
+ end
70
+
62
71
  it 'should find by xpath' do
63
- element = PageMagic::Element.new(:my_input, page, :text_field, xpath: '//input').browser_element
72
+ element = PageMagic::Element.new(:my_input, page, type: :text_field, selector: {xpath: '//input'}).browser_element
64
73
  element.value == 'filled in'
65
74
  end
66
75
 
67
76
  it 'should locate an element using its id' do
68
- element = PageMagic::Element.new(:my_input, page, :text_field, id: 'field_id').browser_element
77
+ element = PageMagic::Element.new(:my_input, page, type: :text_field, selector: {id: 'field_id'}).browser_element
69
78
  element.value.should == 'filled in'
70
79
  end
71
80
 
72
81
  it 'should locate an element using its name' do
73
- element = PageMagic::Element.new(:my_input, page, :text_field, name: 'field_name').browser_element
82
+ element = PageMagic::Element.new(:my_input, page, type: :text_field, selector: {name: 'field_name'}).browser_element
74
83
  element.value.should == 'filled in'
75
84
  end
76
85
 
77
86
 
78
87
  it 'should locate an element using its label' do
79
- element = PageMagic::Element.new(:my_link, page, :link, label: 'enter text').browser_element
88
+ element = PageMagic::Element.new(:my_link, page, type: :link, selector: {label: 'enter text'}).browser_element
80
89
  element[:id].should == 'field_id'
81
90
  end
82
91
 
83
92
  it 'should raise an exception when finding another element using its text' do
84
- expect { PageMagic::Element.new(:my_link, page, :text_field, text: 'my link').browser_element }.to raise_error(PageMagic::UnsupportedSelectorException)
93
+ expect { PageMagic::Element.new(:my_link, page, type: :text_field, selector: {text: 'my link'}).browser_element }.to raise_error(PageMagic::UnsupportedSelectorException)
85
94
  end
86
95
 
87
96
  it 'should locate an element using css' do
88
- element = PageMagic::Element.new(:my_link, page, :link, css: "input[name='field_name']").browser_element
97
+ element = PageMagic::Element.new(:my_link, page, type: :link, selector: {css: "input[name='field_name']"}).browser_element
89
98
  element[:id].should == 'field_id'
90
99
  end
91
100
 
92
101
 
93
102
  it 'should return a prefetched value' do
94
- PageMagic::Element.new(:help, page, :link, :prefetched_object).browser_element.should == :prefetched_object
103
+ PageMagic::Element.new(:help, page, type: :link, browser_element: :prefetched_object).browser_element.should == :prefetched_object
95
104
  end
96
105
 
97
106
  it 'should raise errors for unsupported selectors' do
98
- expect { PageMagic::Element.new(:my_link, page, :link, unsupported: "").browser_element }.to raise_error(PageMagic::UnsupportedSelectorException)
107
+ expect { PageMagic::Element.new(:my_link, page, type: :link, selector: {unsupported: ""}).browser_element }.to raise_error(PageMagic::UnsupportedSelectorException)
99
108
  end
100
109
 
101
110
  context 'text selector' do
102
111
  it 'should locate a link' do
103
- element = PageMagic::Element.new(:my_link, page, :link, text: 'my link').browser_element
112
+ element = PageMagic::Element.new(:my_link, page, type: :link, selector: {text: 'my link'}).browser_element
104
113
  element[:id].should == 'my_link'
105
114
  end
106
115
 
107
116
  it 'should locate a button' do
108
- element = PageMagic::Element.new(:my_button, page, :button, text: 'my button').browser_element
117
+ element = PageMagic::Element.new(:my_button, page, type: :button, selector: {text: 'my button'}).browser_element
109
118
  element[:id].should == 'my_button'
110
119
  end
111
120
  end
112
121
  end
113
122
 
123
+ describe '#section?' do
124
+ context 'element definitions exist' do
125
+ subject do
126
+ PageMagic::Element.new(:my_link, :page, type: :link, selector: {text: 'my link'}) do
127
+ element :thing, text: 'text'
128
+ end
129
+ end
130
+ it 'returns true' do
131
+ expect(subject.section?).to eq(true)
132
+ end
133
+ end
134
+
135
+ context 'method defined' do
136
+ subject do
137
+ PageMagic::Element.new(:my_link, :page, type: :link, selector: {text: 'my link'}) do
138
+ def custom_method
139
+ end
140
+ end
141
+ end
142
+
143
+ it 'returns true' do
144
+ expect(subject.section?).to eq(true)
145
+ end
146
+ end
147
+
148
+ context 'neither method or elements defined' do
149
+ subject do
150
+ PageMagic::Element.new(:my_link, :page, type: :link, selector: {text: 'my link'})
151
+ end
152
+ it 'returns false' do
153
+ expect(subject.section?).to eq(false)
154
+ end
155
+ end
156
+ end
157
+
114
158
  describe 'session' do
115
159
  it 'should have a handle to the session' do
116
160
  page_class = Class.new do
@@ -118,7 +162,7 @@ describe 'Page elements' do
118
162
  end
119
163
  page = page_class.new
120
164
 
121
- PageMagic::Element.new(:help, page, :link, :selector).session.should == page.session
165
+ PageMagic::Element.new(:help, page, type: :link, selector: :selector).session.should == page.session
122
166
  end
123
167
  end
124
168
 
@@ -113,6 +113,11 @@ describe PageMagic::ElementContext do
113
113
 
114
114
  describe 'hooks' do
115
115
 
116
+
117
+ #it 'only applies them if browser element supports event' do
118
+ # page = elements_page.new
119
+ #end
120
+
116
121
  it 'should execute a before and after action that gives access to the browser' do
117
122
 
118
123
  page = elements_page.new
@@ -2,7 +2,7 @@ describe PageMagic::Elements do
2
2
 
3
3
 
4
4
  let(:page_elements) do
5
- page_element = Class.new do
5
+ Class.new do
6
6
  extend(PageMagic::Elements)
7
7
  end
8
8
  end
@@ -17,7 +17,7 @@ describe PageMagic::Elements do
17
17
 
18
18
  context 'using a selector' do
19
19
  it 'should add an element' do
20
- expected_element = PageMagic::Element.new(:name, parent_page_element, :text_field, selector)
20
+ expected_element = PageMagic::Element.new(:name, parent_page_element, type: :text_field, selector: selector)
21
21
  page_elements.text_field :name, selector
22
22
  page_elements.element_definitions[:name].call(parent_page_element).should == expected_element
23
23
  end
@@ -40,7 +40,7 @@ describe PageMagic::Elements do
40
40
 
41
41
  context 'using a predefined class' do
42
42
  it 'should add a section' do
43
- expected_section = section_class.new(:page_section, parent_page_element, :section, selector)
43
+ expected_section = section_class.new(:page_section, parent_page_element, type: :section, selector: selector)
44
44
 
45
45
  page_elements.section section_class, :page_section, selector
46
46
  page_elements.elements(parent_page_element).first.should == expected_section
@@ -118,7 +118,7 @@ describe PageMagic::Elements do
118
118
  describe 'location' do
119
119
  context 'a prefetched object' do
120
120
  it 'should add a section' do
121
- expected_section = section_class.new(:page_section, parent_page_element, :section, :object)
121
+ expected_section = section_class.new(:page_section, parent_page_element, type: :section, browser_element: :object)
122
122
  page_elements.section :page_section, :object
123
123
  expected_section.should == page_elements.elements(parent_page_element).first
124
124
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: page_magic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0.alpha3
4
+ version: 0.11.0.alpha5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leon Davis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-05 00:00:00.000000000 Z
11
+ date: 2015-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: guard
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: guard-ctags-bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  description: Framework for modeling and interacting with webpages which wraps capybara
56
84
  email: info@lad-tech.com
57
85
  executables: []
@@ -65,12 +93,12 @@ files:
65
93
  - .travis.yml
66
94
  - Gemfile
67
95
  - Gemfile.lock
96
+ - Guardfile
68
97
  - README.md
69
98
  - Rakefile
70
99
  - VERSION
71
100
  - lib/ext/string.rb
72
101
  - lib/page_magic.rb
73
- - lib/page_magic/ajax_support.rb
74
102
  - lib/page_magic/browser.rb
75
103
  - lib/page_magic/element.rb
76
104
  - lib/page_magic/element_context.rb
@@ -79,18 +107,18 @@ files:
79
107
  - lib/page_magic/page_magic.rb
80
108
  - lib/page_magic/session.rb
81
109
  - page_magic.gemspec
82
- - spec/browser_spec.rb
83
- - spec/element_context_spec.rb
84
110
  - spec/element_spec.rb
85
111
  - spec/helpers/capybara.rb
86
112
  - spec/member_methods_spec.rb
113
+ - spec/page_magic/browser_spec.rb
114
+ - spec/page_magic/element_context_spec.rb
87
115
  - spec/page_magic/elements_spec.rb
116
+ - spec/page_magic/session_spec.rb
88
117
  - spec/page_magic/usage/defining_page_elements_spec.rb
89
118
  - spec/page_magic/usage/defining_pages_spec.rb
90
119
  - spec/page_magic/usage/include_page_magic_spec.rb
91
120
  - spec/page_magic/usage/interacting_with_pages_spec.rb
92
121
  - spec/page_magic/usage/starting_a_session_spec.rb
93
- - spec/session_spec.rb
94
122
  - spec/spec_helper.rb
95
123
  homepage: https://github.com/ladtech/page_magic
96
124
  licenses:
@@ -112,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
140
  version: 1.3.1
113
141
  requirements: []
114
142
  rubyforge_project:
115
- rubygems_version: 2.0.3
143
+ rubygems_version: 2.2.2
116
144
  signing_key:
117
145
  specification_version: 4
118
146
  summary: Framework for modeling and interacting with webpages
@@ -1,21 +0,0 @@
1
- module PageMagic
2
- module AjaxSupport
3
- def on_element_with_trigger css_selector, event, browser, &block
4
- set_variable_on_event(browser, css_selector, event)
5
- yield
6
- wait_until(:timeout_after => 20.seconds, :retry_every => 1.second) do
7
- event_triggered(browser, event)
8
- end
9
- end
10
-
11
- def event_triggered(browser, variable)
12
- browser.execute_script("return #{variable}_triggered")
13
- end
14
-
15
- def set_variable_on_event(browser, element, event)
16
- variable_name="#{event}_triggered"
17
- browser.execute_script("#{variable_name}=false")
18
- browser.execute_script("$('#{element}').on('#{event}', function(){#{variable_name}=true})")
19
- end
20
- end
21
- end