# bwoken **Repository Path**: mirrors_dblock/bwoken ## Basic Information - **Project Name**: bwoken - **Description**: iOS UIAutomation Test Runner - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-24 - **Last Updated**: 2026-05-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Bwoken ![build status](https://secure.travis-ci.org/bendyworks/bwoken.png?branch=master) Runs your UIAutomation tests from the command line for both iPhone and iPad, in the simulator or on your device. Supports coffeescript and javascript. ![screenshot](https://raw.github.com/bendyworks/bwoken/master/doc/screenshot.png) ## On the Command Line ### Running tests Make sure bwoken is properly installed. Then, build your project and run all your tests via:
# will build and run all of your tests
$ bwoken test

# will run one file, relative to integration/coffeescript/{iphone,ipad}/
#  (note: no file extension)
$ bwoken test --focus some_test # runs this test on (iphone and ipad) OR (connected iDevice)
$ bwoken test --focus some_test --family iphone
### structuring your test files To add new coffeescript test, add those file to the /integration/coffeescript/iphone or /integration/coffeescript/ipad folder. To add new javascript test, if the iphone and ipad folder don't exist in the /integration/javascript forlder, create them. Then copy your test file inside those folder depending on your target. Your file hierarchy should look something like this

| integration
	| coffeescript
		| iphone
			| exemple.coffee
		| ipad
			| example.coffee
	| javascript
		| iphone
			| myTest.js
		| ipad
			| myiPadtest.js
	|tmp
Note that your test scripts inside the coffeescript and javascript folder will be copied to their equivalent folder in the /tmp folder(ie: /tmp/javascript/iphone/myTest.js), so all your import statement should be relative to that location (ie: #import "../filetoImport.js" for file in the javascript folder) ### Simulator or Device? To run bwoken tests on your device, just plug it in! And if you want to run tests in the simulator, just unplug it!
# without a device connected, will run on the simulator:
$ bwoken test

# with a device connected, will run on the device:
$ bwoken test

# with a device connected, will run on the simulator:
$ bwoken test --simulator
Your tests will look something like this:
$ bwoken test
Building.............................................................................
.....................................................................................
.....................................................................................
.....................................................................................
.....................................................................................
.....................................................................................
.....................................................................................
................................................................................
Build Successful!

iphone  favorites.js
Start:  Favoriting a repository
Debug:  tap tableViews["Repositories"].cells["CITravis by Travis-ci"]
Debug:  tap navigationBar.rightButton
Debug:  tap actionSheet.elements["Add"]
Debug:  tap navigationBar.leftButton
Debug:  tap navigationBar.elements["Favorites"]
Debug:  navigationBar.elements["Favorites"].scrollToVisible
Debug:  tap navigationBar.elements["All"]
Pass:   Favoriting a repository
Start:  Unfavoriting a repository
Debug:  tap navigationBar.elements["Favorites"]
Debug:  tap tableViews["Repositories"].cells["CITravis by Travis-ci"]
Debug:  tap navigationBar.rightButton
Debug:  tap actionSheet.elements["Remove"]
Debug:  tap navigationBar.leftButton
Debug:  should be true null
Debug:  tap navigationBar.elements["All"]
Pass:   Unfavoriting a repository

Complete
 Duration: 23.419741s
### All the switches Here's a list of all the switches that bwoken takes for the `test` command:

$ bwoken test -h
[...]
        --simulator             Use simulator, even when an iDevice is connected
        --family                Test only one device type, either ipad or iphone. Default is to test on both
        --scheme                Specify a custom scheme
        --product-name          Specify a custom product name (e.g. --product-name="My Product"). Default is the name of of the xcodeproj file
        --integration-path      Specify a custom directory to store your test scripts in (e.g. --integration-path=uiautomation/path/dir). Note that this folder still expects the same directory structure as the one create by `bwoken init`.
        --formatter             Specify a custom formatter (e.g., --formatter=passthru)
        --focus                 Specify particular tests to run
        --clobber               Remove any generated file
        --skip-build            Do not build the iOS binary
        --verbose               Be verbose
    -h, --help                  Display this help message.
## In Your Code ### Like Javascript? Sometimes we'd like to have some javascript help us out. For example, what if you'd like [Underscore.js](http://underscorejs.org) in your test suite? Simple! Just put it in integration/javascript and import it in your test:
#import "../underscore.js"
### Bring in Libraries! Wanna bring in [tuneup.js](https://github.com/alexvollmer/tuneup_js), [mechanic](https://github.com/jaykz52/mechanic), or [underscore](http://underscorejs.org) without manually downloading them first? Just use `#github` instead of `#import`:
#github "jashkenas/underscore/underscore.js"
#github "alexvollmer/tuneup_js/tuneup.js"
#github "jaykz52/mechanic/src/mechanic-core.js"
## Installation ### Create an iOS project If you don't have an iOS project already, go ahead and create it. If you already have a project, no worries: you can install bwoken at any point. Ensure your project is in a workspace rather than simply a project: * In Xcode, select File -> Save as workspace... * Save the workspace in the same directory as your .xcodeproj file Note: This is done automatically if you use [CocoaPods](http://cocoapods.org/). I highly suggest you do! ### Prerequisites Ensure Xcode is up-to-date. Install rvm via the instructions. Ensure your after_cd_bundler rvm hook is enabled:
$ chmod u+x ~/.rvm/hooks/after_cd_bundler
### Install **NOTE:** Do **NOT** use `sudo` to install or run bwoken. It will almost definitely fail you. In the terminal, inside the directory of your project (e.g., you should see a ProjectName.xcodeproj file), create .ruby-version and .ruby-gemset files and trigger their use:
$ echo '2.0.0' > .ruby-version
$ echo 'my_project' > .ruby-gemset
$ cd .
Install bundler (a ruby library dependency manager) and init:
$ gem install bundler # idempotent; might already be installed and that's ok
$ bundle init
This will create a Gemfile. Add bwoken to it and bundle:
$ echo "gem 'bwoken', '2.0.0.beta.1'" >> Gemfile
$ bundle
The last installation step is to initialize the bwoken file structure:
$ bwoken init
Now, you can start using it! #### The Dirty Little Installation Method Technically, you can skip this entire Installation section and just run `sudo gem install bwoken && bwoken init`. This is listed here for completeness, but you really shouldn't install gems this way. ## Contributors Special thank you goes out to everyone who's helped with bwoken. Here's a (probably incomplete) list of those folks: * Brad Grzesiak ([listrophy](https://github.com/listrophy)) * Jaymes Waters ([jaym3s](https://github.com/jaym3s)) * Jonathan Penn ([jonathanpenn](https://github.com/jonathanpenn)) * Ryland Herrick ([rylnd](https://github.com/rylnd)) * Whitney Young ([wbyoung](https://github.com/wbyoung)) * David Gagnon ([mrdavidgagnon](https://github.com/mrdavidgagnon)) * [otusweb](https://github.com/otusweb) * Alec Gorge ([alecgorge](https://github.com/alecgorge)) ## Contributing 1. Fork it 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Added some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create new Pull Request