_______ _ _ __
|__ __| | | (_)/ _|
| | ___ ___| |_ _| |_ _ _
| |/ _ \/ __| __| | _| | | |
| | __/\__ \ |_| | | | |_| |
|_|\___||___/\__|_|_| \__, |
__/ |
|___/
Testify Universal CLI is a language-agnostic interactive command-line tool for running tests across multiple programming languages and frameworks. It automatically detects your project's language, finds test files, extracts test markers/tags, and provides an intuitive interface for filtering and running tests.
- Multi-language support: Detects and runs tests for Node.js, Python, Ruby, Go, Java, and Rust projects
- Framework-agnostic: Works with popular testing frameworks like Jest, Vitest, pytest, RSpec, and more
- Interactive interface: Select and filter tests through an easy-to-use CLI interface
- Test markers/tags: Filter tests based on markers, tags, or categories
- React/NextJS support: Full support for React components with JSX/TSX test files
- Global availability: Available worldwide through NPM with Cloudflare CDN distribution
# Install globally using npm
npm install -g testify-universal-cli
# Or use with npx
npx testify-universal-cli
# Run in the current directory
testify
# Filter tests by markers/tags
testify --marker=integration
testify --marker=fast --marker=api
# Force a specific language
testify --language=ruby
# Use a custom test runner
testify --runner=jest
# Run in a different directory
testify --cwd=./my-project
Testify provides an intuitive, interactive command-line interface:
TESTIFY Test Selection
No active filters. Select markers below to filter tests.
? Select an action:
Run All Tests
── Filter By Marker ──
api
auth
benchmark
❯ error
fast
get
integration
performance
post
slow
── Test Files ──
tests/test_api.py [api, get, post, auth, error]
tests/test_hello.py
tests/test_markers.py [fast, slow, api, integration]
tests/test_performance.py [performance, fast, slow, benchmark]
Use arrow keys to navigate, Enter to select markers or files, and get a smooth testing experience across any programming language.
Language | Test Frameworks |
---|---|
Node.js | Jest, Vitest, Mocha, React Testing Library |
Python | pytest |
Ruby | RSpec, Rake Test |
Go | go test |
Java | JUnit with Maven/Gradle |
Rust | Cargo Test |
To publish the package to the NPM registry:
# Update version
npm version patch|minor|major
# Set registry to NPM
npm config set registry https://registry.npmjs.org/
# Publish package
npm publish
The package is automatically distributed via Cloudflare CDN when published to NPM. Configuration is stored in .cdn-config.json
.
The repository includes a deployment script that automates the entire process:
# Run the deployment script
./scripts/deploy.sh
The script will:
- Validate your git state and branch
- Bump the package version
- Deploy to your private registry if configured
- Publish to the public NPM registry
- Push changes to the repository
- Deploy to Cloudflare if wrangler is available
Testify is designed to work seamlessly across operating systems:
- Windows: Full support for Command Prompt and PowerShell with Windows-specific path handling, executable detection, and terminal features
- macOS/Linux: Works natively with Unix-style terminals and paths
- Local Development: Adapts to different development environments and setups
Special considerations are made for:
- Path separators and case sensitivity differences
- Command availability and executable extensions (.exe, .cmd, .bat)
- Terminal features and capabilities
- Python environments (handles both 'python' and 'py' commands on Windows)
Testify Universal CLI provides specialized support for React and Next.js projects:
- Automatic detection of React projects by finding JSX/TSX files
- Support for Jest with React Testing Library
- Proper environment configuration for DOM testing
- Automatic component test discovery for Next.js projects
Example of running tests in a Next.js project:
testify --cwd=./my-nextjs-app
- Universal testing experience: No need to learn different test commands for each language
- Consistent interface: Same CLI experience regardless of the underlying test framework
- Interactive filtering: Easily select and run specific tests based on markers/tags
- Low friction: Works out of the box with minimal configuration