## 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

## Feature files
- `features/login.feature` — 2 scenarios
… 1 rows in this section do not mention these words

## 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

## Step modules, largest first
- `steps/login_steps.py` — 5 steps
… 1 rows in this section do not mention these words

## Largest files
- steps/pay_steps.py (2 KB), pages/checkout.py (1 KB), steps/login_steps.py (0 KB)

## Biggest feature files (scenario line numbers are in the full map)
- `features/login.feature` — 2 scenarios
… 1 rows in this section do not mention these words

## What each module says it is for
- `steps/login_steps.py` — Step definitions for logging in.
… 2 rows in this section do not mention these words