fastlane-plugin-browserstack 0.2.0 → 0.3.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: 15a1011f5cb81188007410f51847f406d47034f022e299af044f57777e4e0e54
4
- data.tar.gz: 1cb3247472102baf837df8be19c95088800248eab4fc0dea783d63b4cdb8aaf0
3
+ metadata.gz: 55584378299e9edec8b0e2982d7c9f66941554625689d41af193718fa87d5440
4
+ data.tar.gz: 115f1239640f5283712744662793952532c10300542038f4b90e84250515ccaf
5
5
  SHA512:
6
- metadata.gz: 2226322f19bc79017d784494fd6a892c3fd9a9844631b7c3d9ee5e056fe7de5ad510e8a581f09f9f06cdfe1c480c999da944d51437b3280e03486ff09021293b
7
- data.tar.gz: c809023ec0abf8cbe19fba30abc9998df99cb08976ea06dd2349f65a81510e74bbbbd4edb528d055acfafa414a4d70929fabe7ff5273f35c7effc3a28b468fb7
6
+ metadata.gz: fbd5d95f8b12bacf1af867d90e24a72c859346ad38139530c60f741967b76034faa1fd9624fdcef0e636d806ff5478c94a7dc7479ac174d0154052d4028f6878
7
+ data.tar.gz: f3bc87d0b59893d2dcae92af2cf934986033fc01c2d561ad80c83cc2b08e4d406763791a35aa7c26098ad7feb4f28c34fb215bda0c57d2119f2e336ab7a6f4a4
data/README.md CHANGED
@@ -18,6 +18,8 @@ Uploads IPA and APK files to BrowserStack for automation and manual testing.
18
18
 
19
19
  Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plugin. Try it by including that in your project's Fastfile, running `fastlane install_plugins` and `bundle exec fastlane test`.
20
20
 
21
+ Please refer this [sample android project](https://github.com/browserstack/browserstack-android-sample-app), which demonstrates the use of this plugin.
22
+
21
23
  ## Run tests for this plugin
22
24
 
23
25
  To run both the tests, and code style validation, run
@@ -14,13 +14,14 @@ module Fastlane
14
14
  def self.run(params)
15
15
  browserstack_username = params[:browserstack_username] # Required
16
16
  browserstack_access_key = params[:browserstack_access_key] # Required
17
+ browserstack_custom_id = params[:browserstack_custom_id]
17
18
  file_path = params[:file_path].to_s # Required
18
19
 
19
20
  validate_file_path(file_path)
20
21
 
21
22
  UI.message("Uploading app to BrowserStack AppAutomate...")
22
23
 
23
- browserstack_app_id = Helper::BrowserstackHelper.upload_file(browserstack_username, browserstack_access_key, file_path, UPLOAD_API_ENDPOINT)
24
+ browserstack_app_id = Helper::BrowserstackHelper.upload_file(browserstack_username, browserstack_access_key, file_path, UPLOAD_API_ENDPOINT, browserstack_custom_id)
24
25
 
25
26
  # Set 'BROWSERSTACK_APP_ID' environment variable, if app upload was successful.
26
27
  ENV['BROWSERSTACK_APP_ID'] = browserstack_app_id
@@ -89,6 +90,10 @@ module Fastlane
89
90
  verify_block: proc do |value|
90
91
  UI.user_error!("No browserstack_access_key given.") if value.to_s.empty?
91
92
  end),
93
+ FastlaneCore::ConfigItem.new(key: :browserstack_custom_id,
94
+ description: "BrowserStack's custom id",
95
+ optional: true,
96
+ is_string: true),
92
97
  FastlaneCore::ConfigItem.new(key: :file_path,
93
98
  description: "Path to the app file",
94
99
  optional: true,
@@ -17,29 +17,50 @@ module Fastlane
17
17
  # Params :
18
18
  # +browserstack_username+:: BrowserStack's username.
19
19
  # +browserstack_access_key+:: BrowserStack's access key.
20
+ # +browserstack_custom_id+:: BrowserStacks's custom id.
20
21
  # +file_path+:: Path to the file to be uploaded.
21
22
  # +url+:: BrowserStack's app upload endpoint.
22
- def self.upload_file(browserstack_username, browserstack_access_key, file_path, url)
23
+ def self.upload_file(browserstack_username, browserstack_access_key, file_path, url, browserstack_custom_id = nil)
24
+ payload = {
25
+ multipart: true,
26
+ file: File.new(file_path, 'rb')
27
+ }
28
+
29
+ unless browserstack_custom_id.nil?
30
+ payload[:data] = '{ "custom_id": "' + browserstack_custom_id + '" }'
31
+ end
32
+
33
+ headers = {
34
+ "User-Agent" => "browserstack_fastlane_plugin"
35
+ }
23
36
  begin
24
37
  response = RestClient::Request.execute(
25
38
  method: :post,
26
39
  url: url,
27
40
  user: browserstack_username,
28
41
  password: browserstack_access_key,
29
- payload: {
30
- multipart: true,
31
- file: File.new(file_path, 'rb')
32
- }
42
+ payload: payload,
43
+ headers: headers
33
44
  )
34
- rescue RestClient::ExceptionWithResponse => err
35
- error_response = err.response
36
- end
37
45
 
38
- # Return app_url if file was uploaded successfully.
39
- return JSON.parse(response.to_s)["app_url"] unless response.nil?
46
+ response_json = JSON.parse(response.to_s)
40
47
 
41
- # Give error if upload failed.
42
- UI.user_error!("App upload failed!!! Reason : " + JSON.parse(error_response.to_s)["error"]) unless error_response.nil?
48
+ if !response_json["custom_id"].nil?
49
+ return response_json["custom_id"]
50
+ else
51
+ return response_json["app_url"]
52
+ end
53
+ rescue RestClient::ExceptionWithResponse => err
54
+ begin
55
+ error_response = JSON.parse(err.response.to_s)["error"]
56
+ rescue
57
+ error_response = "Internal server error"
58
+ end
59
+ # Give error if upload failed.
60
+ UI.user_error!("App upload failed!!! Reason : #{error_response}")
61
+ rescue StandardError => error
62
+ UI.user_error!("App upload failed!!! Reason : #{error.message}")
63
+ end
43
64
  end
44
65
  end
45
66
  end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module Browserstack
3
- VERSION = "0.2.0"
3
+ VERSION = "0.3.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.2.0
4
+ version: 0.3.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-15 00:00:00.000000000 Z
11
+ date: 2019-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client