class Fastlane::FirebaseTestLab::Options

Public Class Methods

available_options() click to toggle source
# File lib/fastlane/plugin/firebase_test_lab/options.rb, line 6
def self.available_options
  [
    FastlaneCore::ConfigItem.new(key: :gcp_project,
                                 description: "Google Cloud Platform project name",
                                 optional: false),
    FastlaneCore::ConfigItem.new(key: :gcp_requests_timeout,
                                 description: "The timeout (in seconds) to use for all Google Cloud requests (such as uploading your tests ZIP)",
                                 optional: true),
    FastlaneCore::ConfigItem.new(key: :gcp_additional_client_info,
                                 description: "A hash of additional client info you'd like to submit to Test Lab",
                                 type: Hash,
                                 optional: true),
    FastlaneCore::ConfigItem.new(key: :app_path,
                                 description: "Path to the app, either on the filesystem or GCS address (gs://)",
                                 default_value:
                                   Actions.lane_context[Actions::SharedValues::SCAN_ZIP_BUILD_PRODUCTS_PATH],
                                 verify_block: proc do |value|
                                   unless value.to_s.start_with?("gs://")
                                     v = File.expand_path(value.to_s)
                                     UI.user_error!("App file not found at path '#{v}'") unless File.exist?(v)
                                   end
                                 end),
    FastlaneCore::ConfigItem.new(key: :devices,
                                 description: "Devices to test the app on",
                                 type: Array,
                                 default_value: [{
                                   ios_model_id: "iphonex",
                                   ios_version_id: "11.2",
                                   locale: "en_US",
                                   orientation: "portrait"
                                 }],
                                 verify_block: proc do |value|
                                   if value.empty?
                                     UI.user_error!("Devices cannot be empty")
                                   end
                                   value.each do |current|
                                     if current.class != Hash
                                       UI.user_error!("Each device must be represented by a Hash object, " \
                                         "#{current.class} found")
                                     end
                                     check_has_property(current, :ios_model_id)
                                     check_has_property(current, :ios_version_id)
                                     set_default_property(current, :locale, "en_US")
                                     set_default_property(current, :orientation, "portrait")
                                   end
                                 end),
    FastlaneCore::ConfigItem.new(key: :async,
                                 description: "Do not wait for test results",
                                 default_value: false,
                                 type: Fastlane::Boolean),
    FastlaneCore::ConfigItem.new(key: :timeout_sec,
                                 description: "After how long, in seconds, should tests be terminated",
                                 default_value: 180,
                                 optional: true,
                                 type: Integer,
                                 verify_block: proc do |value|
                                   UI.user_error!("Timeout must be less or equal to 45 minutes.") \
                                     if value <= 0 || value > 45 * 60
                                 end),
    FastlaneCore::ConfigItem.new(key: :result_storage,
                                 description: "GCS path to store test results",
                                 default_value: nil,
                                 optional: true,
                                 verify_block: proc do |value|
                                   UI.user_error!("Invalid GCS path: '#{value}'") \
                                     unless value.to_s.start_with?("gs://")
                                 end),
    FastlaneCore::ConfigItem.new(key: :oauth_key_file_path,
                                 description: "Use the given Google cloud service key file." \
                                              "If not set, application default credential will be used " \
                                              "(see https://cloud.google.com/docs/authentication/production)",
                                 default_value: nil,
                                 optional: true,
                                 verify_block: proc do |value|
                                   v = File.expand_path(value.to_s)
                                   UI.user_error!("Key file not found at path '#{v}'") unless File.exist?(v)
                                 end)
  ]
end
check_has_property(hash_obj, property) click to toggle source
# File lib/fastlane/plugin/firebase_test_lab/options.rb, line 86
def self.check_has_property(hash_obj, property)
  UI.user_error!("Each device must have #{property} property") unless hash_obj.key?(property)
end
set_default_property(hash_obj, property, default) click to toggle source
# File lib/fastlane/plugin/firebase_test_lab/options.rb, line 90
def self.set_default_property(hash_obj, property, default)
  unless hash_obj.key?(property)
    hash_obj[property] = default
  end
end