Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated TestSteps to add expectation strings and match the descriptions in the current test plan. #33667

Closed
wants to merge 7 commits into from
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Updated TestStep strings
feasel0 committed May 29, 2024
commit 1f368a24e94b024b78fb786d9c093d6f7987ed71
130 changes: 72 additions & 58 deletions src/python_testing/TC_ACE_1_3.py

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions src/python_testing/TC_ACL_2_2.py
Original file line number Diff line number Diff line change
@@ -26,9 +26,9 @@ def desc_TC_ACL_2_2(self) -> str:

def steps_TC_ACL_2_2(self) -> list[TestStep]:
steps = [
TestStep(1, "Commissioning, already done", is_commissioning=True),
TestStep(2, "TH1 reads DUT Descriptor cluster ServerList attribute from Endpoint 0"),
TestStep(3, "TH1 reads DUT Descriptor cluster ServerList attribute from every Endpoint except 0"),
TestStep(1, "TH1 commissions DUT using admin node ID `N1`", "DUT is commissioned on TH1 fabric", is_commissioning=True),
TestStep(2, "TH1 reads DUT Descriptor cluster ServerList attribute from Endpoint 0", "Result list contains an element with value 31 (0x001F)"),
TestStep(3, "TH1 reads DUT Descriptor cluster ServerList attribute from every Endpoint except 0", "Result list does not contain an element with value 31 (0x001F)"),
]
return steps

20 changes: 10 additions & 10 deletions src/python_testing/TC_BOOLCFG_2_1.py
Original file line number Diff line number Diff line change
@@ -34,16 +34,16 @@ def desc_TC_BOOLCFG_2_1(self) -> str:

