# i-martinx/beontech-demo architecture

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

- Interactive diagram: https://gitdiagram.com/i-martinx/beontech-demo
- Repository: https://github.com/i-martinx/beontech-demo

## Overview

BeonTech-Demo is a Cypress/TypeScript test suite, not an application serving end users. Its two documented workflows are a Restful-Booker booking lifecycle and a SauceDemo purchase journey. The graph follows the README’s described spec-to-API/page-object structure and includes its data and configuration. The workflow implementation files were not sampled, so edges not explicitly documented are omitted; optional UI selector wiring is marked unverified.

Main entry points: [`cypress/e2e/ui/checkout.cy.ts`](https://github.com/i-martinx/beontech-demo/blob/master/cypress/e2e/ui/checkout.cy.ts) (Purchase path spec), [`cypress/e2e/api/booking.cy.ts`](https://github.com/i-martinx/beontech-demo/blob/master/cypress/e2e/api/booking.cy.ts) (Booking lifecycle spec), [`cypress/pages/login.page.ts`](https://github.com/i-martinx/beontech-demo/blob/master/cypress/pages/login.page.ts) (Login page object), [`cypress/pages/inventory.page.ts`](https://github.com/i-martinx/beontech-demo/blob/master/cypress/pages/inventory.page.ts) (Inventory page object)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_execution["Test execution"]
  node_cypress["Cypress runner"]
  node_config["Cypress configuration<br/>[cypress.config.ts]"]
end

subgraph group_api["Booking API workflow"]
  node_api_spec["Booking lifecycle spec<br/>[booking.cy.ts]"]
  node_api_functions["Booking API functions<br/>[booking.api.ts]"]
  node_booking_service["Restful-Booker"]
end

subgraph group_ui["SauceDemo UI workflow"]
  node_ui_spec["Purchase path spec<br/>[checkout.cy.ts]"]
  node_login_page["Login page object<br/>[login.page.ts]"]
  node_inventory_page["Inventory page object<br/>[inventory.page.ts]"]
  node_cart_page["Cart page object<br/>[cart.page.ts]"]
  node_checkout_page["Checkout page object<br/>[checkout.page.ts]"]
  node_saucedemo["SauceDemo"]
end

subgraph group_support["Test inputs and configuration"]
  node_booking_data["Booking test data<br/>[booking.json]"]
  node_checkout_data["Checkout test data<br/>[checkout.json]"]
  node_sauce_data["SauceDemo test data<br/>[saucedemo.json]"]
  node_api_locators["API base URL setting<br/>[cypress.config.ts]"]
  node_login_locators["Login selectors<br/>[login.locators.ts]"]
  node_inventory_locators["Inventory selectors"]
  node_cart_locators["Cart selectors<br/>[cart.locators.ts]"]
  node_checkout_locators["Checkout selectors"]
end

node_operator(("Test operator"))

node_operator -->|"runs tests"| node_cypress
node_config -->|"configures"| node_cypress
node_cypress -->|"runs spec"| node_api_spec
node_cypress -->|"runs spec"| node_ui_spec
node_api_spec -->|"calls"| node_api_functions
node_api_functions -->|"sends requests"| node_booking_service
node_api_spec -->|"uses inputs"| node_booking_data
node_api_spec -->|"reads base URL"| node_api_locators
node_ui_spec -->|"calls"| node_login_page
node_ui_spec -->|"calls"| node_inventory_page
node_ui_spec -->|"calls"| node_cart_page
node_ui_spec -->|"calls"| node_checkout_page
node_ui_spec -->|"uses inputs"| node_checkout_data
node_ui_spec -->|"uses inputs"| node_sauce_data
node_login_page -.->|"interacts with"| node_saucedemo
node_inventory_page -.->|"interacts with"| node_saucedemo
node_cart_page -.->|"interacts with"| node_saucedemo
node_checkout_page -.->|"interacts with"| node_saucedemo
node_login_page -.->|"uses selectors"| node_login_locators
node_inventory_page -.->|"uses selectors"| node_inventory_locators
node_cart_page -.->|"uses selectors"| node_cart_locators
node_checkout_page -.->|"uses selectors"| node_checkout_locators

click node_config "https://github.com/i-martinx/beontech-demo/blob/master/cypress.config.ts"
click node_api_spec "https://github.com/i-martinx/beontech-demo/blob/master/cypress/e2e/api/booking.cy.ts"
click node_api_functions "https://github.com/i-martinx/beontech-demo/blob/master/cypress/api/booking.api.ts"
click node_ui_spec "https://github.com/i-martinx/beontech-demo/blob/master/cypress/e2e/ui/checkout.cy.ts"
click node_login_page "https://github.com/i-martinx/beontech-demo/blob/master/cypress/pages/login.page.ts"
click node_inventory_page "https://github.com/i-martinx/beontech-demo/blob/master/cypress/pages/inventory.page.ts"
click node_cart_page "https://github.com/i-martinx/beontech-demo/blob/master/cypress/pages/cart.page.ts"
click node_checkout_page "https://github.com/i-martinx/beontech-demo/blob/master/cypress/pages/checkout.page.ts"
click node_booking_data "https://github.com/i-martinx/beontech-demo/blob/master/data/booking.json"
click node_checkout_data "https://github.com/i-martinx/beontech-demo/blob/master/data/checkout.json"
click node_sauce_data "https://github.com/i-martinx/beontech-demo/blob/master/data/saucedemo.json"
click node_api_locators "https://github.com/i-martinx/beontech-demo/blob/master/cypress.config.ts"
click node_login_locators "https://github.com/i-martinx/beontech-demo/blob/master/cypress/locators/login.locators.ts"
click node_inventory_locators "https://github.com/i-martinx/beontech-demo/blob/master/cypress/locators/inventory.locators.ts"
click node_cart_locators "https://github.com/i-martinx/beontech-demo/blob/master/cypress/locators/cart.locators.ts"
click node_checkout_locators "https://github.com/i-martinx/beontech-demo/blob/master/cypress/locators/checkout.locators.ts"

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_cypress,node_config toneBlue
class node_api_spec,node_api_functions,node_booking_service toneAmber
class node_ui_spec,node_login_page,node_inventory_page,node_cart_page,node_checkout_page,node_saucedemo toneMint
class node_booking_data,node_checkout_data,node_sauce_data,node_api_locators,node_login_locators,node_inventory_locators,node_cart_locators,node_checkout_locators toneRose
class node_operator toneIndigo
```

## Components

### Test execution

- **Cypress runner**
- [Cypress configuration](https://github.com/i-martinx/beontech-demo/blob/master/cypress.config.ts): `cypress.config.ts`

### Booking API workflow

- [Booking lifecycle spec](https://github.com/i-martinx/beontech-demo/blob/master/cypress/e2e/api/booking.cy.ts): `cypress/e2e/api/booking.cy.ts`
- [Booking API functions](https://github.com/i-martinx/beontech-demo/blob/master/cypress/api/booking.api.ts): `cypress/api/booking.api.ts`
- **Restful-Booker**

### SauceDemo UI workflow

- [Purchase path spec](https://github.com/i-martinx/beontech-demo/blob/master/cypress/e2e/ui/checkout.cy.ts): `cypress/e2e/ui/checkout.cy.ts`
- [Login page object](https://github.com/i-martinx/beontech-demo/blob/master/cypress/pages/login.page.ts): `cypress/pages/login.page.ts`
- [Inventory page object](https://github.com/i-martinx/beontech-demo/blob/master/cypress/pages/inventory.page.ts): `cypress/pages/inventory.page.ts`
- [Cart page object](https://github.com/i-martinx/beontech-demo/blob/master/cypress/pages/cart.page.ts): `cypress/pages/cart.page.ts`
- [Checkout page object](https://github.com/i-martinx/beontech-demo/blob/master/cypress/pages/checkout.page.ts): `cypress/pages/checkout.page.ts`
- **SauceDemo**

### Test inputs and configuration

- [Booking test data](https://github.com/i-martinx/beontech-demo/blob/master/data/booking.json): `data/booking.json`
- [Checkout test data](https://github.com/i-martinx/beontech-demo/blob/master/data/checkout.json): `data/checkout.json`
- [SauceDemo test data](https://github.com/i-martinx/beontech-demo/blob/master/data/saucedemo.json): `data/saucedemo.json`
- [API base URL setting](https://github.com/i-martinx/beontech-demo/blob/master/cypress.config.ts): `cypress.config.ts`
- [Login selectors](https://github.com/i-martinx/beontech-demo/blob/master/cypress/locators/login.locators.ts): `cypress/locators/login.locators.ts`
- [Inventory selectors](https://github.com/i-martinx/beontech-demo/blob/master/cypress/locators/inventory.locators.ts): `cypress/locators/inventory.locators.ts`
- [Cart selectors](https://github.com/i-martinx/beontech-demo/blob/master/cypress/locators/cart.locators.ts): `cypress/locators/cart.locators.ts`
- [Checkout selectors](https://github.com/i-martinx/beontech-demo/blob/master/cypress/locators/checkout.locators.ts): `cypress/locators/checkout.locators.ts`

### Other components

- **Test operator**

## Connections

- Test operator → Cypress runner: runs tests (evidence: `README.md`)
- Cypress configuration → Cypress runner: configures (evidence: `cypress.config.ts`)
- Cypress runner → Booking lifecycle spec: runs spec (evidence: `README.md`)
- Cypress runner → Purchase path spec: runs spec (evidence: `README.md`)
- Booking lifecycle spec → Booking API functions: calls (evidence: `README.md`)
- Booking API functions → Restful-Booker: sends requests (evidence: `README.md`)
- Booking lifecycle spec → Booking test data: uses inputs (evidence: `README.md`)
- Booking lifecycle spec → API base URL setting: reads base URL (evidence: `cypress.config.ts`)
- Purchase path spec → Login page object: calls (evidence: `README.md`)
- Purchase path spec → Inventory page object: calls (evidence: `README.md`)
- Purchase path spec → Cart page object: calls (evidence: `README.md`)
- Purchase path spec → Checkout page object: calls (evidence: `README.md`)
- Purchase path spec → Checkout test data: uses inputs (evidence: `README.md`)
- Purchase path spec → SauceDemo test data: uses inputs (evidence: `README.md`)
- Login page object → SauceDemo: interacts with
- Inventory page object → SauceDemo: interacts with
- Cart page object → SauceDemo: interacts with
- Checkout page object → SauceDemo: interacts with
- Login page object → Login selectors: uses selectors
- Inventory page object → Inventory selectors: uses selectors
- Cart page object → Cart selectors: uses selectors
- Checkout page object → Checkout selectors: uses selectors
