diff --git a/Dockerfile b/Dockerfile index 0e9fd36..ed0295a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,12 +25,16 @@ LABEL org.opencontainers.image.revision="$OCI_REVISION" \ RUN apt-get update \ && apt-get install -y --no-install-recommends \ ca-certificates \ + fonts-croscore \ + fonts-crosextra-caladea \ + fonts-crosextra-carlito \ fonts-dejavu-core \ fonts-dejavu-extra \ fonts-freefont-ttf \ fonts-liberation \ fonts-liberation-sans-narrow \ fonts-noto-core \ + fonts-noto-cjk \ fonts-noto-color-emoji \ fonts-ubuntu \ fonts-urw-base35 \ diff --git a/tests/check.sh b/tests/check.sh index f09ef5a..9d5603f 100755 --- a/tests/check.sh +++ b/tests/check.sh @@ -8,9 +8,6 @@ grep -q 'Xvfb :99' docker-entrypoint.sh ! grep -q -- '--headless' docker-entrypoint.sh grep -q -- '--no-sandbox' docker-entrypoint.sh grep -q 'TCP-LISTEN:' docker-entrypoint.sh -for package in fonts-dejavu-core fonts-dejavu-extra fonts-freefont-ttf fonts-liberation fonts-liberation-sans-narrow fonts-noto-core fonts-noto-color-emoji fonts-ubuntu fonts-urw-base35; do - grep -q " $package \\\\" Dockerfile -done grep -q 'git.ipao.vip/rogee/fingerprint-chromium' .gitea/workflows/publish.yml grep -q 'ghcr.io/rogeecn/fingerprint-chromium' .github/workflows/publish.yml grep -q 'packages: write' .gitea/workflows/publish.yml @@ -33,3 +30,55 @@ DOCKER_LOG="$docker_log" OCI_REVISION=test PUSH=true PATH="$tmpdir:$PATH" \ ./scripts/build.sh registry.example/fingerprint-chromium > "$tmpdir/output" test "$(cat "$docker_log")" = "manifest inspect registry.example/fingerprint-chromium:1.2.3.4" grep -q 'skipping build and push' "$tmpdir/output" + +font_packages=( + fonts-croscore + fonts-crosextra-caladea + fonts-crosextra-carlito + fonts-dejavu-core + fonts-dejavu-extra + fonts-freefont-ttf + fonts-liberation + fonts-liberation-sans-narrow + fonts-noto-cjk + fonts-noto-color-emoji + fonts-noto-core + fonts-ubuntu + fonts-urw-base35 +) + +version="$(curl --fail --location --retry 3 --silent --show-error \ + https://api.github.com/repos/adryfish/fingerprint-chromium/releases/latest \ + | jq -er '.tag_name | select(test("^[0-9]+(\\.[0-9]+){3}$"))')" +image="fingerprint-chromium-test:$version" +CHROME_VERSION="$version" ./scripts/build.sh fingerprint-chromium-test + +docker run --rm --entrypoint dpkg-query "$image" --show "${font_packages[@]}" >/dev/null + +docker run --rm --entrypoint sh "$image" -c ' + for font do + fc-match --format "%{family}\n" "$font" | grep -Fq "$font" + done +' sh Arimo Tinos Cousine Caladea Carlito \ + 'Noto Sans CJK JP' 'Noto Sans CJK SC' 'Noto Sans CJK TC' \ + 'Noto Serif CJK JP' 'Noto Serif CJK SC' 'Noto Serif CJK TC' + +probe() { + local platform="$1" threshold="$2" output count + output="$(docker run --rm \ + --volume "$PWD/tests/font-probe.html:/tmp/font-probe.html:ro" \ + --entrypoint /opt/chromium/chrome "$image" \ + --no-sandbox --headless=new --disable-gpu --disable-dev-shm-usage \ + --fingerprint=1000 --fingerprint-platform="$platform" \ + --dump-dom "file:///tmp/font-probe.html#$platform" 2>/dev/null)" + count="$(sed -n 's/.*data-count="\([0-9][0-9]*\)".*/\1/p' <<<"$output")" + [[ "$count" =~ ^[0-9]+$ && "$count" -ge "$threshold" ]] || { + printf '%s font probe: expected >= %s, got %s\n' "$platform" "$threshold" "${count:-none}" >&2 + return 1 + } + printf '%s font probe: %s\n' "$platform" "$count" +} + +probe windows 22 +probe macos 24 +probe linux 27 diff --git a/tests/font-probe.html b/tests/font-probe.html new file mode 100644 index 0000000..b8f81ec --- /dev/null +++ b/tests/font-probe.html @@ -0,0 +1,47 @@ + + +