class Calabash::Cucumber::Device
Device
encapsulates information about the device or simulator that the app is running on. It also includes the following information about the app that is running on the current device.
Constants
- GESTALT_IPAD
@!visibility private
- GESTALT_IPHONE
@!visibility private
- GESTALT_IPHONE5
@!visibility private
- GESTALT_IPOD
@!visibility private
- GESTALT_SIM_SYS
@!visibility private
Attributes
The device family of this device.
@note Also know as the form factor.
@example
# will be one of iPhone iPod iPad
@!attribute [r] device_family
@return [String] the device family
Requires calabash server > 0.16.2
For simulators, this is known to return ‘< form factor > Simulator’
For devices, this will return the name of the device as seen in Xcode.
@attribute [r] device_name
@!attribute [r] endpoint The http address of this device. @example
http://192.168.0.2:37265
@return [String] an ip address with port number.
The form factor of this device. @attribute [r] form_factor
Will be one of:
* ipad * iphone 4in * iphone 3.5in * iphone 6 * iphone 6+ * ipad pro * unknown
The ‘major.minor.` version of iOS that is running on this device.
@example
7.1 6.1.2 5.1.1
@attribute [r] ios_version
@return [String] the version of the iOS that is running on this device
Indicates whether or not the app under test on this device is an
iPhone-only app that is being emulated on an iPad.
@note If the ‘1x` or `2x` button is visible, then the app is being
emulated.
@attribute [r] iphone_app_emulated_on_ipad
@return [Boolean] ‘true` if the app under test is emulated
Requires calabash server > 0.16.2
-
iPhone7,1
-
iPhone5,2
-
iPad6,1
-
iPad6,8
@attribute [r] model_identifier
@return [String] The low-level model identifier.
For Calabash
server version > 0.10.2 provides device specific screen information.
This is a hash of form:
{ :sample => 1, :height => 1334, :width => 750, :scale" => 2, :native_scale => 2 }
@attribute [r] screen_dimensions
@return [Hash] screen dimensions, scale and down/up sampling fraction.
The version of the embedded Calabash
server that is running in the app under test on this device.
@example
0.9.168 0.10.0.pre1
@attribute [r] server_version
@return [String] the major.minor.patch version of the embedded
Calabash server
@!visibility private @attribute [r] simulator_details
@return [String] Additional details about the simulator. If this device
is a physical device, returns nil.
Public Class Methods
Creates a new instance of Device
.
@see Calabash::Cucumber::Core#server_version
@param [String] endpoint the http address of this device @param [Hash] version_data the output of the ‘server_version` function @return [Device] a new Device
instance
# File lib/calabash-cucumber/device.rb, line 141 def initialize (endpoint, version_data) @endpoint = endpoint @model_identifier = version_data['model_identifier'] @simulator_details = version_data['simulator'] @ios_version = version_data['ios_version'] @server_version = version_data['version'] @iphone_app_emulated_on_ipad = version_data['iphone_app_emulated_on_ipad'] @form_factor = version_data['form_factor'] @device_name = version_data['device_name'] family = version_data['device_family'] if family @device_family = family.split(' ').first end # Available 0.10.2 screen_dimensions = version_data['screen_dimensions'] if screen_dimensions @screen_dimensions = {} screen_dimensions.each_pair do |key,val| @screen_dimensions[key.to_sym] = val end end # 0.16.2 server adds 'ios_version' key unless @ios_version @ios_version = version_data['iOS_version'] end end
Public Instance Methods
Is this device a device or simulator? @return [Boolean] true if this device is a physical device
# File lib/calabash-cucumber/device.rb, line 184 def device? !simulator? end
Is this device running iOS 10? @return [Boolean] true if the major version of the OS is 10
# File lib/calabash-cucumber/device.rb, line 256 def ios10? ios_version_object.major == 10 end
Is this device running iOS 11? @return [Boolean] true if the major version of the OS is 11
# File lib/calabash-cucumber/device.rb, line 250 def ios11? ios_version_object.major == 11 end
Is this device running iOS 5? @return [Boolean] true if the major version of the OS is 5
# File lib/calabash-cucumber/device.rb, line 286 def ios5? ios_version_object.major == 5 end
Is this device running iOS 6? @return [Boolean] true if the major version of the OS is 6
# File lib/calabash-cucumber/device.rb, line 280 def ios6? ios_version_object.major == 6 end
Is this device running iOS 7? @return [Boolean] true if the major version of the OS is 7
# File lib/calabash-cucumber/device.rb, line 274 def ios7? ios_version_object.major == 7 end
Is this device running iOS 8? @return [Boolean] true if the major version of the OS is 8
# File lib/calabash-cucumber/device.rb, line 268 def ios8? ios_version_object.major == 8 end
Is this device running iOS 9? @return [Boolean] true if the major version of the OS is 9
# File lib/calabash-cucumber/device.rb, line 262 def ios9? ios_version_object.major == 9 end
Is this device running iOS 11? @return [Boolean] true if the major version of the OS is 11
# File lib/calabash-cucumber/device.rb, line 244 def ios_gte_11? ios_version_object.major >= 11 end
The major iOS version of this device. @return [String] the major version of the OS
# File lib/calabash-cucumber/device.rb, line 238 def ios_major_version ios_version_object.major.to_s end
Is this device an iPad? @return [Boolean] true if this device is an ipad
# File lib/calabash-cucumber/device.rb, line 202 def ipad? device_family.eql? GESTALT_IPAD end
Is this device an iPad Pro? @return [Boolean] true if this device is an iPad Pro
# File lib/calabash-cucumber/device.rb, line 232 def ipad_pro? form_factor == 'ipad pro' end
Is this device an iPhone? @return [Boolean] true if this device is an iphone
# File lib/calabash-cucumber/device.rb, line 190 def iphone? device_family.eql? GESTALT_IPHONE end
Is this device an iPhone 3.5in? @return [Boolean] true if this device is an iPhone 3.5in?
# File lib/calabash-cucumber/device.rb, line 226 def iphone_35in? form_factor == 'iphone 3.5in' end
Is this device a 4in iPhone? @return [Boolean] true if this device is a 4in iphone
# File lib/calabash-cucumber/device.rb, line 208 def iphone_4in? form_factor == 'iphone 4in' end
Is this device an iPhone 6? @return [Boolean] true if this device is an iPhone 6
# File lib/calabash-cucumber/device.rb, line 214 def iphone_6? form_factor == 'iphone 6' end
Is this device an iPhone 6+? @return [Boolean] true if this device is an iPhone 6+
# File lib/calabash-cucumber/device.rb, line 220 def iphone_6_plus? form_factor == 'iphone 6+' end
Is the app that is running an iPhone-only app emulated on an iPad?
@note If the app is running in emulation mode, there will be a 1x or 2x
scale button visible on the iPad.
@return [Boolean] true if the app running on this devices is an
iPhone-only app emulated on an iPad
# File lib/calabash-cucumber/device.rb, line 297 def iphone_app_emulated_on_ipad? iphone_app_emulated_on_ipad end
Is this device an iPod? @return [Boolean] true if this device is an ipod
# File lib/calabash-cucumber/device.rb, line 196 def ipod? device_family.eql? GESTALT_IPOD end
Is this device a simulator or physical device? @return [Boolean] true if this device is a simulator
# File lib/calabash-cucumber/device.rb, line 173 def simulator? details = simulator_details if details details != "" else false end end
Private Instance Methods
@!visibility private
# File lib/calabash-cucumber/device.rb, line 304 def ios_version_object @ios_version_object ||= RunLoop::Version.new(ios_version) end