@@ -31,6 +31,8 @@ const YAMCS_API_URL = "http://localhost:8090/api/";
31
31
32
32
test . describe ( "Fault Management @yamcs" , ( ) => {
33
33
test . beforeAll ( "activate alarms on a telemetry point" , async ( ) => {
34
+ // Set the default alarms for the parameter in such a way
35
+ // that it is guaranteed to produce a fault on load.
34
36
const response = await setDefaultAlarms ( 'Latitude' , [
35
37
{
36
38
level : 'WATCH' ,
@@ -62,34 +64,46 @@ test.describe("Fault Management @yamcs", () => {
62
64
} ) ;
63
65
64
66
test . beforeEach ( async ( { page } ) => {
65
- await page . route ( '**/api/**/alarms' , async route => {
66
- const response = await route . fetch ( ) ;
67
- let body = await response . json ( ) ;
68
-
69
- // Modify the rawValue.floatValue to trigger a specific alarm
70
- body . alarms . forEach ( alarm => {
71
- if ( alarm . id . name === "Latitude" ) {
72
- alarm . parameterDetail . currentValue . rawValue . floatValue = 815 ; // Example value to trigger CRITICAL alarm
73
- alarm . parameterDetail . currentValue . engValue . floatValue = 815 ; // Example value to trigger CRITICAL alarm
74
- }
67
+
68
+ const networkPromise = page . waitForResponse ( '**/api/mdb/myproject/parameters**' ) ;
69
+
70
+ await page . goto ( './' , { waitUntil : 'domcontentloaded' } ) ;
71
+ await networkPromise ;
72
+ } ) ;
73
+
74
+ test ( 'Shows faults of differing severities ' , async ( { page } ) => {
75
+ await test . step ( 'Shows fault with severity WATCH' , async ( ) => {
76
+ await page . route ( '**/api/**/alarms' , async route => {
77
+ await modifyAlarmSeverity ( route , "Latitude" , 'WATCH' ) ;
75
78
} ) ;
76
79
77
- await route . fulfill ( {
78
- response,
79
- body : JSON . stringify ( body ) ,
80
- headers : {
81
- ...response . headers ( ) ,
82
- 'content-type' : 'application/json'
83
- }
80
+ await page . goto ( './' , { waitUntil : 'domcontentloaded' } ) ;
81
+
82
+ await page . getByLabel ( 'Navigate to Fault Management' ) . click ( ) ;
83
+ await expect ( page . getByLabel ( 'Fault Latitude with severity WATCH in /myproject' ) ) . toBeVisible ( ) ;
84
+ } ) ;
85
+
86
+ await test . step ( 'Shows fault with severity WARNING' , async ( ) => {
87
+ await page . route ( '**/api/**/alarms' , async route => {
88
+ await modifyAlarmSeverity ( route , "Latitude" , 'WARNING' ) ;
84
89
} ) ;
90
+
91
+ await page . goto ( './' , { waitUntil : 'domcontentloaded' } ) ;
92
+
93
+ await page . getByLabel ( 'Navigate to Fault Management' ) . click ( ) ;
94
+ await expect ( page . getByLabel ( 'Fault Latitude with severity WARNING in /myproject' ) ) . toBeVisible ( ) ;
85
95
} ) ;
86
- await page . goto ( './' , { waitUntil : 'domcontentloaded' } ) ;
87
- await page . waitForResponse ( '**/api/mdb/myproject/parameters**' ) ;
88
- } ) ;
89
96
90
- test ( 'Show faults ' , async ( { page } ) => {
91
- await page . getByLabel ( 'Navigate to Fault Management' ) . click ( ) ;
97
+ await test . step ( 'Shows fault with severity CRITICAL' , async ( ) => {
98
+ await page . route ( '**/api/**/alarms' , async route => {
99
+ await modifyAlarmSeverity ( route , "Latitude" , 'CRITICAL' ) ;
100
+ } ) ;
101
+
102
+ await page . goto ( './' , { waitUntil : 'domcontentloaded' } ) ;
92
103
104
+ await page . getByLabel ( 'Navigate to Fault Management' ) . click ( ) ;
105
+ await expect ( page . getByLabel ( 'Fault Latitude with severity CRITICAL in /myproject' ) ) . toBeVisible ( ) ;
106
+ } ) ;
93
107
} ) ;
94
108
95
109
test . afterAll ( "remove alarms from a telemetry point" , async ( ) => {
@@ -166,3 +180,24 @@ async function clearAlarms(parameter, instance = 'myproject', processor = 'realt
166
180
async function getAlarms ( instance = 'myproject' ) {
167
181
return fetch ( `${ YAMCS_API_URL } archive/${ instance } /alarms` ) ;
168
182
}
183
+
184
+ async function modifyAlarmSeverity ( route , alarmName , newSeverity ) {
185
+ const response = await route . fetch ( ) ;
186
+ let body = await response . json ( ) ;
187
+
188
+ // Modify the rawValue.floatValue to trigger a specific alarm
189
+ body . alarms . forEach ( alarm => {
190
+ if ( alarm . id . name === alarmName ) {
191
+ alarm . severity = newSeverity ;
192
+ }
193
+ } ) ;
194
+
195
+ await route . fulfill ( {
196
+ response,
197
+ body : JSON . stringify ( body ) ,
198
+ headers : {
199
+ ...response . headers ( ) ,
200
+ 'content-type' : 'application/json'
201
+ }
202
+ } ) ;
203
+ }
0 commit comments