This commit is contained in:
2026-09-29 17:38:15 +05:30
parent 5ab89ce005
commit f0496b3d67
18 changed files with 49592 additions and 0 deletions
@@ -0,0 +1,395 @@
{
"schema_version": 1,
"diagram_type": "architecture",
"meta": {
"title": "PXIL Automation Runtime",
"output": ".archify/architecture-pxil-runtime-20260929-151855/pxil-runtime.html",
"quality_profile": "showcase",
"locale": "en",
"repository": {
"url": "https://git.tejasshasane.xyz/tejasshasane/pxil-selenium-automation.git",
"revision": "5ab89ce0059525b31558a1fa82251a2a6f610dd7",
"link_mode": "local-only"
}
},
"components": [
{
"id": "runner",
"type": "backend",
"label": "pytest runner",
"sublabel": "Selection + fixture lifecycle",
"pos": [
60,
300
],
"size": [
190,
74
],
"sources": [
{
"path": "tests/conftest.py",
"line": 37,
"end_line": 62
},
{
"path": "pytest.ini",
"line": 1,
"end_line": 14
}
]
},
{
"id": "flows",
"type": "backend",
"label": "Automation flows",
"sublabel": "Setup / bidding / matching",
"pos": [
360,
300
],
"size": [
190,
74
],
"sources": [
{
"path": "tests/regression/exchange/idas/bidding/test_idas_exchange_bidding_flow.py",
"line": 54,
"end_line": 90
},
{
"path": "tests/regression/exchange/idas/matching/test_idas_exchange_matching_flow.py",
"line": 76,
"end_line": 156
},
{
"path": "tests/setup/test_combined_setup.py",
"line": 13,
"end_line": 37
}
]
},
{
"id": "browser",
"type": "frontend",
"label": "Chrome + WebDriver",
"sublabel": "Selenium browser dependency",
"pos": [
680,
300
],
"size": [
190,
74
],
"sources": [
{
"path": "tests/browser.py",
"line": 1,
"end_line": 14
},
{
"path": "tests/regression/auth.py",
"line": 46,
"end_line": 86
}
],
"tag": "Manual CAPTCHA for Pratyay"
},
{
"id": "pratyay",
"type": "external",
"label": "Pratyay portal",
"sublabel": "Exchange / member UI",
"pos": [
970,
300
],
"size": [
190,
74
],
"sources": [
{
"path": "tests/regression/exchange/idas/bidding/test_idas_exchange_bidding_flow.py",
"line": 68,
"end_line": 90
},
{
"path": "tests/regression/exchange/idas/matching/test_idas_exchange_matching_flow.py",
"line": 47,
"end_line": 59
}
]
},
{
"id": "config",
"type": "database",
"label": "Configuration",
"sublabel": "JSON + role credentials",
"pos": [
360,
100
],
"size": [
190,
74
],
"sources": [
{
"path": "tests/config_reader.py",
"line": 6,
"end_line": 32
},
{
"path": "tests/regression/config_reader.py",
"line": 5,
"end_line": 29
},
{
"path": "tests/regression/config_reader.py",
"line": 121,
"end_line": 150
}
]
},
{
"id": "inputs",
"type": "database",
"label": "Bid input files",
"sublabel": "Excel / JSON / upload folders",
"pos": [
360,
560
],
"size": [
190,
74
],
"sources": [
{
"path": "tests/regression/exchange/idas/bidding/input_manifest.py",
"line": 4,
"end_line": 28
},
{
"path": "tests/regression/exchange/idas/bidding/json_reader.py",
"line": 5,
"end_line": 35
},
{
"path": "tests/regression/exchange/idas/bidding/test_idas_exchange_bidding_flow.py",
"line": 217,
"end_line": 249
}
]
},
{
"id": "reporting",
"type": "backend",
"label": "Evidence reporting",
"sublabel": "Step capture + pytest hooks",
"pos": [
60,
560
],
"size": [
190,
74
],
"sources": [
{
"path": "tests/step_actions.py",
"line": 10,
"end_line": 40
},
{
"path": "tests/conftest.py",
"line": 104,
"end_line": 175
}
]
},
{
"id": "artifacts",
"type": "database",
"label": "Run artifacts",
"sublabel": "HTML / screenshots / logs",
"pos": [
60,
770
],
"size": [
190,
74
],
"sources": [
{
"path": "tests/conftest.py",
"line": 37,
"end_line": 48
},
{
"path": "tests/conftest.py",
"line": 70,
"end_line": 97
},
{
"path": "tests/step_actions.py",
"line": 21,
"end_line": 35
}
]
},
{
"id": "mco",
"type": "external",
"label": "MCO portal",
"sublabel": "Independent login-only test",
"pos": [
970,
560
],
"size": [
190,
74
],
"sources": [
{
"path": "tests/regression/exchange/idas/matching/test_idas_mco_login.py",
"line": 13,
"end_line": 36
}
],
"tag": "Only when enabled"
}
],
"boundaries": [
{
"kind": "region",
"label": "LOCAL AUTOMATION HOST | trusted code, inputs and credentials",
"wraps": [
"runner",
"flows",
"browser",
"config",
"inputs",
"reporting",
"artifacts"
],
"pad": 28
},
{
"kind": "security-group",
"label": "Browser process boundary",
"wraps": [
"browser"
],
"pad": 18
},
{
"kind": "region",
"label": "REMOTE PORTALS | separate authentication",
"wraps": [
"pratyay",
"mco"
],
"pad": 28
}
],
"connections": [
{
"id": "selected-tests",
"from": "runner",
"to": "flows",
"label": "run tests",
"variant": "emphasis"
},
{
"id": "ui-actions",
"from": "flows",
"to": "browser",
"label": "UI commands",
"variant": "emphasis"
},
{
"id": "portal-session",
"from": "browser",
"to": "pratyay",
"label": "login + UI",
"variant": "emphasis"
},
{
"id": "read-settings",
"from": "flows",
"to": "config",
"label": "read settings"
},
{
"id": "read-bids",
"from": "flows",
"to": "inputs",
"label": "read bids"
},
{
"id": "report-hooks",
"from": "runner",
"to": "reporting",
"label": "test hooks"
},
{
"id": "write-evidence",
"from": "reporting",
"to": "artifacts",
"label": "write evidence"
},
{
"id": "optional-mco",
"from": "browser",
"to": "mco",
"label": "if enabled: login",
"variant": "dashed"
}
],
"cards": [
{
"dot": "cyan",
"title": "Primary path",
"items": [
"pytest runs selected tests; flow code controls Selenium and Chrome, which interacts with the remote Pratyay UI.",
"Pratyay login fills credentials and pauses for manual CAPTCHA entry before submission (tests/regression/auth.py:46-122).",
"Arrows describe control and I/O; results return to pytest. No direct backend API or database integration is asserted."
]
},
{
"dot": "violet",
"title": "Flow selection and capabilities",
"items": [
"Root config.json selects setup products and session/token actions; config/runtime.json selects regression environment, role, product and flow.",
"Bidding supports Excel/JSON grids, files and folders. Optional parallel folder workers create their own browsers (bidding flow:551-587).",
"Matching requires the exchange role; rejected or unsupported bid-transfer status stops matching (matching flow:28-44, 123-135)."
]
},
{
"dot": "rose",
"title": "Trust and external dependencies",
"items": [
"Boundaries show host/process and remote ownership, not verified network isolation or firewall policy.",
"Credentials come from local JSON and are entered into remote login forms. Values and endpoint addresses are omitted.",
"Chrome/WebDriver is an external runtime dependency. Pratyay and MCO server internals and transport guarantees are outside the observed source.",
"MCO is an independent, enabled-only dashboard login test; no Pratyay-to-MCO backend connection is inferred."
]
},
{
"dot": "emerald",
"title": "Evidence and scope",
"items": [
"StepActions requests browser screenshots; pytest hooks attach evidence and configure pytest-html. Reports live under reports/.",
"Matching configures browser downloads separately; setup can save session backups. These details are kept off the main path.",
"Snapshot: clean repository at 5ab89ce0059525b31558a1fa82251a2a6f610dd7. Sources use local-only links.",
"Registered reports/order-book/trade-book markers are placeholders, not implemented runtime services (RUN_COMMANDS.md)."
]
}
]
}