# hpi-schul-cloud/e2e-system-tests architecture

> Architecture diagram of the GitHub repository hpi-schul-cloud/e2e-system-tests, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/hpi-schul-cloud/e2e-system-tests
- Repository: https://github.com/hpi-schul-cloud/e2e-system-tests

## Overview

This repository is a Cypress/Cucumber end-to-end test suite for the Schulcloud-Verbund-Software. Its principal workflow is a test run selecting feature scenarios, resolving their steps through Cucumber definitions, and exercising the application in a browser. Supporting Node tasks create test users through the School API, wait for downloaded files, and validate Common Cartridge exports. The graph groups scenarios by domain and shows only relationships explicit in the supplied configuration and source excerpts; page-object usage and application internals are not shown.

Main entry points: [`cypress.config.js`](https://github.com/hpi-schul-cloud/e2e-system-tests/blob/main/cypress.config.js) (Cypress runner), [`scripts/runSchoolApi.js`](https://github.com/hpi-schul-cloud/e2e-system-tests/blob/main/scripts/runSchoolApi.js) (User creation task), [`cypress/support/step_definition`](https://github.com/hpi-schul-cloud/e2e-system-tests/tree/main/cypress/support/step_definition) (Step definitions), [`cypress/e2e/admin`](https://github.com/hpi-schul-cloud/e2e-system-tests/tree/main/cypress/e2e/admin) (Identity and admin)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_scenarios["BDD scenarios"]
  node_identity_scenarios["Identity and admin"]
  node_learning_scenarios["Courses and learning"]
  node_room_scenarios["Rooms and boards"]
  node_other_scenarios["Other workflows"]
end

subgraph group_support["Cypress support"]
  node_cypress["Cypress runner<br/>[cypress.config.js]"]
  node_step_definitions["Step definitions"]
  node_page_objects["Page objects"]
end

subgraph group_node_tasks["Node tasks"]
  node_school_api_task["User creation task<br/>[runSchoolApi.js]"]
  node_file_task["Downloaded-file wait<br/>[verifyFile.js]"]
  node_cartridge_task["Cartridge validation"]
end

subgraph group_external["External systems"]
  node_school_api{{"School API"}}
end

node_tester(("Test initiator"))

node_tester -->|"starts run"| node_cypress
node_cypress -->|"selects features"| node_identity_scenarios
node_cypress -->|"selects features"| node_learning_scenarios
node_cypress -->|"selects features"| node_room_scenarios
node_cypress -->|"selects features"| node_other_scenarios
node_step_definitions -->|"resolves steps"| node_cypress
node_cypress -->|"dispatches task"| node_school_api_task
node_cypress -->|"dispatches task"| node_file_task
node_cypress -->|"dispatches tasks"| node_cartridge_task
node_school_api_task -->|"creates users"| node_school_api

click node_cypress "https://github.com/hpi-schul-cloud/e2e-system-tests/blob/main/cypress.config.js"
click node_identity_scenarios "https://github.com/hpi-schul-cloud/e2e-system-tests/tree/main/cypress/e2e/admin"
click node_learning_scenarios "https://github.com/hpi-schul-cloud/e2e-system-tests/tree/main/cypress/e2e/courses"
click node_room_scenarios "https://github.com/hpi-schul-cloud/e2e-system-tests/tree/main/cypress/e2e/rooms"
click node_other_scenarios "https://github.com/hpi-schul-cloud/e2e-system-tests/tree/main/cypress/e2e"
click node_step_definitions "https://github.com/hpi-schul-cloud/e2e-system-tests/tree/main/cypress/support/step_definition"
click node_page_objects "https://github.com/hpi-schul-cloud/e2e-system-tests/tree/main/cypress/support/pages"
click node_school_api_task "https://github.com/hpi-schul-cloud/e2e-system-tests/blob/main/scripts/runSchoolApi.js"
click node_file_task "https://github.com/hpi-schul-cloud/e2e-system-tests/blob/main/scripts/verifyFile.js"
click node_cartridge_task "https://github.com/hpi-schul-cloud/e2e-system-tests/blob/main/scripts/commonCartridgeValidation.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_identity_scenarios,node_learning_scenarios,node_room_scenarios,node_other_scenarios toneBlue
class node_cypress,node_step_definitions,node_page_objects toneAmber
class node_school_api_task,node_file_task,node_cartridge_task toneMint
class node_school_api toneRose
class node_tester toneIndigo
```

## Components

### BDD scenarios

- [Identity and admin](https://github.com/hpi-schul-cloud/e2e-system-tests/tree/main/cypress/e2e/admin): `cypress/e2e/admin`
- [Courses and learning](https://github.com/hpi-schul-cloud/e2e-system-tests/tree/main/cypress/e2e/courses): `cypress/e2e/courses`
- [Rooms and boards](https://github.com/hpi-schul-cloud/e2e-system-tests/tree/main/cypress/e2e/rooms): `cypress/e2e/rooms`
- [Other workflows](https://github.com/hpi-schul-cloud/e2e-system-tests/tree/main/cypress/e2e): `cypress/e2e`

### Cypress support

- [Cypress runner](https://github.com/hpi-schul-cloud/e2e-system-tests/blob/main/cypress.config.js): `cypress.config.js`
- [Step definitions](https://github.com/hpi-schul-cloud/e2e-system-tests/tree/main/cypress/support/step_definition): `cypress/support/step_definition`
- [Page objects](https://github.com/hpi-schul-cloud/e2e-system-tests/tree/main/cypress/support/pages): `cypress/support/pages`

### Node tasks

- [User creation task](https://github.com/hpi-schul-cloud/e2e-system-tests/blob/main/scripts/runSchoolApi.js): `scripts/runSchoolApi.js`
- [Downloaded-file wait](https://github.com/hpi-schul-cloud/e2e-system-tests/blob/main/scripts/verifyFile.js): `scripts/verifyFile.js`
- [Cartridge validation](https://github.com/hpi-schul-cloud/e2e-system-tests/blob/main/scripts/commonCartridgeValidation.js): `scripts/commonCartridgeValidation.js`

### External systems

- **School API**

### Other components

- **Test initiator**

## Connections

- Test initiator → Cypress runner: starts run
- Cypress runner → Identity and admin: selects features (evidence: `cypress.config.js`)
- Cypress runner → Courses and learning: selects features (evidence: `cypress.config.js`)
- Cypress runner → Rooms and boards: selects features (evidence: `cypress.config.js`)
- Cypress runner → Other workflows: selects features (evidence: `cypress.config.js`)
- Step definitions → Cypress runner: resolves steps
- Cypress runner → User creation task: dispatches task (evidence: `cypress.config.js`)
- Cypress runner → Downloaded-file wait: dispatches task (evidence: `cypress.config.js`)
- Cypress runner → Cartridge validation: dispatches tasks (evidence: `cypress.config.js`)
- User creation task → School API: creates users (evidence: `scripts/runSchoolApi.js`)
