# nithish720/almashines_signup_automation architecture

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

- Interactive diagram: https://gitdiagram.com/nithish720/almashines_signup_automation
- Repository: https://github.com/nithish720/almashines_signup_automation

## Overview

This repository is a Selenium/Pytest automation suite for AlmaShines account signup, not the signup application itself. Its main workflow starts a browser at the account page, exercises signup through a page object, pauses for manual OTP verification, and checks the role page. Separate scenarios cover existing-user routing and input validations. The README documents these scenarios, but their test bodies were not sampled, so their exact calls and assertions cannot be confirmed; those links are shown only where the documented Page Object Model supports them.

Main entry points: [`conftest.py`](https://github.com/nithish720/almashines_signup_automation/blob/master/conftest.py) (Browser fixture), [`pages/signup_page.py`](https://github.com/nithish720/almashines_signup_automation/blob/master/pages/signup_page.py) (Signup page object), [`tests/test_signup_flow.py`](https://github.com/nithish720/almashines_signup_automation/blob/master/tests/test_signup_flow.py) (Successful signup), [`tests/test_existing_user.py`](https://github.com/nithish720/almashines_signup_automation/blob/master/tests/test_existing_user.py) (Existing user routing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_execution["Browser setup"]
  node_fixture["Browser fixture<br/>[conftest.py]"]
  node_selenium["Selenium WebDriver"]
  node_browser["Chrome browser"]
end

subgraph group_interaction["Signup interaction"]
  node_signup_page["Signup page object<br/>[signup_page.py]"]
end

subgraph group_scenarios["Signup scenarios"]
  node_signup_flow["Successful signup"]
  node_existing_user["Existing user routing"]
  node_password_validation["Password mismatch"]
  node_empty_firstname["Empty first name"]
  node_invalid_email["Invalid email"]
  node_password_length["Password minimum length"]
end

node_engineer(("Test operator"))
node_almashines["AlmaShines account"]
node_otp_user(("Manual OTP entry"))

node_engineer -->|"runs tests"| node_fixture
node_fixture -->|"starts Chrome"| node_selenium
node_selenium -->|"controls"| node_browser
node_fixture -->|"opens account page"| node_browser
node_browser -->|"loads account"| node_almashines
node_fixture -->|"provides driver"| node_signup_flow
node_fixture -->|"provides driver"| node_existing_user
node_fixture -->|"provides driver"| node_password_validation
node_fixture -->|"provides driver"| node_empty_firstname
node_fixture -->|"provides driver"| node_invalid_email
node_fixture -->|"provides driver"| node_password_length
node_signup_flow -->|"uses page object"| node_signup_page
node_existing_user -->|"uses page object"| node_signup_page
node_password_validation -->|"uses page object"| node_signup_page
node_empty_firstname -->|"uses page object"| node_signup_page
node_invalid_email -->|"uses page object"| node_signup_page
node_password_length -->|"uses page object"| node_signup_page
node_signup_page -->|"interacts via WebDriver"| node_browser
node_otp_user -->|"enters OTP"| node_browser

click node_fixture "https://github.com/nithish720/almashines_signup_automation/blob/master/conftest.py"
click node_signup_page "https://github.com/nithish720/almashines_signup_automation/blob/master/pages/signup_page.py"
click node_signup_flow "https://github.com/nithish720/almashines_signup_automation/blob/master/tests/test_signup_flow.py"
click node_existing_user "https://github.com/nithish720/almashines_signup_automation/blob/master/tests/test_existing_user.py"
click node_password_validation "https://github.com/nithish720/almashines_signup_automation/blob/master/tests/test_password_validation.py"
click node_empty_firstname "https://github.com/nithish720/almashines_signup_automation/blob/master/tests/test_empty_firstname.py"
click node_invalid_email "https://github.com/nithish720/almashines_signup_automation/blob/master/tests/test_invalid_email_format.py"
click node_password_length "https://github.com/nithish720/almashines_signup_automation/blob/master/tests/test_password_length.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_fixture,node_selenium,node_browser toneBlue
class node_signup_page toneAmber
class node_signup_flow,node_existing_user,node_password_validation,node_empty_firstname,node_invalid_email,node_password_length toneMint
class node_engineer,node_almashines,node_otp_user toneIndigo
```

## Components

### Browser setup

- [Browser fixture](https://github.com/nithish720/almashines_signup_automation/blob/master/conftest.py): `conftest.py`
- **Selenium WebDriver**
- **Chrome browser**

### Signup interaction

- [Signup page object](https://github.com/nithish720/almashines_signup_automation/blob/master/pages/signup_page.py): `pages/signup_page.py`

### Signup scenarios

- [Successful signup](https://github.com/nithish720/almashines_signup_automation/blob/master/tests/test_signup_flow.py): `tests/test_signup_flow.py`
- [Existing user routing](https://github.com/nithish720/almashines_signup_automation/blob/master/tests/test_existing_user.py): `tests/test_existing_user.py`
- [Password mismatch](https://github.com/nithish720/almashines_signup_automation/blob/master/tests/test_password_validation.py): `tests/test_password_validation.py`
- [Empty first name](https://github.com/nithish720/almashines_signup_automation/blob/master/tests/test_empty_firstname.py): `tests/test_empty_firstname.py`
- [Invalid email](https://github.com/nithish720/almashines_signup_automation/blob/master/tests/test_invalid_email_format.py): `tests/test_invalid_email_format.py`
- [Password minimum length](https://github.com/nithish720/almashines_signup_automation/blob/master/tests/test_password_length.py): `tests/test_password_length.py`

### Other components

- **Test operator**
- **AlmaShines account**
- **Manual OTP entry**

## Connections

- Test operator → Browser fixture: runs tests
- Browser fixture → Selenium WebDriver: starts Chrome
- Selenium WebDriver → Chrome browser: controls
- Browser fixture → Chrome browser: opens account page
- Chrome browser → AlmaShines account: loads account
- Browser fixture → Successful signup: provides driver
- Browser fixture → Existing user routing: provides driver
- Browser fixture → Password mismatch: provides driver
- Browser fixture → Empty first name: provides driver
- Browser fixture → Invalid email: provides driver
- Browser fixture → Password minimum length: provides driver
- Successful signup → Signup page object: uses page object
- Existing user routing → Signup page object: uses page object
- Password mismatch → Signup page object: uses page object
- Empty first name → Signup page object: uses page object
- Invalid email → Signup page object: uses page object
- Password minimum length → Signup page object: uses page object
- Signup page object → Chrome browser: interacts via WebDriver
- Manual OTP entry → Chrome browser: enters OTP
