# cc-qa-projects/playwright2026 architecture

> Architecture diagram of the GitHub repository cc-qa-projects/playwright2026, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/cc-qa-projects/playwright2026
- Repository: https://github.com/cc-qa-projects/playwright2026

## Overview

This repository is a Demoblaze UI-automation framework. Its main workflow is to run Gherkin scenarios through Cucumber step definitions and reusable page objects, which drive a browser against the site. Cucumber also produces Allure results; an optional report-debugging path can summarize failures and request an OpenAI analysis. The README documents coverage across authentication, catalog, cart, checkout, and site modals. Step and page-object wiring is described in the README but their source was not sampled, so detailed calls between individual modules are omitted.

Main entry points: [`cucumber.mjs`](https://github.com/cc-qa-projects/playwright2026/blob/main/cucumber.mjs) (Cucumber config), [`tests/step-definitions`](https://github.com/cc-qa-projects/playwright2026/tree/main/tests/step-definitions) (Step definitions), [`reports/scripts/run-cucumber-allure.mjs`](https://github.com/cc-qa-projects/playwright2026/blob/main/reports/scripts/run-cucumber-allure.mjs) (Allure run wrapper), [`reports/scripts/debug-allure-failures.mjs`](https://github.com/cc-qa-projects/playwright2026/blob/main/reports/scripts/debug-allure-failures.mjs) (Failure analyzer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_specs["Scenario specs"]
  node_auth["Authentication"]
  node_catalog["Catalog<br/>[catalog.feature]"]
  node_cart["Cart"]
  node_checkout["Checkout<br/>[checkout.feature]"]
  node_modals["Site modals"]
end

subgraph group_runtime["Test runtime"]
  node_cucumber["Cucumber config<br/>[cucumber.mjs]"]
  node_steps["Step definitions"]
  node_hooks["Scenario hooks<br/>[hooks.js]"]
  node_context["App context<br/>[app-context.js]"]
  node_testdata["Test data<br/>[test-data.js]"]
end

subgraph group_ui["Browser interaction"]
  node_pages["Page objects"]
  node_browser["Playwright browser"]
end

subgraph group_reporting["Reporting and diagnosis"]
  node_allure["Allure results"]
  node_allure_runner["Allure run wrapper"]
  node_debug["Failure analyzer"]
  node_reports["Debug reports"]
end

node_runner(("Suite operator"))
node_demoblaze["Demoblaze"]
node_openai["OpenAI API"]

node_runner -->|"starts suite"| node_cucumber
node_cucumber -->|"loads scenarios"| node_auth
node_cucumber -->|"loads scenarios"| node_catalog
node_cucumber -->|"loads scenarios"| node_cart
node_cucumber -->|"loads scenarios"| node_checkout
node_cucumber -->|"loads scenarios"| node_modals
node_cucumber -->|"loads definitions"| node_steps
node_cucumber -->|"loads hooks"| node_hooks
node_steps -->|"uses page objects"| node_pages
node_steps -->|"uses context"| node_context
node_steps -->|"uses test data"| node_testdata
node_pages -->|"drives browser"| node_browser
node_browser -->|"interacts with site"| node_demoblaze
node_cucumber -->|"writes results"| node_allure
node_runner -.->|"starts report run"| node_allure_runner
node_allure_runner -->|"runs suite"| node_cucumber
node_allure_runner -->|"generates report"| node_allure
node_allure_runner -.->|"optionally invokes"| node_debug
node_debug -->|"reads results"| node_allure
node_debug -->|"writes summaries"| node_reports
node_debug -.->|"requests diagnosis"| node_openai

click node_auth "https://github.com/cc-qa-projects/playwright2026/blob/main/tests/features/authentication.feature"
click node_catalog "https://github.com/cc-qa-projects/playwright2026/blob/main/tests/features/catalog.feature"
click node_cart "https://github.com/cc-qa-projects/playwright2026/blob/main/tests/features/add-items-to-cart.feature"
click node_checkout "https://github.com/cc-qa-projects/playwright2026/blob/main/tests/features/checkout.feature"
click node_modals "https://github.com/cc-qa-projects/playwright2026/blob/main/tests/features/site-modals.feature"
click node_cucumber "https://github.com/cc-qa-projects/playwright2026/blob/main/cucumber.mjs"
click node_steps "https://github.com/cc-qa-projects/playwright2026/tree/main/tests/step-definitions"
click node_hooks "https://github.com/cc-qa-projects/playwright2026/blob/main/tests/step-definitions/hooks.js"
click node_context "https://github.com/cc-qa-projects/playwright2026/blob/main/tests/step-definitions/helpers/app-context.js"
click node_testdata "https://github.com/cc-qa-projects/playwright2026/blob/main/tests/step-definitions/helpers/test-data.js"
click node_pages "https://github.com/cc-qa-projects/playwright2026/tree/main/tests/pages"
click node_allure "https://github.com/cc-qa-projects/playwright2026/tree/main/reports"
click node_allure_runner "https://github.com/cc-qa-projects/playwright2026/blob/main/reports/scripts/run-cucumber-allure.mjs"
click node_debug "https://github.com/cc-qa-projects/playwright2026/blob/main/reports/scripts/debug-allure-failures.mjs"
click node_reports "https://github.com/cc-qa-projects/playwright2026/tree/main/reports"

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_auth,node_catalog,node_cart,node_checkout,node_modals toneBlue
class node_cucumber,node_steps,node_hooks,node_context,node_testdata toneAmber
class node_pages,node_browser,node_openai toneMint
class node_allure,node_allure_runner,node_debug,node_reports toneRose
class node_runner,node_demoblaze toneIndigo
```

## Components

### Scenario specs

- [Authentication](https://github.com/cc-qa-projects/playwright2026/blob/main/tests/features/authentication.feature): `tests/features/authentication.feature`
- [Catalog](https://github.com/cc-qa-projects/playwright2026/blob/main/tests/features/catalog.feature): `tests/features/catalog.feature`
- [Cart](https://github.com/cc-qa-projects/playwright2026/blob/main/tests/features/add-items-to-cart.feature): `tests/features/add-items-to-cart.feature`
- [Checkout](https://github.com/cc-qa-projects/playwright2026/blob/main/tests/features/checkout.feature): `tests/features/checkout.feature`
- [Site modals](https://github.com/cc-qa-projects/playwright2026/blob/main/tests/features/site-modals.feature): `tests/features/site-modals.feature`

### Test runtime

- [Cucumber config](https://github.com/cc-qa-projects/playwright2026/blob/main/cucumber.mjs): `cucumber.mjs`
- [Step definitions](https://github.com/cc-qa-projects/playwright2026/tree/main/tests/step-definitions): `tests/step-definitions`
- [Scenario hooks](https://github.com/cc-qa-projects/playwright2026/blob/main/tests/step-definitions/hooks.js): `tests/step-definitions/hooks.js`
- [App context](https://github.com/cc-qa-projects/playwright2026/blob/main/tests/step-definitions/helpers/app-context.js): `tests/step-definitions/helpers/app-context.js`
- [Test data](https://github.com/cc-qa-projects/playwright2026/blob/main/tests/step-definitions/helpers/test-data.js): `tests/step-definitions/helpers/test-data.js`

### Browser interaction

- [Page objects](https://github.com/cc-qa-projects/playwright2026/tree/main/tests/pages): `tests/pages`
- **Playwright browser**

### Reporting and diagnosis

- [Allure results](https://github.com/cc-qa-projects/playwright2026/tree/main/reports): `reports`
- [Allure run wrapper](https://github.com/cc-qa-projects/playwright2026/blob/main/reports/scripts/run-cucumber-allure.mjs): `reports/scripts/run-cucumber-allure.mjs`
- [Failure analyzer](https://github.com/cc-qa-projects/playwright2026/blob/main/reports/scripts/debug-allure-failures.mjs): `reports/scripts/debug-allure-failures.mjs`
- [Debug reports](https://github.com/cc-qa-projects/playwright2026/tree/main/reports): `reports`

### Other components

- **Suite operator**
- **Demoblaze**
- **OpenAI API**

## Connections

- Suite operator → Cucumber config: starts suite
- Cucumber config → Authentication: loads scenarios
- Cucumber config → Catalog: loads scenarios
- Cucumber config → Cart: loads scenarios
- Cucumber config → Checkout: loads scenarios
- Cucumber config → Site modals: loads scenarios
- Cucumber config → Step definitions: loads definitions
- Cucumber config → Scenario hooks: loads hooks
- Step definitions → Page objects: uses page objects
- Step definitions → App context: uses context
- Step definitions → Test data: uses test data
- Page objects → Playwright browser: drives browser
- Playwright browser → Demoblaze: interacts with site
- Cucumber config → Allure results: writes results
- Suite operator → Allure run wrapper: starts report run
- Allure run wrapper → Cucumber config: runs suite
- Allure run wrapper → Allure results: generates report
- Allure run wrapper → Failure analyzer: optionally invokes
- Failure analyzer → Allure results: reads results
- Failure analyzer → Debug reports: writes summaries
- Failure analyzer → OpenAI API: requests diagnosis
