---
title: "Testing"
canonical_url: https://developer.repebble.com/pebbleos/docs/development/tests/
last_updated: 2026-10-21
sdk_version: 4.33.1
---
# Testing

Source: https://developer.repebble.com/pebbleos/docs/development/tests/

PebbleOS has two test suites, which check different things:

| 

 | 

Unit tests

 | 

Integration tests

 |
| --- | --- | --- |
| 

What

 | 

Individual modules, against fakes and stubs

 | 

The whole firmware, as it ships

 |
| 

Where

 | 

On the host

 | 

On the emulator, the native simulator or a watch

 |
| 

Written in

 | 

C, with [clar](https://github.com/clar-test/clar)

 | 

Python, with [pytest](https://docs.pytest.org)

 |
| 

Lives in

 | 

`tests/`

 | 

`tests/integration/`

 |
| 

Run with

 | 

[pbl test](https://developer.repebble.com/pebbleos/docs/pbl/test.md)

 | 

[pbl itest](https://developer.repebble.com/pebbleos/docs/pbl/itest.md)

 |

Unit tests are fast and precise: they build a few firmware sources for the host, so a module’s behaviour can be checked in isolation, including rendering against reference images. Integration tests drive the running firmware from the outside, pressing buttons, comparing screenshots, reading logs and measuring current, so they catch what only shows up once everything runs together.

CI runs the unit tests on every change to the sources, and the integration tests on the three emulator boards, for both the normal and the recovery firmware. A lab watch runs them on real hardware as well.

Generated from PebbleOS [3a7b71785](https://github.com/coredevices/pebbleos/commit/3a7b71785fd439666c4a8bc116f561140e8dec01). This page is maintained in the pebbleos repository: [docs/development/tests/index.md](https://github.com/coredevices/pebbleos/blob/3a7b71785fd439666c4a8bc116f561140e8dec01/docs/development/tests/index.md).
