Skip to content

Commit a5c65ae

Browse files
Prevent invalid flash types in expect_flash command
1 parent 90252f1 commit a5c65ae

File tree

1 file changed

+24
-11
lines changed

1 file changed

+24
-11
lines changed

cypress/support/assertions/expect_alerts.js

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,39 @@ import { flashClassMap } from './assertion_constants';
33

44
/**
55
* 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).
77
* @param {string} [containsText] - Optional text that the flash-message should contain.
88
* @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');
912
*/
1013
Cypress.Commands.add(
1114
'expect_flash',
1215
(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');
1720

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;
2329
}
2430

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+
);
2639
}
2740
);
2841

0 commit comments

Comments
 (0)