Add rpa-run-tab skill: Tebra-style Run tab in 5 minutes
The Run tab from Tebra Auto Post, scrubbed and themable (Tebra Sky, TVL Teal, or a custom hex checked for contrast). The skill wires the real bot through tagged log-file lines and checks itself with a fake bot (complete, partial, stuck, crash) plus light and dark screenshots. Grill decisions R1-R14 are in PLAN.md, terms in GLOSSARY.md, and ADRs 0001-0003. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
8bb1cf268e
commit
258bfbb500
18 files changed
+1712
-2
No files matched your search
@@ -0,0 +1,44 @@
|
||||
"""Seam 1 page check for the Run tab: run_tab.html filled with a test config, opened with
|
||||
the fake Qt bridge, driven through window.__pyMsg. Every case runs in light, dark and narrow.
|
||||
PAGE_CHECK_RUN_TAB_HTML: check a generated page instead (its config must already be filled)."""
|
||||
import json
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
from page_check_common import FAKE_BRIDGE, MODES, open_page
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[2]
|
||||
TEMPLATE = ROOT / "rpa-run-tab" / "templates" / "run_tab.html"
|
||||
CFG = {"title": "Test Bot", "sub": "Page check", "input": True, "inputHint": "Test workbook",
|
||||
"sample": True, "darkKey": "test_dark",
|
||||
"checkpoints": [{"name": "Sign in", "max": 300}, {"name": "Process rows", "max": 0},
|
||||
{"name": "Finish up", "max": 120}]}
|
||||
|
||||
|
||||
def _url(tmp, cfg):
|
||||
if os.environ.get("PAGE_CHECK_RUN_TAB_HTML"):
|
||||
return Path(os.environ["PAGE_CHECK_RUN_TAB_HTML"]).resolve().as_uri()
|
||||
out = tmp / f"run_tab_{cfg['input']}.html"
|
||||
out.write_text(TEMPLATE.read_text(encoding="utf-8").replace("%%CONFIG%%", json.dumps(cfg)), encoding="utf-8")
|
||||
return out.as_uri()
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def page_url(tmp_path_factory):
|
||||
return _url(tmp_path_factory.mktemp("run_tab"), CFG)
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def no_input_url(tmp_path_factory):
|
||||
return _url(tmp_path_factory.mktemp("run_tab_noinput"), {**CFG, "input": False, "sample": False})
|
||||
|
||||
|
||||
@pytest.fixture(params=list(MODES))
|
||||
def page(request, browser, page_url):
|
||||
yield from open_page(browser, page_url, request.param, FAKE_BRIDGE)
|
||||
|
||||
|
||||
@pytest.fixture(params=list(MODES))
|
||||
def no_input_page(request, browser, no_input_url):
|
||||
yield from open_page(browser, no_input_url, request.param, FAKE_BRIDGE)
|
||||
Reference in new issue
Block a user