--- name: Tests (Speculos and Zemu) on: workflow_dispatch: push: branches: - master - develop pull_request: jobs: # ===================================================== # ZEMU TESTS # ===================================================== building_for_e2e_zemu_tests: name: Building binaries for E2E Zemu tests runs-on: ubuntu-latest container: image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-lite:latest steps: - uses: actions/checkout@v4 - name: Build testing binaries run: | git config --global --add safe.directory "$GITHUB_WORKSPACE" cd tests/zemu/ && ./build_local_test_elfs.sh - name: Upload app binaries uses: actions/upload-artifact@v4 with: name: e2e_zemu_elfs path: ./tests/zemu/elfs/ jobs-e2e-zemu-tests: name: E2E Zemu tests needs: [building_for_e2e_zemu_tests] runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install additional tools run: sudo apt-get update -y && sudo apt-get install -y libusb-1.0.0 libudev-dev - name: Install NodeJS uses: actions/setup-node@v3 with: node-version: "16" - name: Install yarn run: npm install -g yarn - name: Build/Install build js deps run: cd tests/zemu/ && yarn install - name: Create tmp folder for artifacts run: mkdir tests/zemu/elfs - name: Download app binaries uses: actions/download-artifact@v4 with: path: tmp/ - name: Gather elfs run: cp tmp/e2e_zemu_elfs/*.elf tests/zemu/elfs/ - name: Run zemu tests run: cd tests/zemu/ && yarn test # ===================================================== # SPECULOS TESTS # ===================================================== building_for_e2e_speculos_tests: name: Building binaries for E2E Speculos tests runs-on: ubuntu-latest container: image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-lite:latest steps: - uses: actions/checkout@v4 - name: Build testing binaries run: | mkdir tests/speculos/elfs make clean && make -j DEBUG=1 NFT_STAGING_KEY=1 BOLOS_SDK=$NANOS_SDK && mv bin/app.elf tests/speculos/elfs/nanos.elf make clean && make -j DEBUG=1 NFT_STAGING_KEY=1 BOLOS_SDK=$NANOX_SDK && mv bin/app.elf tests/speculos/elfs/nanox.elf make clean && make -j DEBUG=1 NFT_STAGING_KEY=1 BOLOS_SDK=$NANOSP_SDK && mv bin/app.elf tests/speculos/elfs/nanosp.elf - name: Upload app binaries uses: actions/upload-artifact@v4 with: name: e2e_speculos_elfs path: ./tests/speculos/elfs jobs-e2e-speculos-tests: name: Speculos tests strategy: fail-fast: false matrix: model: ["nanosp", "nanos", "nanox"] needs: [building_for_e2e_speculos_tests] runs-on: ubuntu-latest steps: - name: Clone uses: actions/checkout@v4 - name: Create tmp folder for artifacts run: mkdir tests/speculos/elfs - name: Download app binaries uses: actions/download-artifact@v4 with: path: tmp/ - name: Gather elfs run: cp tmp/e2e_speculos_elfs/*.elf tests/speculos/elfs/ - name: Install dependencies run: | cd tests/speculos sudo apt-get update && sudo apt-get install -y qemu-user-static pip install -r requirements.txt - name: Run speculos tests run: | cd tests/speculos pytest --model ${{ matrix.model }} --path ./elfs/${{ matrix.model }}.elf --display headless