Saturday 18 May 2013

Get rid of facetime, misson control from mac on every start in 3 steps

Step 1) cd /Library/Preferences
Step 2) sudo vi com.apple.dockfixup.plist
Step 3) Locate unwanted startup items and remove them , save the file and exit it and restart ur machine

Happy 'mac'ing
              <dict>
                        <key>after</key>
                        <string>begin</string>
                        <key>path</key>
                        <string>/Applications/Mission Control.app</string>
                        <key>tile-data</key>
                        <dict>
                                <key>file-type</key>
                                <integer>169</integer>
                        </dict>
                </dict>



                <dict>
                        <key>after</key>
                        <string>/Applications/Mission Control.app</string>
                        <key>path</key>
                        <string>/Applications/App Store.app</string>
                </dict>


                <dict>
                        <key>after</key>
                        <string>end</string>
                        <key>group</key>
                        <integer>80</integer>
                        <key>path</key>
                        <string>/Applications/Server.app</string>
                        <key>server</key>
                        <true/>
                </dict>

                <dict>
                        <key>after</key>
                        <string>/Applications/iChat.app</string>
                        <key>path</key>
                        <string>/Applications/FaceTime.app</string>
                </dict>



How to make personal website in 5$ / 5£ / 500 Rupees & 10 minutes!!

I started making a website for one of my relative and had to refresh my memory on how to get it up and running.

Here is how simple way to do it

Ingredients needed :

1) Domain name
2) web hosting server
3) Some html page.

How to get them 

1) I registered my domain at http://www.bigrock.in/, You can get a domain name at other popular sites like godaddy.com / net4.in

2) For web host server, I chose www.50webs.com/ which is my favorite free web hosting server for almost 5 years now.
Other options are using wordpress or blogger or some paid servers  like  hostgator

3) HTML code
open note pad , copy below code and save it as "index.html"
 <!DOCTYPE html>
<html>
<body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
</body>
</html>  


Steps to do at Bigrock website


  1. Login to ur domain provider (say you have purchased domain name hello.com)
  2. click on your domain and choose website manager or similar options 
  3. update nameserver to point to your webhost in this case its dns1.50webs.com and dns2.50webs.com   check pic4
  4.  Once you have set nameservers wait for an hour or so and check domain provider website again Check picture fig5 below, It indicates some warnings ignore them (these warnings are an indication that nameservers are recognized)
  5. Mean proceed to next section where we upload files to web host
 

Pic4: Set name servers


Fig5: Ignore these errors

 Steps for uploading files to webhost (50webs.com in this case)

  1. Create login and log into 50webs.com
  2. Go to domain manager -> my domains -> hosted domain -> host domain 
  3. Create a domain name exactly same as your website name (purchased with bigrock ex: hello.com). Having same name will help 50webs resolve DNS to your website for all incoming traffic that comes to your domain purchased at bigrock.
  4. Copy the index.html file we saved previously in to file manager for the newly created domain in step3
  5. Wait for 1-2 hours for DNS and NS to recognize ur website
  6. In my case it took1 hour but it might take upto 24 hours for DNS to be working properly 
Hope you website must be up & running soon
Drop a link to ur site when you have created using my blog
It makes me feel proud :)

Thursday 9 May 2013

Reading Excel file using ruby


 This is an example to read excel file in ruby (this can be used for reading excel workbook as well) using RubyXL gem

Step 1) Create an excel workbook like below



 Step 2) Create a ruby file including gems
require 'rubygems'
require 'rubyXL'

Copy path to excel file and replace it in place of work book
    workbook = RubyXL::Parser.parse("/Users/username/Downloads/simple_spreadsheet.xlsm")



This first sheet of excel workbook can be read into hash table using below command
    hash_arr=workbook[0].get_table(["Login", "email", "password"])

Multiple tables can be present in same file and they will read based on the format given in the above command (this helps in organizing many data tables in single sheet of excel file)



 Step 3: If needed it can be used in cucumber file as below


Source code :


require 'rubygems'
require 'rubyXL'
workbook = RubyXL::Parser.parse("simple_spreadsheet.xlsm")
hash_arr=workbook[0].get_table(["Login", "email", "password"])
all_tables=hash_arr[:table]
puts all_tables


For more details refer to - https://github.com/gilt/rubyXL project

Output looks like below




















calabash-ios: reusing step definitions using macros

This post is intended to explain how to reuse step definitions in calabash

Lets see with an example with a feature file

  Scenario Outline: I am able to test macro
    Given I want to test macro
    Then I have macro "hello"
  Examples:
    | filename  |
    | hello     |


Step definitions file


Call the second step definition here 
Given(/^I want to test macro$/) do
  var="test string"
  macro 'I have macro "'+var+'"'
end





This step can be used as macro in other step definitions

Then(/^I have macro "(.*?)"$/) do |arg1|
  puts arg1
end


 


















 

Calabash-IOS: Tips to search elements in View and webview

Calabash supports identification of view both using xpath & CSS

Its confirmed in in here https://groups.google.com/forum/#!msg/calabash-ios/nubfmY-6jbM/aSoYtW9mT8cJ

