kraken-mobile 1.0.1 → 1.0.8

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.
Files changed (57) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +251 -77
  3. data/bin/kraken-mobile +64 -67
  4. data/bin/kraken_mobile_calabash_android.rb +39 -0
  5. data/bin/kraken_mobile_helpers.rb +107 -0
  6. data/bin/kraken_mobile_setup.rb +138 -0
  7. data/calabash-android-features-skeleton/step_definitions/mobile_steps.rb +1 -0
  8. data/calabash-android-features-skeleton/support/app_installation_hooks.rb +2 -0
  9. data/calabash-android-features-skeleton/support/app_life_cycle_hooks.rb +3 -4
  10. data/calabash-android-features-skeleton/support/env.rb +1 -1
  11. data/calabash-android-features-skeleton/web/step_definitions/web_steps.rb +3 -0
  12. data/calabash-android-features-skeleton/web/support/app_life_cycle_hooks.rb +15 -0
  13. data/lib/kraken-mobile/device_process.rb +130 -0
  14. data/lib/kraken-mobile/helpers/devices_helper/adb_helper.rb +100 -105
  15. data/lib/kraken-mobile/helpers/kraken_faker.rb +108 -0
  16. data/lib/kraken-mobile/helpers/reporter.rb +3 -0
  17. data/lib/kraken-mobile/hooks/mobile_kraken_hooks.rb +15 -0
  18. data/lib/kraken-mobile/hooks/mobile_operations.rb +36 -0
  19. data/lib/kraken-mobile/hooks/web_operations.rb +33 -0
  20. data/lib/kraken-mobile/mobile/adb.rb +66 -0
  21. data/lib/kraken-mobile/mobile/android_commands.rb +43 -0
  22. data/lib/kraken-mobile/mobile/mobile_process.rb +101 -0
  23. data/lib/kraken-mobile/models/android_device.rb +121 -0
  24. data/lib/kraken-mobile/models/device.rb +113 -31
  25. data/lib/kraken-mobile/models/feature_file.rb +135 -0
  26. data/lib/kraken-mobile/models/feature_scenario.rb +24 -0
  27. data/lib/kraken-mobile/models/web_device.rb +89 -0
  28. data/lib/kraken-mobile/monkeys/mobile/android_monkey.rb +30 -0
  29. data/lib/kraken-mobile/monkeys/mobile/kraken_android_monkey.rb +54 -0
  30. data/lib/kraken-mobile/monkeys/web/web_monkey.rb +63 -0
  31. data/lib/kraken-mobile/runners/calabash/android/monkey_helper.rb +2 -2
  32. data/lib/kraken-mobile/runners/calabash/android/steps/communication_steps.rb +18 -2
  33. data/lib/kraken-mobile/runners/calabash/monkey/monkey_runner.rb +2 -2
  34. data/lib/kraken-mobile/steps/general_steps.rb +83 -0
  35. data/lib/kraken-mobile/steps/mobile/kraken_steps.rb +72 -0
  36. data/lib/kraken-mobile/steps/web/kraken_steps.rb +91 -0
  37. data/lib/kraken-mobile/test_scenario.rb +227 -0
  38. data/lib/kraken-mobile/utils/feature_reader.rb +17 -0
  39. data/lib/kraken-mobile/utils/k.rb +68 -0
  40. data/lib/kraken-mobile/utils/mobile_cucumber.rb +2 -0
  41. data/lib/kraken-mobile/utils/reporter.rb +500 -0
  42. data/lib/kraken-mobile/version.rb +2 -2
  43. data/lib/kraken-mobile/web/web_process.rb +41 -0
  44. data/lib/kraken_mobile.rb +81 -0
  45. data/reporter/assets/css/scenario_index.css +20 -0
  46. data/reporter/assets/images/krakenThumbnail.jpg +0 -0
  47. data/reporter/assets/js/sankey.js +56 -24
  48. data/reporter/feature_report.html.erb +5 -1
  49. data/reporter/index.html.erb +15 -8
  50. data/reporter/scenario_report.html.erb +73 -31
  51. metadata +95 -14
  52. data/bin/kraken-mobile-calabash-android.rb +0 -85
  53. data/bin/kraken-mobile-generate.rb +0 -19
  54. data/bin/kraken-mobile-helpers.rb +0 -48
  55. data/bin/kraken-mobile-setup.rb +0 -50
  56. data/calabash-android-features-skeleton/step_definitions/kraken_steps.rb +0 -1
  57. data/lib/kraken-mobile.rb +0 -29
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kraken-mobile
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Ravelo M
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-20 00:00:00.000000000 Z
11
+ date: 2021-02-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cucumber
@@ -66,6 +66,62 @@ dependencies:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.18.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: byebug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '11.1'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '11.1'
83
+ - !ruby/object:Gem::Dependency
84
+ name: capybara
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: 3.31.0
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 3.31.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: selenium-webdriver
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '='
102
+ - !ruby/object:Gem::Version
103
+ version: 3.14.0
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 3.14.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: faker
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '='
116
+ - !ruby/object:Gem::Version
117
+ version: 2.10.0
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '='
123
+ - !ruby/object:Gem::Version
124
+ version: 2.10.0
69
125
  description: 'Automated E2E testing involving intercommunication between two or more
