The db fixture lives in a conftest.py that your single-file run never loads. Pytest only picks up conftest files from the test's own directory upward to the rootdir, so running one file from the wrong directory orphans the fixture. Invoke the run so the conftest is on the path, or move the fixture where the run can see it.

```text
pytest "ERROR: fixture 'db' not found" when running a single test file in CI: conftest scope issue
```

## Steps

1. Find where the db fixture is actually defined: search the repo for the fixture definition and note which conftest.py holds it and which directory that file sits in.

   Expected: You know the exact conftest file and directory defining db.

2. Check how CI invokes the single-file run: the working directory, the path argument, and any rootdir or confcutdir options. Compare with how you run it locally.

   Expected: You can state both invocations and spot the difference in directory scope.

3. Confirm the mechanism: pytest loads conftest.py files from the test file's directory up to the rootdir. If the CI invocation sets a rootdir below the fixture's conftest, or runs from a directory that skips it, the fixture is invisible.

   Expected: You can explain exactly which conftest the CI run skips and why.

4. Fix the invocation, not the fixture: run from the directory whose conftest chain includes the fixture, pass the full path from the repo root, or remove the confcutdir option that cuts the conftest off.

   Expected: The single-file run collects with the db fixture available.

5. Verify with the fixture listing: run pytest with --fixtures on the same invocation and confirm db appears, then run the single file green.

   Expected: db shows in the fixture list and the test file passes in CI.

## Use this when

- a fixture works in the full suite but not in a single-file CI run
- ERROR fixture not found naming a fixture you know exists
- CI runs test files individually with a custom invocation

## Not for this skill when

- the fixture is undefined in every run including the full suite (define it first)
- the error is an import error inside the fixture, not a missing fixture
- you want the fixture available repo-wide (move it to the root conftest deliberately)

## Variant phrasings

- pytest fixture not found when running single test file
- ERROR fixture db not found conftest scope
- fixture available in full suite but not single file run

## Why it happens

Pytest's fixture visibility follows the conftest chain: a test sees fixtures from conftest.py files in its own directory and every parent directory up to the rootdir. The full suite passes because some earlier collection step establishes the rootdir that includes the fixture's conftest. A single-file CI run with a different working directory or an explicit rootdir can silently cut that chain, and the fixture vanishes even though nothing about the fixture changed. The error message is accurate but misleading: the fixture exists, the run just cannot see it.

## Edge cases

- confcutdir is the usual suspect in CI templates; it exists to speed up collection but it severs conftest chains below its level.
- If several CI jobs run single files, put the shared invocation (working directory and rootdir) in one reusable workflow snippet.
- Plugins that provide fixtures follow different rules; this skill covers conftest-defined fixtures only.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_aMi3mFmuYHPQZxsXWW6slg
