# yuliiafonaskova/playwrightpracticesoftwaretesting architecture

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

- Interactive diagram: https://gitdiagram.com/yuliiafonaskova/playwrightpracticesoftwaretesting
- Repository: https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting

## Overview

This repository is a Playwright end-to-end test suite for the Practice Software Testing web application. Its workflow is organized into authentication, catalog search, product-detail, and shopping-cart scenarios: test specs exercise business-layer page objects, which use shared browser actions to interact with the external application. The README documents these suites and cross-browser coverage. The test specs were not excerpted, so their calls into page objects are shown as unverified; no fixture-data wiring is inferred.

Main entry points: [`business/pages/ProductPage.js`](https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/business/pages/ProductPage.js) (Product details), [`business/pages/LoginPage.js`](https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/business/pages/LoginPage.js) (Login page), [`business/pages/MainPage.js`](https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/business/pages/MainPage.js) (Catalog and search), [`core/BasePage.js`](https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/core/BasePage.js) (Browser actions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_scenarios["Test scenarios"]
  node_login_tests["Login tests<br/>[login.spec.js]"]
  node_search_tests["Search tests<br/>[search.spec.js]"]
  node_product_tests["Product tests<br/>[product.spec.js]"]
  node_cart_tests["Cart tests<br/>[cart.spec.js]"]
  node_browser_config["Browser configuration"]
end

subgraph group_business["Business pages"]
  node_login_page["Login page<br/>[LoginPage.js]"]
  node_main_page["Catalog and search<br/>[MainPage.js]"]
  node_product_page["Product details<br/>[ProductPage.js]"]
  node_cart_page["Shopping cart<br/>[CartPage.js]"]
  node_routes["Application routes<br/>[routes.js]"]
end

subgraph group_core["Shared framework"]
  node_base_page["Browser actions<br/>[BasePage.js]"]
end

node_runner(("Test runner"))
node_practice_app(("Practice Software Testing"))

node_runner -.->|"runs"| node_login_tests
node_runner -.->|"runs"| node_search_tests
node_runner -.->|"runs"| node_product_tests
node_runner -.->|"runs"| node_cart_tests
node_login_tests -.->|"exercises"| node_login_page
node_search_tests -.->|"exercises"| node_main_page
node_product_tests -.->|"exercises"| node_product_page
node_cart_tests -.->|"exercises"| node_product_page
node_cart_tests -.->|"exercises"| node_cart_page
node_browser_config -->|"sets base URL"| node_practice_app
node_login_page -->|"extends"| node_base_page
node_main_page -->|"extends"| node_base_page
node_product_page -->|"extends"| node_base_page
node_cart_page -->|"extends"| node_base_page
node_login_page -->|"checks route"| node_routes
node_main_page -->|"uses routes"| node_routes
node_product_page -->|"uses routes"| node_routes
node_login_page -.->|"drives UI"| node_practice_app
node_main_page -.->|"drives UI"| node_practice_app
node_product_page -.->|"drives UI"| node_practice_app
node_cart_page -.->|"drives UI"| node_practice_app

click node_login_tests "https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/tests/login.spec.js"
click node_search_tests "https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/tests/search.spec.js"
click node_product_tests "https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/tests/product.spec.js"
click node_cart_tests "https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/tests/cart.spec.js"
click node_browser_config "https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/playwright.config.js"
click node_login_page "https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/business/pages/LoginPage.js"
click node_main_page "https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/business/pages/MainPage.js"
click node_product_page "https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/business/pages/ProductPage.js"
click node_cart_page "https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/business/pages/CartPage.js"
click node_routes "https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/business/routes.js"
click node_base_page "https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/core/BasePage.js"

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_search_tests,node_product_tests,node_cart_tests,node_browser_config toneBlue
class node_login_page,node_main_page,node_product_page,node_cart_page,node_routes toneAmber
class node_base_page toneMint
class node_runner,node_practice_app toneIndigo
```

## Components

### Test scenarios

- [Login tests](https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/tests/login.spec.js): `tests/login.spec.js`
- [Search tests](https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/tests/search.spec.js): `tests/search.spec.js`
- [Product tests](https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/tests/product.spec.js): `tests/product.spec.js`
- [Cart tests](https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/tests/cart.spec.js): `tests/cart.spec.js`
- [Browser configuration](https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/playwright.config.js): `playwright.config.js`

### Business pages

- [Login page](https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/business/pages/LoginPage.js): `business/pages/LoginPage.js`
- [Catalog and search](https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/business/pages/MainPage.js): `business/pages/MainPage.js`
- [Product details](https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/business/pages/ProductPage.js): `business/pages/ProductPage.js`
- [Shopping cart](https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/business/pages/CartPage.js): `business/pages/CartPage.js`
- [Application routes](https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/business/routes.js): `business/routes.js`

### Shared framework

- [Browser actions](https://github.com/yuliiafonaskova/playwrightpracticesoftwaretesting/blob/main/core/BasePage.js): `core/BasePage.js`

### Other components

- **Test runner**
- **Practice Software Testing**

## Connections

- Test runner → Login tests: runs
- Test runner → Search tests: runs
- Test runner → Product tests: runs
- Test runner → Cart tests: runs
- Login tests → Login page: exercises
- Search tests → Catalog and search: exercises
- Product tests → Product details: exercises
- Cart tests → Product details: exercises
- Cart tests → Shopping cart: exercises
- Browser configuration → Practice Software Testing: sets base URL (evidence: `playwright.config.js`)
- Login page → Browser actions: extends (evidence: `business/pages/LoginPage.js`)
- Catalog and search → Browser actions: extends (evidence: `business/pages/MainPage.js`)
- Product details → Browser actions: extends (evidence: `business/pages/ProductPage.js`)
- Shopping cart → Browser actions: extends (evidence: `business/pages/CartPage.js`)
- Login page → Application routes: checks route (evidence: `business/pages/LoginPage.js`)
- Catalog and search → Application routes: uses routes (evidence: `business/pages/MainPage.js`)
- Product details → Application routes: uses routes (evidence: `business/pages/ProductPage.js`)
- Login page → Practice Software Testing: drives UI
- Catalog and search → Practice Software Testing: drives UI
- Product details → Practice Software Testing: drives UI
- Shopping cart → Practice Software Testing: drives UI
