ci(e2e): install a CJK font on the e2e runners

The runners have no font covering Hangul, Han or Kana, so any spec that
asserts how CJK text renders is measuring tofu rather than the glyph.

That is not hypothetical. An end-of-row preedit spec added for #12729
measured the composition overlay at 1.02 cells against an 8.43px grid
and failed its "wider than one cell" assertion. The overlay is
shrink-to-fit with no width of its own, so it tracks the glyph's advance
rather than the two cells the grid reserves for a wide character. With
no Korean font that advance is one cell, and the assertion cannot
distinguish a real result from a missing font - which is exactly the
question that spec exists to answer.

fonts-noto-cjk covers all three scripts and is added to both jobs that
execute specs, the sharded suite and the changed-spec job, plus the ssh
docker lane so the three stay consistent.

This does not make any spec pass on its own. It makes the CJK ones
mean something.
This commit is contained in:
Neil
2026-08-18 02:09:26 -07:00
parent 96d88dd5fe
commit 1fa53c8d63
+3 -3
View File
@@ -130,7 +130,7 @@ jobs:
# scripts still need the Linux toolchain even though this shard reuses
# the prebuilt Electron output.
- name: Install native build tools
run: sudo apt-get update && sudo apt-get install -y build-essential python3 zsh
run: sudo apt-get update && sudo apt-get install -y build-essential fonts-noto-cjk python3 zsh
# Why: Electron on Linux needs an X display even when the app
# suppresses mainWindow.show() via ORCA_E2E_HEADLESS. xvfb provides a
@@ -213,7 +213,7 @@ jobs:
- name: Install native build and headless UI tools
# Why openssh-client: the Docker-SSH fixture shells out to ssh/ssh-keygen, and this
# lane now receives those specs from pr.yml's SSH source mapping.
run: sudo apt-get update && sudo apt-get install -y build-essential openssh-client python3 xvfb zsh
run: sudo apt-get update && sudo apt-get install -y build-essential fonts-noto-cjk openssh-client python3 xvfb zsh
# Why pnpm first: setup-node needs pnpm on PATH to locate the store it caches.
# Without that cache every E2E job re-downloaded the whole dependency set.
@@ -297,7 +297,7 @@ jobs:
ref: ${{ inputs.ref || github.ref }}
- name: Install native build and headless UI tools
run: sudo apt-get update && sudo apt-get install -y build-essential openssh-client python3 xvfb zsh
run: sudo apt-get update && sudo apt-get install -y build-essential fonts-noto-cjk openssh-client python3 xvfb zsh
# Why pnpm first: setup-node needs pnpm on PATH to locate the store it caches.
# Without that cache every E2E job re-downloaded the whole dependency set.