navalia

A bullet-proof, fast, and reliable headless browser API

Github stars Tracking Chart

npm version
Build Status
dependencies Status
styled with prettier

DEPRECATION WARNING: Unfortunately it's time for me to deprecate this library as I cannot give it the time it needs. If you're interested in maintaining this lib, send me message (joel at joelgriffith dot net). I'd recommend using something like chromeless or puppeteer if possible. Thanks!

The bullet-proof, fast, and most feature-rich Chrome driver around. Navalia lets you interact with Chrome and run parallel work with ease. Not using JavaScript? There's a GraphQL server that you can use to communicate with over HTTP allowing any runtime to drive Chrome.

Features

  • Scrape webpage data, even from JavaScript-heavy sites.
  • Run automated functional tests.
  • Discover visual regressions in your site.
  • Capture screenshots, pdfs, execute javascript, insert text, and more.
  • The largest API for interacting with Chrome.

GraphQL Front-end

Simply run navalia with a specified port e.g.

$ npm i -g navalia
$ navalia --port 4000

NavaliaQL

Recipes

Usage

The API for interacting with a browser is simple and chainable. You can call all methods individually and await/then the resulting value, or chain multiple together and collect their responses in a single result.

Chaining

const { Chrome } = require('navalia');
const chrome = new Chrome();

chrome
  .goto('https://amazon.com')
  .type('input', 'Kindle')
  .click('.buy-now')
  .end()
  .then((responses) => {
    console.log(responses); // ['https://www.amazon.com/', true, true, true]
  });

Await

import { Chrome } from 'navalia';
const chrome = new Chrome();

async function buyItOnAmazon() {
  const url = await chrome.goto('https://amazon.com');
  const typed = await chrome.type('input', 'Kindle');
  const clicked = await chrome.click('.buy-now');

  chrome.done();

  console.log(url, typed, clicked); // 'https://www.amazon.com/', true, true
}

buyItOnAmazon();

Roadmap

In no particular order, this is the vision of navalia going forward:

  • Expanded browser API (pdf rendering, network watching, more).
  • Bring more vendors onto the framework.
  • Better typings around externals with no @type support.
  • Parameterization on killing long-running jobs.
  • Unit testing all features.
  • Integration testing with the various vendors so our API's don't break when theirs do.
  • Travis, coveralls, greenkeeper, and other handy-dandy tools to automate chore tasks.

Main metrics

Overview
Name With Ownerjoelgriffith/navalia
Primary LanguageTypeScript
Program languageTypeScript (Language Count: 2)
Platform
License:GNU General Public License v3.0
所有者活动
Created At2017-06-29 18:35:02
Pushed At2018-07-24 17:25:36
Last Commit At2018-07-24 10:25:35
Release Count34
Last Release Namev1.3.0 (Posted on 2018-02-15 09:22:42)
First Release Namev0.0.2 (Posted on 2017-06-29 12:06:07)
用户参与
Stargazers Count1k
Watchers Count25
Fork Count33
Commits Count234
Has Issues Enabled
Issues Count47
Issue Open Count17
Pull Requests Count30
Pull Requests Open Count0
Pull Requests Close Count0
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private