rufus 0.4 → 0.5
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 +8 -8
 - data/.travis.yml +3 -0
 - data/RufusApp/RufusApp/EnabledPageViewController.h +2 -0
 - data/RufusApp/RufusApp/EnabledPageViewController.m +10 -14
 - data/RufusApp/RufusApp/EnabledPageViewController.xib +26 -4
 - data/RufusApp/RufusApp/RUViewController.h +2 -0
 - data/RufusApp/RufusApp/RUViewController.m +7 -2
 - data/RufusApp/RufusApp/en.lproj/RUViewController.xib +7 -3
 - data/config.yml +8 -0
 - data/features/driver.feature +12 -7
 - data/features/rufus.feature +20 -0
 - data/features/step_definitions/driver_steps.rb +7 -1
 - data/features/step_definitions/rufus_steps.rb +15 -0
 - data/features/step_definitions/view_steps.rb +13 -1
 - data/features/support/routes.rb +4 -0
 - data/features/support/screens/enabled_page.rb +13 -0
 - data/features/support/screens/home_page.rb +2 -1
 - data/features/view.feature +11 -2
 - data/lib/rufus.rb +17 -1
 - data/lib/rufus/driver.rb +16 -11
 - data/lib/rufus/navigation.rb +4 -5
 - data/rakefile +90 -0
 - data/rufus.gemspec +1 -1
 - data/spec/drivers_specs/driver_spec.rb +28 -5
 - data/spec/navigation_spec.rb +46 -0
 - data/spec/rufus_spec.rb +29 -2
 - data/spec/spec_helper.rb +2 -0
 - metadata +9 -3
 - data/RufusApp/Rakefile +0 -28
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,15 +1,15 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            !binary "U0hBMQ==":
         
     | 
| 
       3 
3 
     | 
    
         
             
              metadata.gz: !binary |-
         
     | 
| 
       4 
     | 
    
         
            -
                 
     | 
| 
      
 4 
     | 
    
         
            +
                ZGE1MmQwYzQ3YzA1YTFjZDQzYmJkMzI5OTdlYWJiZTA0MjMxNmEwMw==
         
     | 
| 
       5 
5 
     | 
    
         
             
              data.tar.gz: !binary |-
         
     | 
| 
       6 
     | 
    
         
            -
                 
     | 
| 
      
 6 
     | 
    
         
            +
                ZDk3OGRlZDVkYjdlOTQ0MTEzNzcyZTYyZjcxOWViOTdkYmNhOTEzNQ==
         
     | 
| 
       7 
7 
     | 
    
         
             
            SHA512:
         
     | 
| 
       8 
8 
     | 
    
         
             
              metadata.gz: !binary |-
         
     | 
| 
       9 
     | 
    
         
            -
                 
     | 
| 
       10 
     | 
    
         
            -
                 
     | 
| 
       11 
     | 
    
         
            -
                 
     | 
| 
      
 9 
     | 
    
         
            +
                ZWZiZTJkZTBjMzJhMDA0OTAxNWE0NjQyYzlhM2Y3ZDYzMTQ0MmQ1NmE3ZTFl
         
     | 
| 
      
 10 
     | 
    
         
            +
                ZmFhNDQwZDE1YWM5N2I3Mjc2ODBmYjdjMTNjMDY3MDIwNmE0YWYwMjc0ZTA5
         
     | 
| 
      
 11 
     | 
    
         
            +
                MWJlZmIwYzIyZTIwMzk1YjUzYjVmMzZmMjE1YjdjOTE3NWUzNzU=
         
     | 
| 
       12 
12 
     | 
    
         
             
              data.tar.gz: !binary |-
         
     | 
| 
       13 
     | 
    
         
            -
                 
     | 
| 
       14 
     | 
    
         
            -
                 
     | 
| 
       15 
     | 
    
         
            -
                 
     | 
| 
      
 13 
     | 
    
         
            +
                NDNjNGRlYjY1ODAwYThkNTQ0ZTQyMmM1ZmVhNDAxMWM4Yjg1MDgzZGMzYjk0
         
     | 
| 
      
 14 
     | 
    
         
            +
                MDllYzJkMzY5Y2FiYzViZWUzNjdhYjIyN2FiZDkzYmMyMTA5ZGQ5MWI0YjBi
         
     | 
| 
      
 15 
     | 
    
         
            +
                MDljYzViMTcyYTA0ZjE2NTQ0YTExNWEwNzQzYWIwZTNhNmJlNTc=
         
     | 
    
        data/.travis.yml
    ADDED
    
    
| 
         @@ -13,26 +13,22 @@ 
     | 
|
| 
       13 
13 
     | 
    
         
             
            @end
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
            @implementation EnabledPageViewController
         
     | 
| 
      
 16 
     | 
    
         
            +
            @synthesize enabledTextField, notEnabledTextField;
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
       16 
18 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
            - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
         
     | 
| 
       18 
     | 
    
         
            -
            {
         
     | 
| 
       19 
     | 
    
         
            -
                self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
         
     | 
| 
       20 
     | 
    
         
            -
                if (self) {
         
     | 
| 
       21 
     | 
    
         
            -
                    // Custom initialization
         
     | 
| 
       22 
     | 
    
         
            -
                }
         
     | 
| 
       23 
     | 
    
         
            -
                return self;
         
     | 
| 
       24 
     | 
    
         
            -
            }
         
     | 
| 
       25 
19 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
            - 
     | 
| 
      
 20 
     | 
    
         
            +
            -(void)viewDidLoad
         
     | 
| 
       27 
