Files
clide/test/helpers/golden_harness.dart
T
jpmschweitzerandClaude Opus 4.8 04bb512cb7 test: green the first Windows CI run + skip non-portable goldens on CI
Two fixes from the first real CI execution of these suites:
- windows_pty_test: the non-existent-executable test asserted errno==2
  (ERROR_FILE_NOT_FOUND), but Dart FFI doesn't reliably preserve GetLastError
  across the lookupFunction boundary (CI Windows returned 0). Assert the
  PtyException op instead. The ConPTY suite otherwise passed 21/22 on real
  Windows with no stall — supporting the accumulation (not single-run) freeze
  theory.
- golden_harness: platform goldens are font-render-dependent across machines
  (dev Fedora vs GitHub ubuntu-latest), so run them locally only and skip on CI
  (the CI env var). Goldens stay a local pre-merge check.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 22:43:13 +02:00

26 lines
1.2 KiB
Dart

import 'dart:io' show Platform;
import 'package:alchemist/alchemist.dart';
/// Alchemist config shared across all golden tests.
///
/// Platform goldens only — keyed by OS (`goldens/linux/`, `goldens/macos/`).
/// CI goldens (Ahem font in `goldens/ci/`) are disabled because Skia's
/// geometric anti-aliasing differs between macOS and Linux even with Ahem,
/// producing sub-pixel diffs that fail cross-platform.
///
/// Platform goldens are also font/render-dependent ACROSS machines: a golden
/// generated on one Linux box (the dev's Fedora) does not match a GitHub
/// `ubuntu-latest` runner even though both are "linux" — different freetype /
/// font packages render sub-pixel-differently. So platform goldens run only
/// locally (dev-validated before merge) and are skipped on CI (detected via the
/// `CI` env var GitHub Actions sets). Goldens are a local check, not a CI gate.
AlchemistConfig clideGoldenConfig() {
final isCi = Platform.environment.containsKey('CI');
return AlchemistConfig(
theme: null, // we're not using Material ThemeData
platformGoldensConfig: PlatformGoldensConfig(enabled: !isCi),
ciGoldensConfig: const CiGoldensConfig(enabled: false),
);
}