GithubHelp home page GithubHelp logo

jdrew1303 / hounds Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jjgonecrypto/hounds

0.0 1.0 0.0 46 KB

Release the hounds and smoke test any site. The beasts will follow links and stream any page errors to a pipe of your choice.

License: MIT License

JavaScript 93.92% HTML 6.08%

hounds's Introduction

#hounds

Release the hounds and smoke test any site. Sanity check after a large refactor, or plug into your CI tool of choice.

The beasts will follow all links (internal or otherwise) and round up any uncaught page errors. As a seamless unit, they will scour the field for their quarry by spanning out, containing an area, and expanding (breadth-first search).

Uses nightmare to fire up an Electron webkit browser (with optional UI).

npm version GitHub version CircleCI

##Usage

npm i hounds

const hounds = require('hounds')
const hunt = hounds.release({ url: 'http://localhost:8080' })
    .on('error', console.error)
    .on('end', process.exit)

const quarry = new Writable({
    objectMode: true,
    write: (chunk, enc, next) => {
        console.dir(chunk)
        next()
    }
})

hunt.pipe(quarry)

To show the Electron UI, with devTools open, and keep both alive, use the following settings:

const hunt = hounds.release({
    url: '...',
    keepAlive: true,
    nightmare: {
        show: true, openDevTools: true
    }
}).on('error', console.error)

##Options

  • url base URL to start from
  • keepAlive don't end the stream or the nightmare session when complete (when combined with nightmare.show, allows you to interact with the browser when done).
  • waitAfterLoadedFor The number of milliseconds to wait after each page is loaded before following the next link in the queue
  • maxFollows The maximum number of links to follow and track (the default is Infinity)
  • timeout The number of ms before ending the session. When the timeout is reached, the system will end on the next attempt to read from the queue (Note: this has no use when keepAlive is true). (No default)
  • logTo An optional writable stream that all URLs attempting to be processed will be written to.
  • urlFilter An optional predicate function, taking the current url as a parameter, and returning true or false as to whether or not to include it in the hunt. Second argument of domainFiltered is a bool stating whether or not the host matches (use it if you'd like to include that check in your filter)
  • before and after callbacks receive nightmare instance and if defined, must return it (see examples/preAuth.js)
  • nightmare All nightmare 2.8.1 options are supported

##Known Issues

  • console.errors not currently handled
  • 404s are not currently handled
  • /index.html and / are not treated as the same URL, and are both processed
  • Subdomains (including www) are treated as different hosts
  • unpipe() won't stop the stream from finding results
  • links which are hidden in the page are still detected, could use jQuery's approach as an optional workaround

##Examples

npm i hounds
cd node_modules/hounds/examples
npm i

Then try out node . for a basic example based on the test fixtures

hounds-simple

Unleash them on the latest sites from HackerNews via node hackerNews

Or use them against a local site with auth (see examples/preAuth.js)

hounds-preauth

##Changelog

  • 0.2.0 Supports a single url with a promise
  • 0.3.0 Stream support (instead of promises)
    • 0.3.1 Migrated to nightmare - 3x faster than Webdriver/Phantom2 and option to open up devTools
    • 0.3.2 Stream usage cleanup
  • 0.4.0 Support to keep the session alive via keepAlive
  • 0.5.0 Handles console errors that occur after DOMContentLoaded (with configurable timeout waitAfterLoadedFor (ms)). Follows links now.
  • 0.6.0 Prevent visiting the same link twice.
  • 0.7.0 Allow max number of links to follow or timeout.
  • 0.8.0 Support for logTo writable stream for URLs processed, and correct error emitting bugfix.
  • 0.9.0 By default, only links within same hostname:port are considered. Override with predicate function urlFilter
  • 0.10.0 urlFilter also receives result of domain check as second argument. Bug fix: no dupes anchors in the one page
  • 1.0.0 before and after callbacks receive nightmare instance and if defined, must return it (see examples/preAuth.js)

hounds's People

Contributors

jjgonecrypto avatar

Watchers

James Drew avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.