[CERT-TEST-FAILURE] TC-MESS-3.1 fails at Step 5 — DUT never generates MessageComplete event for a spoken message

Author: Sumith-grlCreated Sep 16, 2026Updated Sep 18, 2026
Labelsbugcert blockerneeds triage

Test Case

  • TC-MESS-3.1

Describe the bug

The test case TC-MESS-3.1 validate with the recently merged PR #73594 test case is failing in the master ToT, with the following behaviour.

[MatterTest] 09-16 08:13:13.186 ERROR Declared test parameters at failure:

[pixit] tts_timeout_sec (int): Seconds to wait for each text-to-speech lifecycle event value: 60 (default) Override via: --int-arg tts_timeout_sec:

[MatterTest] 09-16 08:13:13.186 INFO ***** Test Failure : [MatterTest] 09-16 08:13:13.187 INFO Finished test in 62925952.0ms [MatterTest] 09-16 08:13:13.187 ERROR


  • Test test_TC_MESS_3_1 failed for the following reason:
  • Details=Timeout waiting for event <class 'matter.clusters.Objects.Messages.Events.MessageComplete'>., Extras=None
  • File "/home/ubuntu/matter-sdk-master-291891bd2-arm64/chip_env/lib/python3.12/site-packages/matter/testing/event_attribute_reporting.py", line 226, in wait_for_event_type_report
  • asserts.fail(f"Timeout waiting for event {event_type}.")
  • Test step:
  • 5: TH waits for the DUT to finish TTS playback.   Expected outcome: Verify that a MessageComplete event is generated with MessageID=AABBCCDDEEFF00112233445566778899.
  • Endpoint: 1

TC_MESS_3_1 fails at Step 5 with Timeout waiting for event <class 'matter.clusters.Objects.Messages.Events.MessageComplete'>, even though the command and the first two lifecycle events succeed.

  • Step 2 sends PresentMessagesRequest with the SpokenMessage bit set → DUT returns status 0x0 (Endpoint 1, Cluster 0x0097, Command 0x0000).
  • Step 3 receives MessageQueued (EventNumber=5).
  • Step 4 receives MessagePresented (EventNumber=6) — the same millisecond as MessageQueued, so the DUT is firing both events straight from the command handler rather than tracking real TTS playback.
  • Step 5 waits 60 s (tts_timeout_sec default) for MessageComplete. No further event is ever reported on the subscription, and the test aborts before Step 6 runs.

Command to execute the TC in Master ToT:

  • Sample app: ./chip-tv-app
  • Python Controller: python3 TC_MESS_3_1.py --commissioning-method on-network --discriminator 3840 --passcode 20202021 --storage- path admin_storage.json --endpoint 1

Expected behavior

  • The test case should run to completion through Step 6 and PASS. After MessagePresented, the DUT should generate MessageComplete with MessageID=AABBCCDDEEFF00112233445566778899 once spoken playback finishes.

GitHub hash of the SDK that was being used

99a81bd32986c5292b0b1c9245c8e247c2ad717d

Platform

raspi

Log files:

Controller Log for reference:

TC_MESS_3_1(CTRL).txt

DUT log for reference:

TC_MESS_3_1(DUT).txt

Source: project-chip/connectedhomeip