Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
buildkite-test-collector
Advanced tools
Buildkite Test Analytics collectors for JavaScript test frameworks
Official Buildkite Test Analytics collectors for JavaScript test frameworks ✨
⚒ Supported test frameworks: Jest, Jasmine, Mocha, Cypress, Playwright, and more coming soon.
📦 Supported CI systems: Buildkite, GitHub Actions, CircleCI, and others via the BUILDKITE_ANALYTICS_*
environment variables.
Create a test suite, and copy the API token that it gives you.
Add the buildkite-test-collector
package:
# If you use npm:
npm install --save-dev buildkite-test-collector
# or, if you use yarn:
yarn add --dev buildkite-test-collector
Add the Buildkite test collector to your testing framework:
Update your Jest configuration:
// jest.config.js
// Send results to Test Analytics
reporters: [
'default',
'buildkite-test-collector/jest/reporter'
],
// Enable column + line capture for Test Analytics
testLocationInResults: true
If you would like to pass in the API token using a custom environment variable, you can do so using the report options.
// jest.config.js
// Send results to Test Analytics
reporters: [
"default",
[
"buildkite-test-collector/jest/reporter",
{ token: process.env.CUSTOM_ENV_VAR },
],
];
Add the Buildkite reporter to Jasmine:
// SpecHelper.js
var BuildkiteReporter = require("buildkite-test-collector/jasmine/reporter");
var buildkiteReporter = new BuildkiteReporter();
jasmine.getEnv().addReporter(buildkiteReporter);
If you would like to pass in the API token using a custom environment variable, you can do so using the report options.
// SpecHelper.js
var buildkiteReporter = new BuildkiteReporter(undefined, {
token: process.env.CUSTOM_ENV_VAR,
});
Install mocha-multi-reporters in your project:
npm install mocha-multi-reporters --save-dev
and configure it to run your desired reporter and the Buildkite reporter
// config.json
{
"reporterEnabled": "spec, buildkite-test-collector/mocha/reporter"
}
Now update your test script to use the buildkite reporter via mocha-multi-reporters:
// package.json
"scripts": {
"test": "mocha --reporter mocha-multi-reporters --reporter-options configFile=config.json"
},
If you would like to pass in the API token using a custom environment variable, you can do so using the report options.
Since the reporter options are passed in as a json file, we ask you to put the environment variable name as a string value in the config.json
, which will be retrieved using dotenv in the mocha reporter.
// config.json
{
"reporterEnabled": "spec, buildkite-test-collector/mocha/reporter",
"buildkiteTestCollectorMochaReporterReporterOptions": {
"token_name": "CUSTOM_ENV_VAR_NAME"
}
}
Update your Playwright configuration:
// playwright.config.js
// Send results to Test Analytics
reporter: [
['line'],
['buildkite-test-collector/playwright/reporter']
],
If you would like to pass in the API token using a custom environment variable, you can do so using the report options.
// jest.config.js
// Send results to Test Analytics
reporter: [
['line'],
['buildkite-test-collector/playwright/reporter', { token: process.env.CUSTOM_ENV_VAR },]
],
Update your Cypress configuration:
// cypress.config.js
// Send results to Test Analytics
reporter: "buildkite-test-collector/cypress/reporter",
If you would like to pass in the API token using a custom environment variable, you can do so using the reporterOptions.
// cypress.config.js
// Send results to Test Analytics
reporterOptions: {
token_name: "CUSTOM_ENV_VAR_NAME"
}
Run your tests locally:
env BUILDKITE_ANALYTICS_TOKEN=xyz npm test
Add the BUILDKITE_ANALYTICS_TOKEN
secret to your CI, push your changes to a branch, and open a pull request 🎉
git checkout -b add-bk-test-analytics
git commit -am "Add Buildkite Test Analytics"
git push origin add-bk-test-analytics
This jest collector uses the onRunComplete
hook to report test results to the Buildkite API. This interferes with the --forceExit
CLI option and interrupts the request that sends tests results, meaning that no data will be available for your test suite. It's recommended to use --detectOpenHandles
to find any hanging process and clean them up and remove the use of --forceExit
.
To enable debugging output, set the BUILDKITE_ANALYTICS_DEBUG_ENABLED
environment variable to true
.
See the GitHub 'enhancement' issues for planned features. Pull requests are always welcome, and we’ll give you feedback and guidance if you choose to contribute 💚
After cloning the repository, install the dependencies:
npm install
And run the tests:
npm test
Useful resources for developing collectors include the Buildkite Test Analytics docs and the RSpec and Minitest collectors.
Bug reports and pull requests are welcome on GitHub at https://github.com/buildkite/test-collector-javascript
# Version bump the code, tag and push
npm version [major/minor/patch]
git push && git push --tags
# Publish to the NPM registry
npm publish
# Create a new GitHub release
open "https://github.com/buildkite/test-collector-javascript/releases"
The package is available as open source under the terms of the MIT License.
FAQs
Buildkite Test Analytics collectors for JavaScript test frameworks
The npm package buildkite-test-collector receives a total of 41,131 weekly downloads. As such, buildkite-test-collector popularity was classified as popular.
We found that buildkite-test-collector demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 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
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.