## Defined here

- `Failed login` — <root>/suite/repo/features/login.feature:8
- `Successful login` — <root>/suite/repo/features/login.feature:3
- `def step_login_error` — <root>/suite/repo/steps/login_steps.py:27
- `def step_login_invalid` — <root>/suite/repo/steps/login_steps.py:17
- `def step_login_valid` — <root>/suite/repo/steps/login_steps.py:12
- `step_login_error` — <root>/suite/repo/steps/login_steps.py:27
- `step_login_invalid` — <root>/suite/repo/steps/login_steps.py:17
- `step_login_valid` — <root>/suite/repo/steps/login_steps.py:12

## How a test authenticates
- `login_steps.py`: def step_login_valid(context): | def step_login_invalid(context):

### `steps/login_steps.py` — 5 steps
… 5 rows in this section do not mention these words (more:unmatched:steps-login_steps-py-5-d90e:login:0)

## Feature files
- `features/login.feature` — 2 scenarios
… 1 rows in this section do not mention these words (more:unmatched:feature-files-a979:login:0)

## Files nothing imports
- `pages/checkout.py`, `steps/login_steps.py`, `steps/pay_steps.py`

## Which feature is served by which modules
- `login.feature` → steps: login_steps.py

## Largest files
… 1 more matching rows (more:rows:largest-files-42c9:login:0)

… more sections match; ask for something narrower, or more:sections:login:5