Security News
GitHub Removes Malicious Pull Requests Targeting Open Source Repositories
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
smokestack
Advanced tools
Pipe your JavaScript into a browser of your choosing:
A simple alternative to bigger browser automation tools, aiming to keep the interface and initial setup as simple as possible: JavaScript goes in, log output comes out. There's also support for browser screenshots in Chrome, with the other browsers getting support for that soon too.
Designed for running UI tests on your desktop machine. You can use this, for example, to run tape in the browser and get TAP output in your terminal.
Most of the time, you'll want to use smokestack
using the command-line
interface, which accepts JavaScript on stdin. For example, to run any arbitrary
JavaScript file:
smokestack < script.js
You can include smokestack
in the middle of your pipeline too. Here's an
example of using browserify and
tape to run a test on Firefox, using
tap-spec for formatting:
browserify test.js | smokestack -b firefox | tap-spec
This works because any calls to console.log
and its variants are sent back
from the browser out to the other side of the smokestack
process.
Usage:
smokestack {OPTIONS} < script.js
General:
-b, --browser Specify which browser to use [default: chrome]
-t, --timeout Specify the maximum timeout in milliseconds
-p, --port Specify a port for smokestack to listen to
-h, --help Display this message
Sauce Labs only:
-s, --saucelabs Include to run your tests on Sauce Labs
-u, --username Username to log in with
-k, --key API Access key to use
console.log
console.log
and its variants are all instrumented such that they not only
log output to your console, but to the other side of the smokestack process
in your Terminal too! You can use these methods the way you're familiar
with them in node or your favourite browser, they'll work just the same.
window.close
window.close
is instrumented by smokestack to trigger the end of a run.
In most cases, you don't want to manually close the browser and have that
happen automatically when it's ready.
Just use this method when you've done what you wanted to do, and it'll tell Chrome/Firefox/Sauce Labs to shut down (relatively) gracefully.
smokestack = require('smokestack')
For any optional extras which don't have a native browser analogue, you can
pull in smokestack
using browserify.
smokestack.capture(dest, done)
Takes a screenshot of the current browser window, writing out the captured file
to dest
. Currently only works on Chrome, but eventually this will be available
on Firefox and Sauce Labs too.
Images will be saved as PNGs.
var smokestack = require('smokestack')
window.onload = function() {
smokestack.capture('screenshots/0001.png', function(err) {
if (err) throw err
window.close()
})
}
stream = smokestack(opts)
Creates a new smokestack stream
. You should pipe JavaScript into it, and
pipe the console output somewhere else, much the same as you would when using
the command-line:
var smokestack = require('smokestack')
var fs = require('fs')
fs.createReadStream('script.js')
.pipe(smokestack({
browser: 'chrome'
, timeout: 15000
, saucelabs: false
}))
.pipe(process.stdout)
opts
are equivalent to what's used in the command-line interface.
Using Sauce Labs with smokestack is simple, simply include the following additional arguments:
smokestack --saucelabs --username USERNAME --key ACCESS_KEY
Your username/key will also get picked up from your environment if they're
defined too, so feel free to include the following in your ~/.bash_profile
and omit the --username
and --key
flags:
# Obviously, include your own, non-fake credentials here:
export SAUCE_USERNAME='hughskennedy'
export SAUCE_ACCESS_KEY='138b247bc5b6-b14b-a4d4-agcf-82c460a2'
MIT. See LICENSE.md for details.
FAQs
Pipe your JavaScript into a browser, logging console output in Node
We found that smokestack demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.