Thank you for your interest in contributing to modestbench! We welcome contributions from everyone and are grateful for every contribution made.
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code.
Before creating bug reports, please check the existing issues as you might find that the problem has already been reported. When creating a bug report, include as many details as possible:
- Use a clear and descriptive title for the issue
- Describe the exact steps to reproduce the problem
- Provide specific examples to demonstrate the steps
- Describe the behavior you observed and explain which behavior you expected to see
- Include code samples that demonstrate the issue
- Specify the version of modestbench you're using
- Specify your Node.js version and operating system
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion:
- Use a clear and descriptive title
- Provide a detailed description of the suggested enhancement
- Explain why this enhancement would be useful
- Provide examples of how the enhancement would be used
- Fill in the required template
- Include screenshots or animated GIFs in your pull request when appropriate
- Follow the TypeScript and JavaScript style guides
- Include thoughtfully-worded, well-structured tests
- Document new code with TSDoc comments
- End all files with a newline
- Node.js (see
enginesfield inpackage.jsonfor supported versions) - npm (comes with Node.js)
-
Fork the repository on GitHub
-
Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/bupkis.git cd bupkis -
Install dependencies:
npm install
-
Create a branch for your changes:
git checkout -b your-feature-branch
# Build for production
npm run build
# Build in watch mode for development
npm run dev# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Run property-based tests only
npm run test:property
# Run property tests in watch mode
npm run test:property:dev# Run ESLint
npm run lint
# Fix auto-fixable ESLint issues
npm run lint:fix
# Run TypeScript type checking
npm run lint:types
# Run type checking in watch mode
npm run lint:types:devsrc/- Main library source codeassertion/- Core assertion frameworkimpl/- Built-in assertion implementations
expect.ts- Main entry points (expect,expectAsync)types.ts- TypeScript type definitions
test/- Test suiteproperty/- Property-based tests using fast-checkassertion/- Unit tests for assertions
docs/- Generated API documentationsite/- Documentation source files
- Use TypeScript for all new code
- Follow the existing code style (enforced by ESLint)
- Use meaningful variable and function names
- Add TSDoc comments for public APIs
- Prefer explicit types over
any
- Write tests for all new functionality
- Use property-based testing for assertion logic when appropriate
- Follow the existing test patterns
- Ensure tests are deterministic and don't rely on external dependencies
When creating new assertions:
- Use
createAssertion()orcreateAsyncAssertion()from the assertion creation utilities - Follow natural language patterns for assertion phrases
- Provide comprehensive examples in TSDoc comments
- Write both unit tests and property-based tests
- Update documentation as needed
- Use the present tense ("Add feature" not "Added feature")
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
- Limit the first line to 72 characters or less
- Reference issues and pull requests liberally after the first line
- Use TSDoc for inline code documentation
- Update relevant documentation when changing APIs
- Include examples in your documentation
- Follow the existing documentation patterns
- Set
DEBUG=bupkis*environment variable for detailed logging - Use Wallaby.js integration for real-time testing feedback
- Check the browser developer tools for client-side issues
Releases are managed by maintainers using automated tools. Contributors don't need to worry about versioning or publishing.
- Check existing issues and discussions
- Create a new issue if you need help
- Be respectful and patient when asking for help
All contributors will be recognized in the project. We appreciate all forms of contribution, including but not limited to:
- Code contributions
- Bug reports
- Documentation improvements
- Feature suggestions
- Testing and feedback
Thank you for contributing to modestbench! 🎉