Skip to content

Testing: adopt bounded test-acceleration profiles #189

Description

@edithatogo

A cross-repository testing audit on 2026-08-26 found:

  • 70 Python test/conftest files
  • 7 GitHub Actions workflow files
  • detected acceleration tooling: testpaths
  • path signals: 0 performance/benchmark, 0 database, 0 HTTP/API/client

Recommended bounded work:

  • Add a registered slow marker and a fast local profile that excludes it; keep full CI authoritative.
  • Trial pytest-xdist with a bounded worker count and isolate resource-sensitive/file-mutating tests into a serial phase.
  • Add an opt-in, serial pytest-testmon profile for changed-code feedback; rebuild its local database after dependency or inventory changes.
  • Run python -X importtime and profile representative application and test workloads with Scalene before changing import structure.
  • Trial pytest-gremlins only on a bounded fail-closed/core-logic target set; retain ordinary tests as the promotion gate.
  • On supported Python/Coverage versions, measure the sysmon core; do not force it where branch coverage, plugins, concurrency, or dynamic contexts are incompatible.
  • Use Freezegun only where an injectable explicit clock is impractical; avoid global time freezing around asyncio or concurrency.
  • Do not add pytest-picked if testmon provides the needed dependency-aware selection; if retained, use it only to order or select directly changed test files.

Acceptance criteria:

  • Record before/after wall time and collected/executed test counts.
  • Keep a full clean-environment suite in CI; selective profiles are local feedback only.
  • Document incompatibilities and exclusions rather than weakening test, coverage, mutation, rights, or publication gates.

Created from the owner-wide test-acceleration audit; implementation should be repository-specific.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions