fastlane-plugin-aws_device_farm 0.1.2 → 0.1.3.pre.alpha.pre.10

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.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 6b5c6ef71fff635990359dab99440428d3fca7fb
4
- data.tar.gz: 360892c6ec193211e24dd56465c3cdd5e46c7fc8
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZjRlYTMxZGIwOGE5YzEwOWE3ZGZlMTk0YzlhOTU0ZTlhNjg5YThjNw==
5
+ data.tar.gz: !binary |-
6
+ ZGIzMTNjMjc4OTdjN2Y0M2VlMDUxNmIxMzQ4MzQxNTZiMGUzYjI5NQ==
5
7
  SHA512:
6
- metadata.gz: 2e2d8e9a26e2d8089d8100aceaa1e8e55dba695de3795955a6bfa64fbd3e3cffa531dd984bf4d02bf9c639b5fb77facf3894ab3227b4b5077009f7b2ee4e5da2
7
- data.tar.gz: c6a4629431bf753f7fb5b8ac8db50a995add2cc9c16d1cd157b197acb2ade7d1d545f5da882248d1cdb566169117dcbda6bf4fdaefd75225ad7a0264f4792e62
8
+ metadata.gz: !binary |-
9
+ YzRiNzQyZTkxNDRjZWVhNWIwZjQxYmQ1OTMxMmUwMzk5YzczZWI1MGZjMmEy
10
+ ZWVhODJjYTZmYTBjNWI0YTQ0NmZkMWE3OWFlYjVhMDc0NGM0Njg4ODU1YmYx
11
+ NWQyMTZlNmEwZGM5YmMwNDgwZWMwNTI1MDljZjQ3ZmJjZTlhODQ=
12
+ data.tar.gz: !binary |-
13
+ NDBlMjQyMGMyYWI4Y2EyNGM3NjUwYTg4Yjc4MjE3Zjg0YzcwNjg1YTdhNGVj
14
+ YTZiNGU2OTg2NjQ2MGVlOGExOGUzNmI1YzJkZDQxOTM5MjAwZDUyZmY4M2Vl
15
+ YTVmNzgwZWJmMGFkYWY1ZDZmOTZmYTMzMTYxZjIxNmQzNWZkZmI=
data/README.md CHANGED
@@ -6,7 +6,10 @@
6
6
  ## About
7
7
  > This Plugin Allows XCUITests and android Instrumentation tests run on AWS device Farm
8
8
 
9
- ![Screenshot](assets/screen_done.png)
9
+
10
+ | iOS | Android | Fail |
11
+ |----------|-------------|-------------|
12
+ | ![Screenshot](assets/screen_done.png) | ![Screenshot](assets/screen_don_android.png)| ![Screenshot](assets/fail.png) |
10
13
 
11
14
 
12
15
 
@@ -22,86 +25,90 @@ Open your AWS dashboard and under `AWS-Device Farm` - configure your Device Pool
22
25
  Select the devices you want to run the tests on.
23
26
 
24
27
 
25
- ### Create a project
28
+ ### Create a project on AWS
26
29
  in this example we called this `fastlane`
27
30
 
28
- ## Example IOS
31
+ ## Example iOS
29
32
 
30
33
  ```ruby
31
- lane :aws_device_run do
34
+ lane :aws_device_run_ios do
32
35
  ENV['AWS_ACCESS_KEY_ID'] = 'xxxxx'
33
36
  ENV['AWS_SECRET_ACCESS_KEY'] = 'xxxxx'
34
37
  ENV['AWS_REGION'] = 'us-west-2'
35
-
36
- aws_device_farm(
37
- name: 'fastlane',
38
- binary_path: 'aws/packages/app.ipa',
39
- test_binary_path: 'aws/packages/runner.ipa',
40
- device_pool: 'IOS',
41
- wait_for_completion: true
38
+
39
+ #Build For Testing
40
+ xcodebuild(
41
+ scheme: 'UITests',
42
+ destination: 'generic/platform=iOS',
43
+ configuration: 'Development',
44
+ derivedDataPath: 'aws',
45
+ xcargs: "GCC_PREPROCESSOR_DEFINITIONS='AWS_UI_TEST' ENABLE_BITCODE=NO CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO build-for-testing"
46
+ )
47
+ # Transform .app into AWS compatible IPA
48
+ aws_device_farm_package(
49
+ derrived_data_path: "aws"
42
50
  )
51
+ # RUN tests on AWS Device Farm
52
+ aws_device_farm
43
53
  end
44
54
  ```
