from pytest import fixture from playwright.sync_api import sync_playwright from environment import * from lib.app_runner import AppRunner from lib.page_runner import PageRunner from lib.report import AccuracyReport, DelayReport, LogReport from lib.utils import get_time_str @fixture(scope="session") def log_file(): if RUN_TYPE == RunType.electron: log_file = APP_LOG elif RUN_TYPE == RunType.code: log_file = CODE_LOG elif RUN_TYPE == RunType.dev: log_file = DEV_LOG else: raise TypeError(f"invalid run_type: {RUN_TYPE}") return log_file @fixture(scope="session") def app(): app = AppRunner(RUN_TYPE) app.start() yield app app.stop() @fixture(scope="module") def page(): with sync_playwright() as p: page = PageRunner(RUN_TYPE).start(p) yield page @fixture(scope="module") def accuracy_report(request): report = AccuracyReport() yield report report.to_csv(REPORTS_DIR/f"accuracy_report_{get_time_str()}.csv") @fixture(scope="module") def delay_report(request): report = DelayReport() yield report report.to_csv(REPORTS_DIR/f"delay_report_{get_time_str()}.csv") @fixture(scope="session") def log_report(request): report = LogReport() yield report report.to_csv(REPORTS_DIR/f"log_report_{get_time_str()}.csv")