Skip to content
This repository

FE Test framework designed to promote TDD

This branch is 0 commits ahead and 0 commits behind master

Merge pull request #230 from pranavparikh/master

Fixing readAndValidateJson()
latest commit c569a73399
Pranav Parikh pranavparikh authored April 18, 2014
Octocat-spinner-32 arrow_selenium Changing error message for capabilities February 28, 2014
Octocat-spinner-32 arrow_server set logging level to ERROR and hooked up log4js December 30, 2013
Octocat-spinner-32 config Upgrading to yui 3.15, using cdnjs link April 07, 2014
Octocat-spinner-32 demo Adding capabilities file for documentation April 16, 2014
Octocat-spinner-32 docs Made the table render April 04, 2014
Octocat-spinner-32 ext-lib selenium-webdriver module January 24, 2014
Octocat-spinner-32 lib Better error messaging April 18, 2014
Octocat-spinner-32 nodejs improve nodejs driver for shared data and child process exit October 14, 2013
Octocat-spinner-32 sharelib use yahoo messenger interaction case as example June 06, 2013
Octocat-spinner-32 tests Adding invalid json for tests April 17, 2014
Octocat-spinner-32 tmp fix bug 6221685 April 15, 2013
Octocat-spinner-32 .gitignore Using old gitignore and npmignore for testing February 28, 2014
Octocat-spinner-32 .npmignore Using old gitignore and npmignore for testing February 28, 2014
Octocat-spinner-32 .travis.yml Removing nodejs 0.6 build from Travis January 23, 2014
Octocat-spinner-32 Preparing for v0.5.1 April 09, 2014
Octocat-spinner-32 LICENSE.txt adding LICENSE August 23, 2012
Octocat-spinner-32 Adding npm module information January 24, 2014
Octocat-spinner-32 index.js Fixing logger statement January 23, 2014
Octocat-spinner-32 lib.js adding path method to return installed arrow directory March 13, 2014
Octocat-spinner-32 npm-shrinkwrap.json Reverting to use clone module for cloning April 17, 2014
Octocat-spinner-32 package.json Reverting to use clone module for cloning April 17, 2014
Octocat-spinner-32 ytestrunner.json fixing common-lib tests March 22, 2013


Build StatusNPM version


Arrow is a test framework designed to promote test-driven JavaScript development. Arrow provides a consistent test creation and execution environment for both Developers and Quality Engineers.

Arrow aims to completely remove the line between development’s Unit tests, and Functional and Integration tests by providing a uniform way to create and execute both.

Arrow itself is a thin, extensible layer that marries JavaScript, NodeJS and Selenium. Arrow allows you to write tests using YUI-Test and execute those tests using NodeJS or Selenium. Additionally, Arrow provides a rich mechanism for building, organizing and executing test and test scenarios.


npm install -g yahoo-arrow


  • --help display this help page
  • --version display installed arrow version
  • --lib comma separated list of js files needed by the test
  • --page path to the mock or production html page, for example: or mock.html
  • --driver one of selenium|nodejs. (default: selenium)
  • --shareLibPath comma separated list of directories to be scaned to load module automatically
  • --browser firefox|chrome|opera|reuse. Specify browser version with a hypen, ex.: firefox-4.0 or opera-11.0 (default: firefox)
  • --report true/false. Creates report files in junit and json format, and also prints a consolidated test report summary on console
  • --reportFolder : (optional) folderPath. creates report files under {folderPath}/arrow-report. (default: arrow-target/arrow-report under current directory)
  • --testName comma separated list of test names defined in test descriptor. all other tests will be ignored
  • --group comma separated list of groups defined in test descriptor, all other groups will be ignored
  • --dimension a custom dimension file for defining ycb contexts
  • --context name of ycb context
  • --seleniumHost : (optional) override selenium host url (example: --seleniumHost=
  • --capabilities : (optional) the name of a json file containing webdriver capabilities required by your project
  • --startProxyServer : (optional) true/false. Starts a proxy server, intercepting all selenium browser calls
  • --routerProxyConfig : (optional) filePath. Expects a Json file, allows users to modify host and headers for all calls being made by browser. Also supports recording of select url calls ( if you mark "record" : true)

     Example Json :
                            "": {
                                 "newHost": "x.x.x.x (your new host ip/name)",
                                   "param": "<param>",
                                   "value": "<val>"
                            "record": true
                           "": {
                                 "newHost": "x.x.x.x (your new host ip/name)",
                                   "param": "<param>",
                                   "value": "<val>"
                           "record": true
                           "clientSideCoverage": true,
                           "coverageExclude": []
  • --exitCode : (optional) true/false. Causes the exit code to be non-zero if any tests fail (default: false)

  • --coverage : (optional) true/false. creates code-coverage report for all js files included/loaded by arrow (default: false)
  • --replaceParamJSON : (optional) Either .json file or json object to be replaced with its value in descriptor file
  • --defaultParamJSON : (optional) Either .json file or json object. If parameters to be replaced are not found via replaceParamJSON ,it falls back to the parameters specified in defaultParamJSON


Below are some examples to help you get started.

Unit test:

arrow --lib=../src/greeter.js test-unit.js

Unit test with a mock page:

arrow --page=testMock.html --lib=./test-lib.js test-unit.js

Unit test with --shareLibPath to replace --lib:

Please note that the folder passed to --shareLibPath need follow layout convention as described in arrow cookbook "Arrow In-Depth"

arrow --page=testMock.html --shareLibPath=../ test-unit.js

Unit test with selenium:

arrow --page=testMock.html --lib=./test-lib.js --driver=selenium test-unit.js

Integration test:

arrow --page= --lib=./test-lib.js test-int.js

Integration test:

arrow --page= --lib=./test-lib.js --driver=selenium test-int.js

Custom controller:

arrow --controller=custom-controller.js --driver=selenium

Arrow Dependencies

Dependency Status

NPM Dependencies

NPM Dev Dependencies

Apart from above mentioned npm modules, Arrow also relies on these two projects

Something went wrong with that request. Please try again.