21 
     | 
    
         
             
            {
         
     | 
| 
       28 
     | 
    
         
            -
                [ 
     | 
| 
       29 
     | 
    
         
            -
                 
     | 
| 
      
 22 
     | 
    
         
            +
                [enabledTextField setEnabled:NO];
         
     | 
| 
      
 23 
     | 
    
         
            +
                [notEnabledTextField setEnabled:NO];
         
     | 
| 
      
 24 
     | 
    
         
            +
                [self performSelector:@selector(enableTheTextField) withObject:nil afterDelay:5];
         
     | 
| 
       30 
25 
     | 
    
         
             
            }
         
     | 
| 
       31 
26 
     | 
    
         | 
| 
       32 
     | 
    
         
            -
            - 
     | 
| 
      
 27 
     | 
    
         
            +
            -(void)enableTheTextField
         
     | 
| 
       33 
28 
     | 
    
         
             
            {
         
     | 
| 
       34 
     | 
    
         
            -
                [ 
     | 
| 
       35 
     | 
    
         
            -
                // Dispose of any resources that can be recreated.
         
     | 
| 
      
 29 
     | 
    
         
            +
                [enabledTextField setEnabled:YES];
         
     | 
| 
       36 
30 
     | 
    
         
             
            }
         
     | 
| 
       37 
31 
     | 
    
         | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
       38 
34 
     | 
    
         
             
            @end
         
     | 
| 
         @@ -1,20 +1,42 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            <?xml version="1.0" encoding="UTF-8" standalone="no"?>
         
     | 
| 
       2 
     | 
    
         
            -
            <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion=" 
     | 
| 
      
 2 
     | 
    
         
            +
            <document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="4510" systemVersion="12F45" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" useAutolayout="YES">
         
     | 
| 
       3 
3 
     | 
    
         
             
                <dependencies>
         
     | 
| 
       4 
     | 
    
         
            -
                    <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version=" 
     | 
| 
      
 4 
     | 
    
         
            +
                    <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3742"/>
         
     | 
| 
       5 
5 
     | 
    
         
             
                </dependencies>
         
     | 
| 
       6 
6 
     | 
    
         
             
                <objects>
         
     | 
| 
       7 
7 
     | 
    
         
             
                    <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="EnabledPageViewController">
         
     | 
| 
       8 
8 
     | 
    
         
             
                        <connections>
         
     | 
| 
      
 9 
     | 
    
         
            +
                            <outlet property="enabledTextField" destination="CNH-j4-jZp" id="igO-L4-d1r"/>
         
     | 
| 
      
 10 
     | 
    
         
            +
                            <outlet property="notEnabledTextField" destination="C8U-NZ-tS3" id="pGf-qt-wJY"/>
         
     | 
| 
       9 
11 
     | 
    
         
             
                            <outlet property="view" destination="2" id="3"/>
         
     | 
| 
       10 
12 
     | 
    
         
             
                        </connections>
         
     | 
| 
       11 
13 
     | 
    
         
             
                    </placeholder>
         
     | 
| 
       12 
14 
     | 
    
         
             
                    <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
         
     | 
| 
       13 
15 
     | 
    
         
             
                    <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="2">
         
     | 
| 
       14 
     | 
    
         
            -
                        <rect key="frame" x="0.0" y=" 
     | 
| 
      
 16 
     | 
    
         
            +
                        <rect key="frame" x="0.0" y="0.0" width="768" height="1004"/>
         
     | 
| 
       15 
17 
     | 
    
         
             
                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
         
     | 
| 
      
 18 
     | 
    
         
            +
                        <subviews>
         
     | 
| 
      
 19 
     | 
    
         
            +
                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="This text field is enabled after 5 seconds" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="CNH-j4-jZp">
         
     | 
| 
      
 20 
     | 
    
         
            +
                                <rect key="frame" x="214" y="285" width="349" height="30"/>
         
     | 
| 
      
 21 
     | 
    
         
            +
                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
         
     | 
| 
      
 22 
     | 
    
         
            +
                                <accessibility key="accessibilityConfiguration" label="enabledTextField">
         
     | 
| 
      
 23 
     | 
    
         
            +
                                    <bool key="isElement" value="NO"/>
         
     | 
| 
      
 24 
     | 
    
         
            +
                                </accessibility>
         
     | 
| 
      
 25 
     | 
    
         
            +
                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
         
     | 
| 
      
 26 
     | 
    
         
            +
                                <textInputTraits key="textInputTraits"/>
         
     | 
| 
      
 27 
     | 
    
         
            +
                            </textField>
         
     | 
| 
      
 28 
     | 
    
         
            +
                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="This textbox will never be enabled" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="C8U-NZ-tS3">
         
     | 
| 
      
 29 
     | 
    
         
            +
                                <rect key="frame" x="264" y="382" width="241" height="30"/>
         
     | 
| 
      
 30 
     | 
    
         
            +
                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
         
     | 
| 
      
 31 
     | 
    
         
            +
                                <accessibility key="accessibilityConfiguration" label="notEnabledTextField">
         
     | 
| 
      
 32 
     | 
    
         
            +
                                    <bool key="isElement" value="NO"/>
         
     | 
| 
      
 33 
     | 
    
         
            +
                                </accessibility>
         
     | 
| 
      
 34 
     | 
    
         
            +
                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
         
     | 
| 
      
 35 
     | 
    
         
            +
                                <textInputTraits key="textInputTraits"/>
         
     | 
| 
      
 36 
     | 
    
         
            +
                            </textField>
         
     | 
| 
      
 37 
     | 
    
         
            +
                        </subviews>
         
     | 
| 
       16 
38 
     | 
    
         
             
                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
         
     | 
| 
       17 
     | 
    
         
            -
                        <simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle=" 
     | 
| 
      
 39 
     | 
    
         
            +
                        <simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="lightContent"/>
         
     | 
| 
       18 
40 
     | 
    
         
             
                    </view>
         
     | 
| 
       19 
41 
     | 
    
         
             
                </objects>
         
     | 
| 
       20 
42 
     | 
    
         
             
            </document>
         
     | 
| 
         @@ -14,7 +14,9 @@ 
     | 
|
| 
       14 
14 
     | 
    
         
             
            @property (weak, nonatomic) IBOutlet UIButton *existsPageButton;
         
     | 
| 
       15 
15 
     | 
    
         
             
            @property (weak, nonatomic) IBOutlet UIButton *showAlertButton;
         
     | 
| 
       16 
16 
     | 
    
         
             
            @property (weak, nonatomic) IBOutlet UIButton *rufusButton;
         
     | 
| 
      
 17 
     | 
    
         
            +
            @property (weak, nonatomic) IBOutlet UIButton *enabledPageButton;
         
     | 
| 
       17 
18 
     | 
    
         | 
| 
      
 19 
     | 
    
         
            +
            - (IBAction)toEnabledPage:(id)sender;
         
     | 
| 
       18 
20 
     | 
    
         
             
            - (IBAction)toRufusPage:(id)sender;
         
     | 
| 
       19 
21 
     | 
    
         
             
            - (IBAction)showAlert:(id)sender;
         
     | 
| 
       20 
22 
     | 
    
         
             
            - (IBAction)toExistsPage:(id)sender;
         
     | 
| 
         @@ -10,6 +10,7 @@ 
     | 
|
| 
       10 
10 
     | 
    
         
             
            #import "RufusPageViewController.h"
         
     | 
| 
       11 
11 
     | 
    
         
             
            #import "ExistsPageViewController.h"
         
     | 
| 
       12 
12 
     | 
    
         
             
            #import "DisplayedPageViewController.h"
         
     | 
| 
      
 13 
     | 
    
         
            +
            #import "EnabledPageViewController.h"
         
     | 
| 
       13 
14 
     | 
    
         | 
| 
       14 
15 
     | 
    
         
             
            @interface RUViewController ()
         
     | 
| 
       15 
16 
     | 
    
         | 
| 
         @@ -45,8 +46,12 @@ 
     | 
|
| 
       45 
46 
     | 
    
         | 
| 
       46 
47 
     | 
    
         
             
                ExistsPageViewController *existsPageViewController = [[ExistsPageViewController alloc] init];
         
     | 
| 
       47 
48 
     | 
    
         
             
                [[self navigationController] pushViewController:existsPageViewController animated:YES];
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
      
 49 
     | 
    
         
            +
            }
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            -(void)toEnabledPage:(id)sender
         
     | 
| 
      
 52 
     | 
    
         
            +
            {
         
     | 
| 
      
 53 
     | 
    
         
            +
                EnabledPageViewController *enabledPageViewController = [[EnabledPageViewController alloc] init];
         
     | 
| 
      
 54 
     | 
    
         
            +
                [[self navigationController] pushViewController:enabledPageViewController animated:YES];
         
     | 
| 
       50 
55 
     | 
    
         
             
            }
         
     | 
| 
       51 
56 
     | 
    
         | 
| 
       52 
57 
     | 
    
         
             
            - (IBAction)toDisplayedPage:(id)sender {
         
     | 
| 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            <?xml version="1.0" encoding="UTF-8" standalone="no"?>
         
     | 
| 
       2 
     | 
    
         
            -
            <document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="4510" systemVersion=" 
     | 
| 
      
 2 
     | 
    
         
            +
            <document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="4510" systemVersion="12F45" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" useAutolayout="YES">
         
     | 
| 
       3 
3 
     | 
    
         
             
                <dependencies>
         
     | 
| 
       4 
4 
     | 
    
         
             
                    <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3742"/>
         
     | 
| 
       5 
5 
     | 
    
         
             
                </dependencies>
         
     | 
| 
         @@ -7,6 +7,7 @@ 
     | 
|
| 
       7 
7 
     | 
    
         
             
                    <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="RUViewController">
         
     | 
| 
       8 
8 
     | 
    
         
             
                        <connections>
         
     | 
| 
       9 
9 
     | 
    
         
             
                            <outlet property="displayedPageButton" destination="cx3-SH-qUq" id="ntd-NP-UTK"/>
         
     | 
| 
      
 10 
     | 
    
         
            +
                            <outlet property="enabledPageButton" destination="8Xe-wy-gw2" id="mNp-pl-GZO"/>
         
     | 
| 
       10 
11 
     | 
    
         
             
                            <outlet property="existsPageButton" destination="ptK-30-J0y" id="eem-Ie-lJP"/>
         
     | 
| 
       11 
12 
     | 
    
         
             
                            <outlet property="rufusButton" destination="4" id="11"/>
         
     | 
| 
       12 
13 
     | 
    
         
             
                            <outlet property="showAlertButton" destination="VTc-fX-2Iw" id="ndi-Zu-qSy"/>
         
     | 
| 
         @@ -37,7 +38,7 @@ 
     | 
|
| 
       37 
38 
     | 
    
         
             
                                <textInputTraits key="textInputTraits"/>
         
     | 
| 
       38 
39 
     | 
    
         
             
                            </textField>
         
     | 
| 
       39 
40 
     | 
    
         
             
                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" misplaced="YES" text="Rufus Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="24">
         
     | 
| 
       40 
     | 
    
         
            -
                                <rect key="frame" x=" 
     | 
| 
      
 41 
     | 
    
         
            +
                                <rect key="frame" x="324" y="180" width="107" height="21"/>
         
     | 
| 
       41 
42 
     | 
    
         
             
                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
         
     | 
| 
       42 
43 
     | 
    
         
             
                                <accessibility key="accessibilityConfiguration" label="rufusLabel"/>
         
     | 
| 
       43 
44 
     | 
    
         
             
                                <constraints>
         
     | 
| 
         @@ -73,10 +74,13 @@ 
     | 
|
| 
       73 
74 
     | 
    
         
             
                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8Xe-wy-gw2">
         
     | 
| 
       74 
75 
     | 
    
         
             
                                <rect key="frame" x="306" y="388" width="146" height="30"/>
         
     | 
| 
       75 
76 
     | 
    
         
             
                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
         
     | 
| 
       76 
     | 
    
         
            -
                                <accessibility key="accessibilityConfiguration" label=" 
     | 
| 
      
 77 
     | 
    
         
            +
                                <accessibility key="accessibilityConfiguration" label="enabledPageButton"/>
         
     | 
| 
       77 
78 
     | 
    
         
             
                                <state key="normal" title="Enabled Page Button">
         
     | 
| 
       78 
79 
     | 
    
         
             
                                    <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
         
     | 
| 
       79 
80 
     | 
    
         
             
                                </state>
         
     | 
| 
      
 81 
     | 
    
         
            +
                                <connections>
         
     | 
| 
      
 82 
     | 
    
         
            +
                                    <action selector="toEnabledPage:" destination="-1" eventType="touchUpInside" id="4YW-DD-SpI"/>
         
     | 
| 
      
 83 
     | 
    
         
            +
                                </connections>
         
     | 
| 
       80 
84 
     | 
    
         
             
                            </button>
         
     | 
| 
       81 
85 
     | 
    
         
             
                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cx3-SH-qUq">
         
     | 
| 
       82 
86 
     | 
    
         
             
                                <rect key="frame" x="300" y="434" width="158" height="30"/>
         
     | 
    
        data/config.yml
    ADDED
    
    | 
         @@ -0,0 +1,8 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            browser: iOS
         
     | 
| 
      
 2 
     | 
    
         
            +
            platform: Mac
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: 7.0
         
     | 
| 
      
 4 
     | 
    
         
            +
            app: ./build/Debug-iphoneos/RufusApp.app
         
     | 
| 
      
 5 
     | 
    
         
            +
            udid: 4550a561efc2c047637f342bd6320623ba98c385
         
     | 
| 
      
 6 
     | 
    
         
            +
            use_physical: false
         
     | 
| 
      
 7 
     | 
    
         
            +
            sim_app_path: <%=ENV['HOME']%>/Library/Application Support/iPhone Simulator/7.0/Applications/4550a561efc2c047637f342bd6320623ba98c385/RufusApp.app
         
     | 
| 
      
 8 
     | 
    
         
            +
            device: iPhoneSimulator
         
     | 
    
        data/features/driver.feature
    CHANGED
    
    | 
         @@ -5,13 +5,18 @@ Feature: Interacting with a view 
     | 
|
| 
       5 
5 
     | 
    
         
             
                Given I have created a valid appium driver for iOS
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
              Scenario: Rotating the orientation of device to landscape
         
     | 
| 
       8 
     | 
    
         
            -
                Given the app is in the " 
     | 
| 
       9 
     | 
    
         
            -
                When I rotate the app to " 
     | 
| 
       10 
     | 
    
         
            -
                Then the app is in the " 
     | 
| 
      
 8 
     | 
    
         
            +
                Given the app is in the "portrait" orientation
         
     | 
| 
      
 9 
     | 
    
         
            +
                When I rotate the app to "landscape"
         
     | 
| 
      
 10 
     | 
    
         
            +
                Then the app is in the "landscape" orientation
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
              Scenario: Rotating the orientation twice
         
     | 
| 
       13 
     | 
    
         
            -
                Given the app is in the " 
     | 
| 
       14 
     | 
    
         
            -
                When I rotate the app to " 
     | 
| 
       15 
     | 
    
         
            -
                And I rotate the app to " 
     | 
| 
       16 
     | 
    
         
            -
                Then the app is in the " 
     | 
| 
      
 13 
     | 
    
         
            +
                Given the app is in the "portrait" orientation
         
     | 
| 
      
 14 
     | 
    
         
            +
                When I rotate the app to "landscape"
         
     | 
| 
      
 15 
     | 
    
         
            +
                And I rotate the app to "portrait"
         
     | 
| 
      
 16 
     | 
    
         
            +
                Then the app is in the "portrait" orientation
         
     | 
| 
      
 17 
     | 
    
         
            +
            @sending
         
     | 
| 
      
 18 
     | 
    
         
            +
              Scenario: Typing into a text field
         
     | 
| 
      
 19 
     | 
    
         
            +
                Given I am on the "HomePage"
         
     | 
| 
      
 20 
     | 
    
         
            +
                When I type "BooYah" into the text field defined "text_box"
         
     | 
| 
      
 21 
     | 
    
         
            +
                Then the view marked "text_box" has the text "BooYah"
         
     | 
| 
       17 
22 
     | 
    
         | 
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            @rufus
         
     | 
| 
      
 2 
     | 
    
         
            +
            Feature: Using Rufus
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              Background:
         
     | 
| 
      
 5 
     | 
    
         
            +
                Given I am on the "HomePage"
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              Scenario: Getting an element by name without accessor
         
     | 
| 
      
 8 
     | 
    
         
            +
                Then I do not need an accessor to find the view defined "rufusButton"
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              Scenario: Clicking on an element by name without accessor
         
     | 
| 
      
 11 
     | 
    
         
            +
                Given I have clicked on view defined "rufusButton" with an accessor
         
     | 
| 
      
 12 
     | 
    
         
            +
                Then I am on the "RufusPage"
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              Scenario: Getting the page source
         
     | 
| 
      
 15 
     | 
    
         
            +
                Then I can print out the page data
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              Scenario: Getting page elements by class
         
     | 
| 
      
 18 
     | 
    
         
            +
                Then I can get a list of the buttons
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'rufus/driver'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            Given(/^I have created a valid appium driver for iOS$/) do
         
     | 
| 
       4 
     | 
    
         
            -
              app_path = '/ 
     | 
| 
      
 4 
     | 
    
         
            +
              app_path = './build/Debug-iphoneos/RufusApp.app'
         
     | 
| 
       5 
5 
     | 
    
         
             
              config = $driver.config
         
     | 
| 
       6 
6 
     | 
    
         
             
              config["browser"].should eq "iOS"
         
     | 
| 
       7 
7 
     | 
    
         
             
              config["platform"].should eq "Mac"
         
     | 
| 
         @@ -16,4 +16,10 @@ When(/^I rotate the app to "([^"]*)"$/) do |orient| 
     | 
|
| 
       16 
16 
     | 
    
         
             
              orientation = :portrait
         
     | 
| 
       17 
17 
     | 
    
         
             
              orientation = :landscape if orient.eql?('landscape')
         
     | 
| 
       18 
18 
     | 
    
         
             
              $driver.rotate orientation
         
     | 
| 
      
 19 
     | 
    
         
            +
            end
         
     | 
| 
      
 20 
     | 
    
         
            +
            When(/^I type "([^"]*)" into the text field defined "([^"]*)"$/) do |keys, which|
         
     | 
| 
      
 21 
     | 
    
         
            +
              on(HomePage).send("view_#{which}_view").send_keys keys
         
     | 
| 
      
 22 
     | 
    
         
            +
            end
         
     | 
| 
      
 23 
     | 
    
         
            +
            Then(/^the view marked "([^"]*)" has the text "([^"]*)"$/) do |which, keys|
         
     | 
| 
      
 24 
     | 
    
         
            +
              on(HomePage).send("view_#{which}_view").text.should eq keys
         
     | 
| 
       19 
25 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Then(/^I do not need an accessor to find the view defined "([^"]*)"$/) do |which|
         
     | 