55
+
56
+
45
57
  ## Example Android
46
58
 
47
59
  ```ruby
48
- lane :aws_device_run do
60
+ lane :aws_device_run_android do
49
61
  ENV['AWS_ACCESS_KEY_ID'] = 'xxxxx'
50
62
  ENV['AWS_SECRET_ACCESS_KEY'] = 'xxxxx'
51
63
  ENV['AWS_REGION'] = 'us-west-2'
52
64
 
65
+ #Build Debug App + Instrumentation Apk
66
+ gradle(task: 'assembleDebug')
67
+ gradle(task: 'assembleAndroidTest')
68
+
69
+ # RUN tests on AWS Device Farm
53
70
  aws_device_farm(
54
- name: 'fastlane',
55
- binary_path: 'app.apk',
56
- test_binary_path: 'tests.apk',
57
- device_pool: 'ANDROID',
58
- wait_for_completion: true
71
+ binary_path: 'app/build/outputs/apk/app-debug.apk',
72
+ test_binary_path: 'app/build/outputs/apk/app-debug-androidTest-unaligned.apk'
59
73
  )
60
74
  end
61
75
  ```
62
76
 
77
+ ## Options
63
78
 
79
+ * **aws_device_farm**
80
+
81
+ | Option | Default | Description | Type |
82
+ |---|---|---|---|
83
+ | name | fastlane | AWS Device Farm Project Name | String |
84
+ | binary_path | | Path to App Binary | String |
85
+ | test_binary_path | | Path to App Binary | String |
86
+ | device_pool | IOS | AWS Device Farm Device Pool | String |
87
+ | wait_for_completion | true | Wait for Test-Run to be completed | Boolean |
64
88
 
65
- ## To get the IPA's (app and uitest runner)
66
- You could use something like this.
67
- after this you have `aws/packages/app.ipa` and `aws/packages/runner.ipa`
68
89
 
69
- ```ruby
70
- xcodebuild(
71
- clean: true,
72
- workspace: 'FiveXFive.xcworkspace',
73
- scheme: 'UITests',
74
- destination: 'generic/platform=iOS',
75
- configuration: 'Development',
76
- derivedDataPath: 'aws',
77
- xcargs: "GCC_PREPROCESSOR_DEFINITIONS='AWS_UI_TEST' ENABLE_BITCODE=NO build-for-testing"
78
- )
79
- FileUtils.rm_rf '../aws/packages'
80
- Dir['../aws/Build/Intermediates/CodeCoverage/Products/Development-iphoneos/*.app'].each do |app|
81
- if app.include? 'Runner'
82
- FileUtils.mkdir_p '../aws/packages/runner/Payload'
83
- FileUtils.cp_r app, '../aws/packages/runner/Payload'
84
- `cd ../aws/packages/runner/; zip -r ../runner.ipa .; cd -`
85
- else
86
- FileUtils.mkdir_p '../aws/packages/app/Payload'
87
- FileUtils.cp_r app, '../aws/packages/app/Payload'
88
- `cd ../aws/packages/app/; zip -r ../app.ipa .; cd -`
89
- end
90
- end
91
- ```
92
90
 
91
+ * **aws_device_farm_package**
93
92
 
94
- ## Issues and Feedback
93
+ | Option | Default | Description | Type |
94
+ |---|---|---|---|
95
+ | derrived_data_path | | Derrived Data Path, containing a `build-for-testing` derrived-data folder | String |
95
96
 
