capybara 2.12.1 → 2.13.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,121 @@
1
+ # frozen_string_literal: true
2
+ require 'spec_helper'
3
+ require 'capybara/minitest'
4
+ require 'capybara/minitest/spec'
5
+
6
+ class MinitestSpecTest < Minitest::Spec
7
+ include ::Capybara::DSL
8
+ include ::Capybara::Minitest::Assertions
9
+
10
+ before do
11
+ visit('/form')
12
+ end
13
+ after do
14
+ Capybara.reset_sessions!
15
+ end
16
+
17
+ it "supports text expectations" do
18
+ page.must_have_text('Form', minimum: 1)
19
+ page.wont_have_text('Not a form')
20
+ form = find(:css, 'form', text: 'Title')
21
+ form.must_have_text('Customer Email')
22
+ form.wont_have_text('Some other email')
23
+ end
24
+
25
+ it "supports current_path expectations" do
26
+ page.must_have_current_path('/form')
27
+ page.wont_have_current_path('/form2')
28
+ end
29
+
30
+ it "supports title expectations" do
31
+ visit('/with_title')
32
+ page.must_have_title('Test Title')
33
+ page.wont_have_title('Not the title')
34
+ end
35
+
36
+ it "supports xpath expectations" do
37
+ page.must_have_xpath('.//input[@id="customer_email"]')
38
+ page.wont_have_xpath('.//select[@id="not_form_title"]')
39
+ page.wont_have_xpath('.//input[@id="customer_email"]') { |el| el[:id] == "not_customer_email" }
40
+ el = find(:select, 'form_title')
41
+ el.must_have_xpath('.//option[@class="title"]')
42
+ el.must_have_xpath('.//option', count: 1) { |el| el[:class] != 'title' && !el.disabled?}
43
+ el.wont_have_xpath('.//input[@id="customer_email"]')
44
+ end
45
+
46
+ it "support css expectations" do
47
+ page.must_have_css('input#customer_email')
48
+ page.wont_have_css('select#not_form_title')
49
+ el = find(:select, 'form_title')
50
+ el.must_have_css('option.title')
51
+ el.wont_have_css('input#customer_email')
52
+ end
53
+
54
+ it "supports link expectations" do
55
+ visit('/with_html')
56
+ page.must_have_link('A link')
57
+ page.wont_have_link('Not on page')
58
+ end
59
+
60
+ it "supports button expectations" do
61
+ page.must_have_button('fresh_btn')
62
+ page.wont_have_button('not_btn')
63
+ end
64
+
65
+ it "supports field expectations" do
66
+ page.must_have_field('customer_email')
67
+ page.wont_have_field('not_on_the_form')
68
+ end
69
+
70
+ it "supports select expectations" do
71
+ page.must_have_select('form_title')
72
+ page.wont_have_select('not_form_title')
73
+ end
74
+
75
+ it "supports checked_field expectations" do
76
+ page.must_have_checked_field('form_pets_dog')
77
+ page.wont_have_checked_field('form_pets_cat')
78
+ end
79
+
80
+ it "supports unchecked_field expectations" do
81
+ page.must_have_unchecked_field('form_pets_cat')
82
+ page.wont_have_unchecked_field('form_pets_dog')
83
+ end
84
+
85
+ it "supports table expectations" do
86
+ visit('/tables')
87
+ page.must_have_table('agent_table')
88
+ page.wont_have_table('not_on_form')
89
+ end
90
+
91
+ it "supports match_selector expectations" do
92
+ find(:field, 'customer_email').must_match_selector(:field, 'customer_email')
93
+ find(:select, 'form_title').wont_match_selector(:field, 'customer_email')
94
+ end
95
+
96
+ it "supports match_css expectations" do
97
+ find(:select, 'form_title').must_match_css('select#form_title')
98
+ find(:select, 'form_title').wont_match_css('select#form_other_title')
99
+ end
100
+
101
+ it "supports match_xpath expectations" do
102
+ find(:select, 'form_title').must_match_xpath('.//select[@id="form_title"]')
103
+ find(:select, 'form_title').wont_match_xpath('.//select[@id="not_on_page"]')
104
+ end
105
+ end
106
+
107
+ RSpec.describe 'capybara/minitest/spec' do
108
+ before do
109
+ Capybara.current_driver = :rack_test
110
+ Capybara.app = TestApp
111
+ end
112
+
113
+ it "should support minitest spec" do
114
+ output = StringIO.new
115
+ reporter = Minitest::SummaryReporter.new(output)
116
+ reporter.start
117
+ MinitestSpecTest.run reporter, {}
118
+ reporter.report
119
+ expect(output.string).to include("15 runs, 38 assertions, 0 failures, 0 errors, 0 skips")
120
+ end
121
+ end
@@ -119,5 +119,33 @@ RSpec.shared_examples "Capybara::Session" do |session, mode|
119
119
  expect(element.path).to eq('/html/body/div[2]/a[1]')