70
126
  mobile applications running in different devices or emulators. '
71
127
  email:
@@ -78,24 +134,39 @@ files:
78
134
  - LICENSE
79
135
  - README.md
80
136
  - bin/kraken-mobile
81
- - bin/kraken-mobile-calabash-android.rb
82
- - bin/kraken-mobile-generate.rb
83
- - bin/kraken-mobile-helpers.rb
84
- - bin/kraken-mobile-setup.rb
137
+ - bin/kraken_mobile_calabash_android.rb
138
+ - bin/kraken_mobile_helpers.rb
139
+ - bin/kraken_mobile_setup.rb
85
140
  - calabash-android-features-skeleton/my_first.feature
86
- - calabash-android-features-skeleton/step_definitions/kraken_steps.rb
141
+ - calabash-android-features-skeleton/step_definitions/mobile_steps.rb
87
142
  - calabash-android-features-skeleton/support/app_installation_hooks.rb
88
143
  - calabash-android-features-skeleton/support/app_life_cycle_hooks.rb
89
144
  - calabash-android-features-skeleton/support/env.rb
90
- - lib/kraken-mobile.rb
145
+ - calabash-android-features-skeleton/web/step_definitions/web_steps.rb
146
+ - calabash-android-features-skeleton/web/support/app_life_cycle_hooks.rb
91
147
  - lib/kraken-mobile/constants.rb
148
+ - lib/kraken-mobile/device_process.rb
92
149
  - lib/kraken-mobile/helpers/command_helper.rb
93
150
  - lib/kraken-mobile/helpers/devices_helper/adb_helper.rb
94
151
  - lib/kraken-mobile/helpers/devices_helper/manager.rb
95
152
  - lib/kraken-mobile/helpers/feature_analyzer.rb
96
153
  - lib/kraken-mobile/helpers/feature_grouper.rb
154
+ - lib/kraken-mobile/helpers/kraken_faker.rb
97
155
  - lib/kraken-mobile/helpers/reporter.rb
156
+ - lib/kraken-mobile/hooks/mobile_kraken_hooks.rb
157
+ - lib/kraken-mobile/hooks/mobile_operations.rb
158
+ - lib/kraken-mobile/hooks/web_operations.rb
159
+ - lib/kraken-mobile/mobile/adb.rb
160
+ - lib/kraken-mobile/mobile/android_commands.rb
161
+ - lib/kraken-mobile/mobile/mobile_process.rb
162
+ - lib/kraken-mobile/models/android_device.rb
98
163
  - lib/kraken-mobile/models/device.rb