| 
      
 2 
     | 
    
         
            +
              element = find(:name => which)
         
     | 
| 
      
 3 
     | 
    
         
            +
              element.attribute('name').should eq which
         
     | 
| 
      
 4 
     | 
    
         
            +
            end
         
     | 
| 
      
 5 
     | 
    
         
            +
            Given(/^I have clicked on view defined "([^"]*)" with an accessor$/) do |which|
         
     | 
| 
      
 6 
     | 
    
         
            +
              click(:name => which)
         
     | 
| 
      
 7 
     | 
    
         
            +
            end
         
     | 
| 
      
 8 
     | 
    
         
            +
            Then(/^I can print out the page data$/) do
         
     | 
| 
      
 9 
     | 
    
         
            +
              page_source.include?('rufusButton').should be_true
         
     | 
| 
      
 10 
     | 
    
         
            +
            end
         
     | 
| 
      
 11 
     | 
    
         
            +
            Then(/^I can get a list of the buttons$/) do
         
     | 
| 
      
 12 
     | 
    
         
            +
              elements_of_type('UIAButton').each do |element|
         
     | 
| 
      
 13 
     | 
    
         
            +
                element.class.name.should eq('Selenium::WebDriver::Element')
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -22,8 +22,20 @@ Then(/^I will not find the view marked "([^"]*)" after waiting$/) do |arg| 
     | 
