fastlane-plugin-browserstack 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ccb7886b844e0140c328aa55be44dba043bf1f34e35d5ca5ac8fd08b52139e52
4
- data.tar.gz: 77374e5968af3c0d59b8bab572cd30cba18907dea3652a78a44f4d1e80dc2492
3
+ metadata.gz: 15a1011f5cb81188007410f51847f406d47034f022e299af044f57777e4e0e54
4
+ data.tar.gz: 1cb3247472102baf837df8be19c95088800248eab4fc0dea783d63b4cdb8aaf0
5
5
  SHA512:
6
- metadata.gz: b86a0abf7a9af9cadb98000cfcb4244026675499da55be47f752cc4a66ec454aed14fb4d04eef737a540ad8287df4b986c14af9257d16057b60fb657347adbdf
7
- data.tar.gz: cc186b6bc2d13757a7db57863243e6a36bc9b7f92c936f25250bb4bb203fd26141908f414b5b737987e127eac03581e4c74d274f6523c7bd5f5208af2bd5a4e2
6
+ metadata.gz: 2226322f19bc79017d784494fd6a892c3fd9a9844631b7c3d9ee5e056fe7de5ad510e8a581f09f9f06cdfe1c480c999da944d51437b3280e03486ff09021293b
7
+ data.tar.gz: c809023ec0abf8cbe19fba30abc9998df99cb08976ea06dd2349f65a81510e74bbbbd4edb528d055acfafa414a4d70929fabe7ff5273f35c7effc3a28b468fb7
data/README.md CHANGED
@@ -12,7 +12,7 @@ fastlane add_plugin browserstack
12
12
 
13
13
  ## About browserstack
14
14
 
15
- Uploads IPA and APK files to BrowserStack for automation testing.
15
+ Uploads IPA and APK files to BrowserStack for automation and manual testing.
16
16
 
17
17
  ## Example
18
18
 
@@ -40,7 +40,7 @@ module Fastlane
40
40
  # Validate file extension.
41
41
  file_path_parts = file_path.split(".")
42
42
  unless file_path_parts.length > 1 && SUPPORTED_FILE_EXTENSIONS.include?(file_path_parts.last)
43
- UI.user_error!("file_path is invalid, only files with extensions apk and ipa are allowed to be uploaded.")
43
+ UI.user_error!("file_path is invalid, only files with extensions " + SUPPORTED_FILE_EXTENSIONS.to_s + " are allowed to be uploaded.")
44
44
  end
45
45
  end
46
46
 
@@ -64,7 +64,6 @@ module Fastlane
64
64
 
65
65
  def self.default_file_path
66
66
  platform = Actions.lane_context[Actions::SharedValues::PLATFORM_NAME]
67
-
68
67
  if platform == :ios
69
68
  # Shared value for ipa path if it was generated by gym https://docs.fastlane.tools/actions/gym/.
70
69
  return Actions.lane_context[Actions::SharedValues::IPA_OUTPUT_PATH]
