# rityjacob/playwright-parabank architecture

> Architecture diagram of the GitHub repository rityjacob/playwright-parabank, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/rityjacob/playwright-parabank
- Repository: https://github.com/rityjacob/playwright-parabank

## Overview

This repository is a Playwright/pytest UI test suite for the ParaBank demo banking site, organized around page objects. The user-facing test journey covers login, authenticated home-page actions, and fund transfers, with checks for successful and failed outcomes. Test modules and shared fixtures are represented because they are the product’s runtime orchestration, not delivery tooling. The README documents the test structure and Page Object Model; the supplied source excerpts show page-object behavior, but do not expose test or fixture implementations, so specific test-to-page links are documented at a high level.

Main entry points: [`tests/test_login_page.py`](https://github.com/rityjacob/playwright-parabank/blob/main/tests/test_login_page.py) (Login tests), [`tests/test_home_page.py`](https://github.com/rityjacob/playwright-parabank/blob/main/tests/test_home_page.py) (Home tests), [`tests/test_transfer_funds.py`](https://github.com/rityjacob/playwright-parabank/blob/main/tests/test_transfer_funds.py) (Transfer tests), [`pages/Login_Page.py`](https://github.com/rityjacob/playwright-parabank/blob/main/pages/Login_Page.py) (Login page)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_tests["Test suite"]
  node_login_tests["Login tests<br/>[test_login_page.py]"]
  node_home_tests["Home tests<br/>[test_home_page.py]"]
  node_transfer_tests["Transfer tests"]
  node_fixtures["Shared fixtures<br/>[conftest.py]"]
end

subgraph group_pages["Page objects"]
  node_login_page["Login page<br/>[Login_Page.py]"]
  node_home_page["Home page<br/>[home_page.py]"]
  node_transfer_page["Transfer page<br/>[transfer_page.py]"]
end

node_runner(("pytest runner"))
node_parabank{{"ParaBank site"}}

node_runner -->|"runs"| node_login_tests
node_runner -->|"runs"| node_home_tests
node_runner -->|"runs"| node_transfer_tests
node_login_tests -->|"uses page object"| node_login_page
node_home_tests -->|"uses page object"| node_home_page
node_transfer_tests -->|"uses page object"| node_transfer_page
node_login_page -->|"opens and interacts"| node_parabank
node_home_page -->|"interacts with"| node_parabank
node_transfer_page -->|"interacts with"| node_parabank

click node_login_tests "https://github.com/rityjacob/playwright-parabank/blob/main/tests/test_login_page.py"
click node_home_tests "https://github.com/rityjacob/playwright-parabank/blob/main/tests/test_home_page.py"
click node_transfer_tests "https://github.com/rityjacob/playwright-parabank/blob/main/tests/test_transfer_funds.py"
click node_fixtures "https://github.com/rityjacob/playwright-parabank/blob/main/tests/conftest.py"
click node_login_page "https://github.com/rityjacob/playwright-parabank/blob/main/pages/Login_Page.py"
click node_home_page "https://github.com/rityjacob/playwright-parabank/blob/main/pages/home_page.py"
click node_transfer_page "https://github.com/rityjacob/playwright-parabank/blob/main/pages/transfer_page.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_login_tests,node_home_tests,node_transfer_tests,node_fixtures toneBlue
class node_login_page,node_home_page,node_transfer_page toneAmber
class node_runner,node_parabank toneIndigo
```

## Components

### Test suite

- [Login tests](https://github.com/rityjacob/playwright-parabank/blob/main/tests/test_login_page.py): `tests/test_login_page.py`
- [Home tests](https://github.com/rityjacob/playwright-parabank/blob/main/tests/test_home_page.py): `tests/test_home_page.py`
- [Transfer tests](https://github.com/rityjacob/playwright-parabank/blob/main/tests/test_transfer_funds.py): `tests/test_transfer_funds.py`
- [Shared fixtures](https://github.com/rityjacob/playwright-parabank/blob/main/tests/conftest.py): `tests/conftest.py`

### Page objects

- [Login page](https://github.com/rityjacob/playwright-parabank/blob/main/pages/Login_Page.py): `pages/Login_Page.py`
- [Home page](https://github.com/rityjacob/playwright-parabank/blob/main/pages/home_page.py): `pages/home_page.py`
- [Transfer page](https://github.com/rityjacob/playwright-parabank/blob/main/pages/transfer_page.py): `pages/transfer_page.py`

### Other components

- **pytest runner**
- **ParaBank site**

## Connections

- pytest runner → Login tests: runs (evidence: `README.md`)
- pytest runner → Home tests: runs (evidence: `README.md`)
- pytest runner → Transfer tests: runs (evidence: `README.md`)
- Login tests → Login page: uses page object (evidence: `README.md`)
- Home tests → Home page: uses page object (evidence: `README.md`)
- Transfer tests → Transfer page: uses page object (evidence: `README.md`)
- Login page → ParaBank site: opens and interacts (evidence: `pages/Login_Page.py`)
- Home page → ParaBank site: interacts with (evidence: `pages/home_page.py`)
- Transfer page → ParaBank site: interacts with (evidence: `pages/transfer_page.py`)
