Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

252 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#sauc·ey* [ /ˈsɑː-/ ] intoxicated, drunk, or under the influence

Last night we went out to celebrate and got saucey at the bar off henessy.

##What this is? Saucey is an Automation framework written in mainly PHP. Designed to kick-ass and take names.

##What it do? This framework allows testers to:

  • Control most aspects of the PC, i.e open a native iOS app with Xcode's iOS Simulator, etc.
  • Click, right-click, double-click, triple-click & drag via X/Y coordinates.
  • Press any keyboard key(s) either in conjunction or individually.
  • iOS/Android gestures, i.e. 4-finger swipe left/right.
  • Create & maintain tests for selenium & headless drivers with Gherkin.
  • Evaluate API endpoints with business-logic driven code.
  • Run load & performance tests.
  • Hook a Browser-Based Web Inspector to your app
  • Interact & Assert against Network/XHR logs, console logs, DOM, etc.
  • Test UI elements with user-driven logic.
  • Verify arrangement of files and directories; availability of assets.
  • Set server-side, front-end and functional assertions.
  • Report coverage and pass-fail status of suites for tests using ALL saucey functionality.
  • Connect test suite(s) to a continuous integration system of choice.

##What's inside

##MOAR

#Get Started ##Pour a glass (Init & Install) To make things simpler, we'll use Robo for all of our task management needs. Lets install it! Install all dependancies through composer, if you run in to any issues please see the wiki.

For all instances of <tag> replace it with the tag for the test suite. For example, for my tests in features/getSaucey the tag is saucey.

  1. From the root of the project, run:

     sh run/saucey.sh init
    
  2. Then run:

     sh run/saucey.sh install
    
  3. From here, robo takes control, run:

     bin/robo init
    
  4. For testing locally:

     bin/robo saucey:tipsy '<tag> <browser>'
    
  5. For testing against the cloud, you have to do three things (see drunk). Set up SauceLabs to use your account:

     vendor/sauce/connect/bin/sauce_connect user_name access_key
    

    and:

     vendor/sauce_config user_name access_key
    

    then, run:

     bin/robo saucey:drunk '<tag> <environment> <browser>'
    

##Winery

  1. Run the Winery Test Suite with:

     bin/robo winery:test
    

    Notice this opens report/saucey_report_winery_test.html

  2. Additionally, you can just open the winery via:

     bin/robo saucey:winery
    

    Then, go to http://127.0.0.1:7890

    Be sure to checkout the Browser-Based Inspector @ http://127.0.0.1:7890/client/#anonymous

##Shots! (examples) ###Local w/ Selenium - Tipsy

  1. Given you've installed via init, install & bin/robo sauce:init from above...

  2. Run local examples via:

     bin/robo saucey:tipsy 'saucey firefox'
    

    or

     bin/robo saucey:tipsy 'web chrome'
    

    or

     bin/robo saucey:tipsy 'api firefox'
     //TODO make saucey:tipsy 'api'
    

    or

     bin/robo saucey:tipsy 'shell firefox'
     //TODO make saucey:tipsy 'shell'
    
  3. Robo should be running the test suite, upon completion it should open a newly generated report.

  4. reports/saucey_report.html should be opened, you should see a bunch of tests that look like:

Feature: SOAP & REST API Functionality

  As a tester
  I want to make sure api features are up and running
  So that I can automate continuous integration and regression tests using it

    @api @get
    Scenario: Make and validate a GET request
      Given send a GET request to "/comments?postId=1&id=1"
      Then  the response code should be 200
      And the response should contain json:
      """
        [
          {
            "postId": 1,
            "id": 1,
            "name": "id labore ex et quam laborum",
            "email": "Eliseo@gardner.biz",
            "body": "laudantium enim quasi est quidem magnam voluptate ipsam eos\ntempora quo necessitatibus\ndolor quam autem quasi\nreiciendis et nam sapiente accusantium"
          }
        ]

###Cloud w/ SauceLabs - Drunk

  1. Given you've installed via init, install & bin/robo init from above...

  2. To point saucey to SauceLabs, you'd need your user_name and access_key. Sign up and register for a free SauceLabs account.

  3. Get your username and api-key. Should be available via /account. Copy the info into your clipboard.

  4. Open the behat.yml file with your favorite IDE and replace all instances of username:api-key with your username (used to log in) and api-key. Save.

  5. Run a sanity suite via:

     bin/robo saucey:drunk 'web mac chrome'
    
  6. Then, go to https://saucelabs.com/account and view your running/completed tests. Navigate through and download meta-data, screenshots and video recordings of the entire suite.

####localhost testing on the cloud To test something on a localhost in the cloud, you can open a tunnel with sauce connect. With your username and api-key/access_key from the steps above, run:

vendor/bin/sauce_config user_name access_key

To start the connect tunnel:

vendor/sauce/connect/bin/sauce_connect 

###Mobile & Tablet ####For iOS:

bin/robo saucey:drunk '<tag> ios_phone'

bin/robo saucey:drunk '<tag> ios_tablet'

bin/robo saucey:drunk '<tag> ios_tablet_landscape'

####For Android:

bin/robo saucey:drunk '<tag> android_phone'

bin/robo saucey:drunk '<tag> android_tablet'

bin/robo saucey:drunk '<tag> android_tablet_landscape'

Dependancies

On Mac OS X, (with the exception of LAMP for Windows) saucey requires the below dependancies. For now, the Pour a glass section above should cover all dependancies. However, if there are errors thrown upon running php composer.phar install or php composer.phar update in terminal you can reference the sources below. They should also be maintained.

  1. XCode & Developer Tools
  2. Java JDK, see documentation
  3. cURL
  4. WAMP Windows Only
  5. PHP just incase, should be covered by composer.

#Reporting & MOAR

##Reporting By default, reports are saved to the reports/ directory. If you ran a suite via saucey:drunk or saucey:tipsy, you can see the report in:

reports/

View real reports below:

#Caveats

  1. To use the local_safari profile, in other words to test against a local version of Safari, go to:

    vendor/saucey/framework/drivers

  2. And install the safari_extension.cer

  3. Go Safari>Preferences and make sure it is enabled.

##Selenium Issues The issues listed below are some known issues with the Selenium WebDriver.

  1. Firefox ≤36.0.3 does not render ANY web driver functions from selenium, fixed in v36.0.4 with selenium
  2. Most of the major web driver functionality, i.e. pressing buttons, following links are completely non-functional for the Safari Web Driver.
  3. Locally, some step definitions are non-functional: iMoveBackwardOnePage, iMoveForwardOnePage,iRefreshThePage

##Saucey Issues See https://github.com/withpulp/saucey/issues

##TODO See https://github.com/withpulp/saucey/issues

About

An Automation framework written in mainly PHP, using Behat and Mink. Designed to kick-ass and take names.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages