appium_flutter_finder 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 9a617dc7948073da6703483d3489be7f487f30ed13593a427eb2592c05053a50
4
+ data.tar.gz: d03cfa4714bd5d183dff0b11c5e051ed50525424357c109e3796eea7222b68f3
5
+ SHA512:
6
+ metadata.gz: 72dbe47b3b63cf3d4b62bd953fedd76718fbb9e4bdc92da38456038acbfafb1c7e6f021c6ab736cf63bd91e0ea3766abfb271a79cda44680d5e5e55eb6a4c04d
7
+ data.tar.gz: b3ffa31ee92d7cad531b6645fe1f5d5a11157a36af7ca075553cf4c4e7a85bf66b38b93c58ea010030a56e5840dec535d06ac3a2fd002f9a146c2c6bd032e54e
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
data/README.md ADDED
@@ -0,0 +1,47 @@
1
+ # AppiumFlutterFinder
2
+
3
+ Ruby finder elements for https://github.com/truongsinh/appium-flutter-driver
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'appium_flutter_finder'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install appium_flutter_finder
20
+
21
+ ## Usage
22
+
23
+
24
+ ```ruby
25
+ include Appium::Flutter::Finder
26
+
27
+ @driver = ::Appium::Core.for(caps).start_driver
28
+
29
+ # Send a request to an element
30
+ element = Appium::Flutter::Element.new(
31
+ @driver,
32
+ finder: by_text('You have pushed the button this many times:')
33
+ )
34
+ assert element.text == 'You have pushed the button this many times:'
35
+
36
+ # Get render tree by Flutter
37
+ @driver.execute_script 'flutter:getRenderTree', {}
38
+ ```
39
+ ## Development
40
+
41
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
42
+
43
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
44
+
45
+ ## Contributing
46
+
47
+ Bug reports and pull requests are welcome on GitHub at https://github.com/truongsinh/appium-flutter-driver/tree/master/finder/ruby .
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << 'test'
6
+ t.libs << 'lib'
7
+ t.test_files = FileList['test/**/*_test.rb']
8
+ end
9
+
10
+ task default: :test
@@ -0,0 +1,31 @@
1
+ lib = File.expand_path('lib', __dir__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'appium_flutter_finder/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.required_ruby_version = '>= 2.2'
7
+
8
+ spec.name = 'appium_flutter_finder'
9
+ spec.version = Appium::Flutter::Finder::VERSION
10
+ spec.authors = ['Kazuaki Matsuo']
11
+ spec.email = ['fly.49.89.over@gmail.com']
12
+
13
+ spec.summary = 'Finder for appium-flutter-driver'
14
+ spec.description = 'Finder for appium-flutter-driver'
15
+ spec.homepage = 'https://github.com/truongsinh/appium-flutter-driver'
16
+
17
+ # Specify which files should be added to the gem when it is released.
18
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
19
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
20
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
21
+ end
22
+ spec.bindir = 'exe'
23
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
+ spec.require_paths = ['lib']
25
+
26
+ spec.add_runtime_dependency 'appium_lib_core', '~> 3.3'
27
+
28
+ spec.add_development_dependency 'bundler', '~> 1.17'
29
+ spec.add_development_dependency 'minitest', '~> 5.0'
30
+ spec.add_development_dependency 'rake', '~> 10.0'
31
+ end
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'appium_flutter_finder'
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require 'irb'
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,114 @@
1
+ require 'json'
2
+ require 'base64'
3
+
4
+ require 'appium_lib_core'
5
+ require 'appium_flutter_finder/version'
6
+
7
+ module Appium
8
+ module Flutter
9
+
10
+ # Handles flutter elements as Appium Elements
11
+ class Element < ::Selenium::WebDriver::Element
12
+ def initialize(driver, finder:)
13
+ @bridge = driver.send :bridge
14
+ @id = finder
15
+ end
16
+ end
17
+
18
+ # Get find element context for flutter driver
19
+ module Finder
20
+ def by_ancestor(serialized_finder:, matching:, match_root: false)
21
+ by_ancestor_or_descendant(
22
+ type: 'Ancestor',
23
+ serialized_finder: serialized_finder,
24
+ matching: matching,
25
+ match_root: match_root
26
+ )
27
+ end
28
+
29
+ def by_descendant(serialized_finder:, matching:, match_root: false)
30
+ by_ancestor_or_descendant(
31
+ type: 'Descendant',
32
+ serialized_finder: serialized_finder,
33
+ matching: matching,
34
+ match_root: match_root
35
+ )
36
+ end
37
+
38
+ def by_semantics_label(label)
39
+ serialize(
40
+ finderType: 'BySemanticsLabel',
41
+ isRegExp: label.is_a?(Regexp),
42
+ # Should be '/a/' as String in regex case
43
+ label: label.is_a?(Regexp) ? label.source : label
44
+ )
45
+ end
46
+
47
+ def by_tooltip(text)
48
+ serialize(
49
+ finderType: 'ByTooltipMessage',
50
+ text: text
51
+ )
52
+ end
53
+
54
+ def by_type(type)
55
+ serialize(
56
+ finderType: 'ByType',
57
+ type: type
58
+ )
59
+ end
60
+
61
+ def by_value_key(key)
62
+ serialize(
63
+ finderType: 'ByValueKey',
64
+ keyValueString: key,
65
+ keyValueType: key.is_a?(String) ? 'String' : 'int'
66
+ )
67
+ end
68
+
69
+ def page_back
70
+ serialize(
71
+ finderType: 'PageBack'
72
+ )
73
+ end
74
+
75
+ def by_text(text)
76
+ serialize(
77
+ finderType: 'ByText',
78
+ text: text
79
+ )
80
+ end
81
+
82
+ private
83
+
84
+ def serialize(hash)
85
+ Base64.strict_encode64(hash.to_json)
86
+ end
87
+
88
+ def by_ancestor_or_descendant(type:, serialized_finder:, matching:, match_root: false)
89
+ param = { finderType: type, matchRoot: match_root }
90
+
91
+ finder = begin
92
+ JSON.parse(Base64.decode64(serialized_finder))
93
+ rescue JSONError
94
+ {}
95
+ end
96
+
97
+ finder.each_key do |key|
98
+ param["of_#{key}"] = finder[key]
99
+ end
100
+
101
+ matching = begin
102
+ JSON.parse(Base64.decode64(matching))
103
+ rescue JSONError
104
+ {}
105
+ end
106
+ matching.each_key do |key|
107
+ param["matching_#{key}"] = matching[key]
108
+ end
109
+
110
+ serialize param
111
+ end
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,7 @@
1
+ module Appium
2
+ module Flutter
3
+ module Finder
4
+ VERSION = '0.1.0'.freeze
5
+ end
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,106 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: appium_flutter_finder
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Kazuaki Matsuo
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-12-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: appium_lib_core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.17'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.17'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.0'
69
+ description: Finder for appium-flutter-driver
70
+ email:
71
+ - fly.49.89.over@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - Gemfile
77
+ - README.md
78
+ - Rakefile
79
+ - appium_flutter_finder.gemspec
80
+ - bin/console
81
+ - bin/setup
82
+ - lib/appium_flutter_finder.rb
83
+ - lib/appium_flutter_finder/version.rb
84
+ homepage: https://github.com/truongsinh/appium-flutter-driver
85
+ licenses: []
86
+ metadata: {}
87
+ post_install_message:
88
+ rdoc_options: []
89
+ require_paths:
90
+ - lib
91
+ required_ruby_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '2.2'
96
+ required_rubygems_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ requirements: []
102
+ rubygems_version: 3.0.3
103
+ signing_key:
104
+ specification_version: 4
105
+ summary: Finder for appium-flutter-driver
106
+ test_files: []