120
120
  end
121
121
  end
122
+
123
+ describe "#evaluate_script" do
124
+ it "can return an element" do
125
+ @session.visit('/form')
126
+ element = @session.evaluate_script("document.getElementById('form_title')")
127
+ expect(element).to eq @session.find(:id, 'form_title')
128
+ end
129
+
130
+ it "can return arrays of nested elements" do
131
+ @session.visit('/form')
132
+ elements = @session.evaluate_script('document.querySelectorAll("#form_city option")')
133
+ elements.each do |el|
134
+ expect(el).to be_instance_of Capybara::Node::Element
135
+ end
136
+ expect(elements).to eq @session.find(:css, '#form_city').all(:css, 'option').to_a
137
+ end
138
+
139
+ it "can return hashes with elements" do
140
+ @session.visit('/form')
141
+ result = @session.evaluate_script("{ a: document.getElementById('form_title'), b: {c: document.querySelectorAll('#form_city option')}}")
142
+ expect(result).to eq({
143
+ 'a' => @session.find(:id, 'form_title'),
144
+ 'b' => {
145
+ 'c' => @session.find(:css, '#form_city').all(:css, 'option').to_a
146
+ }
147
+ })
148
+ end
149
+ end
122
150
  end
123
151
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.12.1
4
+ version: 2.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Walpole
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain:
12
12
  - gem-public_cert.pem
13
- date: 2017-02-17 00:00:00.000000000 Z
13
+ date: 2017-03-16 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: nokogiri
@@ -200,20 +200,34 @@ dependencies:
200
200
  - - ">="
201
201
  - !ruby/object:Gem::Version
202
202
  version: 0.10.5
203
+ - !ruby/object:Gem::Dependency
204
+ name: minitest
205
+ requirement: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ type: :development
211
+ prerelease: false
212
+ version_requirements: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
203
217
  - !ruby/object:Gem::Dependency
204
218
  name: rake
205
219
  requirement: !ruby/object:Gem::Requirement
206
220
  requirements:
207
- - - "<"
221
+ - - ">="
208
222
  - !ruby/object:Gem::Version
209
- version: '11.0'
223
+ version: '0'
210
224
  type: :development
211
225
  prerelease: false
212
226
  version_requirements: !ruby/object:Gem::Requirement
213
227
  requirements:
214
- - - "<"
228
+ - - ">="
215
229
  - !ruby/object:Gem::Version
216
- version: '11.0'
230
+ version: '0'
217
231
  - !ruby/object:Gem::Dependency
218
232
  name: pry
219
233
  requirement: !ruby/object:Gem::Requirement
@@ -229,7 +243,7 @@ dependencies:
229
243
  - !ruby/object:Gem::Version
230
244
  version: '0'
231
245
  - !ruby/object:Gem::Dependency
232
- name: erubis
246
+ name: erubi
233
247
  requirement: !ruby/object:Gem::Requirement
234
248
  requirements:
235
249
  - - ">="
@@ -264,6 +278,8 @@ files:
264
278
  - lib/capybara/driver/node.rb
265
279
  - lib/capybara/dsl.rb
266
280
  - lib/capybara/helpers.rb
281
+ - lib/capybara/minitest.rb
282
+ - lib/capybara/minitest/spec.rb
267
283
  - lib/capybara/node/actions.rb
268
284
  - lib/capybara/node/base.rb
269
285
  - lib/capybara/node/document.rb
@@ -417,6 +433,8 @@ files:
417
433
  - spec/fixtures/capybara.csv
418
434
  - spec/fixtures/selenium_driver_rspec_failure.rb
419
435
  - spec/fixtures/selenium_driver_rspec_success.rb
436
+ - spec/minitest_spec.rb
437
+ - spec/minitest_spec_spec.rb
420
438
  - spec/rack_test_spec.rb
421
439
  - spec/result_spec.rb
422
440
  - spec/rspec/features_spec.rb
@@ -452,7 +470,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
452
470
  version: '0'
453
471
  requirements: []
454
472
  rubyforge_project:
455
- rubygems_version: 2.6.10
473
+ rubygems_version: 2.5.2
456
474
  signing_key:
457
475
  specification_version: 4
458
476
  summary: Capybara aims to simplify the process of integration testing Rack applications,