Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »



    Build Status

    Build Status Build Status Coverage Status NPM version Dependency Status devDependency Status

    Description: This is the web interface for the garðr validator project.

    The main purpose is to find possible errors or regressions in display ads. Its intended to grow over time to a set of rules based on best practices for performance ( although displayads not necessarily can avoid document.write atm ).

    The validator takes input as a scripturl or zipfile, html,css and javascript, and produces in 3 steps harvested data and a report.

    How does the validator work?

    It uses phantomJS as a browser, loads in a shim on top of the PhantomJS api, runs for a 10 seconds after all hooks have been innjected and data colelcted. After phantomjs run, the preoprocessors and validators/rules runs in a series to generate a report(info, warn, debug, error...).

    Installation instructions

    Install depedencies and package validator with package gardr(abit funky)

    $ npm install

    Run tests

    $ npm test

    Starting the application

    Run server:

    $ PORT=8000 npm start

    Local development:

    ( if editing gardr-validator, run ´npm link´ in gardr-validator folder, and then link gardr-validator inside gardr-validator-web with ´npm link gardr-validator´)

    $ npm run start-dev
    If you need to debug output from phantomjs, add env variable TMP_DIR=/TMP_DIR.
    Screenshots and json output from phantom will be outputted in a folder with id as name.
    Additional startup configuration

    You can configure port, logfile location, etc using the config module or by specifying environment variables when starting.

    $ HTTP_PORT=1337 LOG_FILE_NAME=~/mylogs/pvw npm start

    Where to get help

    Create a github issue.


    YES, pull requests with tests. Be sure to create a issue and let us know you are working on it - maybe we can help out with insights etc.


    (please let us know of alternatives to this project)

    Current Deployment / production

    ! Prerequisite: Get your ssh-key added to our server at

    As the setup is Ubuntu with Dokku, you can SSH into and use the dokku CLI, ref Added a couple of Dokku-plugins for rebuild and supervisord, but they are not needed.

    • Add dokku as remote to validator-web git-repo on your computer:

       git remote add
    • Push to dokku:

       git push dokku master

    Direct SSH-access:

    Redeploy via dokku / (throw away logs, files and database):

        dokku rebuild:all

    Run command via dokku, e.g:

        dokku run validator ls -lha

    Debugging / Accessing docker instance directly

    To access the docker instance via ssh, first access, then:

        docker ps

    Get containerId and insert in next command where "my_container_id":

        PID=$(docker inspect --format '{{.State.Pid}}' my_container_id)

    nsenter will give you direct shell access to the running docker container:

        nsenter --target $PID --mount --uts --ipc --net --pid

    • Application code will then be located in /app folder.
    • Application specific logs in /app/logs.
    • Leveldb are in same folder prefixed with result-db-$(version)-$(enviroment).
      • If database needs to be deleted, just remove this folder or bump the application version in package.json.
    • PhantomJS files wil output in tempoary directory, names if local in app directory phantom_output_files_$(version)_$(enviroment).
      • Phantom output directory might contain debug-input-$(timestamp).json, and output-$(timestamp).json as well as screenshots named $(width)x$(height)_$(timestamp).png.




    npm i gardr-validator-web

    Downloadsweekly downloads








    last publish


    • avatar
    • avatar
    • avatar
    • avatar
    • avatar