Skip to content

Commit 9ff3920

Browse files
committed
connected reporter
1 parent 2a890d4 commit 9ff3920

File tree

11 files changed

+517
-18
lines changed

11 files changed

+517
-18
lines changed

lib/kraken-mobile/mobile/adb.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,13 @@ def save_snapshot_for_device_with_id_in_file_path(device_id:, file_path:)
3636
raise "ERROR: Can\'t save snapshot for device #{device_id}."
3737
end
3838

39+
def device_sdk_version(device_id:)
40+
version = sdk_version_for_device_with_id(device_id: device_id)
41+
version.strip
42+
rescue StandardError => _e
43+
raise "ERROR: Can\'t get SDK version for device #{device_id}."
44+
end
45+
3946
private
4047

4148
def extract_device_id(line)

lib/kraken-mobile/mobile/android_commands.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,9 @@ def screen_size_for_device_with_id(device_id:)
3535
def save_snapshot_for_device_with_id_in_path(device_id:, file_path:)
3636
`adb -s #{device_id} shell cat /sdcard/window_dump.xml > #{file_path}`
3737
end
38+
39+
def sdk_version_for_device_with_id(device_id:)
40+
`adb -s #{device_id} shell getprop ro.build.version.sdk`
41+
end
3842
end
3943
end

lib/kraken-mobile/mobile/mobile_process.rb

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require 'kraken-mobile/device_process.rb'
2+
require 'kraken-mobile/utils/k'
23

34
class MobileProcess < DeviceProcess
45
#-------------------------------
@@ -25,6 +26,19 @@ def execute
2526
nil
2627
end
2728

29+
#-------------------------------
30+
# Methods
31+
#-------------------------------
32+
33+
def apk_path
34+
return config_apk_path if @test_scenario.requires_predefined_devices?
35+
36+
path = @test_scenario&.kraken_app&.apk_path
37+
raise 'ERROR: Invalid APK file path' if path.nil?
38+
39+
path
40+
end
41+
2842
private
2943

3044
def execution_command
@@ -34,23 +48,15 @@ def execution_command
3448
process_apk_path = apk_path
3549
raise 'ERROR: Invalid APK file path' if process_apk_path.nil?
3650

37-
"|ADB_DEVICE_ARG=#{device.id} calabash-android run #{process_apk_path} \
38-
#{feature_path} --tags @user#{id}"
51+
"|ADB_DEVICE_ARG=#{device.id} calabash-android run #{process_apk_path} "\
52+
"#{feature_path} --tags @user#{id} --format pretty --format json -o "\
53+
"#{K::REPORT_PATH}/#{@test_scenario.execution_id}/#{device.id}/#{K::FILE_REPORT_NAME}" # TODO, folder to save all things
3954
end
4055

4156
#-------------------------------
4257
# Helpers
4358
#-------------------------------
4459

45-
def apk_path
46-
return config_apk_path if @test_scenario.requires_predefined_devices?
47-
48-
path = @test_scenario&.kraken_app&.apk_path
49-
raise 'ERROR: Invalid APK file path' if path.nil?
50-
51-
path
52-
end
53-
5460
def config_json
5561
config_absolute_path = File.expand_path(ENV[K::CONFIG_PATH])
5662
file = open(config_absolute_path)

lib/kraken-mobile/models/android_device.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ def screen_size
6868
[height, width]
6969
end
7070

71+
def sdk_version
72+
ADB.device_sdk_version(device_id: @id)
73+
end
74+
7175
def type
7276
K::ANDROID_DEVICE
7377
end

lib/kraken-mobile/models/device.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ def screen_size
6060
raise 'ERROR: screen_size not implemented.'
6161
end
6262

63+
def sdk_version
64+
raise 'ERROR: sdk_version not implemented.'
65+
end
66+
6367
def type
6468
raise 'ERROR: Unsupported device'
6569
end

lib/kraken-mobile/models/web_device.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ def screen_size
4444
[height, width]
4545
end
4646

47+
def sdk_version
48+
1.0 # Default
49+
end
50+
4751
def type
4852
K::WEB_DEVICE
4953
end

lib/kraken-mobile/test_scenario.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
require 'kraken-mobile/models/feature_file'
44
require 'kraken-mobile/models/web_device'
55
require 'kraken-mobile/web/web_process'
6+
require 'kraken-mobile/utils/reporter'
67
require 'kraken-mobile/mobile/adb'
78
require 'kraken-mobile/utils/k'
89
require 'parallel'
@@ -14,6 +15,8 @@ class TestScenario
1415
attr_accessor :devices
1516
attr_accessor :kraken_app
1617
attr_accessor :feature_file
18+
attr_accessor :execution_id
19+
attr_accessor :reporter
1720

1821
#-------------------------------
1922
# Constructors
@@ -22,6 +25,8 @@ def initialize(kraken_app:, feature_file_path:)
2225
@feature_file = FeatureFile.new(file_path: feature_file_path)
2326
@devices = sample_devices
2427
@kraken_app = kraken_app
28+
@execution_id = Digest::SHA256.hexdigest(Time.now.to_f.to_s)
29+
@reporter = Reporter.new(test_scenario: self)
2530
end
2631

2732
#-------------------------------
@@ -34,6 +39,7 @@ def before_execution
3439
K::PROCESS_STATE_FILE_PATH.each do |_state, file_path|
3540
File.delete(file_path) if File.exist?(file_path)
3641
end
42+
@reporter.create_report_folder_requirements
3743
end
3844

3945
def run
@@ -53,6 +59,7 @@ def after_execution
5359
K::PROCESS_STATE_FILE_PATH.each do |_state, file_path|
5460
File.delete(file_path) if File.exist?(file_path)
5561
end
62+
@reporter.save_report
5663
notify_scenario_finished
5764
end
5865

lib/kraken-mobile/utils/k.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,17 @@ module K
1515
ANDROID_DEVICE = 'ANDROID_DEVICE' unless defined? ANDROID_DEVICE
1616
PROPERTIES_PATH = 'PROPERTIES_PATH' unless defined? PROPERTIES_PATH
1717
CONFIG_PATH = 'CONFIG_PATH' unless defined? CONFIG_PATH
18+
REPORT_PATH = './reports' unless defined? REPORT_PATH
19+
FILE_REPORT_NAME = 'report.json' unless defined? FILE_REPORT_NAME
20+
D3_DATA_FILE_NAME = 'data.json' unless defined? D3_DATA_FILE_NAME
21+
22+
unless defined? DEVICES_REPORT_FILE_NAME
23+
DEVICES_REPORT_FILE_NAME = 'devices.json'
24+
end
25+
26+
unless defined? REPORT_ASSETS_PATH
27+
REPORT_ASSETS_PATH = '../../../../reporter/assets/'
28+
end
1829

1930
unless defined? DEFAULT_START_TIMEOUT_SECONDS
2031
DEFAULT_START_TIMEOUT_SECONDS = 600 # 10.minutes

0 commit comments

Comments
 (0)