# computer-com/mobilet architecture

> Architecture diagram of the GitHub repository computer-com/mobilet, 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/computer-com/mobilet
- Repository: https://github.com/computer-com/mobilet

## Overview

This repository automates Android shopping flows in the Swag Labs app: launch and log in, browse and sort products, add items to the cart, and complete checkout. Behave steps drive Appium-backed page objects, while YAML configuration supplies app and test data. Visual checks use Applitools. The README is empty, and the cart page implementation was not sampled, so its internal behavior and some wiring are represented only where supported by the tree and workflow source.

Main entry points: [`features/steps/checkout_steps.py`](https://github.com/computer-com/mobilet/blob/main/features/steps/checkout_steps.py) (Checkout Steps), [`pages/products_page.py`](https://github.com/computer-com/mobilet/blob/main/pages/products_page.py) (Products Page), [`pages/base_page.py`](https://github.com/computer-com/mobilet/blob/main/pages/base_page.py) (Page Primitives), [`features/environment.py`](https://github.com/computer-com/mobilet/blob/main/features/environment.py) (Scenario Setup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_scenarios["Shopping Scenarios"]
  node_login_feature["Login Scenarios<br/>[login.feature]"]
  node_products_feature["Product Scenarios<br/>[products.feature]"]
  node_checkout_feature["Checkout Scenarios<br/>[checkout.feature]"]
end

subgraph group_automation["Automation Runtime"]
  node_login_steps["Login Steps<br/>[login_steps.py]"]
  node_products_steps["Product Steps<br/>[products_steps.py]"]
  node_checkout_steps["Checkout Steps<br/>[checkout_steps.py]"]
  node_environment["Scenario Setup<br/>[environment.py]"]
end

subgraph group_pages["Mobile Page Objects"]
  node_base_page["Page Primitives<br/>[base_page.py]"]
  node_login_page["Login Page<br/>[login_page.py]"]
  node_products_page["Products Page<br/>[products_page.py]"]
  node_cart_page["Cart Page<br/>[cart_page.py]"]
  node_checkout_page["Checkout Page<br/>[checkout_page.py]"]
  node_locators["UI Locators<br/>[locators.py]"]
end

subgraph group_configuration["Configuration"]
  node_config_manager["Config Manager<br/>[config_manager.py]"]
  node_settings["App Settings<br/>[settings.yaml]"]
  node_test_data["Environment Data<br/>[environments.yaml]"]
end

node_shopper(("QA User"))
node_appium["Appium Server"]
node_android_app["Swag Labs App<br/>[labs.apk]"]
node_applitools["Applitools Eyes"]

node_shopper -->|"starts scenario"| node_login_feature
node_shopper -->|"starts scenario"| node_products_feature
node_shopper -->|"starts scenario"| node_checkout_feature
node_login_feature -->|"matches steps"| node_login_steps
node_products_feature -->|"matches steps"| node_products_steps
node_checkout_feature -->|"matches steps"| node_checkout_steps
node_environment -->|"starts service"| node_appium
node_environment -->|"loads settings"| node_config_manager
node_environment -.->|"opens visual session"| node_applitools
node_appium -->|"launches app"| node_android_app
node_login_steps -->|"drives login"| node_login_page
node_login_steps -->|"gets credentials"| node_config_manager
node_login_steps -.->|"checks screen"| node_applitools
node_products_steps -->|"logs in"| node_login_page
node_products_steps -->|"browses products"| node_products_page
node_checkout_steps -->|"adds products"| node_products_page
node_checkout_steps -->|"proceeds to cart"| node_cart_page
node_checkout_steps -->|"enters shipping"| node_checkout_page
node_checkout_steps -.->|"checks confirmation"| node_applitools
node_login_page -->|"uses actions"| node_base_page
node_products_page -->|"uses actions"| node_base_page
node_cart_page -->|"uses actions"| node_base_page
node_checkout_page -->|"uses actions"| node_base_page
node_login_page -->|"returns after login"| node_products_page
node_products_page -->|"opens cart"| node_cart_page
node_cart_page -->|"starts checkout"| node_checkout_page
node_base_page -->|"uses selectors"| node_locators
node_config_manager -->|"reads"| node_settings
node_config_manager -->|"reads"| node_test_data
node_environment -->|"creates driver"| node_appium

click node_login_feature "https://github.com/computer-com/mobilet/blob/main/features/login.feature"
click node_products_feature "https://github.com/computer-com/mobilet/blob/main/features/products.feature"
click node_checkout_feature "https://github.com/computer-com/mobilet/blob/main/features/checkout.feature"
click node_login_steps "https://github.com/computer-com/mobilet/blob/main/features/steps/login_steps.py"
click node_products_steps "https://github.com/computer-com/mobilet/blob/main/features/steps/products_steps.py"
click node_checkout_steps "https://github.com/computer-com/mobilet/blob/main/features/steps/checkout_steps.py"
click node_environment "https://github.com/computer-com/mobilet/blob/main/features/environment.py"
click node_base_page "https://github.com/computer-com/mobilet/blob/main/pages/base_page.py"
click node_login_page "https://github.com/computer-com/mobilet/blob/main/pages/login_page.py"
click node_products_page "https://github.com/computer-com/mobilet/blob/main/pages/products_page.py"
click node_cart_page "https://github.com/computer-com/mobilet/blob/main/pages/cart_page.py"
click node_checkout_page "https://github.com/computer-com/mobilet/blob/main/pages/checkout_page.py"
click node_locators "https://github.com/computer-com/mobilet/blob/main/locators.py"
click node_config_manager "https://github.com/computer-com/mobilet/blob/main/config/config_manager.py"
click node_settings "https://github.com/computer-com/mobilet/blob/main/config/settings.yaml"
click node_test_data "https://github.com/computer-com/mobilet/blob/main/config/environments.yaml"
click node_android_app "https://github.com/computer-com/mobilet/blob/main/labs.apk"

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_feature,node_products_feature,node_checkout_feature,node_shopper toneBlue
class node_login_steps,node_products_steps,node_checkout_steps,node_environment toneAmber
class node_base_page,node_login_page,node_products_page,node_cart_page,node_checkout_page,node_locators,node_appium toneMint
class node_config_manager,node_settings,node_test_data toneRose
class node_android_app toneTeal
class node_applitools toneIndigo
```

## Components

### Shopping Scenarios

- [Login Scenarios](https://github.com/computer-com/mobilet/blob/main/features/login.feature): `features/login.feature`
- [Product Scenarios](https://github.com/computer-com/mobilet/blob/main/features/products.feature): `features/products.feature`
- [Checkout Scenarios](https://github.com/computer-com/mobilet/blob/main/features/checkout.feature): `features/checkout.feature`

### Automation Runtime

- [Login Steps](https://github.com/computer-com/mobilet/blob/main/features/steps/login_steps.py): `features/steps/login_steps.py`
- [Product Steps](https://github.com/computer-com/mobilet/blob/main/features/steps/products_steps.py): `features/steps/products_steps.py`
- [Checkout Steps](https://github.com/computer-com/mobilet/blob/main/features/steps/checkout_steps.py): `features/steps/checkout_steps.py`
- [Scenario Setup](https://github.com/computer-com/mobilet/blob/main/features/environment.py): `features/environment.py`

### Mobile Page Objects

- [Page Primitives](https://github.com/computer-com/mobilet/blob/main/pages/base_page.py): `pages/base_page.py`
- [Login Page](https://github.com/computer-com/mobilet/blob/main/pages/login_page.py): `pages/login_page.py`
- [Products Page](https://github.com/computer-com/mobilet/blob/main/pages/products_page.py): `pages/products_page.py`
- [Cart Page](https://github.com/computer-com/mobilet/blob/main/pages/cart_page.py): `pages/cart_page.py`
- [Checkout Page](https://github.com/computer-com/mobilet/blob/main/pages/checkout_page.py): `pages/checkout_page.py`
- [UI Locators](https://github.com/computer-com/mobilet/blob/main/locators.py): `locators.py`

### Configuration

- [Config Manager](https://github.com/computer-com/mobilet/blob/main/config/config_manager.py): `config/config_manager.py`
- [App Settings](https://github.com/computer-com/mobilet/blob/main/config/settings.yaml): `config/settings.yaml`
- [Environment Data](https://github.com/computer-com/mobilet/blob/main/config/environments.yaml): `config/environments.yaml`

### Other components

- **QA User**
- **Appium Server**
- [Swag Labs App](https://github.com/computer-com/mobilet/blob/main/labs.apk): `labs.apk`
- **Applitools Eyes**

## Connections

- QA User → Login Scenarios: starts scenario
- QA User → Product Scenarios: starts scenario
- QA User → Checkout Scenarios: starts scenario
- Login Scenarios → Login Steps: matches steps
- Product Scenarios → Product Steps: matches steps
- Checkout Scenarios → Checkout Steps: matches steps
- Scenario Setup → Appium Server: starts service
- Scenario Setup → Config Manager: loads settings
- Scenario Setup → Applitools Eyes: opens visual session
- Appium Server → Swag Labs App: launches app
- Login Steps → Login Page: drives login
- Login Steps → Config Manager: gets credentials
- Login Steps → Applitools Eyes: checks screen
- Product Steps → Login Page: logs in
- Product Steps → Products Page: browses products
- Checkout Steps → Products Page: adds products
- Checkout Steps → Cart Page: proceeds to cart
- Checkout Steps → Checkout Page: enters shipping
- Checkout Steps → Applitools Eyes: checks confirmation
- Login Page → Page Primitives: uses actions
- Products Page → Page Primitives: uses actions
- Cart Page → Page Primitives: uses actions
- Checkout Page → Page Primitives: uses actions
- Login Page → Products Page: returns after login
- Products Page → Cart Page: opens cart
- Cart Page → Checkout Page: starts checkout
- Page Primitives → UI Locators: uses selectors
- Config Manager → App Settings: reads
- Config Manager → Environment Data: reads
- Scenario Setup → Appium Server: creates driver
