appium_capybara 1.9.0 → 1.10.0

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
  SHA256:
3
- metadata.gz: 3e580b26f96de413ba5f884a3415e64ee394e737804b60a7c0474db7c8df399e
4
- data.tar.gz: b6d98a242aab223809ace04acba7f53628c0047dd9fe04717994e8480b5ef4cd
3
+ metadata.gz: 27c67dea5af823589166ddf8531c76abdb3d54ea20e28a6ba857e95db76640cc
4
+ data.tar.gz: 3e54b99ef761aaa42dcb7eb0e9afc0bf69b73c3b25bd5fcc267b57e9910925b1
5
5
  SHA512:
6
- metadata.gz: 0b28ad6664372da0ee2019f076270cdea5cf0a0e7f92a78547d38ad0a1a823ede280313b1e39fcb32320475b50b4023e244761457a77d1e7953720f896866c45
7
- data.tar.gz: b2c3c92b1e1ae17ba9f692b2c61d0b4bde9f8b35a00b6387c01b8ce4ba4911c6baf6cfadb1e89265a3f8c84b935039d94d51cee06d305a51534e40e5bf5fc1bc
6
+ metadata.gz: beee7f76ad0f3710aaf60d750a8575ffd91a04017002edce32a118add99c2451cc90f8a2dfceaaf937c3cc75db42e32509f1eaf1a373715b86665d246b9a4f60
7
+ data.tar.gz: d3f4b30ada64dda1e9f2be176eac0e6b1f698129fc79fbe70a676c4f38aa98eba58fe7639f0080aa64d25c980e866b94bbe332ac976876929b9abebb9cc9e620
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # appium_capybara [![Gem Version](https://badge.fury.io/rb/appium_capybara.svg)](http://badge.fury.io/rb/appium_capybara)
2
2
 
