configure-tests
Test frameworks: Vitest, Jest, pytest, cargo-nextest. Use when setting up test infrastructure, migrating to a modern framework, or validating coverage config.
Works with
--- name: configure-tests description: Test frameworks: Vitest, Jest, pytest, cargo-nextest. Use when setting up test infrastructure, migrating to a modern framework, or validating coverage config. license: MIT --- # /configure:tests Check and configure testing frameworks against best practices (Vitest, Jest, pytest, cargo-nextest). ## When to Use This Skill | Use this skill when... | Use another approach when... | |------------------------|------------------------------| | Setting up testing infrastructure | Just running tests (use `/test:run` skill) | | Checking test framework configuration | Tests already properly configured | | Migrating to modern test frameworks (Vitest, pytest, nextest) | Writing individual tests (write tests directly) | | Validating coverage configuration | Debugging failing tests (check test output) | | Ensuring test best practices | Simple project with no testing needed | ## Context - Package.json: !`find . -maxdepth 1 -name \'package.json\'` - Pyproject.toml: !`find . -maxdepth 1 -name \'pyproject.toml\'` - Cargo.toml: !`find . -maxdepth 1 -name \'Cargo.toml\'` - Test config files: !`find . -maxdepth 1 \( -name 'vitest.config.*' -o -name 'jest.config.*' -o -name 'pytest.ini' -o -name '.nextest.toml' \)` - Pytest in pyproject: !`grep -c 'tool.pytest' pyproject.toml` - Test directories: !`find . -maxdepth 2 -type d \( -name 'tests' -o -name '__tests__' -o -name 'test' \)` - Test scripts in package.json: !`grep -m5 -o '"test[^"]*"' package.json` - Coverage config: !`grep -l 'coverage' vitest.config.* jest.config.*` - Project standards: !`find . -maxdepth 1 -name '.project-standards.yaml' -type f` **Modern testing stack preferences:** - **JavaScript/TypeScript**: Vitest (preferred) or Jest - **Python**: pytest with pytest-cov - **Rust**: cargo-nextest for improved performance ## Parameters Parse these from `$ARGUMENTS`: | Flag | Description | |------|-------------| | `--check-only` | Report status without offering fixes | | `--fix` | Apply all fixes automatically without prompting | | `--framework <framework>` | Override framework detection (`vitest`, `jest`, `pytest`, `nextest`) | ## Version Checking **CRITICAL**: Before flagging outdated versions, verify latest releases: 1. **Vitest**: Check [vitest.dev](https://vitest.dev/) or [GitHub releases](https://github.com/vitest-dev/vitest/releases) 2. **Jest**: Check [jestjs.io](https://jestjs.io/) or [npm](https://www.npmjs.com/package/jest) 3. **pytest**: Check [pytest.org](https://pytest.org/) or [PyPI](https://pypi.org/project/pytest/) 4. **cargo-nextest**: Check [nexte.st](https://nexte.st/) or [GitHub releases](https://github.com/nextest-rs/nextest/releases) Use WebSearch or WebFetch to verify current versions before reporting outdated frameworks. ## Execution Execute this testing framework compliance check: ### Step 1: Detect framework Identify the project language and existing test framework: | Indicator | Language | Detected Framework | |-----------|----------|-------------------| | `vitest.config.*` | JavaScript/TypeScript | Vitest | | `jest.config.*` | JavaScript/TypeScript | Jest | | `pyproject.toml` [tool.pytest] | Python | pytest | | `pytest.ini` | Python | pytest | | `Cargo.toml` | Rust | cargo test | | `.nextest.toml` | Rust | cargo-nextest | If `--framework` flag is provided, use that value instead. ### Step 2: Analyze current state Read the detected framework's configuration and check completeness. For each framework, verify: **Vitest:** - Config file exists (`vitest.config.ts` or `.js`) - `globals: true` configured for compatibility - `environment` set appropriately (jsdom, happy-dom, node) - Coverage configured with `@vitest/coverage-v8` or `@vitest/coverage-istanbul` - Watch mode exclusions configured **Jest:** - Config file exists (`jest.config.js` or `.ts`) - `testEnvironment` configured - Coverage configuration present - Transform configured for TypeScript/JSX - Module path aliases configured **pytest:** - `pyproject.toml` has `[tool.pytest.ini_options]` section - `testpaths` configured - `addopts` includes useful flags (`-v`, `--strict-markers`) - `markers` defined for test categorization - `pytest-cov` installed **cargo-nextest:** - `.nextest.toml` exists - Profile configurations (default, ci) - Retry policy configured - Test groups defined if needed ### Step 3: Report results Print a compliance report with: - Detected framework and version - Configuration check results for each item - Test organization (unit/integration/e2e directories) - Package scripts status (test, test:watch, test:coverage) - Overall issue count and recommendations If `--check-only`, stop here. ### Step 4: Apply fixes (if --fix or user confirms) Install dependencies and create configuration using templates from [REFERENCE.md](REFERENCE.md): 1. **Missing config**: Create framework config file from template 2. **Missing dependencies**: Install required packages 3. **Missing coverage**: Add coverage configuration with 80% threshold 4. **Missing scripts**: Add test scripts to package.json 5. **Missing test directories**: Create standard test directory structure ### Step 5: Set up test organization Create standard test directory structure for the detected language. See directory structure patterns in [REFERENCE.md](REFERENCE.md). ### Step 6: Configure CI/CD integration Check for test commands in GitHub Actions workflows. If missing, add CI test commands using the CI templates from [REFERENCE.md](REFERENCE.md). ### Step 7: Handle migration (if upgrading) If migrating between frameworks (e.g., Jest to Vitest, unittest to pytest), follow the migration guide in [REFERENCE.md](REFERENCE.md). ### Step 8: Update standards tracking Update `.project-standards.yaml`: ```yaml standards_version: "2025.1" last_configured: "<timestamp>" components: tests: "2025.1" tests_framework: "<vitest|jest|pytest|nextest>" tests_coverage_threshold: 80 tests_ci_integrated: true ``` For detailed configuration templates, migration guides, CI/CD integration examples, and directory structure patterns, see [REFERENCE.md](REFERENCE.md). ## Agentic Optimizations | Context | Command | |---------|---------| | Detect test framework | `find . -maxdepth 1 \( -name 'vitest.config.*' -o -name 'jest.config.*' -o -name 'pytest.ini' \) 2>/dev/null` | | Check coverage config | `grep -l 'coverage' package.json pyproject.toml 2>/dev/null` | | List test files | `find . \( -path '*/tests/*' -o -path '*/test/*' -o -name '*.test.*' -o -name '*.spec.*' \) 2>/dev/null \| head -n 10` | | Quick compliance check | `/configure:tests --check-only` | | Auto-fix configuration | `/configure:tests --fix` | ## Error Handling - **No package.json found**: Cannot configure JS/TS tests, skip or error - **Conflicting frameworks**: Warn about multiple test configs, require manual resolution - **Missing dependencies**: Offer to install required packages - **Invalid config syntax**: Report parse error, offer to replace with template ## See Also - `/configure:coverage` - Configure coverage thresholds and reporting - `/configure:all` - Run all compliance checks - `/test:run` - Universal test runner - `/test:setup` - Comprehensive testing infrastructure setup - **Vitest documentation**: https://vitest.dev - **pytest documentation**: https://docs.pytest.org - **cargo-nextest documentation**: https://nexte.st
More Testing skills
tdd
mattpocock/skills
Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.
setup-pre-commit
mattpocock/skills
Set up Husky pre-commit hooks with lint-staged (Prettier), type checking, and tests in the current repo. Use when user wants to add pre-commit hooks, set up Husky, configure lint-staged, or add commit-time formatting/typechecking/testing.
agent-browser
vercel-labs/agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.