96
- For any other issues and feedback about this plugin, please submit it to this repository.
97
+
98
+
99
+ ## Credit
100
+ it is based on a custom action by @icapps (https://github.com/icapps/fastlane-configuration)
101
+ added the following:
102
+ * iOS Support for XCUITests
103
+ * support current `fastlane` version
104
+ * improve output
105
+ * make it available as a `fastlane` plugin
106
+
97
107
 
98
108
  ## Troubleshooting
99
109
 
100
110
  If you have trouble using plugins, check out the [Plugins Troubleshooting](https://github.com/fastlane/fastlane/blob/master/fastlane/docs/PluginsTroubleshooting.md) doc in the main `fastlane` repo.
101
111
 
102
- ## Using `fastlane` Plugins
103
-
104
- For more information about how the `fastlane` plugin system works, check out the [Plugins documentation](https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Plugins.md).
105
112
 
106
113
  ## About `fastlane`
107
114
 
@@ -18,7 +18,7 @@ module Fastlane
18
18
  raise "Device pool '#{params[:device_pool]}' not found. 🙈" if device_pool.nil?
19
19
 
20
20
  # Create the upload.
21
- path = File.join Dir.pwd, params[:binary_path]
21
+ path = File.expand_path(params[:binary_path])
22
22
  type = File.extname(path) == '.apk' ? 'ANDROID_APP' : 'IOS_APP'
23
23
  upload = create_project_upload project, path, type
24
24
 
@@ -29,7 +29,7 @@ module Fastlane
29
29
  # Upload the test package if needed.
30
30
  test_upload = nil
31
31
  if params[:test_binary_path]
32
- test_path = File.join Dir.pwd, params[:test_binary_path]
32
+ test_path = File.expand_path(params[:test_binary_path])
33
33
  if type == "ANDROID_APP"
34
34
  test_upload = create_project_upload project, test_path, 'INSTRUMENTATION_TEST_PACKAGE'
35
35
  else
@@ -86,6 +86,7 @@ module Fastlane
86
86
  env_name: 'FL_AWS_DEVICE_FARM_NAME',
87
87
  description: 'Define the name of the device farm project',
88
88
  is_string: true,
89
+ default_value: 'fastlane',
89
90
  optional: false
90
91
  ),
91
92
  FastlaneCore::ConfigItem.new(
@@ -95,8 +96,7 @@ module Fastlane
95
96
  is_string: true,
96
97
  optional: false,
97
98
  verify_block: proc do |value|
98
- path = File.join Dir.pwd, value
99
- raise "Application binary not found at path '#{path}'. 🙈".red unless File.exist?(path)
99
+ raise "Application binary not found at path '#{value}'. 🙈".red unless File.exist?(File.expand_path(value))
100
100
  end
101
101
  ),
102
102
  FastlaneCore::ConfigItem.new(
@@ -106,21 +106,25 @@ module Fastlane
106
106
  is_string: true,
107
107
  optional: true,
108
108
  verify_block: proc do |value|
109
- path = File.join Dir.pwd, value
110
- raise "Test binary not found at path '#{path}'. 🙈".red unless File.exist?(path)
109
+ raise "Test binary not found at path '#{value}'. 🙈".red unless File.exist?(File.expand_path(value))
111
110
  end
111
+
112
112
  ),
113
113
  FastlaneCore::ConfigItem.new(
114
114
  key: :path,
115
115
  env_name: 'FL_AWS_DEVICE_FARM_PATH',
116
116
  description: 'Define the path of the application binary (apk or ipa) to upload to the device farm project',
117
117
  is_string: true,
118
- optional: false
118
+ optional: false,
119
+ verify_block: proc do |value|
120
+ raise "Application binary not found at path '#{value}'. 🙈".red unless File.exist?(File.expand_path(value))
121
+ end
119
122
  ),
120
123
  FastlaneCore::ConfigItem.new(
121
124
  key: :device_pool,
122
125
  env_name: 'FL_AWS_DEVICE_FARM_POOL',
123
126
  description: 'Define the device pool you want to use for running the applications',
127
+ default_value: 'IOS',
124
128
  is_string: true,
125
129
  optional: false
126
130
  ),
@@ -150,8 +154,6 @@ module Fastlane
150
154
  platform == :ios || platform == :android
151
155
  end
152
156
 
153
- private
154
-
155
157
  POLLING_INTERVAL = 10
156
158
 
157
159
  def self.fetch_project(name)
@@ -0,0 +1,66 @@
1
+ module Fastlane
2
+ module Actions
3
+ class AwsDeviceFarmPackageAction < Action
4
+ def self.run(params)
5
+ FileUtils.rm_rf "#{File.expand_path(params[:derrived_data_path])}/packages"
6
+ Dir["#{File.expand_path(params[:derrived_data_path])}/Build/Intermediates/CodeCoverage/Products/Development-iphoneos/*.app"].each do |app|
7
+ if app.include? 'Runner'
8
+
9
+ FileUtils.mkdir_p "#{File.expand_path(params[:derrived_data_path])}/packages/runner/Payload"
10
+ FileUtils.cp_r app, "#{File.expand_path(params[:derrived_data_path])}/packages/runner/Payload"
11
+ Actions.sh "cd #{File.expand_path(params[:derrived_data_path])}/packages/runner/; zip --recurse-paths -D --quiet #{File.expand_path(params[:derrived_data_path])}/packages/runner.ipa .;"
12
+
13
+ ENV['FL_AWS_DEVICE_FARM_TEST_PATH'] = "#{File.expand_path(params[:derrived_data_path])}/packages/runner.ipa"
14
+ else
15
+
16
+ FileUtils.mkdir_p "#{File.expand_path(params[:derrived_data_path])}/packages/app/Payload"
17
+ FileUtils.cp_r app, "#{File.expand_path(params[:derrived_data_path])}/packages/app/Payload"
18
+ Actions.sh "cd #{File.expand_path(params[:derrived_data_path])}/packages/app/; zip --recurse-paths -D --quiet #{File.expand_path(params[:derrived_data_path])}/packages/app.ipa .;"
19
+
20
+ ENV['FL_AWS_DEVICE_FARM_PATH'] = "#{File.expand_path(params[:derrived_data_path])}/packages/app.ipa"
21
+
22
+ end
23
+ end
24
+ end
25
+
26
+ #####################################################
27
+ # @!group Documentation
28
+ #####################################################
29
+
30
+ def self.description
31
+ 'Packages .app from deriveddata to an aws-compatible ipa'
32
+ end
33
+
34
+ def self.details
35
+ 'Packages .app to .ipa'
36
+ end
37
+
38
+ def self.available_options
39
+ [
40
+ FastlaneCore::ConfigItem.new(
41
+ key: :derrived_data_path,
42
+ env_name: 'FL_AWS_DEVICE_FARM_DERIVED_DATA',
43
+ description: 'Derrived Data Path',
44
+ is_string: true,
45
+ optional: false
46
+ )
47
+ ]
48
+ end
49
+
50
+ def self.output
51
+ []
52
+ end
53
+
54
+ def self.return_value
55
+ end
56
+
57
+ def self.authors
58
+ ["hjanuschka"]
59
+ end
60
+
61
+ def self.is_supported?(platform)
62
+ platform == :ios || platform == :android
63
+ end
64
+ end
65
+ end
66
+ end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module AwsDeviceFarm
3
- VERSION = "0.1.2"
3
+ VERSION = "0.1.3"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,111 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-aws_device_farm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3.pre.alpha.pre.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Helmut Januschka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-11 00:00:00.000000000 Z
11
+ date: 2016-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - ! '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - ! '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pry
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - ! '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - ! '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - ! '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - ! '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - ! '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - ! '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rubocop
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - ! '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - ! '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: fastlane
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - ! '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: 1.105.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - ! '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: 1.105.0
111
111
  description:
@@ -118,6 +118,7 @@ files:
118
118
  - README.md
119
119
  - lib/fastlane/plugin/aws_device_farm.rb
120
120
  - lib/fastlane/plugin/aws_device_farm/actions/aws_device_farm_action.rb
121
+ - lib/fastlane/plugin/aws_device_farm/actions/aws_device_farm_package.rb
121
122
  - lib/fastlane/plugin/aws_device_farm/helper/aws_device_farm_helper.rb
122
123
  - lib/fastlane/plugin/aws_device_farm/version.rb
123
124
  homepage: https://github.com/hjanuschka/fastlane-plugin-aws_device_farm
@@ -130,17 +131,17 @@ require_paths:
130
131
  - lib
131
132
  required_ruby_version: !ruby/object:Gem::Requirement
132
133
  requirements:
133
- - - ">="
134
+ - - ! '>='
134
135
  - !ruby/object:Gem::Version
135
136
  version: '0'
136
137
  required_rubygems_version: !ruby/object:Gem::Requirement
137
138
  requirements:
138
- - - ">="
139
+ - - ! '>'
139
140
  - !ruby/object:Gem::Version
140
- version: '0'
141
+ version: 1.3.1
141
142
  requirements: []
142
143
  rubyforge_project:
143
- rubygems_version: 2.4.8
144
+ rubygems_version: 2.4.5
144
145
  signing_key:
145
146
  specification_version: 4
146
147
  summary: Run UI Tests on AWS Devicefarm