ci(app-iced): M127 把下载页四条像素守门接进 CI(仅 Windows),缺图在 CI 里从 SKIP 改成失败
- 新增 tests/options_shot/feed.rs:四条断言共用一条「喂图」策略 · CI(CI 已设置)且 Windows 上缺 ULL_DL_*_SHOT ⇒ 失败并提示「守门未喂图」 · 非 Windows 上喂了图 ⇒ CI 里也失败(断言按 Segoe UI 标定的行高/墨迹宽度) · 本机缺图仍可跳过,但每次都留一句提示 - ci.yml 的 test 作业(Windows 槽):pages_demo 现出 ready700/chips700/compact736/wide1180 四张图 → 写进 $GITHUB_ENV → cargo test -p unlucky-app-iced --lib options_shot 出图与断言两步都带 if: runner.os == 'Windows';失败时上传四张图便于复盘 - 顺带订正五处文档数字:main 7 整行 / r1 4 整行 / r2 7 整行,并写清第 8 条墨迹是 hint (rows.rs ×3、options_shot/ready.rs、tests/view.rs),不动任何断言期望值
This commit is contained in:
1 parent
631d4647dc
commit
02c7910ad5
8 files changed
+204
-42
No files matched your search
@@ -77,6 +77,58 @@ jobs:
|
||||
libwayland-dev libxcb1-dev
|
||||
- uses: dtolnay/rust-toolchain@stable
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
# ---- 下载页选项区的四条像素守门(M127):先出图,再把路径喂给 `--lib` ----
|
||||
# 之前这四条靠开发者本机手动设 `ULL_DL_*_SHOT`(不设就 SKIP),而本文件里 grep 这些
|
||||
# 变量零命中 ⇒ **CI 里一次都没跑过**。空跑的守门长期等于没有,所以这两步是它们的第一处
|
||||
# 常驻调用点。(另有一道保险:变量缺失且 `CI` 已设置时,守门自己会失败而不是跳过。
|
||||
# 于是将来谁把下面出图那步重构掉,构建会红。)
|
||||
#
|
||||
# **为什么只在 Windows**:断言里有几条直接量墨迹(行高 44、版本号墨迹条数、图标药丸
|
||||
# 40×40),这些数字按本仓字体栈(Segoe UI / Consolas)标定;Linux/macOS runner 上
|
||||
# 这套字体不存在,回退字体的字高与行距一变就是假红。同一条限制也写在
|
||||
# `crates/app-iced/src/pages/download/tests/options_shot/feed.rs` 的模块文档里
|
||||
# (非 Windows 喂了图会当场失败),不靠「碰巧只配了一处」。
|
||||
- name: 出四张像素守门用的图并写进 $GITHUB_ENV(仅 Windows)
|
||||
if: runner.os == 'Windows'
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
shots="$RUNNER_TEMP/dl-shots"
|
||||
mkdir -p "$shots"
|
||||
render() { # $1=宽 $2=文件名
|
||||
cargo run -q -p unlucky-app-iced --example pages_demo -- --screen=download \
|
||||
--width="$1" --height=760 --screenshot="$shots/$2" \
|
||||
--screenshot-theme=light --software-renderer
|
||||
}
|
||||
# ready700:**不设** ULL_DL_DEMO(缺省就是 ready,还没选版本)
|
||||
render 700 ready700.png
|
||||
export ULL_DL_DEMO=options-fabric # 其余三张都是「选中版本 + 选项区展开」
|
||||
render 700 chips700.png
|
||||
render 736 compact736.png
|
||||
render 1180 wide1180.png
|
||||
for shot in ready700 chips700 compact736 wide1180; do
|
||||
test -s "$shots/$shot.png" || { echo "::error::$shot.png 没出图"; exit 1; }
|
||||
done
|
||||
ls -l "$shots"
|
||||
{
|
||||
echo "ULL_DL_READY_SHOT=$shots/ready700.png"
|
||||
echo "ULL_DL_CHIPS_SHOT=$shots/chips700.png"
|
||||
echo "ULL_DL_COMPACT_SHOT=$shots/compact736.png"
|
||||
echo "ULL_DL_OPTIONS_SHOT=$shots/wide1180.png"
|
||||
} >> "$GITHUB_ENV"
|
||||
# 单独跑一遍只为**取证**:日志里那行 `test result: ok. 4 passed` 是「守门真跑了」的
|
||||
# 直接证据(紧接着的 `--workspace` 那步会再跑一遍,热的,代价可忽略)。
|
||||
- name: 四条像素守门(已喂图,仅 Windows)
|
||||
if: runner.os == 'Windows'
|
||||
run: cargo test -p unlucky-app-iced --lib options_shot
|
||||
# 断言红的时候要先看到那张图(否则「像素不对」只有一句话,没有现场)。
|
||||
- name: 上传喂进守门的四张图(失败也传)
|
||||
if: always() && runner.os == 'Windows'
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: dl-shots
|
||||
path: ${{ runner.temp }}/dl-shots/
|
||||
if-no-files-found: warn
|
||||
# 同 clippy:`--workspace` 不含 `unlucky-app`(M118),Slint 退役树不再被 `--all-targets` 拉起。
|
||||
# 也因此**不要**再写 `--exclude unlucky-app`:它已不是成员,那面旗子只会打一条
|
||||
# `excluded package(s) … not found in workspace` 的警告然后空转(实测 exit 0,不报错)。
|
||||
|
||||
Reference in new issue
Block a user