test(app-iced): 下载页加 options-liteloader 出图取样点(D30 视觉取证)

M222 的视觉门禁一直缺图:本机没有看图通道,但**出图通道可用**(`--software-renderer` 走
tiny-skia CPU 后端,无桌面也能落盘)。下载页早有专属夹具 `ULL_DL_DEMO`(`demo.rs`,产品路径
不读),M105 就用它出过安装选项区三态,所以这里加第四个取样点,而不是再造一个平行 env:

  ULL_DL_DEMO=options-liteloader pages_demo --screen=download --width=1180 --height=760 \
    --screenshot=out.png --screenshot-theme=light --software-renderer

取样点是「选中 1.12.2 + LiteLoader」(官方版本表只到 1.12.2),走**产品那条真转换**
`Download::from_snapshot`:chip 行、中性说明「只叠原版」、确认键状态都是产品行为。
版本列表**只在本次状态里**补一条 1.12.2——不动 `demo_versions()`,因为那是别处基线图的行集
(`tests/view.rs` 钉着 8 行)。

四张图与真假表落在 `DevDocs/artifacts/m222/`(git 忽略区,不入库):浅色 / 深色 / 720 窄窗 /
原版对照,README 里写明哪张证明什么、哪些是夹具、哪些是产品真转换。图的内容判定未做——
出图者无图像能力,交给视觉 reviewer。
This commit is contained in:
AskaEth committed 2026-11-10 19:34:13 +08:00
1 parent 7d43f1d686
commit 841c17152a
1 file changed
+34
@@ -21,6 +21,7 @@
//! 取值:`ready`(缺省)/ `loading` / `empty` / `selected` / `category-release` / `installing` /
//! `installing-late` / `installing-empty` / `failed` / `done` / `done-next` /
//! **`options` / `options-fabric` / `options-incompat`**(M105 的安装选项区三态)/
//! **`options-liteloader`**(M222:LiteLoader 已可装,取样点用它的最高原版 1.12.2)/
//! **`category-ancient` / `search` / `search-major` / `search-empty` / `search-elsewhere`**
//! (M107 的两级侧栏与搜索取样点)。
//!
@@ -81,6 +82,8 @@ pub fn demo(catalog: Catalog) -> Download {
),
// NeoForge 最早只到 1.20.1,远古版(列表里的 `rd-132211`)根本没有构建 ⇒ 选中即报原因
Some("options-incompat") => options(catalog, "rd-132211", Loader::NeoForge, None),
// M222 的取样点:选中 1.12.2 + LiteLoader(外加「这里只叠原版」那条中性说明)
Some("options-liteloader") => options_liteloader(catalog),
Some("selected") => Download {
selected: Some("1.21.9".to_string()),
..ready(catalog)
@@ -169,6 +172,37 @@ fn options(catalog: Catalog, version: &str, loader: Loader, cached: Option<Vec<&
Download::from_snapshot(&state, Category::All, &draft, catalog)
}
/// M222 的取样点:**选中 1.12.2 + LiteLoader**(安装选项区的第四个状态)。
///
/// 为什么单独一个函数而不是复用 [`options`]:LiteLoader 的官方版本表只覆盖 `1.5.2`~`1.12.2`,
/// 而 [`demo_versions`] 是别处基线图的行集(`tests/view.rs` 钉着 8 行),不能为这个取样点改它。
/// 这里只是给**本状态**的版本列表补一条 `1.12.2`,其余照旧走产品那条真转换
/// [`Download::from_snapshot`]:图上的 chip 行、中性说明、确认键状态都是产品行为。
fn options_liteloader(catalog: Catalog) -> Download {
const MC: &str = "1.12.2";
let mut versions = demo_versions();
versions.push(VersionSummary {
id: MC.to_string(),
kind: VersionKind::Release,
released: "2017-09-18".to_string(),
installed: false,
});
let mut state = AppState::new();
state.apply(AppEvent::Core(CoreEvent::VersionListChanged(versions)));
// 真版本表里 LiteLoader 对 1.12.2 只有这一条(快照分支),照实写。
state.apply(AppEvent::Core(CoreEvent::LoaderVersions {
kind: Loader::LiteLoader.kind(),
mc_version: MC.to_string(),
result: Ok(vec!["1.12.2-SNAPSHOT".to_string()]),
}));
let draft = InstallDraft {
selected: Some(MC.to_string()),
loader: Loader::LiteLoader,
..InstallDraft::default()
};
Download::from_snapshot(&state, Category::All, &draft, catalog)
}
/// 22 个主版本桶(`1.21 … 1.0`)的清单:chips 档的横向滚动取证用。
fn many(catalog: Catalog) -> Download {
let versions = (0..=21)