Fork de travail pop-os/libcosmic pour contribs COSMIC
Find a file
Claude d25a51bd32
Add comprehensive testing infrastructure: visual snapshots, unit, property, and theme tests
Introduces a multi-layered testing strategy for the libcosmic widget toolkit:

- Visual snapshot testing: Renders widgets via tiny-skia software renderer and
  compares pixel output against reference PNGs. Generates diff images on failure.
  Covers containers, dividers, text styles, progress bars, and layouts.

- Widget unit tests: Thorough behavioral tests for segmented button model
  (selection, ordering, data storage, enable/disable, closable, indent),
  calendar model (month navigation, year wrapping, date selection, grid layout),
  spin button (clamping, increment/decrement, float support), and color picker.

- Property-based tests (proptest): Randomized input testing for spin button
  bounds invariants, calendar first-day-of-week correctness, segmented model
  length/clear/toggle invariants, and theme spacing monotonicity.

- Theme consistency tests: Validates all four theme variants (dark, light,
  high-contrast dark/light) have valid spacing, corner radii ordering,
  non-zero-alpha colors, visible text-on-background, and RON round-trip
  serialization.

- Expanded inline tests: 16 new spin_button unit tests covering increment,
  decrement, clamping, float types, and constructor value bounds.

- CI integration: New visual-tests job runs snapshot, theme, property, and
  widget tests with artifact upload on failure for snapshot diffs.

https://claude.ai/code/session_01P3WLXMif9wmNXbWDo5FhRQ
2026-02-18 01:23:14 +00:00
.github/workflows Add comprehensive testing infrastructure: visual snapshots, unit, property, and theme tests 2026-02-18 01:23:14 +00:00
.vscode fix: remove rust-analyzer.linkedProjects 2024-04-13 17:11:42 -06:00
cosmic-config chore: update dependencies 2026-01-27 18:07:35 -07:00
cosmic-config-derive chore: update dependencies 2026-01-27 18:07:35 -07:00
cosmic-icons@70b07582e2 feat(icon): optimize & bundle icons with crabtime for non-unix platforms 2025-11-21 18:37:49 +01:00
cosmic-theme chore: update dependencies 2026-01-27 18:07:35 -07:00
examples chore(cargo): update all crate dependencies 2026-01-14 18:46:53 +01:00
i18n i18n: translation updates from weblate 2026-01-30 19:10:49 -07:00
iced@2db5545fbe fix(iced): fix for crash in cosmic-launcher 2026-01-15 15:23:51 +01:00
res feat(icon): optimize & bundle icons with crabtime for non-unix platforms 2025-11-21 18:37:49 +01:00
src Add comprehensive testing infrastructure: visual snapshots, unit, property, and theme tests 2026-02-18 01:23:14 +00:00
tests Add comprehensive testing infrastructure: visual snapshots, unit, property, and theme tests 2026-02-18 01:23:14 +00:00
.gitignore chore: remove debian directory 2023-09-15 17:37:35 +02:00
.gitmodules feat(icon): optimize & bundle icons with crabtime for non-unix platforms 2025-11-21 18:37:49 +01:00
build.rs build(windows): change icon path separator for native windows builds 2025-12-09 20:01:57 +01:00
Cargo.toml Add comprehensive testing infrastructure: visual snapshots, unit, property, and theme tests 2026-02-18 01:23:14 +00:00
config.toml refactor launcher removing templates 2021-12-31 14:58:26 -05:00
i18n.toml feat: add i18n support for libcosmic widgets 2025-09-05 18:50:25 +02:00
justfile feat(widget): add table widget 2025-03-24 17:48:20 +01:00
LICENSE Initial commit 2021-11-12 20:22:30 -07:00
README.md docs: add link to cosmic-applet-template 2025-12-17 03:25:00 +01:00

LIBCOSMIC

A platform toolkit based on iced for creating applets and applications for the COSMIC™ desktop.

Documentation

Templates

Dependencies

While libcosmic is written entirely in Rust, some of its dependencies may require shared system library headers to be installed. On Pop!_OS, the following dependencies are all that's necessary to compile a typical COSMIC project:

sudo apt install cargo cmake just libexpat1-dev libfontconfig-dev libfreetype-dev libxkbcommon-dev pkgconf

Examples

Some examples are included in the examples directory to to kickstart your COSMIC adventure. To run them, you need to clone the repository with the following commands:

git clone --recurse-submodules https://github.com/pop-os/libcosmic
cd libcosmic

If you have already cloned the repository, run these to sync with the latest updates:

git fetch origin
git checkout master
git reset --hard origin/master

The examples may then be run by their cargo project names, such as just run application.

Cargo Features

Available cargo features to choose from:

  • a11y: Experimental accessibility support.
  • animated-image: Enables animated images from the image crate.
  • debug: Enables addtional debugging features.
  • smol: Uses smol as the preferred async runtime.
    • Conflicts with tokio
  • tokio: Uses tokio as the preferred async runtime.
    • If unset, the default executor defined by iced will be used.
    • Conflicts with smol
  • wayland: Wayland-compatible client windows.
    • Conflicts with winit
  • winit: Cross-platform and X11 client window support
    • Conflicts with wayland
  • wgpu: GPU accelerated rendering with WGPU.
    • By default, softbuffer is used for software rendering.
  • xdg-portal: Enables XDG portal dialog integrations.

Project Showcase

Licence

Licensed under the Mozilla Public License 2.0.

Contact