You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.2 KiB
3.2 KiB
Development
This document captures the development workflow, test expectations, and UI quality rules for Iron.
Setup
UV_CACHE_DIR=.uv-cache uv venv .venv
UV_CACHE_DIR=.uv-cache uv pip install --python .venv/bin/python -e '.[dev]'
npm install
Run Locally
npm run build
.venv/bin/python -m uvicorn app.main:app --reload
Open:
http://127.0.0.1:8000/app
Default development credentials:
username: admin
password: changeme-iron
Tests
Full suite:
.venv/bin/python -m pytest
Current expected result:
78 passed
Browser E2E:
.venv/bin/python scripts/ui_playwright_smoke.py
Real deployment acceptance against a live local OpenList + Iron environment:
.venv/bin/python scripts/real_openlist_suite.py
Optional focused scenarios:
scripts/real_openlist_acceptance.py: baseline upload, reconcile, download, direct WebDAV readscripts/real_openlist_chaos_acceptance.py: large file, range reads, forced remote recovery, OpenList flap, recycle-bin restorescripts/real_openlist_multi_backend_acceptance.py: multi-backend placement and enable/disable behaviorscripts/real_openlist_multi_backend_chaos.py: degraded multi-backend recovery and replica healing
Pytest E2E entry:
.venv/bin/python -m pytest tests/e2e/test_web_ui_playwright.py
UI Change Standard
Any meaningful Web UI change must be validated against a real running service.
Required workflow:
- build frontend assets with
npm run build - run
./.venv/bin/python scripts/ui_playwright_smoke.py - review screenshots in
output/playwright/ - fix layout, spacing, overflow, or interaction issues
- rerun the Playwright flow
The E2E flow currently covers:
- login
- files page render with OpenCloud-style navigation icons
- create folder
- enter a folder and return to the parent directory
- upload text file
- authenticated file download
- upload image file
- authenticated inline image preview
- file storage replica inspector and read-only replica detail drawer
- More menu actions, Escape dismissal, and click-outside dismissal
- delete confirmation button readability
- file search, file pagination, and page-size changes
- recycle bin, storage batch checks, backend edit/create dialogs, policies save, and jobs detail render
- desktop and mobile screenshots for visual review
- browser
/api,/assets, and/icons4xx/5xx failures during the flow - label/value spacing checks for narrow inspector panels
Secrets
Backend credentials are encrypted before they are stored in SQLite. Local
development uses a default IRON_SECRET_KEY, but real deployments should set a
stable private value before creating S3 or WebDAV backends.
Runtime Artifacts
Do not commit:
.venv/.uv-cache/node_modules/output/.iron-storage/.iron-temp/.iron-cache/- local databases
- Python caches
Documentation Rules
- Keep
README.mdconcise and user-facing. - Keep contributor instructions in
CONTRIBUTING.md. - Keep coding-agent instructions in
AGENTS.md. - Keep deeper project docs in
docs/. - Use relative links in Markdown.
- Update docs when changing setup, commands, architecture, or user-visible behavior.