@@ -3,26 +3,39 @@ import { flashClassMap } from './assertion_constants';
3
3
4
4
/**
5
5
* Custom Cypress command to validate flash messages.
6
- * @param {string } flashType - Type of flash (success, warning, error, info ).
6
+ * @param {string } flashType - Type of flash. Use values from flashClassMap (e.g., flashClassMap.success, flashClassMap. error).
7
7
* @param {string } [containsText] - Optional text that the flash-message should contain.
8
8
* @returns {Cypress.Chainable } - The flash-message element if found, or an assertion failure.
9
+ * @example
10
+ * cy.expect_flash(flashClassMap.success);
11
+ * cy.expect_flash(flashClassMap.error, 'failed');
9
12
*/
10
13
Cypress . Commands . add (
11
14
'expect_flash' ,
12
15
( flashType = flashClassMap . success , containsText ) => {
13
- const flashMessageClassName = flashClassMap [ flashType ] || flashClassMap . success ;
14
- const flashMessageElement = cy
15
- . get ( `#main_div #flash_msg_div .alert-${ flashMessageClassName } ` )
16
- . should ( 'be.visible' ) ;
16
+ if ( Object . values ( flashClassMap ) . includes ( flashType ) ) {
17
+ const flashMessageElement = cy
18
+ . get ( `#main_div #flash_msg_div .alert-${ flashType } ` )
19
+ . should ( 'be.visible' ) ;
17
20
18
- if ( containsText ) {
19
- return flashMessageElement . should ( ( $el ) => {
20
- const actualText = $el . text ( ) . toLowerCase ( ) ;
21
- expect ( actualText ) . to . include ( containsText . toLowerCase ( ) ) ;
22
- } ) ;
21
+ if ( containsText ) {
22
+ return flashMessageElement . should ( ( flash ) => {
23
+ const actualText = flash . text ( ) . toLowerCase ( ) ;
24
+ expect ( actualText ) . to . include ( containsText . toLowerCase ( ) ) ;
25
+ } ) ;
26
+ }
27
+
28
+ return flashMessageElement ;
23
29
}
24
30
25
- return flashMessageElement ;
31
+ // If an invalid flash type is passed, throw an error
32
+ cy . logAndThrowError (
33
+ `Invalid flash type: "${ flashType } ". Valid flash types are: ${ Object . values (
34
+ flashClassMap
35
+ ) . join (
36
+ ', '
37
+ ) } . It is recommended to use flashClassMap values (e.g., flashClassMap.error, flashClassMap.success) to pass flash types.`
38
+ ) ;
26
39
}
27
40
) ;
28
41
0 commit comments