fastlane 2.211.0 → 2.212.1
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 +4 -4
- data/README.md +96 -96
- data/deliver/lib/deliver/app_screenshot.rb +1 -0
- data/deliver/lib/deliver/runner.rb +2 -6
- data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +19 -2
- data/fastlane/lib/fastlane/actions/pod_lib_lint.rb +1 -1
- data/fastlane/lib/fastlane/actions/update_project_provisioning.rb +1 -1
- data/fastlane/lib/fastlane/actions/xcodes.rb +17 -2
- data/fastlane/lib/fastlane/fast_file.rb +18 -5
- data/fastlane/lib/fastlane/features.rb +3 -0
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Actions.swift +1 -1
- data/fastlane/swift/Appfile.swift +1 -1
- data/fastlane/swift/ArgumentProcessor.swift +1 -1
- data/fastlane/swift/Atomic.swift +1 -1
- data/fastlane/swift/ControlCommand.swift +1 -1
- data/fastlane/swift/Deliverfile.swift +2 -2
- data/fastlane/swift/DeliverfileProtocol.swift +2 -2
- data/fastlane/swift/Fastlane.swift +30 -6
- data/fastlane/swift/Gymfile.swift +2 -2
- data/fastlane/swift/GymfileProtocol.swift +6 -2
- data/fastlane/swift/LaneFileProtocol.swift +1 -1
- data/fastlane/swift/MainProcess.swift +1 -1
- data/fastlane/swift/Matchfile.swift +2 -2
- data/fastlane/swift/MatchfileProtocol.swift +3 -3
- data/fastlane/swift/OptionalConfigValue.swift +1 -1
- data/fastlane/swift/Plugins.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +2 -2
- data/fastlane/swift/PrecheckfileProtocol.swift +2 -2
- data/fastlane/swift/RubyCommand.swift +1 -1
- data/fastlane/swift/RubyCommandable.swift +1 -1
- data/fastlane/swift/Runner.swift +1 -1
- data/fastlane/swift/RunnerArgument.swift +1 -1
- data/fastlane/swift/Scanfile.swift +2 -2
- data/fastlane/swift/ScanfileProtocol.swift +6 -2
- data/fastlane/swift/Screengrabfile.swift +2 -2
- data/fastlane/swift/ScreengrabfileProtocol.swift +2 -2
- data/fastlane/swift/Snapshotfile.swift +2 -2
- data/fastlane/swift/SnapshotfileProtocol.swift +2 -2
- data/fastlane/swift/SocketClient.swift +1 -1
- data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
- data/fastlane/swift/SocketResponse.swift +1 -1
- data/fastlane/swift/formatting/Brewfile.lock.json +26 -18
- data/fastlane/swift/main.swift +1 -1
- data/fastlane_core/lib/fastlane_core/cert_checker.rb +9 -2
- data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +4 -2
- data/gym/lib/gym/generators/build_command_generator.rb +1 -0
- data/gym/lib/gym/options.rb +7 -0
- data/match/lib/match/importer.rb +4 -0
- data/match/lib/match/module.rb +1 -1
- data/scan/lib/scan/options.rb +5 -0
- data/scan/lib/scan/test_command_generator.rb +6 -1
- data/spaceship/lib/spaceship/client.rb +23 -0
- data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +17 -0
- data/spaceship/lib/spaceship/connect_api/models/build_bundle.rb +9 -0
- data/spaceship/lib/spaceship/connect_api/models/build_bundle_file_sizes.rb +34 -0
- data/spaceship/lib/spaceship/connect_api/models/device.rb +44 -4
- data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +19 -0
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +9 -0
- data/spaceship/lib/spaceship/connect_api.rb +1 -0
- data/spaceship/lib/spaceship/errors.rb +34 -0
- data/spaceship/lib/spaceship/hashcash.rb +52 -0
- data/spaceship/lib/spaceship/two_step_or_factor_client.rb +10 -2
- data/spaceship/lib/spaceship.rb +1 -0
- metadata +24 -22
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 244364fbe5e40c851dc1afbb79fe8c79ba76fedee6e607d7cf950f043ba7b921
|
|
4
|
+
data.tar.gz: 5f4f4f4462eb64a87ed63df0ece646c100ae8d3a0c37a84eff9cbad76f51c2a8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ae5c7a99e698db70b74516d415601ee4368fa864cd114a867d44098e0e52a2b68a361fc0178f902c0f0e6fefe3618639a259c92bde33906cb6a0501aa82d18e2
|
|
7
|
+
data.tar.gz: b736ceec481316c6d9cde333299bff4c8145e5b11f5e802acb60a9c59028c9a9444a7a771dcf8f21f952a3cd64e2959e7a87ae224fecad503e34a1d032481123
|
data/README.md
CHANGED
|
@@ -35,29 +35,23 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
35
35
|
<!-- This table is regenerated and resorted on each release -->
|
|
36
36
|
<table id='team'>
|
|
37
37
|
<tr>
|
|
38
|
-
<td id='
|
|
39
|
-
<a href='https://github.com/
|
|
40
|
-
<img src='https://github.com/
|
|
41
|
-
</a>
|
|
42
|
-
<h4 align='center'>Łukasz Grabowski</h4>
|
|
43
|
-
</td>
|
|
44
|
-
<td id='luka-mirosevic'>
|
|
45
|
-
<a href='https://github.com/lmirosevic'>
|
|
46
|
-
<img src='https://github.com/lmirosevic.png' width='140px;'>
|
|
38
|
+
<td id='roger-oba'>
|
|
39
|
+
<a href='https://github.com/rogerluan'>
|
|
40
|
+
<img src='https://github.com/rogerluan.png' width='140px;'>
|
|
47
41
|
</a>
|
|
48
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
42
|
+
<h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
|
|
49
43
|
</td>
|
|
50
|
-
<td id='
|
|
51
|
-
<a href='https://github.com/
|
|
52
|
-
<img src='https://github.com/
|
|
44
|
+
<td id='fumiya-nakamura'>
|
|
45
|
+
<a href='https://github.com/nafu'>
|
|
46
|
+
<img src='https://github.com/nafu.png' width='140px;'>
|
|
53
47
|
</a>
|
|
54
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
48
|
+
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
|
55
49
|
</td>
|
|
56
|
-
<td id='
|
|
57
|
-
<a href='https://github.com/
|
|
58
|
-
<img src='https://github.com/
|
|
50
|
+
<td id='josh-holtz'>
|
|
51
|
+
<a href='https://github.com/joshdholtz'>
|
|
52
|
+
<img src='https://github.com/joshdholtz.png' width='140px;'>
|
|
59
53
|
</a>
|
|
60
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
54
|
+
<h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
|
|
61
55
|
</td>
|
|
62
56
|
<td id='daniel-jankowski'>
|
|
63
57
|
<a href='https://github.com/mollyIV'>
|
|
@@ -65,25 +59,19 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
65
59
|
</a>
|
|
66
60
|
<h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
|
|
67
61
|
</td>
|
|
68
|
-
|
|
69
|
-
<
|
|
70
|
-
<
|
|
71
|
-
<a href='https://github.com/giginet'>
|
|
72
|
-
<img src='https://github.com/giginet.png' width='140px;'>
|
|
73
|
-
</a>
|
|
74
|
-
<h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
|
|
75
|
-
</td>
|
|
76
|
-
<td id='stefan-natchev'>
|
|
77
|
-
<a href='https://github.com/snatchev'>
|
|
78
|
-
<img src='https://github.com/snatchev.png' width='140px;'>
|
|
62
|
+
<td id='jan-piotrowski'>
|
|
63
|
+
<a href='https://github.com/janpio'>
|
|
64
|
+
<img src='https://github.com/janpio.png' width='140px;'>
|
|
79
65
|
</a>
|
|
80
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
66
|
+
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
|
|
81
67
|
</td>
|
|
82
|
-
|
|
83
|
-
<
|
|
84
|
-
<
|
|
68
|
+
</tr>
|
|
69
|
+
<tr>
|
|
70
|
+
<td id='satoshi-namai'>
|
|
71
|
+
<a href='https://github.com/ainame'>
|
|
72
|
+
<img src='https://github.com/ainame.png' width='140px;'>
|
|
85
73
|
</a>
|
|
86
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
74
|
+
<h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
|
|
87
75
|
</td>
|
|
88
76
|
<td id='danielle-tomlinson'>
|
|
89
77
|
<a href='https://github.com/endocrimes'>
|
|
@@ -91,43 +79,23 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
91
79
|
</a>
|
|
92
80
|
<h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
|
|
93
81
|
</td>
|
|
94
|
-
<td id='
|
|
95
|
-
<a href='https://github.com/
|
|
96
|
-
<img src='https://github.com/
|
|
82
|
+
<td id='stefan-natchev'>
|
|
83
|
+
<a href='https://github.com/snatchev'>
|
|
84
|
+
<img src='https://github.com/snatchev.png' width='140px;'>
|
|
97
85
|
</a>
|
|
98
|
-
<h4 align='center'>
|
|
86
|
+
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
|
99
87
|
</td>
|
|
100
|
-
</tr>
|
|
101
|
-
<tr>
|
|
102
88
|
<td id='matthew-ellis'>
|
|
103
89
|
<a href='https://github.com/matthewellis'>
|
|
104
90
|
<img src='https://github.com/matthewellis.png' width='140px;'>
|
|
105
91
|
</a>
|
|
106
92
|
<h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
|
|
107
93
|
</td>
|
|
108
|
-
<td id='
|
|
109
|
-
<a href='https://github.com/
|
|
110
|
-
<img src='https://github.com/
|
|
111
|
-
</a>
|
|
112
|
-
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
|
113
|
-
</td>
|
|
114
|
-
<td id='andrew-mcburney'>
|
|
115
|
-
<a href='https://github.com/armcburney'>
|
|
116
|
-
<img src='https://github.com/armcburney.png' width='140px;'>
|
|
117
|
-
</a>
|
|
118
|
-
<h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
|
|
119
|
-
</td>
|
|
120
|
-
<td id='manu-wallner'>
|
|
121
|
-
<a href='https://github.com/milch'>
|
|
122
|
-
<img src='https://github.com/milch.png' width='140px;'>
|
|
123
|
-
</a>
|
|
124
|
-
<h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
|
|
125
|
-
</td>
|
|
126
|
-
<td id='max-ott'>
|
|
127
|
-
<a href='https://github.com/max-ott'>
|
|
128
|
-
<img src='https://github.com/max-ott.png' width='140px;'>
|
|
94
|
+
<td id='iulian-onofrei'>
|
|
95
|
+
<a href='https://github.com/revolter'>
|
|
96
|
+
<img src='https://github.com/revolter.png' width='140px;'>
|
|
129
97
|
</a>
|
|
130
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
98
|
+
<h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
|
|
131
99
|
</td>
|
|
132
100
|
</tr>
|
|
133
101
|
<tr>
|
|
@@ -137,37 +105,75 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
137
105
|
</a>
|
|
138
106
|
<h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
|
|
139
107
|
</td>
|
|
108
|
+
<td id='maksym-grebenets'>
|
|
109
|
+
<a href='https://github.com/mgrebenets'>
|
|
110
|
+
<img src='https://github.com/mgrebenets.png' width='140px;'>
|
|
111
|
+
</a>
|
|
112
|
+
<h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
|
|
113
|
+
</td>
|
|
114
|
+
<td id='luka-mirosevic'>
|
|
115
|
+
<a href='https://github.com/lmirosevic'>
|
|
116
|
+
<img src='https://github.com/lmirosevic.png' width='140px;'>
|
|
117
|
+
</a>
|
|
118
|
+
<h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
|
|
119
|
+
</td>
|
|
140
120
|
<td id='manish-rathi'>
|
|
141
121
|
<a href='https://github.com/crazymanish'>
|
|
142
122
|
<img src='https://github.com/crazymanish.png' width='140px;'>
|
|
143
123
|
</a>
|
|
144
124
|
<h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
|
|
145
125
|
</td>
|
|
146
|
-
<td id='
|
|
147
|
-
<a href='https://github.com/
|
|
148
|
-
<img src='https://github.com/
|
|
126
|
+
<td id='felix-krause'>
|
|
127
|
+
<a href='https://github.com/KrauseFx'>
|
|
128
|
+
<img src='https://github.com/KrauseFx.png' width='140px;'>
|
|
149
129
|
</a>
|
|
150
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
130
|
+
<h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
|
|
151
131
|
</td>
|
|
152
|
-
|
|
153
|
-
<
|
|
154
|
-
<
|
|
132
|
+
</tr>
|
|
133
|
+
<tr>
|
|
134
|
+
<td id='helmut-januschka'>
|
|
135
|
+
<a href='https://github.com/hjanuschka'>
|
|
136
|
+
<img src='https://github.com/hjanuschka.png' width='140px;'>
|
|
155
137
|
</a>
|
|
156
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
138
|
+
<h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
|
|
157
139
|
</td>
|
|
158
|
-
<td id='
|
|
159
|
-
<a href='https://github.com/
|
|
160
|
-
<img src='https://github.com/
|
|
140
|
+
<td id='olivier-halligon'>
|
|
141
|
+
<a href='https://github.com/AliSoftware'>
|
|
142
|
+
<img src='https://github.com/AliSoftware.png' width='140px;'>
|
|
161
143
|
</a>
|
|
162
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
144
|
+
<h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
|
|
145
|
+
</td>
|
|
146
|
+
<td id='łukasz-grabowski'>
|
|
147
|
+
<a href='https://github.com/lucgrabowski'>
|
|
148
|
+
<img src='https://github.com/lucgrabowski.png' width='140px;'>
|
|
149
|
+
</a>
|
|
150
|
+
<h4 align='center'>Łukasz Grabowski</h4>
|
|
151
|
+
</td>
|
|
152
|
+
<td id='kohki-miki'>
|
|
153
|
+
<a href='https://github.com/giginet'>
|
|
154
|
+
<img src='https://github.com/giginet.png' width='140px;'>
|
|
155
|
+
</a>
|
|
156
|
+
<h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
|
|
157
|
+
</td>
|
|
158
|
+
<td id='joshua-liebowitz'>
|
|
159
|
+
<a href='https://github.com/taquitos'>
|
|
160
|
+
<img src='https://github.com/taquitos.png' width='140px;'>
|
|
161
|
+
</a>
|
|
162
|
+
<h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
|
|
163
163
|
</td>
|
|
164
164
|
</tr>
|
|
165
165
|
<tr>
|
|
166
|
-
<td id='
|
|
167
|
-
<a href='https://github.com/
|
|
168
|
-
<img src='https://github.com/
|
|
166
|
+
<td id='jimmy-dee'>
|
|
167
|
+
<a href='https://github.com/jdee'>
|
|
168
|
+
<img src='https://github.com/jdee.png' width='140px;'>
|
|
169
169
|
</a>
|
|
170
|
-
<h4 align='center'
|
|
170
|
+
<h4 align='center'>Jimmy Dee</h4>
|
|
171
|
+
</td>
|
|
172
|
+
<td id='manu-wallner'>
|
|
173
|
+
<a href='https://github.com/milch'>
|
|
174
|
+
<img src='https://github.com/milch.png' width='140px;'>
|
|
175
|
+
</a>
|
|
176
|
+
<h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
|
|
171
177
|
</td>
|
|
172
178
|
<td id='aaron-brager'>
|
|
173
179
|
<a href='https://github.com/getaaron'>
|
|
@@ -175,31 +181,25 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
|
175
181
|
</a>
|
|
176
182
|
<h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
|
|
177
183
|
</td>
|
|
178
|
-
<td id='
|
|
179
|
-
<a href='https://github.com/
|
|
180
|
-
<img src='https://github.com/
|
|
181
|
-
</a>
|
|
182
|
-
<h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
|
|
183
|
-
</td>
|
|
184
|
-
<td id='fumiya-nakamura'>
|
|
185
|
-
<a href='https://github.com/nafu'>
|
|
186
|
-
<img src='https://github.com/nafu.png' width='140px;'>
|
|
184
|
+
<td id='max-ott'>
|
|
185
|
+
<a href='https://github.com/max-ott'>
|
|
186
|
+
<img src='https://github.com/max-ott.png' width='140px;'>
|
|
187
187
|
</a>
|
|
188
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
188
|
+
<h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
|
|
189
189
|
</td>
|
|
190
|
-
<td id='
|
|
191
|
-
<a href='https://github.com/
|
|
192
|
-
<img src='https://github.com/
|
|
190
|
+
<td id='andrew-mcburney'>
|
|
191
|
+
<a href='https://github.com/armcburney'>
|
|
192
|
+
<img src='https://github.com/armcburney.png' width='140px;'>
|
|
193
193
|
</a>
|
|
194
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
194
|
+
<h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
|
|
195
195
|
</td>
|
|
196
196
|
</tr>
|
|
197
197
|
<tr>
|
|
198
|
-
<td id='
|
|
199
|
-
<a href='https://github.com/
|
|
200
|
-
<img src='https://github.com/
|
|
198
|
+
<td id='jérôme-lacoste'>
|
|
199
|
+
<a href='https://github.com/lacostej'>
|
|
200
|
+
<img src='https://github.com/lacostej.png' width='140px;'>
|
|
201
201
|
</a>
|
|
202
|
-
<h4 align='center'><a href='https://twitter.com/
|
|
202
|
+
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
|
203
203
|
</td>
|
|
204
204
|
</table>
|
|
205
205
|
|
|
@@ -349,6 +349,7 @@ module Deliver
|
|
|
349
349
|
"iPad Pro (12.9-inch) (3rd generation)", # Default simulator has this name
|
|
350
350
|
"iPad Pro (12.9-inch) (4th generation)", # Default simulator has this name
|
|
351
351
|
"iPad Pro (12.9-inch) (5th generation)", # Default simulator has this name
|
|
352
|
+
"iPad Pro (12.9-inch) (6th generation)", # Default simulator has this name
|
|
352
353
|
"IPAD_PRO_3GEN_129", # Screenshots downloaded from App Store Connect has this name
|
|
353
354
|
"ipadPro129" # Legacy: screenshots downloaded from iTunes Connect used to have this name
|
|
354
355
|
].any? { |key| filename.include?(key) }
|
|
@@ -245,13 +245,9 @@ module Deliver
|
|
|
245
245
|
UI.message("Review submission cancellation has been requested")
|
|
246
246
|
|
|
247
247
|
# An app version won't get removed from review instantly
|
|
248
|
-
# Polling until
|
|
248
|
+
# Polling until there is no longer an in-progress version
|
|
249
249
|
loop do
|
|
250
|
-
|
|
251
|
-
if version.app_store_state == Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::DEVELOPER_REJECTED
|
|
252
|
-
break
|
|
253
|
-
end
|
|
254
|
-
|
|
250
|
+
break if app.get_in_progress_review_submission(platform: platform).nil?
|
|
255
251
|
UI.message("Waiting for cancellation to take effect...")
|
|
256
252
|
sleep(15)
|
|
257
253
|
end
|
|
@@ -25,6 +25,7 @@ gem install fastlane
|
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
##### Gradle dependency
|
|
28
|
+
|
|
28
29
|
```java
|
|
29
30
|
androidTestImplementation 'tools.fastlane:screengrab:x.x.x'
|
|
30
31
|
```
|
|
@@ -60,17 +61,23 @@ Ensure that the following permissions exist in your **src/debug/AndroidManifest.
|
|
|
60
61
|
##### Configuring your <a href="#ui-tests">UI Tests</a> for Screenshots
|
|
61
62
|
|
|
62
63
|
1. Add `LocaleTestRule` to your tests class to handle automatic switching of locales.
|
|
64
|
+
|
|
63
65
|
If you're using Java use:
|
|
66
|
+
|
|
64
67
|
```java
|
|
65
68
|
@ClassRule
|
|
66
69
|
public static final LocaleTestRule localeTestRule = new LocaleTestRule();
|
|
67
70
|
```
|
|
71
|
+
|
|
68
72
|
If you're using Kotlin use:
|
|
73
|
+
|
|
69
74
|
```kotlin
|
|
70
75
|
@Rule @JvmField
|
|
71
76
|
val localeTestRule = LocaleTestRule()
|
|
72
77
|
```
|
|
78
|
+
|
|
73
79
|
The `@JvmField` annotation is important. It won't work like this:
|
|
80
|
+
|
|
74
81
|
```kotlin
|
|
75
82
|
companion object {
|
|
76
83
|
@get:ClassRule
|
|
@@ -84,6 +91,7 @@ Ensure that the following permissions exist in your **src/debug/AndroidManifest.
|
|
|
84
91
|
- Then, before running `fastlane screengrab` you'll need a debug and test apk
|
|
85
92
|
- You can create your APKs manually with `./gradlew assembleDebug assembleAndroidTest`
|
|
86
93
|
- You can also create a lane and use `build_android_app`:
|
|
94
|
+
|
|
87
95
|
```ruby
|
|
88
96
|
desc "Build debug and test APK for screenshots"
|
|
89
97
|
lane :build_and_screengrab do
|
|
@@ -163,7 +171,9 @@ fastlane action screengrab
|
|
|
163
171
|
Check out [Testing UI for a Single App](http://developer.android.com/training/testing/ui-testing/espresso-testing.html) for an introduction to using Espresso for UI testing.
|
|
164
172
|
|
|
165
173
|
##### Example UI Test Class (Using JUnit4)
|
|
174
|
+
|
|
166
175
|
Java:
|
|
176
|
+
|
|
167
177
|
```java
|
|
168
178
|
@RunWith(JUnit4.class)
|
|
169
179
|
public class JUnit4StyleTests {
|
|
@@ -182,9 +192,10 @@ public class JUnit4StyleTests {
|
|
|
182
192
|
Screengrab.screenshot("after_button_click");
|
|
183
193
|
}
|
|
184
194
|
}
|
|
185
|
-
|
|
186
195
|
```
|
|
196
|
+
|
|
187
197
|
Kotlin:
|
|
198
|
+
|
|
188
199
|
```kotlin
|
|
189
200
|
@RunWith(JUnit4.class)
|
|
190
201
|
class JUnit4StyleTests {
|
|
@@ -203,7 +214,6 @@ class JUnit4StyleTests {
|
|
|
203
214
|
Screengrab.screenshot("after_button_click")
|
|
204
215
|
}
|
|
205
216
|
}
|
|
206
|
-
|
|
207
217
|
```
|
|
208
218
|
|
|
209
219
|
There is an [example project](https://github.com/fastlane/fastlane/tree/master/screengrab/example/src/androidTest/java/tools/fastlane/localetester) showing how to use JUnit 3 or 4 and Espresso with the screengrab Java library to capture screenshots during a UI test run.
|
|
@@ -224,6 +234,7 @@ Note: the clean status bar feature is only supported on devices with *API level
|
|
|
224
234
|
|
|
225
235
|
You can enable and disable the clean status bar at any moment during your tests.
|
|
226
236
|
In most cases you probably want to do this in the @BeforeClass and @AfterClass methods.
|
|
237
|
+
|
|
227
238
|
```java
|
|
228
239
|
@BeforeClass
|
|
229
240
|
public static void beforeAll() {
|
|
@@ -238,6 +249,7 @@ public static void afterAll() {
|
|
|
238
249
|
|
|
239
250
|
Have a look at the methods of the `CleanStatusBar` class to customize the status bar even more.
|
|
240
251
|
You could for example show the Bluetooth icon and the LTE text.
|
|
252
|
+
|
|
241
253
|
```java
|
|
242
254
|
new CleanStatusBar()
|
|
243
255
|
.setBluetoothState(BluetoothState.DISCONNECTED)
|
|
@@ -283,6 +295,7 @@ if (extras != null) {
|
|
|
283
295
|
For some apps, it is helpful to know when _screengrab_ is running so that you can display specific data for your screenshots. For iOS fastlane users, this is much like "FASTLANE_SNAPSHOT". In order to do this, you'll need to have at least two product flavors of your app.
|
|
284
296
|
|
|
285
297
|
Add two product flavors to the app-level build.gradle file:
|
|
298
|
+
|
|
286
299
|
```
|
|
287
300
|
android {
|
|
288
301
|
...
|
|
@@ -300,6 +313,7 @@ android {
|
|
|
300
313
|
```
|
|
301
314
|
|
|
302
315
|
Check for the existence of that flavor (i.e screengrab) in your app code as follows in order to use mock data or customize data for screenshots:
|
|
316
|
+
|
|
303
317
|
```
|
|
304
318
|
if (BuildConfig.FLAVOR == "screengrab") {
|
|
305
319
|
System.out.println("screengrab is running!");
|
|
@@ -307,14 +321,17 @@ if (BuildConfig.FLAVOR == "screengrab") {
|
|
|
307
321
|
```
|
|
308
322
|
|
|
309
323
|
When running _screengrab_, do the following to build the flavor you want as well as the test apk. Note that you use "assembleFlavor_name" where Flavor_name is the flavor name, capitalized (i.e. Screengrab).
|
|
324
|
+
|
|
310
325
|
```
|
|
311
326
|
./gradlew assembleScreengrab assembleAndroidTest
|
|
312
327
|
```
|
|
313
328
|
|
|
314
329
|
Run _screengrab_:
|
|
330
|
+
|
|
315
331
|
```
|
|
316
332
|
fastlane screengrab
|
|
317
333
|
```
|
|
334
|
+
|
|
318
335
|
_screengrab_ will ask you to select the debug and test apps (which you can then add to your Screengrabfile to skip this step later).
|
|
319
336
|
|
|
320
337
|
The debug apk should be somewhere like this:
|
|
@@ -19,7 +19,7 @@ module Fastlane
|
|
|
19
19
|
UI.user_error!("Could not find path to project config '#{project_file_path}'. Pass the path to your project (not workspace)!") unless File.exist?(project_file_path)
|
|
20
20
|
|
|
21
21
|
# download certificate
|
|
22
|
-
unless File.exist?(params[:certificate])
|
|
22
|
+
unless File.exist?(params[:certificate]) && File.size(params[:certificate]) > 0
|
|
23
23
|
UI.message("Downloading root certificate from (#{ROOT_CERTIFICATE_URL}) to path '#{params[:certificate]}'")
|
|
24
24
|
File.open(params[:certificate], "w:ASCII-8BIT") do |file|
|
|
25
25
|
file.write(FastlaneCore::Helper.open_uri(ROOT_CERTIFICATE_URL, "rb").read)
|
|
@@ -36,8 +36,23 @@ module Fastlane
|
|
|
36
36
|
command << binary
|
|
37
37
|
command << "installed"
|
|
38
38
|
command << "'#{version}'"
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
|
|
40
|
+
# `installed <version>` will either return the path to the given
|
|
41
|
+
# version or fail because the version can't be found.
|
|
42
|
+
#
|
|
43
|
+
# Store the path if we get one, fail the action otherwise.
|
|
44
|
+
xcode_path = Actions.sh(command.join(" ")) do |status, result, sh_command|
|
|
45
|
+
formatted_result = result.chomp
|
|
46
|
+
|
|
47
|
+
unless status.success?
|
|
48
|
+
UI.user_error!("Command `#{sh_command}` failed with status #{status.exitstatus} and message: #{formatted_result}")
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
formatted_result
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# If the command succeeded, `xcode_path` will be something like:
|
|
55
|
+
# /Applications/Xcode-14.app
|
|
41
56
|
xcode_developer_path = File.join(xcode_path, "/Contents/Developer")
|
|
42
57
|
|
|
43
58
|
UI.message("Setting Xcode version '#{version}' at '#{xcode_path}' for all build steps")
|
|
@@ -338,11 +338,24 @@ module Fastlane
|
|
|
338
338
|
UI.user_error!("No tag found matching #{version.inspect}") if checkout_param.nil?
|
|
339
339
|
end
|
|
340
340
|
|
|
341
|
-
if is_eligible_for_caching
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
341
|
+
if is_eligible_for_caching
|
|
342
|
+
if version.nil?
|
|
343
|
+
# Update the repo if it's eligible for caching but the version isn't specified
|
|
344
|
+
UI.message("Fetching remote git branches and updating git repo...")
|
|
345
|
+
Helper.with_env_values('GIT_TERMINAL_PROMPT' => '0') do
|
|
346
|
+
Actions.sh("cd #{clone_folder.shellescape} && git fetch --all --quiet && git checkout #{checkout_param.shellescape} #{checkout_path} && git reset --hard && git rebase")
|
|
347
|
+
end
|
|
348
|
+
else
|
|
349
|
+
begin
|
|
350
|
+
# https://stackoverflow.com/a/1593574/865175
|
|
351
|
+
current_tag = Actions.sh("cd #{clone_folder.shellescape} && git describe --exact-match --tags HEAD").strip
|
|
352
|
+
rescue
|
|
353
|
+
current_tag = nil
|
|
354
|
+
end
|
|
355
|
+
|
|
356
|
+
if current_tag != version
|
|
357
|
+
Actions.sh("cd #{clone_folder.shellescape} && git checkout #{checkout_param.shellescape} #{checkout_path}")
|
|
358
|
+
end
|
|
346
359
|
end
|
|
347
360
|
else
|
|
348
361
|
Actions.sh("cd #{clone_folder.shellescape} && git checkout #{checkout_param.shellescape} #{checkout_path}")
|
|
@@ -5,3 +5,6 @@
|
|
|
5
5
|
|
|
6
6
|
FastlaneCore::Feature.register(env_var: 'FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS',
|
|
7
7
|
description: 'Use a newly implemented screenshots synchronization logic')
|
|
8
|
+
|
|
9
|
+
FastlaneCore::Feature.register(env_var: 'FASTLANE_WWDR_USE_HTTP1_AND_RETRIES',
|
|
10
|
+
description: 'Adds --http1.1 and --retry 3 --retry-all-errors to the curl command to download WWDR certificates')
|
data/fastlane/swift/Atomic.swift
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Deliverfile.swift
|
|
2
|
-
// Copyright (c)
|
|
2
|
+
// Copyright (c) 2023 FastlaneTools
|
|
3
3
|
|
|
4
4
|
// This class is automatically included in FastlaneRunner during build
|
|
5
5
|
|
|
@@ -17,4 +17,4 @@ public class Deliverfile: DeliverfileProtocol {
|
|
|
17
17
|
// during the `init` process, and you won't see this message
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
// Generated with fastlane 2.
|
|
20
|
+
// Generated with fastlane 2.212.1
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// DeliverfileProtocol.swift
|
|
2
|
-
// Copyright (c)
|
|
2
|
+
// Copyright (c) 2023 FastlaneTools
|
|
3
3
|
|
|
4
4
|
public protocol DeliverfileProtocol: AnyObject {
|
|
5
5
|
/// Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
|
|
@@ -264,4 +264,4 @@ public extension DeliverfileProtocol {
|
|
|
264
264
|
|
|
265
265
|
// Please don't remove the lines below
|
|
266
266
|
// They are used to detect outdated files
|
|
267
|
-
// FastlaneRunnerAPIVersion [0.9.
|
|
267
|
+
// FastlaneRunnerAPIVersion [0.9.114]
|