Skip to content

TFTFT : Test First Test First Test - Complete ExpressJs/AngularJs app showing HTML test reports

Notifications You must be signed in to change notification settings

MisterDevo/TFTFT

Repository files navigation

TFTFT

TFTFT Version GitHub version

Run Status dockeri.co

TravisCov Status

Sauce Test Status

Code ClimateCodacy BadgebitHound Code Dependency StatusdevDependency StatusbitHound Dependencies

Test First Test First Test ( TFTFT )

An application that show basic test reports (mocha & istanbul) with a max of cool stuff

Run with NodeJs

TFTFT ExpressJs - TFTFT AngularJs :

npm install
  • ExpressJs dependencies : body-parser - cookie-parser - debug - express - jade - morgan - serve-favicon
  • Bower dependencies : bower - bower-requirejs
    • bower install is called in npm postinstall AngularJs - RequireJs - BootstrapCss
    • bower-requirejs is called in bower postinstall (see .bowerrc) to generate main requirejs file
  • md-mailgun : my dependency to send me a mail with mailgun
npm start

Start ExpressJs server and listen to http://localhost:3000 to serve api and static files.

TFTFT Test :

npm test

Mocha runner with config (test/**/*.js) and Istanbul auto-instrumented coverage/report

  • TFTFT Unit Test : mocha

  • TFTFT Route Test : supertest

  • TFTFT Coverage Test : istanbul

  • TFTFT Specification Test : selenium-webdriver in folder 'test/spec/'

  • Note for Specification Test :
    Selenium Server : Local or Remote ? ... Up to Developer !
    Default to Remote for the needs of this repo : saucelabs instrumented in tests with TravisCI configuration.

    For local or remote :
    In test/spec/test-wdjs-spec.js change var isLocalSeleniumServer = false;

    • Local Selenium Server :

      • Change config with :
        var option_local = {
                server: 'http://127.0.0.1:4444/wd/hub',
                desiredCapabilities: { browserName: 'firefox' },
                baseUrl:'http://localhost:3000'
        };
      
      • Start a local selenium server
      /*Example with selenium-standalone (not include in this package)*/
      npm install selenium-standalone;
      ./node_modules/.bin/selenium-standalone install;
      ./node_modules/.bin/selenium-standalone start;
      
    • Remote Selenium Server with SauceLabs :

      For Travis :
      In test/spec/test-wdjs-spec.js change var travis = true;

      • With Travis environnement var travis = true; (default) :
        Config in test/spec/option-travis-sauce.js :
       SAUCE_USERNAME=[secure] and SAUCE_ACCESS_KEY=[secure] must be set in Travis env variable
       TRAVIS_JOB_NUMBER, TRAVIS_BUILD_NUMBER are automatically set by Travis
       _BROWSER, _PLATFORM, _VERSION are define in .travis.yml matrix
      
      • Without Travis environnement var travis = false; :
        Config in test/spec/option-sauce.js :
      In local environnement :
      $ export SAUCE_USERNAME=[secure]
      $ export SAUCE_ACCESS_KEY=[secure]
      
    _Change baseUrl to address app in a cloud developpement environnement  
    For this repo, **`baseUrl:'http://nodeXX.codenvy.io:XXXXX/'`** on Codenvy_  
    

TFTFT Resources

For app example : Mocha test html reports + Coverage reports + saucelabs matrix

npm run app-resources

Istanbul auto-instrumented coverage/report - Mocha runner with default config (test/unit/*.js test/route/*.js) for :

  • TFTFT Mocha doc reporter ('one by one' in public/report)
  • TFTFT Istanbul Coverage Test Report in public/cov
  • TFTFT Saucelabs matrix : download the last remote tests badge to public/images/misterdevo.svg

TFTFT Automation

Built with Grunt

Tasks automation with Grunt for unit and route tests with Istanbul Coverage Test Report during developpement

grunt
  • grunt-contrib-watch
  • grunt-contrib-clean
  • grunt-mocha-istanbul
  • grunt-contrib-jshint