164
+ - lib/kraken-mobile/models/feature_file.rb
165
+ - lib/kraken-mobile/models/feature_scenario.rb
166
+ - lib/kraken-mobile/models/web_device.rb
167
+ - lib/kraken-mobile/monkeys/mobile/android_monkey.rb
168
+ - lib/kraken-mobile/monkeys/mobile/kraken_android_monkey.rb
169
+ - lib/kraken-mobile/monkeys/web/web_monkey.rb
99
170
  - lib/kraken-mobile/protocols/file_protocol.rb
100
171
  - lib/kraken-mobile/runners/calabash/android/android_runner.rb
101
172
  - lib/kraken-mobile/runners/calabash/android/apk_signer.rb
@@ -107,7 +178,17 @@ files:
107
178
  - lib/kraken-mobile/runners/calabash/android/steps/communication_steps.rb
108
179
  - lib/kraken-mobile/runners/calabash/monkey/monkey_runner.rb
109
180
  - lib/kraken-mobile/runners/runner.rb
181
+ - lib/kraken-mobile/steps/general_steps.rb
182
+ - lib/kraken-mobile/steps/mobile/kraken_steps.rb
183
+ - lib/kraken-mobile/steps/web/kraken_steps.rb
184
+ - lib/kraken-mobile/test_scenario.rb
185
+ - lib/kraken-mobile/utils/feature_reader.rb
186
+ - lib/kraken-mobile/utils/k.rb
187
+ - lib/kraken-mobile/utils/mobile_cucumber.rb
188
+ - lib/kraken-mobile/utils/reporter.rb
110
189
  - lib/kraken-mobile/version.rb
190
+ - lib/kraken-mobile/web/web_process.rb
191
+ - lib/kraken_mobile.rb
111
192
  - reporter/assets/css/bootstrap.min.css
112
193
  - reporter/assets/css/dataTables.bootstrap.min.css
113
194
  - reporter/assets/css/feature_index.css
@@ -126,6 +207,7 @@ files:
126
207
  - reporter/assets/fonts/glyphicons-halflings-regular.woff
127
208
  - reporter/assets/fonts/glyphicons-halflings-regular.woff2
128
209
  - reporter/assets/images/kraken.png
210
+ - reporter/assets/images/krakenThumbnail.jpg
129
211
  - reporter/assets/js/Chart.min.js
130
212
  - reporter/assets/js/bootstrap.min.js
131
213
  - reporter/assets/js/d3.chart.min.js
@@ -142,11 +224,11 @@ files:
142
224
  - reporter/feature_report.html.erb
143
225
  - reporter/index.html.erb
144
226
  - reporter/scenario_report.html.erb
145
- homepage: https://github.com/ravelinx22/KrakenMobile
227
+ homepage: https://github.com/TheSoftwareDesignLab/KrakenMobile
146
228
  licenses:
147
229
  - MIT
148
230
  metadata: {}
149
- post_install_message:
231
+ post_install_message:
150
232
  rdoc_options: []
151
233
  require_paths:
152
234
  - lib
@@ -161,9 +243,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
161
243
  - !ruby/object:Gem::Version
162
244
  version: '0'
163
245
  requirements: []
164
- rubyforge_project:
165
- rubygems_version: 2.6.14
166
- signing_key:
246
+ rubygems_version: 3.0.8
247
+ signing_key:
167
248
  specification_version: 4
168
249
  summary: Automated E2E mobile testing involving intercommunication scenarios.
169
250
  test_files: []