But this information is missing in wiki page

Usage :

Using CSS to identify elements : query("webView css:'#header'")
for xpath identification replace css by xpath and specify the path.

In Calabash-IOS there is no way to get source of HTML page, Getting elements from page

can be bit tricky, There are several possibilities to get past this 

check my video on this www.youtube.com/watch?v=w5rxvI3w2Ss

And also check below video






 

1) Use query("webView css:'*'") to get all associated elements on page then search for text you are looking at.
Index of results returned from query can be used to identify elements
Example:

res=query("webView css:'*'")
res[12] - could be the element you may want to verify

2) To verify if object is shown on screen .empty? can be very handy
 res=query("view text:'SomeText'").empty? # res is false if element is present
 use begin rescue block (in Ruby) to catch these exceptions and handle them


3) use regular expression 
query("view {text LIKE '*hello*'} ")

4) Using variables in search
text_to_check="hello"
query("view {text LIKE '*#{text_to_check}*'} ") 

5) Looping up and down until text found


while(true)
  begin 
    #check text found and click
  rescue
    #if there was any exception reported
    scroll("view",:down)
  end

end  

or 
wait_poll(:until_exists => "label text:'Cell 22'", :timeout => 20) do
  scroll("tableView", :down)
end
 
6)For converting case use upcase function
"hello".upcase

7) to check first & last result of array
arr=query("view {text LIKE '*#{text_to_check}*'} ")
arr.first 
arr.last  



Monday 6 May 2013

Calabash-IOS helping tester to setup project - Not a guide for devs

This is a like a quick guide to help tester setup certificate and IOS project for calabash-ios

1) Create apple developer account
https://developer.apple.com/ then add your account to your company list for that you may need invitation from one of other team members who are already in that group

2) Go to https://developer.apple.com/devcenter/ios/index.action and log in with user name & pwd
  • Go to Certificates, Identifiers & Profiles
  • under Certificates, download certificate for ur name
  • Double click on and add it login key chain
3) Configuring IOS device
  • Connect device
  • Go to xcode -> window > organizer 
  • select device -> click on add portal
Now you device must be all set to be used for current project
Error & Solution:
to use dev certificate that was present on old machine on new machine export p12 certificate from previous machine and then use it here
This link will help in doing that - http://www.utexas.edu/its/help/user-certs/812

Setting folder name to show in mac terminal prompt

To set terminal prompt to show name of current folder use the below command

echo 'export PS1="\W \$: "' >> ~/.bash_profile 

PS1 can be configured to show the terminal prompt to show below options
  • \d – Current date
  • \t – Current time
  • \h – Host name
  • \# – Command number
  • \u – User name
  • \W – Current working directory (ie: Desktop/)
  • \w – Current working directory, full path (ie: /Users/Admin/Desktop)
 


Calabash-ios backdoor - A Magic way to set precondition in calabash - Be careful & choosy while using it

Lets looks at the Use of it

I had a test app for which i had to write tests but after each login, to logout I had to navigate 4-5 pages, This added extra overhead to my testing

Suppose i have 3 tests and second test fails without logging out I would never have starting point for my 3rd test and hence that would fail
I wanted a single start point from where I start my test each time. Thats when I decided to use calabash backdoor function.

Lets looks at changes first
  
1) Added below function delaration in app AppDelegate.m
This code will change for your application but the way of using it is similar.
In my case dev team member helped me with logout functionality

#pragma mark -
#pragma mark - Calabash Method
- (NSString *) calabashBackdoor:(NSString *)aIgnorable
{
    [[ONEApplication sharedInstance] logOut];
    AppDelegate* delegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
    [delegate showLoggedOutViewController];
   
    return aIgnorable;
}


2) Add declaration in AppDelegate.h
This can be kept as below or method name can be changed but method signature has to be maintained.
//Calabash Method
- (NSString *) calabashBackdoor:(NSString *)aIgnorable;

3) Now compile the Application
Time of verify changes are reflected or not



4) Deploy application , Launch calabash-ios console
run  'calabashBackdoor' command and this must be executed on the application

Simple steps to get ruby 1.9.3 for calabash on mac osx 10.7

I did face this problem of getting ruby 1.9.3 on mac osx 10.7
Then I realized I need rvm but before doing all this I did need xcode installed
this must be easy for mac experts not for me definitely

Here are simple steps for a mac beginner to get ruby 1.9.3

  • Download install xcode from appstore
  • Install command line tools from xcode - Go to xcode->preferences->downloads->components->commandline tools 
  • Install RVM
          \curl -#L https://get.rvm.io | bash -s stable --autolibs=3 --ruby
  • Install ruby using RVM - Install ruby 1.9.3 and use it
    rvm install 1.9.3
    rvm use 1.9.3
     

Errors & Solution

If there are error in RVM installation do this
Type following commands
~ $: source ~/.rvm/scripts/rvm
~ $: type rvm | head -n 1
rvm is a function
~ $: vi ~/.bash_profile add this line into bash_profile 
"source ~/.rvm/scripts/rvm"
Install ruby 1.9.3 and use it