Skip to content

Add Wokwi ESP32 simulator CI workflow with Playwright web interface testing, boot validation scenarios, and complete flash image support #3110

Add Wokwi ESP32 simulator CI workflow with Playwright web interface testing, boot validation scenarios, and complete flash image support

Add Wokwi ESP32 simulator CI workflow with Playwright web interface testing, boot validation scenarios, and complete flash image support #3110

Workflow file for this run

name: PlatformIO CI
on: [push, pull_request]
jobs:
get_default_envs:
name: Gather Environments
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- uses: actions/setup-python@v5
with:
python-version: '3.9'
- name: Install PlatformIO
run: pip install -r requirements.txt
- name: Get default environments
id: envs
run: |
echo "environments=$(pio project config --json-output | jq -cr '.[0][1][0][1]')" >> $GITHUB_OUTPUT
outputs:
environments: ${{ steps.envs.outputs.environments }}
build:
name: Builds
runs-on: ubuntu-22.04
needs: get_default_envs
strategy:
fail-fast: false
matrix:
environment: ${{ fromJSON(needs.get_default_envs.outputs.environments) }}
steps:
- uses: actions/checkout@v4
- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Cache PlatformIO
uses: actions/cache@v4
with:
path: ~/.platformio
key: ${{ runner.os }}-${{ matrix.environment}}
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.9'
- name: Install PlatformIO
run: pip install -r requirements.txt
- name: Build firmware
env:
WLED_RELEASE: True
run: pio run -e ${{ matrix.environment }}
- name: Rename Bin
run: mv -v .pio/build/${{ matrix.environment }}/firmware.bin firmware-${{ matrix.environment }}.bin
- uses: actions/upload-artifact@v4
with:
name: firmware-${{ matrix.environment }}
path: firmware-${{ matrix.environment }}.bin
- uses: actions/upload-artifact@v4
if: startsWith(github.ref, 'refs/tags/')
with:
name: firmware-release-${{ matrix.environment }}
path: build_output/release/*.bin
release:
name: Create Release
runs-on: ubuntu-22.04
needs: [get_default_envs, build]
if: startsWith(github.ref, 'refs/tags/')
steps:
- uses: actions/download-artifact@v4
- name: List Artifacts
run: find ./ -type f -name *.bin -exec mv -v {} ./ \;
- name: Create draft release
uses: softprops/action-gh-release@v1
with:
draft: True
files: |
WLEDMM*.bin
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}