|
| 
       22 
22 
     | 
    
         
             
              view = on(HomePage).view_zilch_view
         
     | 
| 
       23 
23 
     | 
    
         
             
              exists_after_wait?(view).should be_false
         
     | 
| 
       24 
24 
     | 
    
         
             
            end
         
     | 
| 
       25 
     | 
    
         
            -
            When(/^the view marked "([^"]*)" exists is( not)? displayed$/) do |which, not_displayed|
         
     | 
| 
      
 25 
     | 
    
         
            +
            When(/^the view marked "([^"]*)" exists but is( not)? displayed$/) do |which, not_displayed|
         
     | 
| 
       26 
26 
     | 
    
         
             
              on(DisplayedPage).active?.should be_true
         
     | 
| 
       27 
27 
     | 
    
         
             
              view = on(DisplayedPage).send("view_#{which}_view")
         
     | 
| 
       28 
28 
     | 
    
         
             
             displayed_after_wait?(view).should == not_displayed.nil?
         
     | 
| 
      
 29 
     | 
    
         
            +
            end
         
     | 
| 
      
 30 
     | 
    
         
            +
            When(/^the view marked "([^"]*)" is( not)? enabled$/) do |which, not_enabled|
         
     | 
| 
      
 31 
     | 
    
         
            +
              on(EnabledPage).active?.should be_true
         
     | 
| 
      
 32 
     | 
    
         
            +
              view = on(EnabledPage).send("view_#{which}_view")
         
     | 
| 
      
 33 
     | 
    
         
            +
              enabled_after_wait?(view).should == not_enabled.nil?
         
     | 
| 
      
 34 
     | 
    
         
            +
            end
         
     | 
| 
      
 35 
     | 
    
         
            +
            Then(/^in a block can see the existence of views "([^"]*)", "([^"]*)" and "([^"]*)"$/) do |view_1, view_2, view_3|
         
     | 
| 
      
 36 
     | 
    
         
            +
              on(HomePage) do |screen|
         
     | 
| 
      
 37 
     | 
    
         
            +
                screen.send("view_#{view_1}_view").exists?.should be_true
         
     | 
| 
      
 38 
     | 
    
         
            +
                screen.send("view_#{view_2}_view").exists?.should be_true
         
     | 
| 
      
 39 
     | 
    
         
            +
                screen.send("view_#{view_3}_view").exists?.should be_true
         
     | 
| 
      
 40 
     | 
    
         
            +
              end
         
     | 
| 
       29 
41 
     | 
    
         
             
            end
         
     | 
    
        data/features/support/routes.rb
    CHANGED
    
    
| 
         @@ -5,15 +5,16 @@ class HomePage 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
              view(:view_rufus, :name =>'rufusButton')
         
     | 
| 
       7 
7 
     | 
    
         
             
              view(:view_zilch, :name => 'zilch')
         
     | 
| 
      
 8 
     | 
    
         
            +
              text(:view_text_box, :name => 'rufusTextBox')
         
     | 
| 
       8 
9 
     | 
    
         
             
              button(:view_show_alert, :name => 'showAlertButton')
         
     | 
| 
       9 
10 
     | 
    
         
             
              alert(:alert_rufus, :name => 'Rufus Alert')
         
     | 
| 
       10 
11 
     | 
    
         
             
              button(:view_exists, :name => 'existsButton')
         
     | 
| 
       11 
12 
     | 
    
         
             
              button(:view_displayed, :name => 'displayedPageButton')
         
     | 
| 
      
 13 
     | 
    
         
            +
              button(:view_enabled, :name => 'enabledPageButton')
         
     | 
| 
       12 
14 
     | 
    
         
             
              button(:alert_Ok, :name => 'Ok')
         
     | 
| 
       13 
15 
     | 
    
         
             
              button(:alert_Cancel, :name => 'Cancel')
         
     | 
| 
       14 
16 
     | 
    
         | 
| 
       15 
17 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
18 
     | 
    
         
             
              def active?
         
     | 
| 
       18 
19 
     | 
    
         
             
                 view_rufus_view.exists?
         
     | 
| 
       19 
20 
     | 
    
         
             
                true
         
     | 
    
        data/features/view.feature
    CHANGED
    
    | 
         @@ -21,9 +21,18 @@ Feature: Interacting with views 
     | 
|
| 
       21 
21 
     | 
    
         
             
              Scenario: Waiting for a view that is not there
         
     | 
| 
       22 
22 
     | 
    
         
             
                Given I am on the "HomePage"
         
     | 
| 
       23 
23 
     | 
    
         
             
                Then I will not find the view marked "zilch" after waiting
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
       25 
25 
     | 
    
         
             
              Scenario: Waiting for a view to be displayed
         
     | 
| 
       26 
26 
     | 
    
         
             
                Given I have navigated to the "DisplayedPage" using the "to_displayed" route
         
     | 
| 
       27 
27 
     | 
    
         
             
                Then I am on the "DisplayedPage"
         
     | 
| 
       28 
     | 
    
         
            -
                And the view marked "invisible" exists is not displayed
         
     | 
| 
      
 28 
     | 
    
         
            +
                And the view marked "invisible" exists but is not displayed
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              Scenario: Waiting for a view to be enabled
         
     | 
| 
      
 31 
     | 
    
         
            +
                Given I have navigated to the "EnabledPage" using the "to_enabled" route
         
     | 
| 
      
 32 
     | 
    
         
            +
                Then I am on the "EnabledPage"
         
     | 
| 
      
 33 
     | 
    
         
            +
                And the view marked "not_enabled" is not enabled
         
     | 
| 
      
 34 
     | 
    
         
            +
                @block
         
     | 
| 
      
 35 
     | 
    
         
            +
               Scenario: Calling views in a block
         
     | 
| 
      
 36 
     | 
    
         
            +
                 Given I am on the "HomePage"
         
     | 
