External Libraries Testing


External libraries testing is a compilation test for listed libraries on arduino-esp32 master branch. The test was made for users, so they can check which libraries are compiling without errors on which SoC. External libraries test is running periodically (once a week) against master branch and can also run on PR by adding a label lib_test. The test is running on all supported ESP32 chips.


As the test is just a compilation of example, that does not guarantee that the library/sketch will run without any problems after flashing it on your device.

How to Add Library to Test

To add a library to the CI test you need to add your library to the lib.json. file located in ./github/workflows/.


Please add the libraries to the lib.json in alphabetical order, thanks.

List of parameters:

Where the library will be installed from (use only 1 option):


  • exclude_targets - List of targets to be excluded from testing. Use only when the SoC dont support used peripheral.

  • sketch_path - Path / paths to the sketch / sketches to be tested.


  • version - Version of the library.

  • required-libs - Libraries that are necessary to be installed to compile the tested library.

  • destination-name - Folder name used for the installation of library (use only when needed).

Example of library addition from Arduino Library Manager with ESP32-S2 excluded:

    "name": "ArduinoBLE",
    "exclude_targets": [
    "sketch_path": [

Example of library addition from Github URL with required library:

    "source-url": "https://github.com/me-no-dev/ESPAsyncWebServer.git",
    "required-libs": [
        {"source-url": "https://github.com/me-no-dev/AsyncTCP.git"}
    "exclude_targets": [],
    "sketch_path": [

Submit a PR

  • Open a PR with the changes and someone from Espressif team will add a label lib_test to the PR and CI will run the test to check, if the addition is fine and the library/example is compiling.

  • After merging your PR, the next scheduled test will test your library and add the results to the LIBRARIES_TEST.md.

Test Results

Icons meaning

There is a number before each icon, which means the number of examples which were compiled with that result.

  • success - Compilation was successful.

  • warning - Compilation was successful, but some warnings occurs.

  • fail - Compilation failed.

  • N/A - Not tested (target is in exclude_targets list).

Scheduled test result

You can check the results in LIBRARIES_TEST.md.

The results file example:


Pull Request test result

If the test run on Pull Request, it will compile all libraries and sketches 2 times (before/after changes in PR) to see, if the PR is breaking/fixing libraries. In the table the results are in order BEFORE -> AFTER.