Files
gh-levnikolaevich-claude-co…/skills/ln-342-regression-checker/references/pytest_configuration.md
2025-11-30 08:37:27 +08:00

4.4 KiB

Test Framework Configuration Reference

This document provides configuration examples and detection patterns for supported test frameworks.

Supported Frameworks

1. pytest (Python)

Detection Patterns:

  • File: pytest.ini OR pyproject.toml (with [tool.pytest.ini_options])
  • Directory: tests/ with test_*.py or *_test.py files

Run Command:

pytest tests/ -v --tb=short

Configuration Example (pytest.ini):

[pytest]
testpaths = tests
python_files = test_*.py *_test.py
python_classes = Test*
python_functions = test_*
addopts = -v --tb=short --strict-markers

Output Parsing:

============= test session starts ==============
collected 127 items

tests/test_auth.py::test_login PASSED    [  1%]
tests/test_auth.py::test_logout PASSED   [  2%]
tests/test_api.py::test_rate_limit FAILED [ 50%]

======= 125 passed, 2 failed in 12.5s =======

Parse Pattern:

  • Total: Extract from collected X items
  • Results: Extract from X passed, Y failed in Z.Zs
  • Failed tests: Lines with FAILED status

2. jest (JavaScript/TypeScript)

Detection Patterns:

  • File: jest.config.js OR jest.config.ts OR package.json (with "jest" key)
  • Directory: __tests__/ OR test/ OR files matching *.test.js or *.spec.js

Run Command:

npm test -- --verbose

Configuration Example (jest.config.js):

module.exports = {
  testEnvironment: 'node',
  testMatch: ['**/__tests__/**/*.js', '**/?(*.)+(spec|test).js'],
  collectCoverageFrom: ['src/**/*.js'],
  verbose: true,
};

Output Parsing:

PASS  tests/auth.test.js
  ✓ should login successfully (123ms)
  ✓ should logout (45ms)

FAIL  tests/api.test.js
  ✕ should enforce rate limit (234ms)

Tests:       2 failed, 125 passed, 127 total
Time:        12.5s

Parse Pattern:

  • Total: Extract from X total
  • Results: Extract from X failed, Y passed
  • Failed tests: Lines starting with under FAIL suites

3. vitest (JavaScript/TypeScript)

Detection Patterns:

  • File: vitest.config.js OR vitest.config.ts OR vite.config.js (with test key)
  • Directory: test/ OR files matching *.test.js or *.spec.js

Run Command:

npm run test

Configuration Example (vitest.config.js):

import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    globals: true,
    environment: 'node',
    include: ['**/*.test.js', '**/*.spec.js'],
  },
});

Output Parsing:

✓ tests/auth.test.js (2)
✗ tests/api.test.js (1)
   ✗ should enforce rate limit

Test Files  1 failed | 4 passed (5)
     Tests  2 failed | 125 passed (127)
      Time  12.5s

Parse Pattern:

  • Total: Extract from Tests X failed | Y passed (Z)
  • Failed tests: Lines starting with (cross mark)

4. go test (Go)

Detection Patterns:

  • File: go.mod
  • Files: *_test.go in any directory

Run Command:

go test ./... -v

Configuration: No config file needed (convention-based)

Output Parsing:

=== RUN   TestLogin
--- PASS: TestLogin (0.12s)
=== RUN   TestLogout
--- PASS: TestLogout (0.05s)
=== RUN   TestRateLimit
--- FAIL: TestRateLimit (0.23s)
    api_test.go:45: Rate limit not enforced

PASS
ok      github.com/user/project/auth    0.17s
FAIL
FAIL    github.com/user/project/api     0.28s

Parse Pattern:

  • Results: Count lines with --- PASS: and --- FAIL:
  • Failed tests: Extract test names from --- FAIL: TestName
  • Execution time: Sum times from ok and FAIL package lines

Framework Detection Algorithm

1. Check for Python test files:
   IF pytest.ini OR pyproject.toml exists:
      RETURN "pytest"

2. Check for JavaScript test files:
   IF jest.config.js OR package.json contains "jest":
      RETURN "jest"
   ELSE IF vitest.config.js OR vite.config.js contains "test":
      RETURN "vitest"

3. Check for Go test files:
   IF go.mod exists AND *_test.go files found:
      RETURN "go test"

4. No framework detected:
   RETURN null (no tests found)

Timeout Handling

All test commands run with 5-minute timeout:

timeout 300 pytest tests/ -v --tb=short

Rationale:

  • Prevents hanging tests from blocking pipeline
  • Typical test suite runs in < 2 minutes
  • 5 minutes allows for slow integration tests

On Timeout:

  • Kill process
  • Return verdict: "FAIL"
  • Include timeout message in Linear comment

Version: 1.0.0 Last Updated: 2025-11-13