page_magic 0.11.0.alpha3 → 0.11.0.alpha5

Sign up to get free protection for your applications and to get access to all the features.
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