name: Run Unit Tests on: push: branches: - main - master - keymindCascade pull_request: workflow_dispatch: jobs: test: runs-on: ubuntu-latest steps: - name: Clone Repo uses: actions/checkout@v4 - name: Setup Build Environment uses: ./.github/actions/setup-build-environment - name: Verify ArduinoJson pin run: | python3 -B scripts/check_arduinojson_pin.py --self-test python3 -B scripts/check_arduinojson_pin.py - name: Run Unit Tests run: pio test -e native -e native_kiss_modem -vv - name: Verify ESP32 static DRAM budget run: python3 -B test/test_esp32_dram.py - name: Verify ESP32 USB sleep and G3 button wake run: python3 -B test/test_esp32_usb_sleep.py - name: Verify logging sleep guards and instructions run: | python3 -B test/test_logging_sleep_contract.py node test/test_firmware_picker.js - name: Verify nRF52 UF2-reset CLI coverage run: python3 -B test/test_nrf52_uf2reset_cli.py - name: Verify firmware memory budgets and nRF52 Bluetooth startup run: | python3 -B test/test_firmware_ram.py python3 -B test/test_cascade_release_package.py python3 -B test/test_t096_full_memory.py python3 -B test/test_nrf52_ble_startup.py python3 -B test/test_shared_mota_queue.py - name: Verify Companion Bluetooth settings and WebConfig run: | python3 -B test/test_bluetooth_mac_contract.py python3 -B test/test_companion_settings_persistence_contract.py python3 -B test/test_webconfig_ui.py python3 -B test/test_webconfig_ui_runtime.py - name: Upload Test Results # Upload test results even if the test step failed. if: always() uses: actions/upload-artifact@v4 with: name: test-results path: .pio/build/native/