def steps_TC_BOOLCFG_2_1(self) -> list[TestStep]:
steps = [
TestStep(1, "Commissioning, already done", is_commissioning=True),
TestStep(2, "Read attribute list to determine supported attributes"),
TestStep(3, "Read SupportedSensitivityLevels attribute, if supported"),
TestStep(4, "Read CurrentSensitivityLevel attribute, if supported"),
TestStep(5, "Read DefaultSensitivityLevel attribute, if supported"),
TestStep(6, "Read AlarmsActive attribute, if supported"),
TestStep(7, "Read AlarmsSuppressed attribute, if supported"),
TestStep(8, "Read AlarmsEnabled attribute, if supported"),
TestStep(9, "Read AlarmsSupported attribute, if supported"),
TestStep(10, "Read SensorFault attribute, if supported"),
TestStep(1, "{comDutTH}.", "", is_commissioning=True),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

things I should have mentioned earlier - things get a bit weird if you pull these directly from the adoc files because all the stuff in the curly braces are adoc macros (er...they don't call them macros, but basically macros).

So this will render correctly in the adoc (I think?), but it'll also show up directly like this in the test harness.

The solution Rene and I were kicking around was using actual python functions to return the text. ex like here: https://github.com/project-chip/connectedhomeip/pull/32182/files#diff-8bafa8e5179589abd80fe1365c30897596b32305372c4ee3986f1062b9afa0fd

The bonus there is you can consolidate all of this nicely by doing ex.

def constraints(min: typing.Union[int, str], max: stepnum: typing.Union[int, str], type: typing.Union[int, str, None):
  type_str = '' if type is none else f'dut_reply() a {type} value. '
  return f'{type_str}Value has to be between a range of {min} and {max}'

TestStep(3, read_attribute('SupporedSensitivitiyLevels'), constraints('uint8', 2, 10)) 

aside...man I'd love to get rid of these attribute constraint tests. Maybe in 1.5 we can start picking them off from the easy DM XMLs. This seems like SO much manual copy-paste for no reason.

Anyway @ReneJosefsen - what are your thoughts here? Do we like this style better than what's in the adoc currently? Is this going to be easier for people to keep in sync if we can generate the test plans automatically?

Copy link
Contributor

@ReneJosefsen ReneJosefsen May 30, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From just an initial view, this seems like a move in the wrong direction (for now). As you say, this does render fine in adoc once the import is there, but the macros/document attributes are not going to be adjusted accordingly here so it will look very weird when running this on TH.

So for this to work we need to have a similar text replacement in place first IMO.

Copy link
Contributor Author

@feasel0 feasel0 May 30, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I updated TC_BOOLCFG_2_2.py to do text replacement. See here.

If we like this, I will update the rest of the TC_BOOLCFG_*.py files.

TestStep(2, "{THread} _AttributeList_ attribute.", "{DUTreply} the _AttributeList_ attribute."),
TestStep(3, "{ifAttrIsSupported}, {THread} _{A_SUPPORTEDSENSITIVITYLEVELS}_ attribute. {storeValueAs} numberOfSupportedLevels.", "{DUTreply} an uint8 value. {valrange} 2 and 10."),
TestStep(4, "{ifAttrIsSupported}, {THread} _{A_CURRENTSENSITIVITYLEVEL}_ attribute.", "{DUTreply} an uint8 value. {valrange} 0 and the value of numberOfSupportedLevels."),
TestStep(5, "{ifAttrIsSupported}, {THread} _{A_DEFAULTSENSITIVITYLEVEL}_ attribute.", "{DUTreply} an uint8 value. {valrange} 0 and the value of numberOfSupportedLevels."),
TestStep(6, "{ifAttrIsSupported}, {THread} _{A_ALARMSACTIVE}_ attribute.", "{DUTreply} an map8 value. {valrange} 0 and 3."),
TestStep(7, "{ifAttrIsSupported}, {THread} _{A_ALARMSSUPPRESSED}_ attribute.", "{DUTreply} an map8 value. {valrange} 0 and 3."),
TestStep(8, "{ifAttrIsSupported}, {THread} _{A_ALARMSENABLED}_ attribute.", "{DUTreply} an map8 value. {valrange} 0 and 3."),
TestStep(9, "{ifAttrIsSupported}, {THread} _{A_ALARMSSUPPORTED}_ attribute.", "{DUTreply} an map8 value. {valrange} 0 and 3."),
TestStep(10, "{ifAttrIsSupported}, {THread} _{A_SENSORFAULT}_ attribute.", "{DUTreply} an map8 value. {valrange} 0 and 1."),
]
return steps

26 changes: 13 additions & 13 deletions src/python_testing/TC_BOOLCFG_3_1.py
Original file line number Diff line number Diff line change
@@ -34,19 +34,19 @@ def desc_TC_BOOLCFG_3_1(self) -> str:

def steps_TC_BOOLCFG_3_1(self) -> list[TestStep]:
steps = [
TestStep(1, "Commissioning, already done", is_commissioning=True),
TestStep("2a", "Read FeatureMap attribute"),
TestStep("2b", "Verify SENS feature is supported"),
TestStep("2c", "Read AttributeList attribute"),
TestStep(3, "Read SupportedSensitivityLevels attribute"),
TestStep(4, "Read DefaultSensitivityLevel attribute, if supported"),
TestStep(5, "Read CurrentSensitivityLevel attribute"),
TestStep(6, "TH loops through the number of supported sensitivity levels"),
TestStep(7, "Write CurrentSensitivityLevel attribute to non-default value"),
TestStep(8, "Write CurrentSensitivityLevel attribute to default value"),
TestStep(9, "Write CurrentSensitivityLevel attribute to 10"),
TestStep(10, "Write CurrentSensitivityLevel attribute to 255"),
TestStep(11, "Write CurrentSensitivityLevel attribute to the initial current value"),
TestStep(1, "{comDutTH}.", "", is_commissioning=True),
TestStep("2a", "{THread} _Featuremap_ attribute.", "{DUTreply} the _Featuremap_ attribute."),
TestStep("2b", "If the _{F_SENSLVL}_ {featIsNotSupported}, skip remaining steps and end test case.", ""),
TestStep("2c", "{THread} _AttributeList_ attribute.", "{DUTreply} the _AttributeList_ attribute."),
TestStep(3, "{THread} _{A_SUPPORTEDSENSITIVITYLEVELS}_ attribute. {storeValueAs} numberOfSupportedLevels.", "{resDutSuccess}."),
TestStep(4, "{ifAttrIsSupported}, {THread} _{A_DEFAULTSENSITIVITYLEVEL}_ attribute. {storeValueAs} defaultLevel.", "{resDutSuccess}."),
TestStep(5, "{THread} _{A_CURRENTSENSITIVITYLEVEL}_ attribute. {storeValueAs} currentLevel.", "{resDutSuccess}."),
TestStep(6, "TH loops through the number of supported sensitivity levels (0 to numberOfSupportedLevels - 1) and\n {THwrite} each value to the _{A_CURRENTSENSITIVITYLEVEL}_ attribute.", "{resDutSuccess} for all write interactions."),
TestStep(7, "If the _{A_DEFAULTSENSITIVITYLEVEL}_ {attrIsSupported}, {THwrite} _{A_CURRENTSENSITIVITYLEVEL}_ attribute to a supported value that is NOT the value of defaultLevel.", "{resDutSuccess}."),
TestStep(8, "If the _{A_DEFAULTSENSITIVITYLEVEL}_ {attrIsSupported}, {THwrite} _{A_CURRENTSENSITIVITYLEVEL}_ attribute to the value of defaultLevel.", "{resDutSuccess}."),
TestStep(9, "{THwrite} _{A_CURRENTSENSITIVITYLEVEL}_ attribute to numberOfSupportedLevels.", "{resDutConstraintError}."),
TestStep(10, "{THwrite} _{A_CURRENTSENSITIVITYLEVEL}_ attribute to 255.", "{resDutConstraintError}."),
TestStep(11, "{THwrite} _{A_CURRENTSENSITIVITYLEVEL}_ attribute to the value of currentLevel.", "{resDutSuccess}."),
]
return steps

14 changes: 7 additions & 7 deletions src/python_testing/TC_BOOLCFG_4_1.py
Original file line number Diff line number Diff line change
@@ -32,13 +32,13 @@ def desc_TC_BOOLCFG_4_1(self) -> str:

def steps_TC_BOOLCFG_4_1(self) -> list[TestStep]:
steps = [
TestStep(1, "Commissioning, already done", is_commissioning=True),
TestStep(2, "Read FeatureMap attribute"),
TestStep(3, "Read AlarmsSupported attribute"),
TestStep("4a", "Verify AlarmsSupported attribute bit 0"),
TestStep("4b", "Verify AlarmsSupported attribute bit 0"),
TestStep("5a", "Verify AlarmsSupported attribute bit 1"),
TestStep("5b", "Verify AlarmsSupported attribute bit 1"),
TestStep(1, "{comDutTH}.", "", is_commissioning=True),
TestStep(2, "{THread} _Featuremap_ attribute.", "{DUTreply} the _Featuremap_ attribute."),
TestStep(3, "If the _{F_VIS}_ or _{F_AUD}_ {featIsSupported}, {THread} _{A_ALARMSSUPPORTED}_ attribute. {storeValueAs} supportedAlarms.", "{resDutSuccess} and that the received value is not 0."),
TestStep("4a", "If the _{F_VIS}_ {featIsSupported}.", "Verify that bit 0 in supportedAlarms is set to 1."),
TestStep("4b", "If the _{F_VIS}_ {featIsNotSupported}.", "Verify that bit 0 in supportedAlarms is set to 0."),
TestStep("5a", "If the _{F_AUD}_ {featIsSupported}.", "Verify that bit 1 in supportedAlarms is set to 1."),
TestStep("5b", "If the _{F_AUD}_ {featIsNotSupported}.", "Verify that bit 1 in supportedAlarms is set to 0."),
]
return steps

33 changes: 18 additions & 15 deletions src/python_testing/TC_BOOLCFG_4_2.py
Original file line number Diff line number Diff line change
@@ -36,21 +36,24 @@ def desc_TC_BOOLCFG_4_2(self) -> str:

def steps_TC_BOOLCFG_4_2(self) -> list[TestStep]:
steps = [
TestStep(1, "Commissioning, already done", is_commissioning=True),
TestStep("2a", "Read FeatureMap attribute"),
TestStep("2b", "Read AttributeList attribute"),
TestStep("3a", "Create variable named enabledAlarms"),
TestStep("3b", "If VIS is supported, set bit 0 to 1"),
TestStep("3c", "If AUD is supported, set bit 1 to 1"),
TestStep("3d", "Set AlarmsEnabled attribute to value of enabledAlarms using EnableDisableAlarm command"),
TestStep(4, "Send TestEventTrigger with SensorTrigger event"),
TestStep(5, "Read AlarmsActive attribute"),
TestStep("6a", "Verify VIS alarm is active, if supported"),
TestStep("6b", "Verify VIS alarm is not active, if not supported"),
TestStep("7a", "Verify AUD alarm is active, if supported"),
TestStep("7b", "Verify AUD alarm is not active, if not supported"),
TestStep(8, "Send TestEventTrigger with SensorUntrigger event"),
TestStep(9, "Read AlarmsActive attribute"),
TestStep(1, "{comDutTH}.", "", is_commissioning=True),
TestStep("2a", "{THread} _Featuremap_ attribute.", "{DUTreply} the _Featuremap_ attribute."),
TestStep("2b", "{THread} _AttributeList_ attribute.", "{DUTreply} the _AttributeList_ attribute."),
# Enable all supported alarms (if supported)
TestStep("3a", "If the _{A_ALARMSENABLED}_ {attrIsSupported}, create variable named enabledAlarms", ""),
TestStep("3b", "If the _{A_ALARMSENABLED}_ {attrIsSupported} and _{F_VIS}_ {featIsSupported}, set bit 0 in enabledAlarms to 1.", ""),
TestStep("3c", "If the _{A_ALARMSENABLED}_ {attrIsSupported} and _{F_AUD}_ {featIsSupported}, set bit 1 in enabledAlarms to 1.", ""),
TestStep("3d", "{ifAttrIsSupported}, {THcommand} _{C_ENABLEDISABLEALARM}_ command with the value of enabledAlarms in the AlarmsToEnableDisable field.", "{resDutSuccess}."),
# Check that the supported alarms are active
TestStep(4, "If the _{F_VIS}_ or _{F_AUD}_ {featIsSupported}, TH sends TestEventTrigger command to General Diagnostics Cluster on Endpoint 0\n with EnableKey field set to PIXIT.{PICS_S}.TEST_EVENT_TRIGGER_KEY and EventTrigger field set to PIXIT.{PICS_S}.TEST_EVENT_TRIGGER for SensorTrigger event.", "{resDutSuccess}."),
TestStep(5, "If the _{F_VIS}_ or _{F_AUD}_ {featIsSupported}, {THread} _{A_ALARMSACTIVE}_ attribute. {storeValueAs} activeAlarms.", "{resDutSuccess} and that the received value is not 0."),
TestStep("6a", "If the _{F_VIS}_ {featIsSupported}.", "Verify that bit 0 in activeAlarms is set to 1."),
TestStep("6b", "If the _{F_VIS}_ {featIsNotSupported}.", "Verify that bit 0 in activeAlarms is set to 0."),
TestStep("7a", "If the _{F_AUD}_ {featIsSupported}.", "Verify that bit 1 in activeAlarms is set to 1."),
TestStep("7b", "If the _{F_AUD}_ {featIsNotSupported}.", "Verify that bit 1 in activeAlarms is set to 0."),
# Check that the supported alarms are no longer active
TestStep(8, "If the _{F_VIS}_ or _{F_AUD}_ {featIsSupported}, TH sends TestEventTrigger command to General Diagnostics Cluster on Endpoint 0\n with EnableKey field set to PIXIT.{PICS_S}.TEST_EVENT_TRIGGER_KEY and EventTrigger field set to PIXIT.{PICS_S}.TEST_EVENT_TRIGGER for SensorUntrigger event.", "{resDutSuccess}."),
TestStep(9, "If the _{F_VIS}_ or _{F_AUD}_ {featIsSupported}, {THread} _{A_ALARMSACTIVE}_ attribute.", "{resDutSuccess} and that the received value is 0."),
]
return steps

64 changes: 37 additions & 27 deletions src/python_testing/TC_BOOLCFG_4_3.py
Original file line number Diff line number Diff line change
@@ -36,33 +36,43 @@ def desc_TC_BOOLCFG_4_3(self) -> str:

def steps_TC_BOOLCFG_4_3(self) -> list[TestStep]:
steps = [
TestStep(1, "Commissioning, already done", is_commissioning=True),
TestStep("2a", "Read FeatureMap attribute"),
TestStep("2b", "Read AttributeList attribute"),
TestStep(3, "Verify AlarmsEnabled is supported"),
TestStep(4, "Create enabledAlarms and set to 0"),
TestStep("5a", "Enable VIS alarm in enabledAlarms"),
TestStep("5b", "Set AlarmsEnabled attribute to value of enabledAlarms using AlarmsToEnableDisable command"),
TestStep(6, "Send TestEventTrigger with SensorTrigger event"),
TestStep(7, "Read AlarmsActive attribute"),
TestStep(8, "Send TestEventTrigger with SensorUntrigger event"),
TestStep(9, "Read AlarmsActive attribute"),
TestStep(10, "Set enabledAlarms to 0"),
TestStep(11, "Set AlarmsEnabled attribute to value of enabledAlarms using AlarmsToEnableDisable command"),
TestStep(12, "Send TestEventTrigger with SensorTrigger event"),
TestStep(13, "Read AlarmsActive attribute"),
TestStep(14, "Send TestEventTrigger with SensorUntrigger event"),
TestStep("15a", "Enable AUD alarm in enabledAlarms"),
TestStep("15b", "Set AlarmsEnabled attribute to value of enabledAlarms using AlarmsToEnableDisable command"),
TestStep(16, "Send TestEventTrigger with SensorTrigger event"),
TestStep(17, "Read AlarmsActive attribute"),
TestStep(18, "Send TestEventTrigger with SensorUntrigger event"),
TestStep(19, "Read AlarmsActive attribute"),
TestStep(20, "Set enabledAlarms to 0"),
TestStep(21, "Set AlarmsEnabled attribute to value of enabledAlarms using AlarmsToEnableDisable command"),
TestStep(22, "Send TestEventTrigger with SensorTrigger event"),
TestStep(23, "Read AlarmsActive attribute"),
TestStep(24, "Send TestEventTrigger with SensorUntrigger event"),
TestStep(1, "{comDutTH}.", "", is_commissioning=True),
TestStep("2a", "{THread} _Featuremap_ attribute.", "{DUTreply} the _Featuremap_ attribute."),
TestStep("2b", "{THread} _AttributeList_ attribute.", "{DUTreply} the _AttributeList_ attribute."),
# Determine if test case if applicable
TestStep(3, "If the _{A_ALARMSENABLED}_ {attrIsNotSupported}, skip remaining steps and end test case.", ""),
# Given the above "guard", it is assumes in the remainder of this test case that A_ALARMSENABLED is supported, hence why this is not explicitly checked in the following steps. Verify VIS alarm is not being emitted if disabled
TestStep(4, "Create variable named enabledAlarms and set the value to 0.", ""),
# Enable only visual alarming
TestStep("5a", "If the _{F_VIS}_ {featIsSupported}, set bit 0 in enabledAlarms to 1.", ""),
TestStep("5b", "{THcommand} _{C_ENABLEDISABLEALARM}_ command with the value of enabledAlarms in the AlarmsToEnableDisable field.", "{resDutSuccess}."),
# Check that the VIS alarm is active
TestStep(6, "If the _{F_VIS}_ {featIsSupported}, TH sends TestEventTrigger command to General Diagnostics Cluster on Endpoint 0\n with EnableKey field set to PIXIT.{PICS_S}.TEST_EVENT_TRIGGER_KEY and EventTrigger field set to PIXIT.{PICS_S}.TEST_EVENT_TRIGGER for SensorTrigger event.", "{resDutSuccess}."),
TestStep(7, "If the _{F_VIS}_ {featIsSupported}, {THread} _{A_ALARMSACTIVE}_ attribute.", "{resDutSuccess} and that bit 0 is set to 1 and bit 1 is set to 0, in the received value."),
# Check that the VIS alarm is no longer active
TestStep(8, "If the _{F_VIS}_ {featIsSupported}, TH sends TestEventTrigger command to General Diagnostics Cluster on Endpoint 0\n with EnableKey field set to PIXIT.{PICS_S}.TEST_EVENT_TRIGGER_KEY and EventTrigger field set to PIXIT.{PICS_S}.TEST_EVENT_TRIGGER for SensorUntrigger event.", "{resDutSuccess}."),
TestStep(9, "If the _{F_VIS}_ {featIsSupported}, {THread} _{A_ALARMSACTIVE}_ attribute.", "{resDutSuccess} and that the received value is 0."),
TestStep(10, "Set the value of enabledAlarms to 0.", ""),
# Disable visual alarming
TestStep(11, "{THcommand} _{C_ENABLEDISABLEALARM}_ command with the value of enabledAlarms in the AlarmsToEnableDisable field.", "{resDutSuccess}."),
TestStep(12, "If the _{F_VIS}_ {featIsSupported}, TH sends TestEventTrigger command to General Diagnostics Cluster on Endpoint 0\n with EnableKey field set to PIXIT.{PICS_S}.TEST_EVENT_TRIGGER_KEY and EventTrigger field set to PIXIT.{PICS_S}.TEST_EVENT_TRIGGER for SensorTrigger event.", "{resDutSuccess}."),
TestStep(13, "If the _{F_VIS}_ {featIsSupported}, {THread} _{A_ALARMSACTIVE}_ attribute.", "{resDutSuccess} and that the received value is 0."),
TestStep(14, "If the _{F_VIS}_ {featIsSupported}, TH sends TestEventTrigger command to General Diagnostics Cluster on Endpoint 0\n with EnableKey field set to PIXIT.{PICS_S}.TEST_EVENT_TRIGGER_KEY and EventTrigger field set to PIXIT.{PICS_S}.TEST_EVENT_TRIGGER for SensorUntrigger event.", "{resDutSuccess}."),
# Verify AUD alarms is not being emitted if disabled. Enable only audible alarming (if supported)
TestStep("15a", "If the _{F_AUD}_ {featIsSupported}, set bit 0 in enabledAlarms to 1.", ""),
TestStep("15b", "{THcommand} _{C_ENABLEDISABLEALARM}_ command with the value of enabledAlarms in the AlarmsToEnableDisable field.", "{resDutSuccess}."),
# Check that the VIS alarms is active
TestStep(16, "If the _{F_AUD}_ {featIsSupported}, TH sends TestEventTrigger command to General Diagnostics Cluster on Endpoint 0\n with EnableKey field set to PIXIT.{PICS_S}.TEST_EVENT_TRIGGER_KEY and EventTrigger field set to PIXIT.{PICS_S}.TEST_EVENT_TRIGGER for SensorTrigger event.", "{resDutSuccess}."),
TestStep(17, "If the _{F_AUD}_ {featIsSupported}, {THread} _{A_ALARMSACTIVE}_ attribute.", "{resDutSuccess} and that bit 0 is set to 0 and bit 1 is set to 1, in the received value."),
# Check that the VIS alarms is no longer active
TestStep(18, "If the _{F_AUD}_ {featIsSupported}, TH sends TestEventTrigger command to General Diagnostics Cluster on Endpoint 0\n with EnableKey field set to PIXIT.{PICS_S}.TEST_EVENT_TRIGGER_KEY and EventTrigger field set to PIXIT.{PICS_S}.TEST_EVENT_TRIGGER for SensorUntrigger event.", "{resDutSuccess}."),
TestStep(19, "If the _{F_AUD}_ {featIsSupported}, {THread} _{A_ALARMSACTIVE}_ attribute.", "{resDutSuccess} and that the received value is 0."),
TestStep(20, "Set the value of enabledAlarms to 0.", ""),
# Disable audible alarming
TestStep(21, "{THcommand} _{C_ENABLEDISABLEALARM}_ command with the value of enabledAlarms in the AlarmsToEnableDisable field.", "{resDutSuccess}."),
TestStep(22, "If the _{F_AUD}_ {featIsSupported}, TH sends TestEventTrigger command to General Diagnostics Cluster on Endpoint 0\n with EnableKey field set to PIXIT.{PICS_S}.TEST_EVENT_TRIGGER_KEY and EventTrigger field set to PIXIT.{PICS_S}.TEST_EVENT_TRIGGER for SensorTrigger event.", "{resDutSuccess}."),
TestStep(23, "If the _{F_AUD}_ {featIsSupported}, {THread} _{A_ALARMSACTIVE}_ attribute.", "{resDutSuccess} and that the received value is 0."),
TestStep(24, "If the _{F_AUD}_ {featIsSupported}, TH sends TestEventTrigger command to General Diagnostics Cluster on Endpoint 0\n with EnableKey field set to PIXIT.{PICS_S}.TEST_EVENT_TRIGGER_KEY and EventTrigger field set to PIXIT.{PICS_S}.TEST_EVENT_TRIGGER for SensorUntrigger event.", "{resDutSuccess}."),
]
return steps

Loading