
Research
Node.js Fixes AsyncLocalStorage Crash Bug That Could Take Down Production Servers
Node.js patched a crash bug where AsyncLocalStorage could cause stack overflows to bypass error handlers and terminate production servers.
sauce-runner
Advanced tools
Run tests for all versions of a given browser
Runs tests for all versions of a given browser and returns a promise that is resolved with undefined once all tests are completed.
Sauce should be a function which, when called with a function fn calls fn with two arguments (the sauce labs user and key). It returns a promise for the result of fn. It is not necessarily required to call fn immediately. It should wait until there is a slot available to run the tests.
The config argument should be an object with the following properites
browser - required - string - The name of the browser to run tests on, valid names are:
operainternet explorerfirefoxsafarichromeipadiphoneandroidurl - required - string - The url of the page containing tests, tests will be failed if this does not return a status code of 200.name - required - string - The name to give the tests in sauce labs (can be any non-empty string).tags - optional - array(string) - An array of tags to use in sauce labscontinueOnFail - optional (default: false) - Set this to true to continue running tests on older versions of a browser, even if newer versions have failed the tests.versions - optional - array(string) - An array of versions to test, if provided, only the versions in this array will be tested. Those versions not in this array will be skipped.skip - optional - array(string) - An array of versions to not test, if provided, versions in this array will be skipped.The output argument should be an object with two properties:
startVersion - required - functionendVersion - required - functionstartVersion is a function which takes the single argument version which is the version of the browser about to be tested, it may optionally return a promise, and tests won't begin until that promise resolves.
endVersion is a function which takes two arguments, version which is the version of the browser that has just been tested, and result which is described below. It may optionally return a promise, and tests won't continue until that promise resolves.
result is an object of the form:
{
passed: true || false,
report: {type: 'string', ...},
sauceUser: 'sauceUser',
sauceKey: 'sauceKey',
sauceTestID: 'sauceTestID'
}
Note sauceUser, sauceKey and sauceTestID are not present in cases where the test was skipped, or where the url requested returned a status code other than 200. Those can be identified by having report.type === 'skipped' and report.type === 'status-code'. If passed === true there will always be sauce info.
FAQs
Run tests for a all versions of a given browser
We found that sauce-runner demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer 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.

Research
Node.js patched a crash bug where AsyncLocalStorage could cause stack overflows to bypass error handlers and terminate production servers.

Research
/Security News
A malicious Chrome extension steals newly created MEXC API keys, exfiltrates them to Telegram, and enables full account takeover with trading and withdrawal rights.

Security News
CVE disclosures hit a record 48,185 in 2025, driven largely by vulnerabilities in third-party WordPress plugins.