| 
      
 37 
     | 
    
         
            +
                 Then in a block can see the existence of views "rufus", "exists" and "displayed"
         
     | 
| 
       29 
38 
     | 
    
         | 
    
        data/lib/rufus.rb
    CHANGED
    
    | 
         @@ -31,13 +31,29 @@ module Rufus 
     | 
|
| 
       31 
31 
     | 
    
         
             
              def enabled_after_wait?(view, timeout = 5)
         
     | 
| 
       32 
32 
     | 
    
         
             
                wait = Selenium::WebDriver::Wait.new :timeout => timeout
         
     | 
| 
       33 
33 
     | 
    
         
             
                begin
         
     | 
| 
       34 
     | 
    
         
            -
                  wait.until{view. 
     | 
| 
      
 34 
     | 
    
         
            +
                  wait.until{view.enabled?}
         
     | 
| 
       35 
35 
     | 
    
         
             
                rescue Selenium::WebDriver::Error::TimeOutError
         
     | 
| 
       36 
36 
     | 
    
         
             
                  return false
         
     | 
| 
       37 
37 
     | 
    
         
             
                end
         
     | 
| 
       38 
38 
     | 
    
         
             
                true
         
     | 
| 
       39 
39 
     | 
    
         
             
              end
         
     | 
| 
       40 
40 
     | 
    
         | 
| 
      
 41 
     | 
    
         
            +
              def find(locator)
         
     | 
| 
      
 42 
     | 
    
         
            +
                selenium.find(locator)
         
     | 
| 
      
 43 
     | 
    
         
            +
              end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
              def click(locator)
         
     | 
| 
      
 46 
     | 
    
         
            +
                selenium.find(locator).click
         
     | 
| 
      
 47 
     | 
    
         
            +
              end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
              def page_source
         
     | 
| 
      
 50 
     | 
    
         
            +
                selenium.page_source
         
     | 
| 
      
 51 
     | 
    
         
            +
              end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
              def elements_of_type(type)
         
     | 
| 
      
 54 
     | 
    
         
            +
                selenium.elements_by_tag(type)
         
     | 
| 
      
 55 
     | 
    
         
            +
              end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
       41 
57 
     | 
    
         
             
            end
         
     | 
| 
       42 
58 
     | 
    
         | 
| 
       43 
59 
     | 
    
         | 
    
        data/lib/rufus/driver.rb
    CHANGED
    
    | 
         @@ -66,8 +66,10 @@ module Rufus 
     | 
|
| 
       66 
66 
     | 
    
         
             
                end
         
     | 
| 
       67 
67 
     | 
    
         | 
| 
       68 
68 
     | 
    
         
             
                def type(keys, name)
         
     | 
| 
       69 
     | 
    
         
            -
                   
     | 
| 
       70 
     | 
    
         
            -
                   
     | 
| 
      
 69 
     | 
    
         
            +
                  element = find(:name => name)
         
     | 
| 
      
 70 
     | 
    
         
            +
                  element.click
         
     | 
| 
      
 71 
     | 
    
         
            +
                  sleep 1
         
     | 
| 
      
 72 
     | 
    
         
            +
                  element.send_keys keys
         
     | 
| 
       71 
73 
     | 
    
         
             
                end
         
     | 
| 
       72 
74 
     | 
    
         | 
| 
       73 
75 
     | 
    
         
             
                def sequence(*names, times)
         
     | 
| 
         @@ -147,6 +149,18 @@ module Rufus 
     | 
|
| 
       147 
149 
     | 
    
         
             
                  element.attribute(:name).eql? name
         
     | 
| 
       148 
150 
     | 
    
         
             
                end
         
     | 
| 
       149 
151 
     | 
    
         | 
| 
      
 152 
     | 
    
         
            +
                def page_source
         
     | 
| 
      
 153 
     | 
    
         
            +
                  driver.page_source
         
     | 
| 
      
 154 
     | 
    
         
            +
                end
         
     | 
| 
      
 155 
     | 
    
         
            +
             
     | 
| 
      
 156 
     | 
    
         
            +
                def all_elements
         
     | 
| 
      
 157 
     | 
    
         
            +
                  elements_by_tag('UIAElement')
         
     | 
| 
      
 158 
     | 
    
         
            +
                end
         
     | 
| 
      
 159 
     | 
    
         
            +
             
     | 
| 
      
 160 
     | 
    
         
            +
                def elements_by_tag(name)
         
     | 
| 
      
 161 
     | 
    
         
            +
                  driver.find_elements(:tag_name, name)
         
     | 
| 
      
 162 
     | 
    
         
            +
                end
         
     | 
| 
      
 163 
     | 
    
         
            +
             
     | 
| 
       150 
164 
     | 
    
         
             
                private
         
     | 
| 
       151 
165 
     | 
    
         | 
| 
       152 
166 
     | 
    
         
             
                def url(config)
         
     | 
| 
         @@ -171,14 +185,6 @@ module Rufus 
     | 
|
| 
       171 
185 
     | 
    
         
             
                  class_for(element).eql?('UIATableCell')
         
     | 
| 
       172 
186 
     | 
    
         
             
                end
         
     | 
| 
       173 
187 
     | 
    
         | 
| 
       174 
     | 
    
         
            -
                def all_elements
         
     | 
| 
       175 
     | 
    
         
            -
                 elements_by_tag('UIAElement')
         
     | 
| 
       176 
     | 
    
         
            -
                end
         
     | 
| 
       177 
     | 
    
         
            -
             
     | 
| 
       178 
     | 
    
         
            -
                def elements_by_tag(name)
         
     | 
| 
       179 
     | 
    
         
            -
                  driver.find_elements(:tag_name, name)
         
     | 
| 
       180 
     | 
    
         
            -
                end
         
     | 
| 
       181 
     | 
    
         
            -
             
     | 
| 
       182 
188 
     | 
    
         
             
                def driver
         
     | 
| 
       183 
189 
     | 
    
         
             
                  if use_device
         
     | 
| 
       184 
190 
     | 
    
         
             
                    @selenium ||= Rufus::Drivers::IOS_Device.for(@config,@url)
         
     | 
| 
         @@ -190,6 +196,5 @@ module Rufus 
     | 
|
| 
       190 
196 
     | 
    
         
             
                def use_device
         
     | 
| 
       191 
197 
     | 
    
         
             
                  @config["use_physical"] == true
         
     | 
| 
       192 
198 
     | 
    
         
             
                end
         
     | 
| 
       193 
     | 
    
         
            -
             
     | 
| 
       194 
199 
     | 
    
         
             
              end
         
     | 
| 
       195 
200 
     | 
    
         
             
            end
         
     | 
    
        data/lib/rufus/navigation.rb
    CHANGED
    
    | 
         @@ -4,19 +4,18 @@ module Rufus 
     | 
|
| 
       4 
4 
     | 
    
         
             
              module Navigation
         
     | 
| 
       5 
5 
     | 
    
         
             
                include PageNavigation
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
                def on(cls)
         
     | 
| 
      
 7 
     | 
    
         
            +
                def on(cls, timeout = 10, &block)
         
     | 
| 
       8 
8 
     | 
    
         
             
                  screen = cls.new
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
9 
     | 
    
         
             
                  wait = 0
         
     | 
| 
       11 
     | 
    
         
            -
                  until wait ==  
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 10 
     | 
    
         
            +
                  until wait == timeout  do
         
     | 
| 
       13 
11 
     | 
    
         
             
                    if screen.active?
         
     | 
| 
      
 12 
     | 
    
         
            +
                      block.call screen if block
         
     | 
| 
       14 
13 
     | 
    
         
             
                      return screen
         
     | 
| 
       15 
14 
     | 
    
         
             
                    else
         
     | 
| 
      
 15 
     | 
    
         
            +
                      sleep 1
         
     | 
| 
       16 
16 
     | 
    
         
             
                      wait += 1
         
     | 
| 
       17 
17 
     | 
    
         
             
                    end
         
     | 
| 
       18 
18 
     | 
    
         
             
                  end
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
19 
     | 
    
         
             
                    raise "Expected #{cls} to be active"
         
     | 
| 
       21 
20 
     | 
    
         
             
                  end
         
     | 
| 
       22 
21 
     | 
    
         
             
                end
         
     | 
    
        data/rakefile
    ADDED
    
    | 
         @@ -0,0 +1,90 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'yaml'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rspec/core/rake_task'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'cucumber/rake/task'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'erb'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'childprocess'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            desc "Start appium and run features"
         
     | 
| 
      
 8 
     | 
    
         
            +
            task :test => [:build_sim, :install_sim, :appium_sim, :specs, :features, :stop_sim_server]
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            desc "Running specs appium server"
         
     | 
| 
      
 11 
     | 
    
         
            +
            RSpec::Core::RakeTask.new(:specs)
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            desc "build RufusApp for simulator"
         
     | 
| 
      
 14 
     | 
    
         
            +
            task :build_sim do
         
     | 
| 
      
 15 
     | 
    
         
            +
              Dir.chdir("./RufusApp") do
         
     | 
| 
      
 16 
     | 
    
         
            +
                `xcodebuild -project RufusApp.xcodeproj -target RufusApp -sdk iphonesimulator -configuration Debug clean build 1>&2`  
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            desc "build RufusApp for device"
         
     | 
| 
      
 21 
     | 
    
         
            +
            task :build_device do
         
     | 
| 
      
 22 
     | 
    
         
            +
              Dir.chdir("./RufusApp") do
         
     | 
| 
      
 23 
     | 
    
         
            +
                `xcodebuild -project RufusApp.xcodeproj -target RufusApp -sdk iphoneos -configuration Debug clean build 1>&2`  
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
            end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            desc "Run the features"
         
     | 
| 
      
 28 
     | 
    
         
            +
            task :features do
         
     | 
| 
      
 29 
     | 
    
         
            +
              `bundle exec cucumber --tags @rufus 1>&2`
         
     | 
| 
      
 30 
     | 
    
         
            +
            end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            desc "Starting the appium server"
         
     | 
| 
      
 33 
     | 
    
         
            +
            task :appium_sim do
         
     | 
| 
      
 34 
     | 
    
         
            +
              process = ChildProcess.build('rake', 'appium_server')
         
     | 
| 
      
 35 
     | 
    
         
            +
              process.duplex = true
         
     | 
| 
      
 36 
     | 
    
         
            +
              process.start
         
     | 
| 
      
 37 
     | 
    
         
            +
            end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            desc "Stops the appium server for simulator"
         
     | 
| 
      
 40 
     | 
    
         
            +
            task :stop_sim_server do
         
     | 
| 
      
 41 
     | 
    
         
            +
              system('pkill -9 -f node /usr/local/bin/appium --app #{ENV["HOME"]}/Library/Application Support/iPhone Simulator/#{config["version"]}/Applications')
         
     | 
| 
      
 42 
     | 
    
         
            +
            end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            desc "Starting appium server for simulator"
         
     | 
| 
      
 45 
     | 
    
         
            +
            task :appium_server do
         
     | 
| 
      
 46 
     | 
    
         
            +
              config = YAML.load(ERB.new(File.read('config.yml')).result)
         
     | 
| 
      
 47 
     | 
    
         
            +
              app_path = config["sim_app_path"]
         
     | 
| 
      
 48 
     | 
    
         
            +
              system('appium --app "' + app_path + '" --force-ipad --native-instruments-lib 1>&2')
         
     | 
| 
      
 49 
     | 
    
         
            +
            end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            desc "Install CoPilot to simulator"
         
     | 
| 
      
 52 
     | 
    
         
            +
            task :install_sim do
         
     | 
| 
      
 53 
     | 
    
         
            +
              config = YAML.load(ERB.new(File.read('config.yml')).result)
         
     | 
| 
      
 54 
     | 
    
         
            +
              folder_dir="#{ENV['HOME']}/Library/Application Support/iPhone Simulator/#{config["version"]}/Applications"
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
              top_dir="#{folder_dir}/#{config["udid"]}"
         
     | 
| 
      
 57 
     | 
    
         
            +
              FileUtils.mkdir_p(top_dir)
         
     | 
| 
      
 58 
     | 
    
         
            +
              FileUtils.mkdir_p("#{top_dir}/Documents")
         
     | 
| 
      
 59 
     | 
    
         
            +
              FileUtils.mkdir_p("#{top_dir}/Library")
         
     | 
| 
      
 60 
     | 
    
         
            +
              FileUtils.mkdir_p("#{top_dir}/tmp")
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
              FileUtils.cp_r("./RufusApp/build/Debug-iphonesimulator/RufusApp.app", "#{top_dir}/RufusApp.app")
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
            end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            desc "Start the simulator"
         
     | 
| 
      
 67 
     | 
    
         
            +
            task :start_sim do
         
     | 
| 
      
 68 
     | 
    
         
            +
               system('open /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone\ Simulator.app')
         
     | 
| 
      
 69 
     | 
    
         
            +
            end
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
            desc "Starting appium server for device"
         
     | 
| 
      
 72 
     | 
    
         
            +
            task :appium do
         
     | 
| 
      
 73 
     | 
    
         
            +
              config = YAML.load_file('config.yml')
         
     | 
| 
      
 74 
     | 
    
         
            +
              app_path = config["app"]
         
     | 
| 
      
 75 
     | 
    
         
            +
              udid = config["udid"]
         
     | 
| 
      
 76 
     | 
    
         
            +
              `appium -U udid --app app_path 1>&2`
         
     | 
| 
      
 77 
     | 
    
         
            +
            end
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
            desc "Reset the simulator"
         
     | 
| 
      
 80 
     | 
    
         
            +
            task :reset_sim do
         
     | 
| 
      
 81 
     | 
    
         
            +
              %x{osascript<<APPLESCRIPT
         
     | 
| 
      
 82 
     | 
    
         
            +
                      tell application "System Events"
         
     | 
| 
      
 83 
     | 
    
         
            +
                        click menu item 5 of menu "iOS Simulator" of menu bar of process "iPhone Simulator"
         
     | 
| 
      
 84 
     | 
    
         
            +
                          tell window 1 of process "iPhone Simulator"
         
     | 
| 
      
 85 
     | 
    
         
            +
                            click button "Reset"
         
     | 
| 
      
 86 
     | 
    
         
            +
                          end tell
         
     | 
| 
      
 87 
     | 
    
         
            +
                      end tell
         
     | 
| 
      
 88 
     | 
    
         
            +
                  APPLESCRIPT}
         
     | 
| 
      
 89 
     | 
    
         
            +
            end
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
    
        data/rufus.gemspec
    CHANGED
    
    
| 
         @@ -37,8 +37,6 @@ describe Rufus::Driver do 
     | 
|
| 
       37 
37 
     | 
    
         
             
                    expect{Rufus::Driver.new}.to raise_error(RuntimeError, 'No config.yml found')
         
     | 
| 
       38 
38 
     | 
    
         
             
                  end
         
     | 
| 
       39 
39 
     | 
    
         
             
                end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
40 
     | 
    
         
             
             end
         
     | 
| 
       43 
41 
     | 
    
         | 
| 
       44 
42 
     | 
    
         
             
              context 'dealing with elements' do
         
     | 
| 
         @@ -94,6 +92,7 @@ describe Rufus::Driver do 
     | 
|
| 
       94 
92 
     | 
    
         | 
| 
       95 
93 
     | 
    
         
             
                it 'can enter text into an element' do
         
     | 
| 
       96 
94 
     | 
    
         
             
                  mock_driver.should_receive(:find_element).with(:name, 'rufusButton').and_return(mock_element)
         
     | 
| 
      
 95 
     | 
    
         
            +
                  mock_element.should_receive(:click)
         
     | 
| 
       97 
96 
     | 
    
         
             
                  mock_element.should_receive(:send_keys).with('text')
         
     | 
| 
       98 
97 
     | 
    
         
             
                  @driver.type('text', 'rufusButton')
         
     | 
| 
       99 
98 
     | 
    
         
             
                end
         
     | 
| 
         @@ -314,18 +313,42 @@ describe Rufus::Driver do 
     | 
|
| 
       314 
313 
     | 
    
         
             
                      mock_driver.should_receive(:rotate).with('portrait')
         
     | 
| 
       315 
314 
     | 
    
         
             
                      @driver.rotate('portrait')
         
     | 
| 
       316 
315 
     | 
    
         
             
                    end
         
     | 
| 
      
 316 
     | 
    
         
            +
                  end
         
     | 
| 
      
 317 
     | 
    
         
            +
                end
         
     | 
| 
       317 
318 
     | 
    
         | 
| 
      
 319 
     | 
    
         
            +
                context 'getting the page data' do
         
     | 
| 
       318 
320 
     | 
    
         | 
| 
      
 321 
     | 
    
         
            +
                  let(:yaml){double('YAML loader')}
         
     | 
| 
      
 322 
     | 
    
         
            +
                  let(:mock_driver){'a mock app driver'}
         
     | 
| 
      
 323 
     | 
    
         
            +
                  let(:url){'http://127.0.0.1:4723/wd/hub'}
         
     | 
| 
       319 
324 
     | 
    
         | 
| 
      
 325 
     | 
    
         
            +
                  before(:each) do
         
     | 
| 
      
 326 
     | 
    
         
            +
                    File.stub(:exists?).and_return(true)
         
     | 
| 
      
 327 
     | 
    
         
            +
                    @config = {"browser_name" =>"iOS", "platform"=>"Mac", "version"=>"6.1", "app"=>"/Users/app/path/rufus.app", "use_physical" => false}
         
     | 
| 
      
 328 
     | 
    
         
            +
                    YAML.should_receive(:load).and_return(@config)
         
     | 
| 
      
 329 
     | 
    
         
            +
                    @driver = Rufus::Driver.new
         
     | 
| 
      
 330 
     | 
    
         
            +
                  end
         
     | 
| 
       320 
331 
     | 
    
         | 
| 
      
 332 
     | 
    
         
            +
                  it 'can get all the page data' do
         
     | 
| 
       321 
333 
     | 
    
         | 
| 
       322 
     | 
    
         
            -
             
     | 
| 
       323 
     | 
    
         
            -
             
     | 
| 
       324 
     | 
    
         
            -
             
     | 
| 
      
 334 
     | 
    
         
            +
                    Rufus::Drivers::IOS_Simulator.should_receive(:for).with(@config, url).and_return(mock_driver)
         
     | 
| 
      
 335 
     | 
    
         
            +
                    mock_driver.should_receive(:page_source).and_return("some page data")
         
     | 
| 
      
 336 
     | 
    
         
            +
                    @driver.page_source.should eq("some page data")
         
     | 
| 
       325 
337 
     | 
    
         
             
                  end
         
     | 
| 
       326 
338 
     | 
    
         | 
| 
      
 339 
     | 
    
         
            +
                  context 'getting element lists by class' do
         
     | 
| 
      
 340 
     | 
    
         
            +
             
     | 
| 
      
 341 
     | 
    
         
            +
                    let(:mock_list){'a mock list of elements'}
         
     | 
| 
       327 
342 
     | 
    
         | 
| 
      
 343 
     | 
    
         
            +
                    before(:each) do
         
     | 
| 
      
 344 
     | 
    
         
            +
                      Rufus::Drivers::IOS_Simulator.should_receive(:for).with(@config, url).and_return(mock_driver)
         
     | 
| 
      
 345 
     | 
    
         
            +
                    end
         
     | 
| 
       328 
346 
     | 
    
         | 
| 
      
 347 
     | 
    
         
            +
                    it 'can get all the buttons' do
         
     | 
| 
      
 348 
     | 
    
         
            +
                      mock_driver.should_receive(:find_elements).with(:tag_name, 'UIAButton').and_return(mock_list)
         
     | 
| 
      
 349 
     | 
    
         
            +
                      @driver.elements_by_tag('UIAButton').should eq(mock_list)
         
     | 
| 
      
 350 
     | 
    
         
            +
                    end
         
     | 
| 
      
 351 
     | 
    
         
            +
                  end
         
     | 
| 
       329 
352 
     | 
    
         
             
                end
         
     | 
| 
       330 
353 
     | 
    
         
             
              end
         
     | 
| 
       331 
354 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,46 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rufus/navigation'
         
     | 
| 
      
 3 
     | 
    
         
            +
            include Rufus::Navigation
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            class RufusNavPage
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            describe Rufus::Navigation do
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              let(:mock_page){'mock page object'}
         
     | 
| 
      
 12 
     | 
    
         
            +
              let(:mock_block){lambda{}}
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              context 'getting the active screen' do
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                before (:each) do
         
     | 
| 
      
 17 
     | 
    
         
            +
                  mock_page.should_receive(:new).and_return(mock_page)
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                it 'raises exception if screen does not become active' do
         
     | 
| 
      
 21 
     | 
    
         
            +
                  mock_page.should_receive(:active?).at_least(1).times.and_return false
         
     | 
| 
      
 22 
     | 
    
         
            +
                  expect{on(mock_page, 1)}.to raise_error
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                it 'returns the active screen' do
         
     | 
| 
      
 26 
     | 
    
         
            +
                  mock_page.should_receive(:active?).and_return true
         
     | 
| 
      
 27 
     | 
    
         
            +
                  on(mock_page).should eq mock_page
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                it 'can execute a block' do
         
     | 
| 
      
 31 
     | 
    
         
            +
                  mock_page.should_receive(:active?).and_return true
         
     | 
| 
      
 32 
     | 
    
         
            +
                  mock_block.should_receive(:call).with mock_page
         
     | 
| 
      
 33 
     | 
    
         
            +
                  on(mock_page, &mock_block)
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/rufus_spec.rb
    CHANGED
    
    | 
         @@ -7,8 +7,6 @@ require 'yaml' 
     | 
|
| 
       7 
7 
     | 
    
         
             
            describe Rufus do
         
     | 
| 
       8 
8 
     | 
    
         
             
              include Rufus
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
10 
     | 
    
         
             
              context 'waiting for an element to exist' do
         
     | 
| 
       13 
11 
     | 
    
         | 
| 
       14 
12 
     | 
    
         
             
                let(:mock_wait){'mock Selenium::WebDriver::Wait'}
         
     | 
| 
         @@ -85,4 +83,33 @@ describe Rufus do 
     | 
|
| 
       85 
83 
     | 
    
         
             
                  end
         
     | 
| 
       86 
84 
     | 
    
         
             
                end
         
     | 
| 
       87 
85 
     | 
    
         
             
              end
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
              context 'elements without accessors' do
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
                let(:selenium){'mock selenium driver'}
         
     | 
| 
      
 90 
     | 
    
         
            +
                let(:mock_element){'mock selenium element'}
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
                it 'can find an element by name' do
         
     | 
| 
      
 93 
     | 
    
         
            +
                  selenium.should_receive(:find).with({:name => 'rufusButton'}).and_return(mock_element)
         
     | 
| 
      
 94 
     | 
    
         
            +
                  mock_element.should_receive(:click)
         
     | 
| 
      
 95 
     | 
    
         
            +
                  click(:name => 'rufusButton')
         
     | 
| 
      
 96 
     | 
    
         
            +
                end
         
     | 
| 
      
 97 
     | 
    
         
            +
              end
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
              context 'getting the raw page data' do
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
                let(:selenium){'mock selenium driver'}
         
     | 
| 
      
 102 
     | 
    
         
            +
                let(:elements){'mock list of elements'}
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
                it 'can get the raw page data' do
         
     | 
| 
      
 105 
     | 
    
         
            +
                  selenium.should_receive(:page_source).and_return("source data")
         
     | 
| 
      
 106 
     | 
    
         
            +
                  page_source.should eq("source data")
         
     | 
| 
      
 107 
     | 
    
         
            +
                end
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
                it 'can get a list of buttons' do
         
     | 
| 
      
 110 
     | 
    
         
            +
                  selenium.should_receive(:elements_by_tag).with('UIAButton').and_return(elements)
         
     | 
| 
      
 111 
     | 
    
         
            +
                  elements_of_type 'UIAButton'
         
     | 
| 
      
 112 
     | 
    
         
            +
                end
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
              end
         
     | 
| 
       88 
115 
     | 
    
         
             
            end
         
     | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: rufus
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: '0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: '0.5'
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Jeremy Stewart
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2013-10- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2013-10-15 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: page_navigation
         
     | 
| 
         @@ -47,6 +47,7 @@ extra_rdoc_files: [] 
     | 
|
| 
       47 
47 
     | 
    
         
             
            files:
         
     | 
| 
       48 
48 
     | 
    
         
             
            - .gitignore
         
     | 
| 
       49 
49 
     | 
    
         
             
            - .gitmodules
         
     | 
| 
      
 50 
     | 
    
         
            +
            - .travis.yml
         
     | 
| 
       50 
51 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       51 
52 
     | 
    
         
             
            - Gemfile.lock
         
     | 
| 
       52 
53 
     | 
    
         
             
            - LICENSE.txt
         
     | 
| 
         @@ -268,7 +269,6 @@ files: 
     | 
|
| 
       268 
269 
     | 
    
         
             
            - RufusApp/Frank/libFrankMac.a
         
     | 
| 
       269 
270 
     | 
    
         
             
            - RufusApp/Frank/libShelley.a
         
     | 
| 
       270 
271 
     | 
    
         
             
            - RufusApp/Frank/libShelleyMac.a
         
     | 
| 
       271 
     | 
    
         
            -
            - RufusApp/Rakefile
         
     | 
| 
       272 
272 
     | 
    
         
             
            - RufusApp/RufusApp.xcodeproj/project.pbxproj
         
     | 
| 
       273 
273 
     | 
    
         
             
            - RufusApp/RufusApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata
         
     | 
| 
       274 
274 
     | 
    
         
             
            - RufusApp/RufusApp/Default-568h@2x.png
         
     | 
| 
         @@ -311,16 +311,20 @@ files: 
     | 
|
| 
       311 
311 
     | 
    
         
             
            - RufusApp/RufusAppTests/RufusAppTests.h
         
     | 
| 
       312 
312 
     | 
    
         
             
            - RufusApp/RufusAppTests/RufusAppTests.m
         
     | 
| 
       313 
313 
     | 
    
         
             
            - RufusApp/RufusAppTests/en.lproj/InfoPlist.strings
         
     | 
| 
      
 314 
     | 
    
         
            +
            - config.yml
         
     | 
| 
       314 
315 
     | 
    
         
             
            - features/alert.feature
         
     | 
| 
       315 
316 
     | 
    
         
             
            - features/driver.feature
         
     | 
| 
      
 317 
     | 
    
         
            +
            - features/rufus.feature
         
     | 
| 
       316 
318 
     | 
    
         
             
            - features/step_definitions/alert_steps.rb.rb
         
     | 
| 
       317 
319 
     | 
    
         
             
            - features/step_definitions/driver_steps.rb
         
     | 
| 
      
 320 
     | 
    
         
            +
            - features/step_definitions/rufus_steps.rb
         
     | 
| 
       318 
321 
     | 
    
         
             
            - features/step_definitions/view_steps.rb
         
     | 
| 
       319 
322 
     | 
    
         
             
            - features/support/core_ext/string.rb
         
     | 
| 
       320 
323 
     | 
    
         
             
            - features/support/env.rb
         
     | 
| 
       321 
324 
     | 
    
         
             
            - features/support/hooks.rb
         
     | 
| 
       322 
325 
     | 
    
         
             
            - features/support/routes.rb
         
     | 
| 
       323 
326 
     | 
    
         
             
            - features/support/screens/displayed_page.rb
         
     | 
| 
      
 327 
     | 
    
         
            +
            - features/support/screens/enabled_page.rb
         
     | 
| 
       324 
328 
     | 
    
         
             
            - features/support/screens/exists_page.rb
         
     | 
| 
       325 
329 
     | 
    
         
             
            - features/support/screens/home_page.rb
         
     | 
| 
       326 
330 
     | 
    
         
             
            - features/support/screens/rufus_page.rb
         
     | 
| 
         @@ -332,11 +336,13 @@ files: 
     | 
|
| 
       332 
336 
     | 
    
         
             
            - lib/rufus/drivers/iOS_device.rb
         
     | 
| 
       333 
337 
     | 
    
         
             
            - lib/rufus/drivers/iOS_simulator.rb
         
     | 
| 
       334 
338 
     | 
    
         
             
            - lib/rufus/navigation.rb
         
     | 
| 
      
 339 
     | 
    
         
            +
            - rakefile
         
     | 
| 
       335 
340 
     | 
    
         
             
            - rufus.gemspec
         
     | 
| 
       336 
341 
     | 
    
         
             
            - spec/accessors_spec.rb
         
     | 
| 
       337 
342 
     | 
    
         
             
            - spec/drivers_specs/driver_spec.rb
         
     | 
| 
       338 
343 
     | 
    
         
             
            - spec/drivers_specs/iOS_device_spec.rb
         
     | 
| 
       339 
344 
     | 
    
         
             
            - spec/drivers_specs/iOS_simulator_spec.rb
         
     | 
| 
      
 345 
     | 
    
         
            +
            - spec/navigation_spec.rb
         
     | 
| 
       340 
346 
     | 
    
         
             
            - spec/rufus_spec.rb
         
     | 
| 
       341 
347 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
       342 
348 
     | 
    
         
             
            - spec/view_spec.rb
         
     | 
    
        data/RufusApp/Rakefile
    DELETED
    
    | 
         @@ -1,28 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'cucumber'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'cucumber/rake/task'
         
     | 
| 
       3 
     | 
    
         
            -
            require 'rspec/core/rake_task'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            desc "Build CoPilot for physical deployment"
         
     | 
| 
       6 
     | 
    
         
            -
            task :frankify do
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            `xcodebuild -target RufusApp -xcconfig /Users/jstewart/rubymineprojects/rufus/rufusapp/frank/frankify.xcconfig -arch armv7 -configuration Debug -sdk iphoneos DEPLOYMENT_LOCATION=YES DSTROOT=\`pwd\`/Frank/Frankified_build FRANK_LIBRARY_SEARCH_PATHS=\`pwd\`/Frank clean build`  
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
            desc "Install CoPilot on iPad"
         
     | 
| 
       13 
     | 
    
         
            -
            task :fruitstrap do
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
              Dir.chdir("/Users/jstewart/documents/projects/copilot/frameworks/fruitstrap") do
         
     | 
| 
       16 
     | 
    
         
            -
                
         
     | 
| 
       17 
     | 
    
         
            -
               `./fruitstrap -b /Users/jstewart/Library/Developer/Xcode/DerivedData/RufusApp-bseyccodcsszzhcwbshowgsppecs/Build/Products/Debug-iphoneos/RufusApp.app 2>&1`
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
              end
         
     | 
| 
       20 
     | 
    
         
            -
            end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
            desc "Start Appium server"
         
     | 
| 
       23 
     | 
    
         
            -
            task :appium do
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
              Dir.chdir("/Users/jstewart/rubymineprojects/rufus/appium") do
         
     | 
| 
       26 
     | 
    
         
            -
                  `appium -U 4550a561efc2c047637f342bd6320623ba98c385 --app /Users/jstewart/Library/Developer/Xcode/DerivedData/RufusApp-bseyccodcsszzhcwbshowgsppecs/Build/Products/Debug-iphoneos/RufusApp.app`
         
     | 
| 
       27 
     | 
    
         
            -
              end
         
     | 
| 
       28 
     | 
    
         
            -
            end
         
     |