SG/Send QA

Living documentation and automated test results for SG/Send β€” the encrypted file sharing platform by SGraph AI.


What is SG/Send?

SG/Send is a secure, encrypted file sharing platform that enables controlled distribution of sensitive documents. Key security features include:

What is This Site?

This documentation is automatically generated from Playwright browser tests that run against the live SG/Send platform. Every page documents a real user workflow, captured as screenshots and verified by automated assertions.

flowchart LR
    A["Playwright\nBrowser Tests"] -->|capture| B["Screenshots\n(1280x720)"]
    B -->|generate| C["Markdown\nDocumentation"]
    C -->|build| D["Jekyll\nStatic Site"]
    D -->|deploy| E["qa.send.sgraph.ai"]

Each test produces two outputs: a pass/fail result and a set of annotated screenshots that become the documentation you are reading now.


Use Cases

These are the user workflows currently tested and documented:

Use Case What It Tests Screenshots
Landing Page Loads SG/Send loads correctly, renders the Beta Access UI 1
Access Gate Present The access gate with token input and Go button is visible 1
Invalid Token Rejected Invalid tokens are rejected with proper error feedback 3

Architecture

Test Pipeline

The QA pipeline runs on every push. Tests exercise the real SG/Send UI via headless Chromium, capture screenshots, generate documentation, and deploy to this site.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     CI Pipeline                             β”‚
β”‚                                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  pytest +  │────▢│  Screenshot  │────▢│  Markdown     β”‚  β”‚
β”‚  β”‚ Playwright β”‚     β”‚  Capture     β”‚     β”‚  Generator    β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚       β”‚                   β”‚                     β”‚           β”‚
β”‚       β–Ό                   β–Ό                     β–Ό           β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  Pass/Fail β”‚     β”‚ Visual Diff  β”‚     β”‚ Jekyll Build  β”‚  β”‚
β”‚  β”‚  Results   β”‚     β”‚ (noise gate) β”‚     β”‚ + Deploy      β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Visual Diff Noise Gate

Screenshots are compared pixel-by-pixel against their previous versions. Changes below a 1% threshold are reverted β€” this filters out anti-aliasing jitter, sub-pixel rendering differences, and font hinting variations that would otherwise create noise commits.

flowchart TD
    A[New Screenshot] --> B{Pixel diff vs HEAD}
    B -->|"> 1% changed"| C[KEEP β€” real UI change]
    B -->|"≀ 1% changed"| D[REVERT β€” rendering noise]
    C --> E[Commit to repo]
    D --> F[Restore HEAD version]

Content Bundle Structure

Each use case is a self-contained directory with its documentation and screenshots co-located:

sg_send_qa__site/pages/use-cases/
β”œβ”€β”€ landing_page_loads/
β”‚   β”œβ”€β”€ landing_page_loads.md      ← documentation page
β”‚   └── screenshots/
β”‚       └── 01_landing.png         ← captured during test
β”œβ”€β”€ landing_page_has_access_gate/
β”‚   β”œβ”€β”€ ...md + screenshots/
└── invalid_token_rejected/
    β”œβ”€β”€ ...md + screenshots/

Test Targets

Environment URL Used For
Production send.sgraph.ai CI smoke tests (default)
Local User Lambda localhost:10062 Development testing
Local Admin Lambda localhost:10061 Admin panel testing

Stack

Layer Technology
Browser automation Playwright for Python (headless Chromium)
Test framework pytest
Web framework FastAPI (test runner API)
Documentation Jekyll + GitHub Pages
Screenshot diff Pillow (pixel-level comparison)
CI/CD GitHub Actions