-
-
Notifications
You must be signed in to change notification settings - Fork 57
Expand file tree
/
Copy pathchipTests.json
More file actions
1047 lines (1047 loc) · 47.4 KB
/
Copy pathchipTests.json
File metadata and controls
1047 lines (1047 loc) · 47.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"resetClusterGlobs": ["root.accessControl.acl", "root.accessControl.extension", "*.smokeCoAlarm.*", "*.DimmableLight.levelControl.*"],
"patches": ["TC_DeviceBasicComposition.py", "TC_FAN_3_2.py", "Test_TC_OO_2_3.yaml", "Test_TC_G_2_4.yaml"],
"tests": [
{
"name": "Generic device basic composition",
"test": "TC_DeviceBasicComposition.py"
},
{
"name": "Generic device conformance",
"test": "TC_DeviceConformance.py"
},
{
"name": "Generic device default warnings",
"test": "TC_DefaultWarnings.py",
"args": ["--bool-arg pixit_allow_default_vendor_id:true"]
},
{
"name": "Generic TestEventTrigger command",
"test": "TC_TestEventTrigger.py",
"endpoint": 0
},
{
"name": "BasicInformation attributes with server-as-subject on RootNode",
"test": "TC_BINFO_2_1.py",
"endpoint": 0,
"args": ["--PICS /root/matterbridge.pics"]
},
{
"name": "BasicInformation attributes with node-as-subject on RootNode",
"test": "TC_BINFO_2_2.py",
"endpoint": 0,
"args": ["--PICS /root/matterbridge.pics"]
},
{
"name": "BasicInformation ProductAppearance on RootNode",
"test": "TC_BINFO_3_1.py",
"endpoint": 0,
"args": ["--PICS /root/matterbridge.pics"],
"skip": true,
"comment": "Gated by @run_if_endpoint_matches(has_attribute(ProductAppearance)); Matterbridge doesn't implement ProductAppearance (BINFO.S.A0014=0 in matterbridge.pics), so it always skips."
},
{
"name": "BasicInformation reboot count via app-pipe on RootNode",
"test": "TC_BINFO_3_2.py",
"endpoint": 0,
"args": ["--PICS /root/matterbridge.pics", "--app-pipe /tmp/matterbridge-chip-test-app-pipe"]
},
{
"name": "PowerSource attributes on RootNode on RootNode",
"test": "Test_TC_PS_2_1",
"endpoint": 0,
"args": ["--PICS /root/power-source.wired.pics"]
},
{
"name": "PowerSource event reporting with server as DUT on RootNode",
"test": "Test_TC_PS_2_2",
"endpoint": 0,
"args": ["--PICS /root/power-source.wired.pics"]
},
{
"name": "PowerSource battery reporting frequency on RootNode",
"test": "TC_PS_2_3.py",
"endpoint": 0,
"args": ["--PICS /root/power-source.wired.pics"]
},
{
"name": "AccessControl simple attributes on RootNode",
"test": "Test_TC_ACL_2_1",
"endpoint": 0
},
{
"name": "AccessControl attributes with server as DUT",
"test": "TC_ACL_2_2.py",
"endpoint": 0
},
{
"name": "AccessControl Extension attribute on RootNode",
"test": "TC_ACL_2_3.py",
"endpoint": 0,
"resetBefore": true,
"comment": "Asserts Extension starts empty; clears persisted AccessControl.Extension storage first so a previous test's write can't leak in."
},
{
"name": "AccessControl write/read of Acl attribute on RootNode",
"test": "TC_ACL_2_4.py",
"endpoint": 0
},
{
"name": "AccessControl event reporting with server as DUT on RootNode",
"test": "TC_ACL_2_5.py",
"endpoint": 0,
"unpairBefore": true,
"pairBefore": true,
"resetBefore": true,
"comment": "unpairBefore/pairBefore give a fresh fabric/event log, but reuse the same fabricIndex, so stale persisted AccessControl.Extension data from a previous test's write can resurface under it — resetBefore clears that storage too (resetClusterGlobs)."
},
{
"name": "AccessControl commissioning event on RootNode",
"test": "TC_ACL_2_6.py",
"endpoint": 0,
"skip": true,
"comment": "Expects to read back the AccessControlEntryChanged event generated when TH1's admin entry was added during PASE commissioning. This harness reuses chip-tool's baked-in pairing instead of live-commissioning the DUT per test, so that event was never generated in this session and the test fails with IndexError on an empty event list."
},
{
"name": "AccessControl multi-fabric Extension attribute on RootNode",
"test": "TC_ACL_2_7.py",
"endpoint": 0
},
{
"name": "AccessControl multi-fabric Acl attribute and events on RootNode",
"test": "TC_ACL_2_8.py",
"endpoint": 0,
"skip": true,
"comment": "Test commissions its own fresh TH1 (nodeId=1)/TH2 (nodeId=2) fabrics and validates AccessControlEntryChanged events against them; observed event data (nested fabricIndex inconsistent with the outer event's fabricIndex) doesn't match what the test expects, failing an assert_equal on valid-event count. Reproducible from a fresh --start, independent of test order — needs deeper investigation before enabling."
},
{
"name": "AccessControl multi-fabric ACL/Extension write with node-as-subject on RootNode",
"test": "TC_ACL_2_9.py",
"endpoint": 0
},
{
"name": "AccessControl multi-fabric ACL/Extension write with server-as-subject",
"test": "TC_ACL_2_10.py",
"endpoint": 0
},
{
"name": "AccessControl Managed Device feature (ARL) on RootNode",
"test": "TC_ACL_2_11.py",
"endpoint": 0,
"skip": true,
"comment": "Requires the MNGD/AUX features (Managed Device / Auxiliary ACL) with manufacturer-populated ARL/CommissioningARL restrictions. Matterbridge's AccessControl cluster only implements the EXTS feature (FeatureMap=1), so ARL/CommissioningARL are never populated and the test fails an assert_true immediately."
},
{
"name": "GeneralDiagnostics attributes on RootNode",
"test": "Test_TC_DGGEN_2_1",
"endpoint": 0,
"skip": true,
"comment": "Uses SDK-CI-only pseudo-clusters (SystemCommands.FactoryReset, CommissionerCommands.PairWithCode) this harness's yaml runner can't handle — the spawned chip-tool interactive server crashes before opening its websocket port ('WebSocket startup has not been detected'), independent of PICS or retries."
},
{
"name": "GeneralDiagnostics events with server as DUT",
"test": "Test_TC_DGGEN_2_2",
"endpoint": 0,
"skip": true,
"comment": "Every step in this YAML is disabled:true (manual verification procedure, no automated assertions)."
},
{
"name": "GeneralDiagnostics PayloadTestRequest command on RootNode",
"test": "Test_TC_DGGEN_2_3",
"endpoint": 0
},
{
"name": "GeneralDiagnostics attributes with node-as-subject on RootNode",
"test": "TC_DGGEN_2_4.py",
"endpoint": 0
},
{
"name": "GeneralDiagnostics RebootCount across a second fabric on RootNode",
"test": "TC_DGGEN_2_5.py",
"endpoint": 0
},
{
"name": "GeneralDiagnostics TestEventTrigger on RootNode",
"test": "Test_TC_DGGEN_3_1",
"endpoint": 0
},
{
"name": "GeneralDiagnostics TestEventTrigger with server as DUT on RootNode",
"test": "TC_DGGEN_3_2.py",
"endpoint": 0
},
{
"name": "GroupKeyManagement attributes on RootNode",
"test": "Test_TC_GRPKEY_2_1",
"endpoint": 0
},
{
"name": "GroupKeyManagement KeySet commands on RootNode",
"test": "Test_TC_GRPKEY_2_2",
"endpoint": 0
},
{
"name": "GroupKeyManagement max group keys manual verification",
"test": "Test_TC_GRPKEY_5_4",
"endpoint": 0,
"skip": true,
"comment": "Every step in this YAML is disabled:true (manual verification procedure, no automated assertions)."
},
{
"name": "OperationalCredentials basic node operational credentials on RootNode",
"test": "TC_OPCREDS_3_1.py",
"endpoint": 0
},
{
"name": "OperationalCredentials AddNOC for a new fabric on RootNode",
"test": "TC_OPCREDS_3_2.py",
"endpoint": 0,
"revokeWindowBefore": true,
"comment": "TC_OPCREDS_3_1 leaves a commissioning window open, which blocks ArmFailSafe (kBusyWithOtherAdmin) for this test's own AddNOC flow — revokeWindowBefore closes it first."
},
{
"name": "OperationalCredentials attestation and CSR on RootNode",
"test": "Test_TC_OPCREDS_3_3",
"endpoint": 0,
"skip": true,
"comment": "Every step in this YAML is disabled:true (manual verification procedure, no automated assertions)."
},
{
"name": "OperationalCredentials UpdateNOC error conditions on RootNode",
"test": "TC_OPCREDS_3_4.py",
"endpoint": 0,
"skip": true,
"comment": "Expects exactly 1 entry in TrustedRootCertificates, but finds 2 (the same root cert, one normal-sized and one padded to max size) even from a fully fresh unpair+repair cycle. Caused by the Python test framework's own maximize_cert_chains:true default during commission-only, not a Matterbridge behavior — needs a way to disable that default for this harness's commissioning flow before enabling."
},
{
"name": "OperationalCredentials UpdateNOC on RootNode",
"test": "TC_OPCREDS_3_5.py",
"endpoint": 0,
"revokeWindowBefore": true,
"comment": "Same leftover-open-window issue as TC_OPCREDS_3_2 — revokeWindowBefore closes it first."
},
{
"name": "OperationalCredentials RemoveFabric manual verification on RootNode",
"test": "Test_TC_OPCREDS_3_6",
"endpoint": 0,
"skip": true,
"comment": "Every step in this YAML is disabled:true (manual verification procedure, no automated assertions)."
},
{
"name": "OperationalCredentials UpdateFabricLabel on RootNode",
"test": "Test_TC_OPCREDS_3_7",
"endpoint": 0
},
{
"name": "OperationalCredentials VID verification statement on RootNode",
"test": "TC_OPCREDS_3_8.py",
"endpoint": 0,
"skip": true,
"comment": "Fails at import time: ModuleNotFoundError: No module named 'nest_asyncio' — missing Python dependency in this image, unrelated to Matterbridge."
},
{
"name": "GeneralCommissioning attributes on RootNode",
"test": "TC_CGEN_2_1.py",
"endpoint": 0
},
{
"name": "GeneralCommissioning ArmFailSafe command on RootNode",
"test": "TC_CGEN_2_2.py",
"endpoint": 0
},
{
"name": "GeneralCommissioning OpenCommissioningWindow error conditions on RootNode",
"test": "TC_CGEN_2_4.py",
"endpoint": 0,
"revokeWindowBefore": true,
"comment": "TC_CGEN_2_2 leaves a commissioning window open, which blocks this test's own OpenCommissioningWindow call (IM Error 0x602) — revokeWindowBefore closes it first."
},
{
"name": "GeneralCommissioning SetTCAcknowledgements on RootNode",
"test": "TC_CGEN_2_5.py",
"endpoint": 0,
"args": ["--int-arg PIXIT.CGEN.FailsafeExpiryLengthSeconds:900", "--int-arg PIXIT.CGEN.RequiredTCAcknowledgements:1", "--int-arg PIXIT.CGEN.TCRevision:1"],
"revokeWindowBefore": true,
"comment": "Self-skips: Matterbridge doesn't implement the Terms & Conditions (TC) feature. Needs the PIXIT.CGEN.* int-args or the test errors with a KeyError before it can even check the feature, and revokeWindowBefore for the same leftover-window reason as TC_CGEN_2_4."
},
{
"name": "GeneralCommissioning CommissioningComplete without required terms on RootNode",
"test": "TC_CGEN_2_6.py",
"endpoint": 0,
"revokeWindowBefore": true,
"comment": "Self-skips: gated on the same unimplemented TC feature as TC_CGEN_2_5 (no PIXIT args needed here — it never gets far enough to read them)."
},
{
"name": "GeneralCommissioning CommissioningComplete with invalid terms on RootNode",
"test": "TC_CGEN_2_7.py",
"endpoint": 0,
"args": ["--int-arg PIXIT.CGEN.FailsafeExpiryLengthSeconds:900", "--int-arg PIXIT.CGEN.RequiredTCAcknowledgements:1", "--int-arg PIXIT.CGEN.TCRevision:1"],
"revokeWindowBefore": true,
"comment": "Self-skips: same unimplemented TC feature as TC_CGEN_2_5."
},
{
"name": "GeneralCommissioning TCAcknowledgements reset after factory reset on RootNode",
"test": "TC_CGEN_2_8.py",
"endpoint": 0,
"args": ["--int-arg PIXIT.CGEN.FailsafeExpiryLengthSeconds:900", "--int-arg PIXIT.CGEN.RequiredTCAcknowledgements:1", "--int-arg PIXIT.CGEN.TCRevision:1"],
"revokeWindowBefore": true,
"comment": "Self-skips: same unimplemented TC feature as TC_CGEN_2_5."
},
{
"name": "GeneralCommissioning TCAcknowledgements reset after all fabrics removed on RootNode",
"test": "TC_CGEN_2_9.py",
"endpoint": 0,
"args": ["--int-arg PIXIT.CGEN.FailsafeExpiryLengthSeconds:900", "--int-arg PIXIT.CGEN.RequiredTCAcknowledgements:1", "--int-arg PIXIT.CGEN.TCRevision:1"],
"revokeWindowBefore": true,
"comment": "Self-skips: same unimplemented TC feature as TC_CGEN_2_5."
},
{
"name": "GeneralCommissioning required TCAcknowledgements can't be unset on RootNode",
"test": "TC_CGEN_2_10.py",
"endpoint": 0,
"revokeWindowBefore": true,
"comment": "Self-skips: same unimplemented TC feature as TC_CGEN_2_6 (no PIXIT args needed here either)."
},
{
"name": "GeneralCommissioning TCAcknowledgements update after commissioning on RootNode",
"test": "TC_CGEN_2_11.py",
"endpoint": 0,
"args": ["--int-arg PIXIT.CGEN.FailsafeExpiryLengthSeconds:900", "--int-arg PIXIT.CGEN.RequiredTCAcknowledgements:1", "--int-arg PIXIT.CGEN.TCRevision:1"],
"revokeWindowBefore": true,
"comment": "Self-skips: same unimplemented TC feature as TC_CGEN_2_5."
},
{
"name": "ElectricalPowerMeasurement attributes on ElectricalSensor",
"test": "TC_EPM_2_1.py",
"endpoint": 206,
"args": ["--PICS /root/electrical-power-measurement.pics"]
},
{
"name": "ElectricalPowerMeasurement primary functionality on ElectricalSensor",
"test": "TC_EPM_2_2.py",
"endpoint": 206,
"args": ["--PICS /root/electrical-power-measurement.pics", "--hex-arg enableKey:000102030405060708090a0b0c0d0e0f", "--use-legacy-test-event-triggers"],
"comment": "--use-legacy-test-event-triggers is required: without it, the Python test framework encodes --endpoint into EventTrigger bits 32-47 before sending, which doesn't match the plain trigger constants handleElectricalPowerMeasurementTestEventTrigger (chipTests.ts) checks for — GeneralDiagnostics.TestEventTrigger has no endpoint field per spec, so Matterbridge (like a real device) only recognizes the raw, unencoded trigger value."
},
{
"name": "ElectricalEnergyMeasurement attributes on ElectricalSensor",
"test": "TC_EEM_2_1.py",
"endpoint": 206,
"args": ["--PICS /root/electrical-energy-measurement.pics"]
},
{
"name": "ElectricalEnergyMeasurement cumulative imported functionality on ElectricalSensor",
"test": "TC_EEM_2_2.py",
"endpoint": 206,
"args": ["--PICS /root/electrical-energy-measurement.pics", "--hex-arg enableKey:000102030405060708090a0b0c0d0e0f", "--use-legacy-test-event-triggers"],
"comment": "--use-legacy-test-event-triggers is required, same reason as TC_EPM_2_2 (see that entry)."
},
{
"name": "ElectricalEnergyMeasurement cumulative exported functionality on ElectricalSensor",
"test": "TC_EEM_2_3.py",
"endpoint": 206,
"args": ["--PICS /root/electrical-energy-measurement.pics", "--hex-arg enableKey:000102030405060708090a0b0c0d0e0f", "--use-legacy-test-event-triggers"],
"comment": "--use-legacy-test-event-triggers is required, same reason as TC_EPM_2_2 (see that entry)."
},
{
"name": "ElectricalEnergyMeasurement periodic imported functionality on ElectricalSensor",
"test": "TC_EEM_2_4.py",
"endpoint": 206,
"args": ["--PICS /root/electrical-energy-measurement.pics", "--hex-arg enableKey:000102030405060708090a0b0c0d0e0f"],
"skip": true,
"comment": "Requires the PeriodicEnergy feature; endpoint 206 does not enable this optional feature."
},
{
"name": "ElectricalEnergyMeasurement periodic exported functionality on ElectricalSensor",
"test": "TC_EEM_2_5.py",
"endpoint": 206,
"args": ["--PICS /root/electrical-energy-measurement.pics", "--hex-arg enableKey:000102030405060708090a0b0c0d0e0f"],
"skip": true,
"comment": "Requires the PeriodicEnergy feature; endpoint 206 does not enable this optional feature."
},
{
"name": "DeviceEnergyManagement attributes on DeviceEnergyManagement",
"test": "TC_DEM_2_1.py",
"endpoint": 207,
"args": ["--PICS /root/device-energy-management.pics"]
},
{
"name": "DeviceEnergyManagement PowerAdjustment functionality on DeviceEnergyManagement",
"test": "TC_DEM_2_2.py",
"endpoint": 207,
"args": ["--PICS /root/device-energy-management.pics", "--hex-arg enableKey:000102030405060708090a0b0c0d0e0f", "--use-legacy-test-event-triggers"],
"comment": "--use-legacy-test-event-triggers is required, same reason as TC_EPM_2_2 (see that entry)."
},
{
"name": "DeviceEnergyManagement StartTimeAdjustment functionality on DeviceEnergyManagement",
"test": "TC_DEM_2_3.py",
"endpoint": 207,
"args": ["--PICS /root/device-energy-management.pics", "--hex-arg enableKey:000102030405060708090a0b0c0d0e0f"],
"skip": true,
"comment": "Requires the StartTimeAdjustment feature; endpoint 207 does not enable this optional feature."
},
{
"name": "DeviceEnergyManagement Pausable functionality on DeviceEnergyManagement",
"test": "TC_DEM_2_4.py",
"endpoint": 207,
"args": ["--PICS /root/device-energy-management.pics", "--hex-arg enableKey:000102030405060708090a0b0c0d0e0f"],
"skip": true,
"comment": "Requires the Pausable feature; endpoint 207 does not enable this optional feature."
},
{
"name": "DeviceEnergyManagement ForecastAdjustment with power forecast on DeviceEnergyManagement",
"test": "TC_DEM_2_5.py",
"endpoint": 207,
"args": ["--PICS /root/device-energy-management.pics", "--hex-arg enableKey:000102030405060708090a0b0c0d0e0f"],
"skip": true,
"comment": "Requires the ForecastAdjustment feature; endpoint 207 does not enable this optional feature."
},
{
"name": "DeviceEnergyManagement ForecastAdjustment with state forecast on DeviceEnergyManagement",
"test": "TC_DEM_2_6.py",
"endpoint": 207,
"args": ["--PICS /root/device-energy-management.pics", "--hex-arg enableKey:000102030405060708090a0b0c0d0e0f"],
"skip": true,
"comment": "Requires StateForecastReporting and ForecastAdjustment features; endpoint 207 does not enable these optional features."
},
{
"name": "DeviceEnergyManagement ConstraintBasedAdjustment with power forecast on DeviceEnergyManagement",
"test": "TC_DEM_2_7.py",
"endpoint": 207,
"args": ["--PICS /root/device-energy-management.pics", "--hex-arg enableKey:000102030405060708090a0b0c0d0e0f"],
"skip": true,
"comment": "Requires the ConstraintBasedAdjustment feature; endpoint 207 does not enable this optional feature."
},
{
"name": "DeviceEnergyManagement ConstraintBasedAdjustment with state forecast on DeviceEnergyManagement",
"test": "TC_DEM_2_8.py",
"endpoint": 207,
"args": ["--PICS /root/device-energy-management.pics", "--hex-arg enableKey:000102030405060708090a0b0c0d0e0f"],
"skip": true,
"comment": "Requires StateForecastReporting and ConstraintBasedAdjustment features; endpoint 207 does not enable these optional features."
},
{
"name": "DeviceEnergyManagement PowerForecastRReporting functionality on DeviceEnergyManagement",
"test": "TC_DEM_2_9.py",
"endpoint": 207,
"args": ["--PICS /root/device-energy-management.pics", "--hex-arg enableKey:000102030405060708090a0b0c0d0e0f", "--use-legacy-test-event-triggers"],
"comment": "--use-legacy-test-event-triggers is required, same reason as TC_EPM_2_2 (see that entry)."
},
{
"name": "DeviceEnergyManagement quiet-reporting quality on DeviceEnergyManagement",
"test": "TC_DEM_2_10.py",
"endpoint": 207,
"args": ["--PICS /root/device-energy-management.pics", "--hex-arg enableKey:000102030405060708090a0b0c0d0e0f", "--use-legacy-test-event-triggers"],
"comment": "--use-legacy-test-event-triggers is required, same reason as TC_EPM_2_2 (see that entry)."
},
{
"name": "DeviceEnergyManagementMode attributes on DeviceEnergyManagement",
"test": "TC_DEMM_1_2.py",
"endpoint": 207,
"args": ["--PICS /root/device-energy-management-mode.pics"]
},
{
"name": "DeviceEnergyManagementMode change mode on DeviceEnergyManagement",
"test": "Test_TC_DEMM_2_1",
"endpoint": 207,
"args": ["--PICS /root/device-energy-management-mode.pics"]
},
{
"name": "PowerSource battery attributes on ContactSensor",
"test": "Test_TC_PS_2_1",
"endpoint": 701,
"args": ["--PICS /root/power-source.battery.pics"]
},
{
"name": "PowerSource battery event reporting with server as DUT on ContactSensor",
"test": "Test_TC_PS_2_2",
"endpoint": 701,
"args": ["--PICS /root/power-source.battery.pics"]
},
{
"name": "PowerSource battery reporting frequency on ContactSensor",
"test": "TC_PS_2_3.py",
"endpoint": 701,
"args": ["--PICS /root/power-source.battery.pics"]
},
{
"name": "BooleanState attributes on ContactSensor",
"test": "Test_TC_BOOL_2_1",
"endpoint": 701,
"args": ["--PICS /root/boolean-state.pics"]
},
{
"name": "BooleanState primary functionality on ContactSensor",
"test": "TC_BOOL_2_2.py",
"endpoint": 701,
"args": ["--PICS /root/boolean-state.pics", "--app-pipe /tmp/matterbridge-chip-test-app-pipe"]
},
{
"name": "BooleanStateConfiguration attributes on ContactSensor",
"test": "TC_BOOLCFG_2_1.py",
"endpoint": 701,
"args": ["--PICS /root/boolean-state-configuration.pics"]
},
{
"name": "BooleanStateConfiguration sensitivity level on ContactSensor",
"test": "TC_BOOLCFG_3_1.py",
"endpoint": 701,
"args": ["--PICS /root/boolean-state-configuration.pics"]
},
{
"name": "BooleanStateConfiguration alarms supported on ContactSensor",
"test": "TC_BOOLCFG_4_1.py",
"endpoint": 701,
"args": ["--PICS /root/boolean-state-configuration.pics"]
},
{
"name": "BooleanStateConfiguration alarms active on ContactSensor",
"test": "TC_BOOLCFG_4_2.py",
"endpoint": 701,
"args": ["--PICS /root/boolean-state-configuration.pics", "--hex-arg PIXIT.BOOLCFG.TEST_EVENT_TRIGGER_KEY:000102030405060708090a0b0c0d0e0f"]
},
{
"name": "BooleanStateConfiguration alarms enabled inactive alarms on ContactSensor",
"test": "TC_BOOLCFG_4_3.py",
"endpoint": 701,
"args": ["--PICS /root/boolean-state-configuration.pics", "--hex-arg PIXIT.BOOLCFG.TEST_EVENT_TRIGGER_KEY:000102030405060708090a0b0c0d0e0f"]
},
{
"name": "BooleanStateConfiguration alarms enabled active alarms on ContactSensor",
"test": "TC_BOOLCFG_4_4.py",
"endpoint": 701,
"args": ["--PICS /root/boolean-state-configuration.pics", "--hex-arg PIXIT.BOOLCFG.TEST_EVENT_TRIGGER_KEY:000102030405060708090a0b0c0d0e0f"]
},
{
"name": "BooleanStateConfiguration suppress inactive alarms on ContactSensor",
"test": "TC_BOOLCFG_5_1.py",
"endpoint": 701,
"args": ["--PICS /root/boolean-state-configuration.pics", "--hex-arg PIXIT.BOOLCFG.TEST_EVENT_TRIGGER_KEY:000102030405060708090a0b0c0d0e0f"]
},
{
"name": "BooleanStateConfiguration suppress active alarms on ContactSensor",
"test": "TC_BOOLCFG_5_2.py",
"endpoint": 701,
"args": ["--PICS /root/boolean-state-configuration.pics", "--hex-arg PIXIT.BOOLCFG.TEST_EVENT_TRIGGER_KEY:000102030405060708090a0b0c0d0e0f"]
},
{
"name": "BooleanStateConfiguration sensor fault on ContactSensor",
"test": "TC_BOOLCFG_6_1.py",
"endpoint": 701,
"args": ["--PICS /root/boolean-state-configuration.pics", "--app-pipe /tmp/matterbridge-chip-test-app-pipe"]
},
{
"name": "Identify attributes on ContactSensor",
"test": "Test_TC_I_2_1",
"endpoint": 701,
"args": ["--PICS /root/identify.pics"]
},
{
"name": "Identify primary functionality on ContactSensor",
"test": "Test_TC_I_2_2",
"endpoint": 701,
"args": ["--PICS /root/identify.pics"]
},
{
"name": "Identify trigger effect on ContactSensor",
"test": "Test_TC_I_2_3",
"endpoint": 701,
"args": ["--PICS /root/identify.pics"]
},
{
"name": "Identify reporting on ContactSensor",
"test": "TC_I_2_4.py",
"endpoint": 701,
"args": ["--PICS /root/identify.pics"]
},
{
"name": "BridgedDeviceBasicInformation attributes on ContactSensor",
"test": "TC_BRBINFO_2_1.py",
"endpoint": 701,
"args": ["--PICS /root/matterbridge.pics"]
},
{
"name": "BridgedDeviceBasicInformation events on ContactSensor",
"test": "Test_TC_BRBINFO_2_2",
"endpoint": 701,
"args": ["--PICS /root/matterbridge.pics"],
"skip": true,
"comment": "Every step in this YAML is disabled:true (manual verification procedure, no automated assertions)."
},
{
"name": "BridgedDeviceBasicInformation ProductAppearance on ContactSensor",
"test": "TC_BRBINFO_3_1.py",
"endpoint": 701,
"args": ["--PICS /root/matterbridge.pics"],
"skip": true,
"comment": "Gated by @run_if_endpoint_matches(has_attribute(ProductAppearance)); Matterbridge does not implement ProductAppearance on BridgedDeviceBasicInformation (BRBINFO.S.A0014=0 in matterbridge.pics), so it always skips."
},
{
"name": "BridgedDeviceBasicInformation configuration version on ContactSensor",
"test": "TC_BRBINFO_3_2.py",
"endpoint": 701,
"args": ["--PICS /root/matterbridge.pics", "--app-pipe /tmp/matterbridge-chip-test-app-pipe"]
},
{
"name": "BridgedDeviceBasicInformation KeepActive on ContactSensor",
"test": "TC_BRBINFO_4_1.py",
"endpoint": 701,
"args": ["--PICS /root/matterbridge.pics"],
"skip": true,
"comment": "Requires the Bridged ICD Support feature, KeepActive command, ActiveChanged event, and an external TH_ICD_SERVER/Fabric Sync app; Matterbridge does not implement BIS (BRBINFO.S.C80.Rsp=0 and BRBINFO.S.E80=0 in matterbridge.pics)."
},
{
"name": "IlluminanceMeasurement attributes on LightSensor",
"test": "Test_TC_ILL_2_1",
"endpoint": 702,
"args": ["--PICS /root/illuminance-measurement.pics"]
},
{
"name": "IlluminanceMeasurement primary functionality on LightSensor",
"test": "Test_TC_ILL_2_2",
"endpoint": 702,
"args": ["--PICS /root/illuminance-measurement.pics"]
},
{
"name": "OccupancySensing attributes on OccupancySensor",
"test": "TC_OCC_2_1.py",
"endpoint": 703,
"args": ["--PICS /root/occupancy-sensing.pics"]
},
{
"name": "OccupancySensing type interdependency on OccupancySensor",
"test": "TC_OCC_2_2.py",
"endpoint": 703,
"args": ["--PICS /root/occupancy-sensing.pics"]
},
{
"name": "OccupancySensing hold time compatibility on OccupancySensor",
"test": "TC_OCC_2_3.py",
"endpoint": 703,
"args": ["--PICS /root/occupancy-sensing.pics"]
},
{
"name": "OccupancySensing primary functionality on OccupancySensor",
"test": "TC_OCC_3_1.py",
"endpoint": 703,
"args": ["--PICS /root/occupancy-sensing.pics", "--app-pipe /tmp/matterbridge-chip-test-app-pipe", "--bool-arg simulate_occupancy:true"]
},
{
"name": "OccupancySensing subscription reports on OccupancySensor",
"test": "TC_OCC_3_2.py",
"endpoint": 703,
"args": ["--PICS /root/occupancy-sensing.pics", "--app-pipe /tmp/matterbridge-chip-test-app-pipe", "--bool-arg simulate_occupancy:true"]
},
{
"name": "TemperatureMeasurement attributes on TemperatureSensor",
"test": "TC_TMP_2_1.py",
"endpoint": 704,
"args": ["--PICS /root/temperature-measurement.pics"]
},
{
"name": "TemperatureMeasurement primary functionality on TemperatureSensor",
"test": "Test_TC_TMP_2_2",
"endpoint": 704,
"args": ["--PICS /root/temperature-measurement.pics"]
},
{
"name": "PressureMeasurement attributes on PressureSensor",
"test": "Test_TC_PRS_2_1",
"endpoint": 705,
"args": ["--PICS /root/pressure-measurement.pics"]
},
{
"name": "PressureMeasurement primary functionality on PressureSensor",
"test": "Test_TC_PRS_2_2",
"endpoint": 705,
"args": ["--PICS /root/pressure-measurement.pics"]
},
{
"name": "FlowMeasurement attributes on FlowSensor",
"test": "Test_TC_FLW_2_1",
"endpoint": 706,
"args": ["--PICS /root/flow-measurement.pics"]
},
{
"name": "FlowMeasurement primary functionality on FlowSensor",
"test": "Test_TC_FLW_2_2",
"endpoint": 706,
"args": ["--PICS /root/flow-measurement.pics"]
},
{
"name": "RelativeHumidityMeasurement attributes on HumiditySensor",
"test": "Test_TC_RH_2_1",
"endpoint": 707,
"args": ["--PICS /root/relative-humidity-measurement.pics"]
},
{
"name": "RelativeHumidityMeasurement primary functionality on HumiditySensor",
"test": "Test_TC_RH_2_2",
"endpoint": 707,
"args": ["--PICS /root/relative-humidity-measurement.pics"]
},
{
"name": "Binding node binding manual verification on OnOffSensor",
"test": "Test_TC_BIND_2_1",
"endpoint": 708,
"skip": true,
"comment": "Every step in this YAML is disabled:true. It is a DUT-Controller Binding client manual verification flow with external controlee nodes, not an automated server assertion on endpoint 708."
},
{
"name": "Binding group binding manual verification on OnOffSensor",
"test": "Test_TC_BIND_2_2",
"endpoint": 708,
"skip": true,
"comment": "Every step in this YAML is disabled:true. It is a DUT-Controller Binding client and GroupKeyManagement manual verification flow with external controlee nodes, not an automated server assertion on endpoint 708."
},
{
"name": "Binding group settings manual verification on OnOffSensor",
"test": "Test_TC_BIND_2_3",
"endpoint": 708,
"skip": true,
"comment": "Every step in this YAML is disabled:true. It is a DUT-Controller Binding client manual verification flow with external controlee nodes, not an automated server assertion on endpoint 708."
},
{
"name": "SmokeCOAlarm attributes on SmokeCOAlarm",
"test": "Test_TC_SMOKECO_2_1",
"endpoint": 709,
"args": ["--PICS /root/smoke-co-alarm.pics"]
},
{
"name": "SmokeCOAlarm smoke primary functionality on SmokeCOAlarm",
"test": "Test_TC_SMOKECO_2_2",
"endpoint": 709,
"args": ["--PICS /root/smoke-co-alarm.pics"]
},
{
"name": "SmokeCOAlarm CO primary functionality on SmokeCOAlarm",
"test": "Test_TC_SMOKECO_2_3",
"endpoint": 709,
"args": ["--PICS /root/smoke-co-alarm.pics"]
},
{
"name": "SmokeCOAlarm mandatory secondary functionality on SmokeCOAlarm",
"test": "Test_TC_SMOKECO_2_4",
"endpoint": 709,
"args": ["--PICS /root/smoke-co-alarm.pics"]
},
{
"name": "SmokeCOAlarm optional secondary functionality on SmokeCOAlarm",
"test": "Test_TC_SMOKECO_2_5",
"endpoint": 709,
"args": ["--PICS /root/smoke-co-alarm.pics"]
},
{
"name": "SmokeCOAlarm expressed state with multiple alarms on SmokeCOAlarm",
"test": "Test_TC_SMOKECO_2_6",
"endpoint": 709,
"args": [
"--PICS /root/smoke-co-alarm.pics",
"--HIEST_PRI_ALARM_2 ExpressedStateEnum.BatteryAlert",
"--HIEST_PRI_ALARM_3 ExpressedStateEnum.BatteryAlert",
"--HIEST_PRI_ALARM_4 ExpressedStateEnum.BatteryAlert"
],
"comment": "The YAML's default HIEST_PRI_ALARM_2/3/4 (InterconnectSmoke=7) assume InterconnectSmokeAlarm/InterconnectCOAlarm attribute support (SMOKECO.S.A0008/A0009), which Matterbridge does not implement. Per spec 2.11.6.1, ExpressedState priority ordering is manufacturer-defined, so these are overridden to match Matterbridge's own priority order (smokeState > batteryAlert > coState, see getSmokeCoAlarmExpressedState in chipTest.ts)."
},
{
"name": "SmokeCOAlarm attributes on Smoke-only SmokeCOAlarm",
"test": "Test_TC_SMOKECO_2_1",
"endpoint": 7091,
"args": ["--PICS /root/smoke-co-alarm-smoke-only.pics"]
},
{
"name": "SmokeCOAlarm smoke primary functionality on Smoke-only SmokeCOAlarm",
"test": "Test_TC_SMOKECO_2_2",
"endpoint": 7091,
"args": ["--PICS /root/smoke-co-alarm-smoke-only.pics"]
},
{
"name": "SmokeCOAlarm mandatory secondary functionality on Smoke-only SmokeCOAlarm",
"test": "Test_TC_SMOKECO_2_4",
"endpoint": 7091,
"args": ["--PICS /root/smoke-co-alarm-smoke-only.pics"]
},
{
"name": "SmokeCOAlarm attributes on CO-only SmokeCOAlarm",
"test": "Test_TC_SMOKECO_2_1",
"endpoint": 7092,
"args": ["--PICS /root/smoke-co-alarm-co-only.pics"]
},
{
"name": "SmokeCOAlarm CO primary functionality on CO-only SmokeCOAlarm",
"test": "Test_TC_SMOKECO_2_3",
"endpoint": 7092,
"args": ["--PICS /root/smoke-co-alarm-co-only.pics"]
},
{
"name": "SmokeCOAlarm mandatory secondary functionality on CO-only SmokeCOAlarm",
"test": "Test_TC_SMOKECO_2_4",
"endpoint": 7092,
"args": ["--PICS /root/smoke-co-alarm-co-only.pics"]
},
{
"name": "AirQuality attributes on AirQualitySensor",
"test": "Test_TC_AIRQUAL_2_1",
"endpoint": 710,
"args": ["--PICS /root/air-quality.pics"]
},
{
"name": "TotalVolatileOrganicCompoundsConcentrationMeasurement attributes on AirQualitySensor",
"test": "Test_TC_TVOCCONC_2_1",
"endpoint": 710,
"args": ["--PICS /root/tvoc-concentration-measurement.pics"]
},
{
"name": "SoilMeasurement attributes on SoilSensor",
"test": "TC_SOIL_2_1.py",
"endpoint": 714,
"args": ["--PICS /root/soil-measurement.pics"]
},
{
"name": "SoilMeasurement primary functionality on SoilSensor",
"test": "TC_SOIL_2_2.py",
"endpoint": 714,
"args": ["--PICS /root/soil-measurement.pics", "--app-pipe /tmp/matterbridge-chip-test-app-pipe"]
},
{
"name": "FanControl mandatory functionality on Fan Complete",
"test": "TC_FAN_2_1.py",
"endpoint": 9024,
"args": ["--PICS /root/fan-control-complete.pics"]
},
{
"name": "FanControl optional speed attributes on Fan Complete",
"test": "Test_TC_FAN_2_2",
"endpoint": 9024,
"args": ["--PICS /root/fan-control-complete.pics"]
},
{
"name": "FanControl optional rock attributes on Fan Complete",
"test": "TC_FAN_2_3.py",
"endpoint": 9024,
"args": ["--PICS /root/fan-control-complete.pics"]
},
{
"name": "FanControl optional wind attributes on Fan Complete",
"test": "TC_FAN_2_4.py",
"endpoint": 9024,
"args": ["--PICS /root/fan-control-complete.pics"]
},
{
"name": "FanControl optional direction attributes on Fan Complete",
"test": "Test_TC_FAN_2_5",
"endpoint": 9024,
"args": ["--PICS /root/fan-control-complete.pics"]
},
{
"name": "FanControl mandatory functionality with PercentSetting/FanMode ordering on Fan Complete",
"test": "TC_FAN_3_1.py",
"endpoint": 9024,
"args": ["--PICS /root/fan-control-complete.pics"]
},
{
"name": "FanControl optional speed functionality on Fan Complete",
"test": "TC_FAN_3_2.py",
"endpoint": 9024,
"args": ["--PICS /root/fan-control-complete.pics"]
},
{
"name": "FanControl optional rock functionality on Fan Complete",
"test": "TC_FAN_3_3.py",
"endpoint": 9024,
"args": ["--PICS /root/fan-control-complete.pics"]
},
{
"name": "FanControl optional wind functionality on Fan Complete",
"test": "TC_FAN_3_4.py",
"endpoint": 9024,
"args": ["--PICS /root/fan-control-complete.pics"]
},
{
"name": "FanControl Step command functionality on Fan Complete",
"test": "TC_FAN_3_5.py",
"endpoint": 9024,
"args": ["--PICS /root/fan-control-complete.pics"]
},
{
"name": "FanControl optional direction functionality on Fan Complete",
"test": "Test_TC_FAN_3_6",
"endpoint": 9024,
"args": ["--PICS /root/fan-control-complete.pics"]
},
{
"name": "FanControl interaction with On/Off cluster on Fan Complete",
"test": "TC_FAN_4_1.py",
"endpoint": 9024,
"args": ["--PICS /root/fan-control-complete.pics"],
"comment": "Self-skips: gated by @run_if_endpoint_matches(has_cluster(FanControl) and has_cluster(OnOff)); the Fan device type's On/Off cluster is optionalConform and endpoint 9024 does not add it (createCompleteFanControlClusterServer() only creates the FanControl cluster server)."
},
{
"name": "HepaFilterMonitoring attributes on AirPurifier",
"test": "Test_TC_HEPAFREMON_2_1",
"endpoint": 903,
"args": ["--PICS /root/hepa-filter-monitoring.pics"]
},
{
"name": "ActivatedCarbonFilterMonitoring attributes on AirPurifier",
"test": "Test_TC_ACFREMON_2_1",
"endpoint": 903,
"args": ["--PICS /root/activated-carbon-filter-monitoring.pics"]
},
{
"name": "OnOff attributes on OnOffLight",
"test": "Test_TC_OO_2_1",
"endpoint": 401,
"args": ["--PICS /root/on-off.pics"]
},
{
"name": "OnOff primary functionality on OnOffLight",
"test": "Test_TC_OO_2_2",
"endpoint": 401,
"args": ["--PICS /root/on-off.pics"]
},
{
"name": "OnOff secondary (Lighting) functionality on OnOffLight",
"test": "Test_TC_OO_2_3",
"endpoint": 401,
"args": ["--PICS /root/on-off.pics"],
"comment": "Upstream test's exact-zero OffWaitTime assertions were timing-fragile, not a Matterbridge bug (see chipTests.md Known Issues): this ~2-minute test drives matter.js's own native OnTime/OffWaitTime countdown timer through several exact-second WaitForMs delays, then asserted OffWaitTime had reached exactly 0 -- reproduced twice, failing at a different residual value each time (1, then 2) after a 30-40s wait, consistent with a couple seconds of accumulated container/round-trip latency narrowly missing a zero-margin assumption. Patched locally (docker/chip-test/patches/Test_TC_OO_2_3.yaml, see chip-tests instructions §12) to give those 3 post-wait checks the same small-margin tolerance (2 * PIXIT.OO.MaxCommunicationTurnaround) the file's own other near-zero/near-max checks already use."
},
{
"name": "OnOff startup functionality on OnOffLight",
"test": "Test_TC_OO_2_4",
"endpoint": 401,
"args": ["--PICS /root/on-off.pics"],
"skip": true,
"comment": "Requires 3 real DUT reboots (StartUpOnOff=0/1/2) with the OnOff value re-verified after each one actually restarts Matterbridge; this harness's single spawned test process with pre-piped stdin can't synchronize a real 'docker restart' with the test pausing at its UserPrompt step, so the assertion would be checked against a device that never actually rebooted."
},
{
"name": "OnOff scenes management interaction on OnOffLight",
"test": "TC_OO_2_7.py",
"endpoint": 401,
"args": ["--PICS /root/on-off.pics"]
},
{
"name": "OnOff OffOnly feature on OnOffLight",
"test": "Test_TC_OO_2_6",
"endpoint": 401,
"args": ["--PICS /root/on-off.pics"],
"skip": true,
"comment": "Requires OO.S.F02 (OffOnly), mutually exclusive with the OO.S.F00 (Lighting) feature createDefaultOnOffClusterServer() actually enables on OnOffLight — permanently inapplicable given this device's feature set, not a PICS omission to fix."
},
{
"name": "OnOff functionality with client as DUT on OnOffLight",
"test": "Test_TC_OO_3_2_Simulated",
"endpoint": 401,
"args": ["--PICS /root/on-off.pics"],
"skip": true,
"comment": "Requires OO.C: the DUT itself must issue On/Off/Toggle/OffWithEffect/OnWithRecallGlobalScene/OnWithTimedOff commands to the TH. Matterbridge only ever exposes an OnOff cluster server for bridged devices, never acts as an OnOff client sending commands to a controller — permanently inapplicable."
},
{
"name": "Groups attributes on OnOffLight",
"test": "Test_TC_G_2_1",
"endpoint": 401,
"args": ["--PICS /root/groups.pics"]
},
{
"name": "Groups AddGroup, ViewGroup, RemoveGroup, RemoveAllGroups commands on OnOffLight",
"test": "TC_G_2_2.py",
"endpoint": 401,
"args": ["--PICS /root/groups.pics"]
},
{
"name": "Groups GetGroupMembership, AddGroupIfIdentifying manual verification on OnOffLight",
"test": "Test_TC_G_2_3",
"endpoint": 401,
"args": ["--PICS /root/groups.pics"],
"skip": true,
"comment": "Every step in this YAML is disabled:true (manual verification procedure, no automated assertions)."
},
{
"name": "Groups AddGroup with same GroupID on multiple endpoints on OnOffLight and DimmableLight",
"test": "Test_TC_G_2_4",
"endpoint": 401,
"args": ["--PICS /root/groups.pics"],
"comment": "Patched locally (docker/chip-test/patches/Test_TC_G_2_4.yaml, see chip-tests instructions §12) to fix its Step 6 GroupTable read (missing a '&& !G.S.F00' PICS guard, so it wrongly ran and failed alongside the F00-gated Step 7 duplicate whenever GroupNames is supported) and to pin PIXIT.G.ENDPOINT1/ENDPOINT2 to real Groups-server endpoints 401/402 in the YAML's own config defaults instead of via CLI overrides, since chiptool.py's generic PIXIT override path stores CLI values as raw strings with no int coercion and that broke the response's integer Endpoints array comparison."
},
{
"name": "Groups cluster commands with client as DUT",
"test": "Test_TC_G_3_2",
"endpoint": 401,
"args": ["--PICS /root/groups.pics"],
"skip": true,
"comment": "Requires G.C: the DUT itself must issue AddGroup/ViewGroup/RemoveGroup/... commands to the TH as a Groups client, and every step in this YAML is disabled:true (manual verification flow). Matterbridge only ever exposes a Groups cluster server for bridged devices, never acts as a client — permanently inapplicable."
},
{
"name": "LevelControl attributes on DimmableLight",
"test": "Test_TC_LVL_2_1",
"endpoint": 402,
"args": ["--PICS /root/level-control.pics"]
},
{
"name": "LevelControl attributes are writable on DimmableLight",
"test": "Test_TC_LVL_2_2",
"endpoint": 402,
"args": ["--PICS /root/level-control.pics"],
"resetBefore": true,
"comment": "Writes OnLevel/StartUpCurrentLevel to fixed config values (e.g. OnLevel=5) and asserts the written value differs from the value it just read — fails on a second run against a container that already has those same values persisted from a previous run of this same test. resetBefore clears the persisted LevelControl storage for DimmableLight first."
},
{
"name": "LevelControl RemainingTime functionality on DimmableLight",
"test": "TC_LVL_2_3.py",
"endpoint": 402,
"args": ["--PICS /root/level-control.pics"],
"skip": true,
"comment": "Asserts exactly 3 RemainingTime subscription reports (one per MoveToLevel with a non-zero transitionTime) and that the reported values track the transition in progress. matter.js's LevelControlServer default implementation (@matter/node, not Matterbridge code) always sets CurrentLevel to the target immediately and ignores transitionTime unless the behavior opts into `managedTransitionTimeHandling` (see LevelControlServer.js State.managedTransitionTimeHandling, default false, doc: 'The default implementation always set the target level immediately and so ignores all transition times requested or configured') — createDefaultLevelControlClusterServer() doesn't enable it, so RemainingTime never changes and 0 reports are received. Verified directly against the container: CurrentLevel jumps to the target level immediately regardless of transitionTime."
},
{
"name": "LevelControl MoveToLevel verification on DimmableLight",
"test": "Test_TC_LVL_3_1",
"endpoint": 402,