"""小程序冒烟测试 — 通过 miniprogram-automator 驱动。

用法:
    pytest tests/web/mini_program/ -m p0
"""

import pytest

pytestmark = [pytest.mark.mini_program]


class TestMiniProgramSmoke:
    """小程序启动 + 基础页面验证。"""

    @pytest.mark.p0
    @pytest.mark.smoke
    def test_mini_program_launches(self, run_mini_action):
        """验证小程序能正常启动并展示首页。"""
        result = run_mini_action("smoke")
        assert result["ok"], f"小程序启动失败: {result.get('message')}"

    @pytest.mark.p0
    @pytest.mark.smoke
    def test_navigate_to_pages(self, run_mini_action):
        """验证关键页面可正常导航。"""
        pages = ["/pages/order/index", "/pages/mine/index"]
        for p in pages:
            result = run_mini_action("navigate", page=p)
            assert result["ok"], f"导航到 {p} 失败: {result.get('message')}"


class TestMiniProgramElements:
    """关键元素验证。"""

    @pytest.mark.p1
    @pytest.mark.parametrize("selector,label", [
        pytest.param(".order-entry", "运单入口", id="order_entry"),
        pytest.param(".mine-tab", "我的tab", id="mine_tab"),
    ])
    def test_key_element_exists(self, run_mini_action, selector, label):
        """验证关键 UI 元素存在。"""
        result = run_mini_action("element", element_action="exists", selector=selector)
        assert result["ok"], f"{label} ({selector}) 不存在: {result.get('message')}"