3
+ [Documentation](https://www.rubydoc.info/gems/appium_capybara/)
4
+
3
5
  Gem enabling appium support in capybara
4
6
 
5
7
  Please use `v1.4.1` for Capybara 2.x users. `v1.5.0` requires Capybara 3.x.
@@ -14,7 +16,7 @@ desired_caps_ios = {
14
16
  platform: "Mac",
15
17
  deviceName: "iPhone Simulator",
16
18
  platformName: "iOS",
17
- platformVersion: "7.1",
19
+ platformVersion: "12.4",
18
20
  app: "full/path/to/app.zip"
19
21
  }
20
22
 
@@ -22,11 +24,11 @@ url = "http://localhost:4723/wd/hub" # or a sauce labs url
22
24
 
23
25
  Capybara.register_driver(:appium) do |app|
24
26
  appium_lib_options = {
25
- server_url: url
27
+ server_url: url
26
28
  }
27
29
  all_options = {
28
- appium_lib: appium_lib_options,
29
- caps: desired_caps_ios
30
+ appium_lib: appium_lib_options,
31
+ caps: desired_caps_ios
30
32
  }
31
33
  Appium::Capybara::Driver.new app, all_options
32
34
  end
@@ -46,6 +48,21 @@ Capybara.server_host = '0.0.0.0' # Listen to all interfaces
46
48
  Capybara.server_port = 56844 # Open port TCP 56844, change at your convenience
47
49
  ```
48
50
 
51
+ ## Call methods
52
+
53
+ appium_capybara provides both Capybara methods and appium_lib methods.
54
+
55
+ ```ruby
56
+ capy_driver = Capybara.current_session.driver
57
+
58
+ # Calls methods defined in Appium::Capybara::Driver and Capybara::Selenium::Driver
59
+ capy_driver.find_custom :name, '<enter text>'
60
+
61
+ # Calls methods defined in only appium_lib (Appium::Driver)
62
+ capy_driver.appium_driver.find_element(:name, 'TextFields').click
63
+ capy_driver.appium_driver.hide_keyboard
64
+ ```
65
+
49
66
  ## Publishing to rubygems
50
67
 
51
68
  Make sure to run `thor bump` or manually modify version.rb before publishing. RubyGems will not allow the same
@@ -20,9 +20,9 @@ Gem::Specification.new do |s|
20
20
  s.require_paths = ['lib']
21
21
 
22
22
  s.add_runtime_dependency 'appium_lib', '>= 9.15.0'
23
- s.add_runtime_dependency 'capybara', '~> 3.19'
23
+ s.add_runtime_dependency 'capybara', '~> 3.27'
24
24
 
25
- s.add_development_dependency 'appium_thor', '~> 0.0', '>= 0.0.7'
25
+ s.add_development_dependency 'appium_thor', '~> 1.1.6'
26
26
  s.add_development_dependency 'pry'
27
27
 
28
28
  s.files = s.remove_zip_files(`git ls-files`.split("\n"))
@@ -10,10 +10,15 @@ describe 'UICatalog smoke test' do
10
10
  capy_driver = Capybara.current_session.driver
11
11
 
12
12
  # Call appium driver's methods
13
- capy_driver.appium_driver.find_element(:name, 'TextFields').click
14
- expect(capy_driver.find_custom(:name, '<enter text>').size).to be 3
13
+ Capybara.current_session.driver.appium_driver.find_element(:name, 'Buttons').click
14
+ Capybara.current_session.driver.appium_driver.wait do
15
+ expect(capy_driver.find_custom(:class_name, 'XCUIElementTypeButton').size).to be 6
16
+ end
15
17
 
16
18
  # Get Appium::Capybara::Node elements
17
- capy_driver.find_custom(:name, '<enter text>')[0].send_keys 'abc'
19
+ expect(capy_driver.find_custom(:name, 'X Button')[0].name).to eq('X Button')
20
+
21
+ e = Capybara.current_session.find(:xpath, '//XCUIElementTypeNavigationBar')
22
+ expect(e.find(:class, 'XCUIElementTypeButton').text).to eq('UICatalog')
18
23
  end
19
24
  end
@@ -2,21 +2,39 @@ class Capybara::Queries::SelectorQuery < Capybara::Queries::BaseQuery
2
2
 
3
3
  # @api private
4
4
  def resolve_for(node, exact = nil)
5
+ applied_filters.clear
6
+ @resolved_node = node
7
+ @resolved_count += 1
5
8
  node.synchronize do
6
- children = if selector.format == :css
7
- node.find_css(css)
8
- elsif selector.format == :xpath
9
- node.find_xpath(xpath(exact))
10
- else
11
- node.find_custom(selector.format, @expression)
12
- end.map do |child|
13
- if node.is_a?(Capybara::Node::Base)
14
- Capybara::Node::Element.new(node.session, child, node, self)
15
- else
16
- Capybara::Node::Simple.new(child)
17
- end
18
- end
9
+ children = find_nodes_by_selector_format(node, exact).map(&method(:to_element))
19
10
  Capybara::Result.new(children, self)
20
11
  end
21
12
  end
13
+
14
+ private
15
+
16
+ # https://github.com/teamcapybara/capybara/blob/a7ebe1216f8d65f2e96c170437a732777353a81d/lib/capybara/queries/selector_query.rb#L227
17
+ def find_nodes_by_selector_format(node, exact)
18
+ hints = {}
19
+ hints[:uses_visibility] = true unless visible == :all
20
+ hints[:texts] = text_fragments unless selector_format == :xpath
21
+ hints[:styles] = options[:style] if use_default_style_filter?
22
+ hints[:position] = true if use_spatial_filter?
23
+
24
+ if selector_format == :css
25
+ if node.method(:find_css).arity != 1
26
+ node.find_css(css, **hints)
27
+ else
28
+ node.find_css(css)
29
+ end
30
+ elsif selector_format == :xpath
31
+ if node.method(:find_xpath).arity != 1
32
+ node.find_xpath(xpath(exact), **hints)
33
+ else
34
+ node.find_xpath(xpath(exact))
35
+ end
36
+ else
37
+ node.find_custom(selector_format, @expression)
38
+ end
39
+ end
22
40
  end
@@ -1,6 +1,6 @@
1
1
  module Appium
2
2
  module Capybara
3
- VERSION = '1.9.0'.freeze unless defined? ::Appium::Capybara::VERSION
4
- DATE = '2019-07-11'.freeze unless defined? ::Appium::Capybara::DATE
3
+ VERSION = '1.10.0'.freeze unless defined? ::Appium::Capybara::VERSION
4
+ DATE = '2019-11-23'.freeze unless defined? ::Appium::Capybara::DATE
5
5
  end
6
6
  end
@@ -1,3 +1,10 @@
1
+ #### v1.10.0 2019-11-23
2
+
3
+ - [2a0a739](https://github.com/appium/appium_capybara/commit/2a0a739685b571ab8d54655f924ed078c45d3bbe) Release 1.10.0
4
+ - [7b3baf1](https://github.com/appium/appium_capybara/commit/7b3baf11af0775935812bcfb5a83d18f1d2c7cb6) for capybara 3.27+ (#55)
5
+ - [541fe41](https://github.com/appium/appium_capybara/commit/541fe419e0cb96cc8ccb9426c72c4774c4f44a09) chore: Update readme and the ios test app (#54)
6
+
7
+
1
8
  #### v1.9.0 2019-07-11
2
9
 
3
10
  - [8c42306](https://github.com/appium/appium_capybara/commit/8c423067b4347ab64521f298737e76d1164f9929) Release 1.9.0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appium_capybara
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.0
4
+ version: 1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - scott.bonebrake@gmail.com
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2019-07-11 00:00:00.000000000 Z
13
+ date: 2019-11-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: appium_lib
@@ -32,34 +32,28 @@ dependencies:
32
32
  requirements:
33
33
  - - "~>"
34
34
  - !ruby/object:Gem::Version
35
- version: '3.19'
35
+ version: '3.27'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: '3.19'
42
+ version: '3.27'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: appium_thor
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: '0.0'
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- version: 0.0.7
49
+ version: 1.1.6
53
50
  type: :development
54
51
  prerelease: false
55
52
  version_requirements: !ruby/object:Gem::Requirement
56
53
  requirements:
57
54
  - - "~>"
58
55
  - !ruby/object:Gem::Version
59
- version: '0.0'
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- version: 0.0.7
56
+ version: 1.1.6
63
57
  - !ruby/object:Gem::Dependency
64
58
  name: pry
65
59
  requirement: !ruby/object:Gem::Requirement
@@ -124,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
118
  - !ruby/object:Gem::Version
125
119
  version: '0'
126
120
  requirements: []
127
- rubygems_version: 3.0.1
121
+ rubygems_version: 3.0.3
128
122
  signing_key:
129
123
  specification_version: 4
130
124
  summary: Enables appium support in Capybara