@@ -1,85 +0,0 @@
1
-
2
- #-------------------------------
3
- # Helpers
4
- #-------------------------------
5
- def ensure_apk_is_specified
6
- if ARGV.empty? || !is_apk_file?(ARGV.first)
7
- puts "The first parameter must be the path to a valid apk file."
8
- exit 1
9
- end
10
- end
11
-
12
- def ensure_configuration_is_valid configuration
13
- if !File.exist?(configuration) || !File.file?(configuration) || !configuration.end_with?(".json")
14
- puts "The path of the configuration file is not valid."
15
- exit 1
16
- end
17
- end
18
-
19
- def ensure_properties_is_valid properties
20
- if !File.exist?(properties) || !File.file?(properties) || !properties.end_with?(".json")
21
- puts "The path of the properties file is not valid."
22
- exit 1
23
- end
24
- end
25
-
26
- #-------------------------------
27
- # Command reader
28
- #-------------------------------
29
-
30
- @features_dir = File.join(FileUtils.pwd, "features")
31
- @support_dir = File.join(@features_dir, "support")
32
- @source_dir = File.join(File.dirname(__FILE__), '..', 'calabash-android-features-skeleton')
33
-
34
- def handle_calabash_android cmd, protocol, configuration, properties
35
- case cmd
36
- when 'gen'
37
- require File.join(File.dirname(__FILE__), "kraken-mobile-generate")
38
- kraken_scaffold()
39
- when 'resign'
40
- require 'calabash-android/helpers'
41
- ensure_apk_is_specified
42
- puts "Resigning APK with Calabash-Android"
43
- resign_apk(File.expand_path(ARGV.first))
44
- when 'monkey'
45
- require 'kraken-mobile/constants'
46
- require 'calabash-android/helpers'
47
- options = {
48
- runner: KrakenMobile::Constants::MONKEY,
49
- }
50
- if configuration
51
- ensure_configuration_is_valid File.expand_path(configuration)
52
- options[:config_path] = File.expand_path(configuration)
53
- else
54
- ensure_apk_is_specified
55
- options[:apk_path] = ARGV.first
56
- end
57
- # NOT AVAILABLE
58
- #kraken = KrakenMobile::App.new(options)
59
- #kraken.run_in_parallel
60
- when 'run'
61
- require 'kraken-mobile/constants'
62
- require 'calabash-android/helpers'
63
- options = {
64
- feature_folder: @features_dir,
65
- runner: KrakenMobile::Constants::CALABASH_ANDROID,
66
- protocol: protocol
67
- }
68
- if configuration
69
- ensure_configuration_is_valid File.expand_path(configuration)
70
- options[:config_path] = File.expand_path(configuration)
71
- else
72
- ensure_apk_is_specified
73
- options[:apk_path] = ARGV.first
74
- end
75
- if properties
76
- ensure_properties_is_valid File.expand_path(properties)
77
- options[:properties_path] = File.expand_path(properties)
78
- end
79
- kraken = KrakenMobile::App.new(options)
80
- kraken.run_in_parallel
81
- else
82
- puts "Invalid command '#{cmd}'"
83
- print_usage
84
- end
85
- end
@@ -1,19 +0,0 @@
1
- def kraken_scaffold
2
- if File.exists?(@features_dir)
3
- puts "A features directory already exists. Stopping..."
4
- exit 1
5
- end
6
- msg("Question") do
7
- puts "I'm about to create a subdirectory called features."
8
- puts "features will contain all your kraken tests."
9
- puts "Please hit return to confirm that's what you want."
10
- end
11
- exit 2 unless STDIN.gets.chomp == ''
12
-
13
- FileUtils.cp_r(@source_dir, @features_dir)
14
-
15
- msg("Info") do
16
- puts "features subdirectory created. \n"
17
- end
18
-
19
- end
@@ -1,48 +0,0 @@
1
- require "rubygems"
2
- require 'fileutils'
3
-
4
- #-------------------------------
5
- # Helpers
6
- #-------------------------------
7
-
8
- def print_usage
9
- puts <<EOF
10
- Usage: kraken-mobile <command-name> [parameters] [options]
11
- <command-name> can be one of
12
- run <apk>
13
- runs Cucumber in the current folder with the environment needed.
14
- version
15
- prints the gem version.
16
- devices
17
- prints the list of devices attached.
18
- setup
19
- creates kraken-settings file specifying in what devices the tests are going to be run.
20
- gen
21
- generate a features folder structure.
22
- resign <apk>
23
- resigns the app with the currently configured keystore.
24
- EOF
25
- end
26
-
27
- def print_devices
28
- runner = KrakenMobile::Constants::CALABASH_ANDROID
29
- device_manager = KrakenMobile::DevicesHelper::Manager.new({runner: runner})
30
- puts "List of devices attached"
31
- device_manager.connected_devices.each_with_index do |device, index|
32
- puts "user#{index+1} - #{device.id} - #{device.model}"
33
- end
34
- end
35
-
36
- def is_apk_file?(file_path)
37
- file_path.end_with? ".apk" and File.exist? file_path
38
- end
39
-
40
- def relative_to_full_path(file_path)
41
- File.expand_path(file_path)
42
- end
43
-
44
- def msg(title, &block)
45
- puts "\n" + "-"*10 + title + "-"*10
46
- block.call
47
- puts "-"*10 + "-------" + "-"*10 + "\n"
48
- end
@@ -1,50 +0,0 @@
1
- require "io/console"
2
- require "tty-prompt"
3
-
4
- def kraken_setup
5
- prompt = TTY::Prompt.new
6
- runner = KrakenMobile::Constants::CALABASH_ANDROID
7
- device_manager = KrakenMobile::DevicesHelper::Manager.new({runner: runner})
8
- @settings = []
9
-
10
- devices_connected = device_manager.connected_devices
11
- if devices_connected.count <= 0
12
- puts "No devices connected"
13
- exit 1
14
- end
15
- number_of_devices = -1
16
- while(number_of_devices <= 0 || number_of_devices > devices_connected.count)
17
- number_of_devices = prompt.ask("How many devices do you want to use?", convert: :int)
18
- prompt.error("Number of devices can't be less than 1.") if number_of_devices <= 0
19
- prompt.error("You only have #{devices_connected.count} devices connected.") if number_of_devices > devices_connected.count
20
- end
21
-
22
- devices_connected_id = devices_connected.map { |device| device.id }
23
- for i in 0...number_of_devices
24
- selected_device_id = prompt.select("Choose your user #{i+1}", devices_connected_id)
25
- valid_apk = false
26
- entered_apk_path = nil
27
-
28
- while(!valid_apk)
29
- entered_text = prompt.ask("What APK user #{i+1} is going to run?", required: true)
30
- entered_apk_path = File.expand_path(entered_text)
31
- valid_apk = is_apk_file?(File.expand_path(entered_apk_path))
32
- prompt.error("APK path is not valid.") unless valid_apk
33
- end
34
-
35
- device = devices_connected.select { |d| d.id == selected_device_id }.first
36
- @settings[i] = {
37
- id: device.id,
38
- model: device.model,
39
- config: {
40
- apk_path: entered_apk_path
41
- }
42
- }
43
- devices_connected_id.delete(selected_device_id)
44
- end
45
-
46
- open('kraken_mobile_settings.json', 'w') do |f|
47
- f.puts @settings.to_json
48
- end
49
- puts "Saved your settings to .kraken_mobile_settings. You can edit the settings manually or run this setup script again"
50
- end
@@ -1 +0,0 @@
1
- require 'kraken-mobile/runners/calabash/android/kraken_steps'
data/lib/kraken-mobile.rb DELETED
@@ -1,29 +0,0 @@
1
- require 'kraken-mobile/runners/calabash/android/android_runner'
2
- require 'kraken-mobile/runners/calabash/monkey/monkey_runner'
3
- require 'kraken-mobile/constants'
4
-
5
- module KrakenMobile
6
- class App
7
- # Constructors
8
- def initialize(options)
9
- @options = options
10
- @runner = current_runner
11
- end
12
-
13
- # Helpers
14
- def run_in_parallel
15
- @runner.run_in_parallel
16
- end
17
-
18
- def current_runner
19
- case @options[:runner]
20
- when KrakenMobile::Constants::CALABASH_ANDROID
21
- Runner::CalabashAndroidRunner.new(@options)
22
- when KrakenMobile::Constants::MONKEY
23
- Runner::MonkeyRunner.new(@options)
24
- else
25
- raise "Invalid Kraken runner."
26
- end
27
- end
28
- end
29
- end