CHANGELOGο
v2.2.1 (2025-10-27)ο
π Bug Fixesο
Raise exceptions for Dut created by DutFactory (Evgeny Torbin - c73f684)
v2.2.0 (2025-10-24)ο
β¨ New Featuresο
reconnect after serial lost connection (horw - 019e38a)
v2.1.2 (2025-10-16)ο
π Bug Fixesο
Fix ESP32-C5 bootloader offset (Lucas Saavedra Vaz - b77e2f7)
v2.1.1 (2025-10-13)ο
π Bug Fixesο
qemu: error when enable service
qemualong withoutidf(Fu Hanxi - 01efc71)mark the un-triggered test cases as βskippedβ (Fu Hanxi - 1b0aa5c)
Add missing offsets for ESP32-C5 (Lucas Saavedra Vaz - 54bc3d1)
v2.1.0 (2025-09-25)ο
β¨ New Featuresο
add support for efuse in qemu (horw - e682c45)
add support for virtual efuse on NuttX (Filipe Cavalcanti - 5e946a0)
v2.0.0 (2025-09-23)ο
π§ Code Refactoringο
always use multiprocess spawn (Fu Hanxi - 387b877)
ποΈ Changesο
rename esptool underscore arguments and subcommands to dash (Fu Hanxi - b2b88d0)
Breaking Changesο
Python Support: Drop support for Python 3.7, 3.8, 3.9. Now requires Python 3.10+
esptool: Update esptool requirement to >=5.1.dev1,<6 (from ~=4.9)
wokwi: Remove support for
WokwiCLIclass, which is a wrapper ofwokwi-cliexecutable. UseWokwiclass instead, which depends onwokwi-python-client, supporting a wide range of peripherals.Deprecated Code Removal:
Remove
EsptoolArgsclass frompytest-embedded-serial-espRemove deprecated parameters
hard_reset_afterandno_stubfromuse_esptool()decoratorRemove deprecated
stubproperty fromEspSerialclass (useespinstead)Remove deprecated
parse_test_menu()andparse_unity_menu_from_str()methods fromIdfUnityDutMixin(usetest_menuproperty instead)Remove deprecated CLI option
--add-target-as-marker(use--add-target-as-marker-with-amountinstead)
Migration Guideο
Python Version: Upgrade to Python 3.10 or higher
esptool: Update esptool to version 5.1.dev1 or higher (but less than 6.0)
Code Changes:
Replace
dut.stubwithdut.espReplace
dut.parse_test_menu()calls withdut.test_menuproperty accessReplace
parse_unity_menu_from_str()with_parse_unity_menu_from_str()if needed.dut.test_menuis preferred.Update CLI usage from
--add-target-as-markerto--add-target-as-marker-with-amountRemove any usage of
EsptoolArgsclassRemove
hard_reset_afterandno_stubparameters fromuse_esptool()calls
v1.17.0 (2025-09-08)ο
Fixο
qemu: set
qemu_proj_pathforQemuAppcorrectly
Featο
add
--port-by-serialoption to filter ports by serial number
v1.16.2 (2025-06-19)ο
Fixο
synced cache file by adding support for filelock
v1.16.1 (2025-04-22)ο
Fixο
typing.Literal not working in python 3.7
nuttx: use baudrate from EspSerial in EspNuttx
nuttx:flash mode exception on Nuttx
v1.16.0 (2025-03-13)ο
Featο
idf: Support selecting targets by soc caps in
idf_parametrize
v1.15.1 (2025-03-03)ο
Fixο
qemu: limit RISCV flash image sizes to 2, 4, 8, 16MB
v1.15.0 (2025-02-20)ο
Featο
idf: support pass
--supported_targetsandpreview_targetsas CLI argsidf: support customisation for supported_targets and preview_targets by contextvar
v1.14.0 (2025-02-11)ο
Featο
support marker helper function
idf_parametrize
v1.13.2 (2025-02-06)ο
Fixο
app_path havenβt recorded in python cases
v1.13.1 (2025-01-29)ο
Featο
record
app_pathin junit reportssupport
return_what_before_matchin expect functions
Fixο
improve listener performance, remove timeout in listener
v1.13.0 (2025-01-21) (yanked)ο
Featο
support βadd-target-as-marker-with-amount
added skip_if_soc marker for idf target
Fixο
dut-factory: Add a short delay in _listen() loop to prevent data missing
v1.12.1 (2024-12-02)ο
Featο
unity: add flag to preserve Python test cases and βis_unity_caseβ attribute
Fixο
nuttx: optional dependency for qemu
unity: remove [dut-X] prefix from βlineβ and βfileβ attribute values in XML report
v1.12.0 (2024-11-14)ο
Featο
wokwi: Use new boards for ESP32-P4
nuttx: Support new service
nuttx
v1.11.8 (2024-10-29)ο
Fixο
wokwi: Use merged bin to ensure partition and bootloader flashing
v1.11.7 (2024-10-25)ο
Fixο
jtag: bypass telnet sysaudit on python 3.7
v1.11.6 (2024-10-18)ο
Featο
arduino: Support ESP32-P4
Fixο
add more supported targets into App.RISCV32_TARGETS
qemu: get default toolchain path correctly based on target
serial: close serial port when exception happens
Refactorο
jtag: remove deprecate warning from telnetlib.py by pulling telnetlib.py from python v3.12.6
v1.11.5 (2024-08-19)ο
Fixο
wokwi: pexpect.spawn not working on windows. use subprocess instead
v1.11.4 (2024-08-16)ο
Fixο
jtag: flush previous gdb responses before the first gdb command
v1.11.3 (2024-08-09)ο
Revertο
v1.11.2
v1.11.2 (2024-08-09) (yanked)ο
Fixο
jtag: gdb write βremotetimeoutβ stop waiting for response
v1.11.1 (2024-08-07)ο
Fixο
jtag: set gdb remote timeout to 10s by default
v1.11.0 (2024-07-31)ο
Featο
wokwi: Add support for specifying diagram path
esp: support flash with a different port
v1.10.3 (2024-05-23)ο
Featο
dry run single board unity test
flexible choices for run_all_single_board_cases
Fixο
improve error message when CLI argument is wrong
v1.10.2 (2024-04-30)ο
Featο
esp: support add target as marker (β|β will be escaped to β-β)
Fixο
wokwi: error when bin,elf file not under app_path
v1.10.1 (2024-04-30)ο
Fixο
arduino: stop require optional dependency βespβ
qemu: stop require optional dependency βidfβ
v1.10.0 (2024-04-29)ο
Featο
wokwi: Add scenario path parameter
Refactorο
pytest8.2: stash session_tempdir in a cleaner way
py3.12: use datetime.now(timezone.utc) instead of utcnow()
py3.12: use shutil.copytree instead of distutils
v1.9.1 (2024-04-26)ο
Fixο
remove required optional dependencies βidfβ
v1.9.0 (2024-04-25) (yanked)ο
Featο
wokwi: Support Arduino
Add
DutFactoryto create dut object inside the test functions
Fixο
multiprocessing with context instead of set_start_method globally on macos
v1.8.4 (2024-04-23)ο
Fixο
non-standard default baud rate
v1.8.3 (2024-04-09)ο
Fixο
change baud when flash
v1.8.2 (2024-04-02)ο
Featο
idf: support
flashother IdfApp object
Fixο
unity: change json files related log level from info to debug
deprecate
use_esptoolargs correctlywrong app.binary_path if app_path is different with cwd
v1.8.1 (2024-03-01)ο
Fixο
idf: check sdkconfig items while
erase_flash
v1.8.0 (2024-02-23)ο
Featο
support βesp-flash-force to run esptool.flash with the force flag
Refactorο
call esptool.main() instead of implementing on our own
v1.7.0 (2024-02-14)ο
Featο
wokwi: support for specifying simulation timeout
support expect with
not_matchingkeyword
v1.6.4 (2024-01-22)ο
Fixο
unity: avoid missing attr
messageinfailurenodes
v1.6.3 (2024-01-18)ο
Fixο
wokwi: run in interactive mode
v1.6.2 (2024-01-15)ο
Featο
wokwi: preliminary esp32p4 support
Fixο
use socket bind to get allowed port
v1.6.1 (2024-01-04)ο
Fixο
qemu: fix qmp client missing event loop in main thread
v1.6.0 (2024-01-02)ο
Featο
Support qemu qmp
Fixο
idf: make LinuxDut inherit from IdfUnityDutMixin
unity: remove extra time sleep inside multi-stage tests
v1.5.0 (2023-12-29)ο
Featο
use gdb_panic_server from esp_idf_panic_decoder instead static $IDF_PATH/tools/gdb_panic_server.py
Fixο
unity: make single board test procedure more robust
v1.4.2 (2023-12-04)ο
Featο
unity: Support data transfer with signal in multi-dut unity test cases
Fixο
added interrupt if one of the test was failed
remove testcase name postfix
v1.4.1 (2023-11-27)ο
Refactorο
change threads to generator functions
change logic of threading control in CaseTester for MultiDev
v1.4.0 (2023-11-07)ο
Featο
wokwi: Support wokwi
Fixο
clear all references for the message queue
v1.3.5 (2023-09-13)ο
Featο
Support hard_reset without stub
add local cache for port-target-cache between session
v1.3.4 (2023-07-10)ο
Fixο
arduino: separated flash settings for each target
v1.3.3 (2023-07-05)ο
arduino: Support target esp32h2 and esp32c6
v1.3.2 (2023-06-14)ο
Fixο
qemu: qemu-system-xtensa < 8.0.0 only support 4MB flash size
qemu: calculate flash image size when βflash_sizeβ not available
qemu: qemu flash image generated by esptool, support windows as well
v1.3.1 (2023-06-06)ο
Fixο
unity: stop sleep 1 second in subcases
confirm_write with pattern or string
v1.3.0 (2023-05-31) (yanked)ο
Featο
idf:
IdfAppadd new propertyis_xtensa,is_riscv32idf: add
confirm_writemethod to make sure the write happensidf: add
run_single_board_casefunctionidf: expose pytest_embedded_idf.UnittestMenuCase
qemu: support flash encryption workflow
qemu: support riscv32 targets, remove target restriction
Fixο
qemu: Add more idf non-target related functions when enabling service
idf
v1.2.5 (2023-04-11)ο
Featο
add log in system-out of the junit report
Fixο
idf: lazy import optional dependencies
idf: skip decode panic output when no elf file
v1.2.4 (2023-03-10)ο
Featο
idf: support loadable app with bin file
Fixο
illegal xml chars for all types of test cases
remove 1.1 added unused argument
start_time
Refactorο
improve logging and use βshell=Falseβ in
DuplicateStdoutPopenrefine errors and warnings
v1.2.3 (2023-02-06)ο
Fixο
illegal xml chars
serial: support rfc2217 connections
v1.2.2 (2023-01-29)ο
Fixο
teardown skipped when setting up period failed for multi-dut
leaking file descriptors
v1.2.1 (2023-01-05)ο
Fixο
idf:
LinuxDut.writefailed sinceserialisNone
v1.2.0 (2022-12-29)ο
Featο
idf: support running tests on linux targets
Fixο
ImportError when install
pytest_embeddedonly
v1.1.1 (2022-12-08)ο
Fixο
idf: load_ram could use
flash_project_argsfile as well
v1.1.0 (2022-12-05)ο
Featο
add ββcheck-duplicatesβ cli option to check if there were duplicated test case names or test script names.
idf: add
run_all_single_board_cases()toIdfDut. This function would record duration time for each unity test case even itβs unfinished.idf: add fixture
unity_testerto test multi device unity test cases (beta)jtag: add cli option
--no-gdbto stop create gdb instance automatically
Fixο
idf: erase_all when hit the port-app cache cause no binary got flashed
idf: set correct toolchain prefix for RISC-V targets
jtag: initialize openocd/gdb processes earlier than app/serial
v1.0.2 (2022-11-07)ο
Fixο
jtag: stop redirecting openocd output to pexpect process
esp: drop port-app cache when
erase_flashesp: erase flash before
flashwhen set--erase-all
Refactorο
rewrite set/drop/hit cache code
v1.0.1 (2022-10-28)ο
Featο
support set file extension of the log file
Fixο
_meta.logdirshould be thetest_case_tempdir, change to function-scoperemove unused cli option ββreorder-by-app-pathβ
v1.0.0 (2022-10-20)ο
Featο
add fixture
msg_queueadd fixture
session_root_logdirand cli option--root-logdiradd fixture
dut_indexanddut_totaladd fixture
port_target_cache,port_app_cachesimplify import path by adding more object to
__all__improve logging in
DuplicateStdoutPopeninstanceslive_print_callcould accept kwargsmsg_queueandexpect_returncodeidf: Support panic handler output for RISC-V targets
serial: support bind ports by USB device location
esp:
EspSerial.use_esptoolcould accept kwargshard_reset_afterandno_stubesp: add
EsptoolArgsesp: support bind ports by
esptoolread_macesp: support loadable elf
jtag: support flash via JTAG
jtag: support loadable elf
Fixο
remove
autouse=Truefor fixturesession_tempdiradd micro second digits to
session_tempdirmake DuplicateStdoutPopen logs under
session_tmpdirmulti-dut \r\n messed-up the log
idf: use empty list or dict for default values
Refactorο
use multiprocessing.Process with Queue. Only
serialinstance redirect withthreading.Threadinstance.
Breaking Changesο
DuplicateStdoutPopenand all subclassesremove
create_forward_io_thread(), the redirect process would be auto-createdrename
send()towrite()in order to keep the consistency with other classes
remove
DuplicateStdout. Now you may usecontextlib.redirect_stdout(msg_queue)insteadremove
DuplicateStdoutMixinesp: Support
esptool>4.0onlyjtag: remove
JtagDut. useSerialDutor its subclasses instead
v0.8.2 (2022-08-23)ο
Fixο
esp: UnboundLocalError when specify beta_target and port together
v0.8.1 (2022-08-22)ο
Fixο
parse error when unity test case name with colon
v0.8.0 (2022-08-22)ο
Featο
esp: support
beta_target
Fixο
idf: parse_unity_menu subcases index to int
v0.7.10 (2022-08-04)ο
Fixο
multi dut with single junit report
v0.7.9 (2022-08-02)ο
Fixο
merge junit report error when multi-dut
v0.7.8 (2022-07-28)ο
Fixο
remove asci color code in expect failed exception
Featο
idf: add function to parse the case lists from unit test menu
v0.7.7 (2022-07-26)ο
Fixο
wrong xml detected when
_session_tempdirstash is not initializedissue when fixture value is not str
v0.7.6 (2022-07-25)ο
Fixο
raise exception only if dut
isinstanceDutwith failure casesrecord session_tempdir into
config.stash
Featο
esp: add fixture
esptool_baudserial: move fixture
baudto serviceserial
v0.7.5 (2022-07-11)ο
Fixο
cli option ββerase-flashβ conflict with function
erase_flash()
v0.7.4 (2022-07-11)ο
Fixο
idf: use fixed major version instead of major.minor for esp-coredump
serial: port occupied before init finished
Featο
esp: Add
--erase-flashoption to erase the flash before programming
v0.7.3 (2022-06-06)ο
Fixο
esp: fix esptool import
v0.7.2 (2022-06-01)ο
Fixο
esp: loose esptool version dependency. remove the upper limit
v0.7.1 (2022-05-25)ο
Featο
idf: add cli option ββskip-check-coredumpβ
Fixο
idf: make elf file detection optional
v0.7.0 (2022-05-09)ο
Featο
idf: added erase_flash and erase_partition functionality
Fixο
idf: KeyError when not enabled coredump related configs
v0.7.0rc3 (2022-05-07)ο
Fixο
esp: remove cryptography version limit
v0.7.0rc2 (2022-05-07)ο
Fixο
improve debug string
idf: non-iterable error when flash with encrypted mode
v0.7.0rc1 (2022-04-25)ο
Featο
add method
parse_multi_dut_args
Breaking Changesο
rename
apply_count_generatortomulti_dut_generator_fixturerename
apply_counttomulti_dut_fixturerename
parse_configurationtomulti_dut_argument
v0.7.0rc0 (2022-04-15)ο
Featο
support 3.7+ python
idf: add cli option ββerase-nvsβ
idf: parse coredump when teardown dut
idf: use flasher_args.json to flash files. Require less files
serial: add stop_redirect_thread method and disable_redirect_thread context manager
Fixο
esp: fix requirements for rpi
serial: use other serial type as well
v0.6.2 (2022-03-18)ο
Fixο
esp: stubbed loader can never read serial because of redirect_io_thread
Featο
add
expect_allkeyword forexpectandexpect_exactfunctions
v0.6.1 (2022-03-18)ο
Fixο
esp: esptool wrong boot mode issue
esp: sort ports before auto detect port target
v0.6.0 (2022-03-08)ο
v0.6.0rc1 (2022-03-04)ο
Fixο
apply_countfor non-iterable items
Featο
esp: add
hard_resetmethod
v0.6.0rc0 (2022-02-22)ο
Fixο
jtag: -gdb-set could pass multiple args
log: flush to sys.stdout instantly
log: multi-dut now would print source prefix
unity case name now could include spaces
would raise correctly when
expecta list pattern failed
Featο
esp: add use_esptool decorator to auto connect before and hard reset after
esp: cache port and target
idf: add βconfirm-target-elf-sha256 cli option
idf: add
dump_flashmethod inIdfSerialidf: add attr
bin_filein IdfAppidf: add flashed elf related methods in
IdfSerialidf: add IdfDut class
idf: cache port and app
cache port/target, port/app_path_build_dir if possible. use pytest 7.0 feature stash
extract the binary_path to the
Appclasslog the log folders while setup for test case
the logging.error would turn to be derived error
use pytest>=7.0
v0.5.1 (2022-01-21)ο
Fixο
serial: write to pexpect process until β\nβ
v0.5.0 (2022-01-21)ο
Featο
unity: fail at the end if unity test case failed, try run more tests
unity: set expect_unity_test_output timeout to 60s
v0.5.0rc1 (2022-01-18)ο
Featο
qemu: default image path move to
APP_PATH/BUILD_DIR/IMAGE_NAMEadd
Dut.expect_unity_test_outputmethodadd fixture
test_case_tempdirmake import pytest-embedded easier
show log file location when expect functions failed
show pexpect process full log file location when expect function failed
Fixο
jtag: use real file logging instead of pipe
qemu:
dut.writeto qemu process correctlyqemu: re-generate qemu image. add cli option ββskip-regenerate_imageβ
serial:
dut.write()could acceptstrdata, auto add\nendingensure use default value set in class if not specified in cli or param
raise idf app not parsable error if binary path not parsable
Breaking Changesο
log: thread-safe print instead of logging.info
remove
expect_list
v0.5.0rc0 (2022-01-06)ο
Featο
arduino: Add Arduino service
esp: simplify esptool call process
esp: use env var
ESPPORTfor ββportβ andESPBAUDfor ββbaudβesp: use suggest flash baudrate if lower
log: log buffer as error when no matched pattern while expecting
windows: Add Windows support
Fixο
esp: different dut will not use the same ports anymore
macos: multiprocessing pickle error
windows: make setup.py installable
make the hook function to apply parallel count as the last step
Breaking Changesο
log: remove
sourceargument in allDuplicatedStdoutrelated functionsqemu: remove cli option
qemu-log-path
v0.4.5 (2021-11-29)ο
Featο
real-time logging
add
expect_listandexpect_exactmethod toDUTclassadd parallel run cli options
Fixο
idf: Run hard reset when skipping auto flash
v0.4.4 (2021-11-18)ο
Fixο
qemu: add the missing
build_dirto the parentIdfAppuse realpath instead
Featο
base: use the folder where
test_file_pathlocates as the defaultapp_pathidf: replace parse binary config from sdkconfig to sdkconfig.json
idf: add cli option βbuild_dirβ
v0.4.3 (2021-11-16)ο
Featο
return
re.Matchifdut.expect()succeededidf: add option
--skip-autoflash
v0.4.2 (2021-10-25)ο
Fixο
add version limit or armv71(rpi)
Featο
add dut count at the start of each line
v0.4.1 (2021-08-26)ο
Fixο
run close method only when initialized correctly
correct the error message when service required package not installed
pexpect process would echo the input, set echo to off
v0.4.0 (2021-08-25)ο
Fixο
create folder failed when specifying a file under current folder
Featο
add multi DUT support, use βcountβ option to duplicate fixtures
use βembedded-servicesβ option to extend functionalities instead of activating plugins.
v0.3.2 (2021-08-12)ο
Fixο
jtag: do not import idf package
v0.3.1 (2021-07-09)ο
Fixο
idf: optional dependency with
pytest-embedded-serial-espwhile import
v0.3.0 (2021-07-06)ο
Featο
qemu: rename package to
pytest-embedded-qemu, with optional dependencypytest-embedded-idfjtag: add dependency
pytest-embedded-serial, remove optional requirementspytest-embedded-serial-espidf: rename module
duttoserial, overrideserialif satisfy the optional dependencyesp: rename module
duttoserial, overrideserialfixtureserial: extract serial into a standalone fixture
base: Add fixture
pexpect_proc
v0.2.0 (2021-06-29)ο
Featο
jtag: add jtag support
log: add LivePrintPopen custom Popen class
qemu:
qemu_cli_argsandqemu_extra_argsnow can be set via cli and override via parameterizationserial: make serial port could be overridden by parameterization
Fixο
log: use rstrip instead of strip to keep the logsβ indentation
v0.1.1 (2021-06-16)ο
Featο
qemu: check image_path exist or not and target chip type while running
qemu: move
qemu_cli_argsandqemu_extra_argsfrom cli args to parametrize option
Fixο
idf: add base dependency
v0.1.0 (2021-06-11)ο
Featο
base: add App class
base: add plugin
redirectto duplicate and redirectsys.stdoutbase: App support encrypt files
base: class App read target from sdkconfig file
base: fixture
redirectcould have argumentsourceidf: make serial/esp dependencies optional
idf: move idf related app into IDFApp
idf: move the flash specific code into idf plugin
idf: simplify flash files, encrypt files parsing
print: redirect esptool print to pexpect
qemu: Move qemu to single fixture
qemu-idf: add qemu-idf
serial: move serial related into serial plugin
serial: support flash by serial
serial: support pexpect from serial
serial_esp: move esp related serial into a standalone plugin
duplicate stdout to file descriptor
move redirect stdout to pexpect process into a reusable decorator
re-organize code. move esp related serial into embedded-serial-esp
rename serial_dut/serial_esp to dut to keep consistency
rename to pytest-embedded
update feature list after review
use dynamic import, but not nested plugins
use multi plugins to attach the method to the DUT class
writing feature list and some initial design
Fixο
base: remove redundant double quote in sdkconfig
log: fix the subprocess.popen issue while redirecting sys.stdout
app_path would use test script path if not set
small fixes about examples and type hint
typing βlistβ not available before python 3.9