@@ -0,0 +1,116 @@
1
+ require 'fastlane/action'
2
+ require_relative '../helper/browserstack_helper'
3
+ require 'json'
4
+
5
+ module Fastlane
6
+ module Actions
7
+ module SharedValues
8
+ BROWSERSTACK_LIVE_APP_ID ||= :BROWSERSTACK_LIVE_APP_ID
9
+ end
10
+ class UploadToBrowserstackAppLiveAction < Action
11
+ SUPPORTED_FILE_EXTENSIONS = ["apk", "ipa"]
12
+ UPLOAD_API_ENDPOINT = "https://api-cloud.browserstack.com/app-live/upload"
13
+
14
+ def self.run(params)
15
+ browserstack_username = params[:browserstack_username] # Required
16
+ browserstack_access_key = params[:browserstack_access_key] # Required
17
+ file_path = params[:file_path].to_s # Required
18
+
19
+ validate_file_path(file_path)
20
+
21
+ UI.message("Uploading app to BrowserStack AppLive...")
22
+
23
+ browserstack_app_id = Helper::BrowserstackHelper.upload_file(browserstack_username, browserstack_access_key, file_path, UPLOAD_API_ENDPOINT)
24
+
25
+ # Set 'BROWSERSTACK_APP_ID' environment variable, if app upload was successful.
26
+ ENV['BROWSERSTACK_LIVE_APP_ID'] = browserstack_app_id
27
+
28
+ UI.success("Successfully uploaded app " + file_path + " to BrowserStack AppLive with app_url : " + browserstack_app_id)
29
+
30
+ UI.success("Setting Environment variable BROWSERSTACK_LIVE_APP_ID = " + browserstack_app_id)
31
+
32
+ # Setting app id in SharedValues, which can be used by other fastlane actions.
33
+ Actions.lane_context[SharedValues::BROWSERSTACK_LIVE_APP_ID] = browserstack_app_id
34
+ end
35
+
36
+ # Validate file_path.
37
+ def self.validate_file_path(file_path)
38
+ UI.user_error!("No file found at '#{file_path}'.") unless File.exist?(file_path)
39
+
40
+ # Validate file extension.
41
+ file_path_parts = file_path.split(".")
42
+ unless file_path_parts.length > 1 && SUPPORTED_FILE_EXTENSIONS.include?(file_path_parts.last)
43
+ UI.user_error!("file_path is invalid, only files with extensions " + SUPPORTED_FILE_EXTENSIONS.to_s + " are allowed to be uploaded.")
44
+ end
45
+ end
46
+
47
+ def self.description
48
+ "Uploads IPA and APK files to BrowserStack AppLive for running manual tests."
49
+ end
50
+
51
+ def self.authors
52
+ ["Hitesh Raghuvanshi"]
53
+ end
54
+
55
+ def self.details
56
+ "Uploads IPA and APK files to BrowserStack AppLive for running manual tests."
57
+ end
58
+
59
+ def self.output
60
+ [
61
+ ['BROWSERSTACK_LIVE_APP_ID', 'App id of uploaded app.']
62
+ ]
63
+ end
64
+
65
+ def self.default_file_path
66
+ platform = Actions.lane_context[Actions::SharedValues::PLATFORM_NAME]
67
+ if platform == :ios
68
+ # Shared value for ipa path if it was generated by gym https://docs.fastlane.tools/actions/gym/.
69
+ return Actions.lane_context[Actions::SharedValues::IPA_OUTPUT_PATH]
70
+ else
71
+ # Shared value for apk if it was generated by gradle.
72
+ return Actions.lane_context[Actions::SharedValues::GRADLE_APK_OUTPUT_PATH]
73
+ end
74
+ end
75
+
76
+ def self.available_options
77
+ [
78
+ FastlaneCore::ConfigItem.new(key: :browserstack_username,
79
+ description: "BrowserStack's username",
80
+ optional: false,
81
+ is_string: true,
82
+ verify_block: proc do |value|
83
+ UI.user_error!("No browserstack_username given.") if value.to_s.empty?
84
+ end),
85
+ FastlaneCore::ConfigItem.new(key: :browserstack_access_key,
86
+ description: "BrowserStack's access key",
87
+ optional: false,
88
+ is_string: true,
89
+ verify_block: proc do |value|
90
+ UI.user_error!("No browserstack_access_key given.") if value.to_s.empty?
91
+ end),
92
+ FastlaneCore::ConfigItem.new(key: :file_path,
93
+ description: "Path to the app file",
94
+ optional: true,
95
+ is_string: true,
96
+ default_value: default_file_path)
97
+ ]
98
+ end
99
+
100
+ def self.is_supported?(platform)
101
+ [:ios, :android].include?(platform)
102
+ end
103
+
104
+ def self.example_code
105
+ [
106
+ 'upload_to_browserstack_app_live',
107
+ 'upload_to_browserstack_app_live(
108
+ browserstack_username: ENV["BROWSERSTACK_USERNAME"],
109
+ browserstack_access_key: ENV["BROWSERSTACK_ACCESS_KEY"],
110
+ file_path: "path_to_apk_or_ipa_file"
111
+ )'
112
+ ]
113
+ end
114
+ end
115
+ end
116
+ end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module Browserstack
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-browserstack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - BrowserStack
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-13 00:00:00.000000000 Z
11
+ date: 2018-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -166,6 +166,7 @@ files:
166
166
  - README.md
167
167
  - lib/fastlane/plugin/browserstack.rb
168
168
  - lib/fastlane/plugin/browserstack/actions/upload_to_browserstack_app_automate_action.rb
169
+ - lib/fastlane/plugin/browserstack/actions/upload_to_browserstack_app_live_action.rb
169
170
  - lib/fastlane/plugin/browserstack/helper/browserstack_helper.rb
170
171
  - lib/fastlane/plugin/browserstack/version.rb
171
172
  homepage: https://github.com/browserstack/browserstack-fastlane-plugin
@@ -191,5 +192,5 @@ rubyforge_project:
191
192
  rubygems_version: 2.7.6
192
193
  signing_key:
193
194
  specification_version: 4
194
- summary: Uploads IPA and APK files to BrowserStack for automation testing.
195
+ summary: Uploads IPA and APK files to BrowserStack for automation and manual testing.
195
196
  test_files: []