End to end tests #13
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: End to end tests | |
on: | |
schedule: | |
- cron: "0 0 * * *" # Run every day at midnight | |
workflow_dispatch: {} | |
jobs: | |
test-simulator: | |
runs-on: ubuntu-latest | |
env: | |
LCOV_CAPTURE_FLAGS: --quiet --capture --include "${PWD}/src/*" --exclude '*/src/mesh/generated/*' --directory .pio/build/coverage/src --base-directory "${PWD}" | |
steps: | |
- name: Install libs needed for native build | |
shell: bash | |
run: | | |
sudo apt-get update --fix-missing | |
sudo apt-get install -y libbluetooth-dev libgpiod-dev libyaml-cpp-dev openssl libssl-dev libulfius-dev liborcania-dev libusb-1.0-0-dev libi2c-dev | |
sudo apt-get install -y lcov | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Upgrade python tools | |
shell: bash | |
run: | | |
python -m pip install --upgrade pip | |
pip install -U platformio adafruit-nrfutil dotmap | |
pip install -U meshtastic --pre | |
- name: Upgrade platformio | |
shell: bash | |
run: | | |
pio upgrade | |
- name: Build Native | |
run: bin/build-native.sh | |
# We now run integration test before other build steps (to quickly see runtime failures) | |
- name: Build for native/coverage | |
run: | | |
platformio run -e coverage | |
lcov ${{ env.LCOV_CAPTURE_FLAGS }} --initial --output-file coverage_base.info | |
- name: Integration test | |
run: | | |
.pio/build/coverage/program & | |
PID=$! | |
timeout 20 bash -c "until ls -al /proc/$PID/fd | grep socket; do sleep 1; done" | |
echo "Simulator started, launching python test..." | |
python3 -c 'from meshtastic.test import testSimulator; testSimulator()' | |
wait | |
lcov ${{ env.LCOV_CAPTURE_FLAGS }} --test-name integration --output-file coverage_integration.info | |
- name: PlatformIO Tests | |
run: | | |
platformio test -e coverage --junit-output-path testreport.xml | |
lcov ${{ env.LCOV_CAPTURE_FLAGS }} --test-name tests --output-file coverage_tests.info | |
- name: Test Report | |
uses: dorny/[email protected] | |
if: success() || failure() # run this step even if previous step failed | |
with: | |
name: PlatformIO Tests | |
path: testreport.xml | |
reporter: java-junit | |
- name: Generate Code Coverage Report | |
run: | | |
lcov --quiet --add-tracefile coverage_base.info --add-tracefile coverage_integration.info --add-tracefile coverage_tests.info --output-file coverage_src.info | |
mkdir code-coverage-report | |
genhtml --quiet --legend --prefix "${PWD}" coverage_src.info --output-directory code-coverage-report | |
mv coverage_*.info code-coverage-report | |
- name: Save Code Coverage Report | |
uses: actions/upload-artifact@v4 | |
with: | |
name: code-coverage-report | |
path: code-coverage-report | |
hardware-tests: | |
runs-on: test-runner | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
# - uses: actions/setup-python@v5 | |
# with: | |
# python-version: '3.10' | |
# pipx install "setuptools<72" | |
- name: Upgrade python tools | |
shell: bash | |
run: | | |
pipx install adafruit-nrfutil | |
pipx install poetry | |
pipx install meshtastic --pip-args=--pre | |
- name: Install PlatformIO from script | |
shell: bash | |
run: | | |
curl -fsSL -o get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py | |
python3 get-platformio.py | |
- name: Upgrade platformio | |
shell: bash | |
run: | | |
export PATH=$PATH:$HOME/.local/bin | |
pio upgrade | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- name: Setup pnpm | |
uses: pnpm/action-setup@v4 | |
with: | |
version: latest | |
- name: Install dependencies, setup devices and run | |
shell: bash | |
run: | | |
git submodule update --init --recursive | |
cd meshtestic/ | |
pnpm install | |
pnpm run setup | |
pnpm run test |