Profile cover photo
Profile photo
Mark Wong
Mark's posts

Appium with IOS

I made some tests to test our mobile webs using IOS and Android.

Here are some basic things working with appium and xcode.

xcode uses the highest version of IOS when simulating even if you are testing an older version.  As an example, you have 7.0 and 7.1 versions of IOS in your simulator and you want to test 7.0. This matters because I could see Mobile Safari in 7.0 and not 7.1 and my web tests would not work.

I had to delete xcode and then re-install to get Mobile Safari in 7.1. I had it 'disappear' again when I updated xcode so I re-installed xcode completely to get Mobile Safari back.

I'm not sure the version of Appium that changed the desired capabilities values but it was not easy to figure out how to call safari within Appium with the change in the desired capabilities. This is what I'm using:

                'deviceName': 'iPhone Simulator',
                'platformName': 'IOS',
                'platformVersion': '7.1',
                'browserName': 'safari',
                'locationServicesAuthorized': True,
                'autoAcceptAlerts': True


Some steps are useful that are not emphasized in the documentation.  For example, how do you click or press an image that is not a button.

Use the "Then /^I press view with id "([^\"]*)"$/"

There are a lot of questions about how to do this by implementing your own steps. For now this has been implemented.

Post has attachment
calabash-ios and calabash-android

As a user of Android phones, I never realized that Android and IOS behave differently when a keyboard pops up. In Android if you hit the back button, the keyboard will go away. In IOS it will remove the keyboard and then go to the previous screen.

When looking at the documentation on the predefined steps, it mentions:

Built-in keyboard. Touching the Done/Search button

Then I touch done
Then I touch search

You should note that this is different than a regular button. That would be:

Then I touch the "Search" button.

In my case the button displayed Search. When I used 'Then I touch search", it behaved properly.

Touching buttons on the popup keyboards is handled differently than buttons on a regular view.

Post has attachment
calabash-ios console

You can get quite far in testing an IOS app by using the standard steps. There comes a point though when you need to do more.

An example would be though in trying to touch an image view.

You can use the command in the directory where you run 'cucumber':

calabash-ios console

I realize that it is mentioned in the documentation but this point should emphasized, when you are in the console, you can work within your app by doing Ruby commands.

Documentation shows you query information like so:


In other places you may see:

query "Views"

They will both work and they are the same thing. This works because that is how the Ruby language has been designed. You don't have to use all of the characters if Ruby can figure it out.

Post has attachment
I am using scrible toolbar to put notes on web pages and then save them with tags. Unfortunately I am unable to mark github pages.

For calabash-ios, use the following link for the main documentation:

Post has attachment
There is a free class about Software as a Service. You can sign up at I took this class a few months ago but I didn't finish it due to releases at work.

In order to teach Software as a Service, they teach Ruby and Rails for the first half of a class. This is actually part 1 of 2 parts. There is no cost for the class but there is a $10 charge for the book which is half of their book. The instructors are professors at UC Berkeley. There are a number of other classes as part of

The first 2 and 1/2 assignments covers Ruby and Rails. They provide an environment you can download to do your development. This is much better than trying to integrate all of their tools yourself with the operating system that you are using. They wrote a service which they use to grade all of your assignments. I think it was neat because you get quick feedback on your assignments so you can keep submitting them until you get a 100% score.

With the Rails stuff, they provide the folder for the web site which they then ask you to modify in the assignments. I found that Rails does a lot of magic so I had a hard time figuring out what to modify and where to modify the correct Rails file. I ended up using the book examples and manually typed all of the files that were needed. This helped me a lot to understand where to modify and how to debug problems.

I am taking this class again because I want to finish the second half of the class. I also want to take part 2 of the class when it comes out.

Post has attachment
Silicon Valley Code Camp

The Silicon Valley Code Camp is coming up October 6th and 7th in Los Altos, California. Since I just started learning Ruby, I am interested in any Ruby sessions. There are 70 sessions so far but none directly about Ruby. There are a few sessions on how to integrate tools with Ruby but not about Ruby itself. There were over 200 sessions last year so I can hope.

Post has attachment
Learned about a company ( that puts their framework around Selenium.

The nicest thing they represented was their IDE to work with Selenium He discussed Selenium Builder which was designed as an on-ramp for people learning Selenium. Selenium Builder was never designed to continue to be used after you learned Selenium.

Since it works on top of Selenium, most of it looks familiar to Selenium people. Their software is implemented in HTML5. This means you can use most modern browsers to record tests instead of only Firefox for Selenium Builder. Another thing is they integrate another tool that you can code up to handle stuff that Selenium doesn't handle. These bits of code run can run within a series of Selenium commands. You can export there commands into various languages including Selanese.

Selenium Meetup in San Jose

Went to a selenium meetup in San Jose. One of the talks was about Zagile. Their tool is designed as a framework that works with the Atlassian tools including Confluence, Jira, Fisheye with other tools like Selenium and Salesforce.

They've designed their software so that you use Atlassian tools to enter requirements. You can then tie in the engineering information like the devlelopers and maintainers and then to the test suites and test cases. You can actually run the Selenium test cases from the product which looks like any other Confluence page. All the information is tied together. You can see test results within Confluence, track issues to the engineers responsible for that module, and then to the requirements. You can even tie the test case to the Salesforce tracking id.

I really like this presentation because we used all of the tools that were being discussed. It would be nice to integrate requirements and test suites and results with the products that we are already using.

Post has attachment
I went to the first Google Drive developer meeting at the Googleplex. The API and SDK are at

I really didn't quite understand what the difference was between the old Google Documents and Google Drive. The main difference is that all of the other Google services and their own APIs could only work on with the extension types that they know how to handle.

Google Drive lets the application developer work with any type of data that is on Google Drive or referenced. They consider Google Drive as user managed content as opposed to an application developer who manages the content.

There was a couple of demos of a wireframe app. and an app that would work with an Autocad file.

They currently support Java, PHP, Ruby, .net and some other languages and plan to support more.

The Google Drive applications can work with any browser. These Google Drive apps are gotten from the Chrome App store and they are the only apps that will work with other browsers.

Somebody asked about working with info when offline. The presenter said it is up to the App developer.

Ideally what I would like to see is to store programs on the Google Drive and then run them from an app. In that way you could use a Chromebook to do development.

I realize that a lot of this stuff can be done through other web sites but Google Drive is designed to be a general purpose storage area controlled by the user.
Wait while more posts are being loaded