92 行
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			92 行
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | // Test suite for new account alerts within the application
 | ||
|  | describe("New account alerts", () => { | ||
|  | 	// Before each test, perform login operation. Assumes cy.login() is a custom command.
 | ||
|  | 	beforeEach(() => { | ||
|  | 		cy.login(); | ||
|  | 	}); | ||
|  | 
 | ||
|  | 	// Alert messages expected to be seen by brand new accounts
 | ||
|  | 	const locationsAlertMessage = | ||
|  | 		"You have no station locations. Go here to create it!"; | ||
|  | 	const logbookAlertMessage = | ||
|  | 		"You have no station logbook. Go here to create it!"; | ||
|  | 	const activeStationAlertMessage = | ||
|  | 		"Attention: you need to set an active station location."; | ||
|  | 	const noQSOAlertMessage = | ||
|  | 		"You have made no QSOs today; time to turn on the radio!"; | ||
|  | 
 | ||
|  | 	// Test to verify the locations alert message and its link
 | ||
|  | 	it(`should show a "${locationsAlertMessage}" alert with a valid link to create it`, () => { | ||
|  | 		// Verify alert visibility and class for urgency
 | ||
|  | 		cy.get("body") | ||
|  | 			.contains(locationsAlertMessage) | ||
|  | 			.should("be.visible") | ||
|  | 			.and("have.class", "alert-danger"); | ||
|  | 
 | ||
|  | 		// Validate the hyperlink's destination within the alert
 | ||
|  | 		cy.contains(locationsAlertMessage).within(() => { | ||
|  | 			cy.get("a") | ||
|  | 				.contains("here") | ||
|  | 				.should("have.attr", "href") | ||
|  | 				.and("equal", "http://localhost/index.php/station"); | ||
|  | 		}); | ||
|  | 	}); | ||
|  | 
 | ||
|  | 	// Test navigation to the station creation page via the alert link
 | ||
|  | 	it("should navigate to the station creation page after clicking the link in the alert", () => { | ||
|  | 		// Trigger click on the link within the alert message
 | ||
|  | 		cy.contains(locationsAlertMessage).within(() => { | ||
|  | 			cy.get("a").contains("here").click(); | ||
|  | 		}); | ||
|  | 
 | ||
|  | 		// Assert the correct page has been loaded by checking the URL
 | ||
|  | 		cy.url().should("include", "/station"); | ||
|  | 	}); | ||
|  | 
 | ||
|  | 	// Test to verify the logbook alert message and its link
 | ||
|  | 	it(`should show a "${logbookAlertMessage}" alert with a valid link to create it`, () => { | ||
|  | 		// Verify alert visibility and class for urgency
 | ||
|  | 		cy.get("body") | ||
|  | 			.contains(logbookAlertMessage) | ||
|  | 			.should("be.visible") | ||
|  | 			.and("have.class", "alert-danger"); | ||
|  | 
 | ||
|  | 		// Validate the hyperlink's destination within the alert
 | ||
|  | 		cy.contains(logbookAlertMessage).within(() => { | ||
|  | 			cy.get("a") | ||
|  | 				.contains("here") | ||
|  | 				.should("have.attr", "href") | ||
|  | 				.and("equal", "http://localhost/index.php/logbooks"); | ||
|  | 		}); | ||
|  | 	}); | ||
|  | 
 | ||
|  | 	// Test navigation to the logbook creation page via the alert link
 | ||
|  | 	it("should navigate to the logbook creation page after clicking the link in the alert", () => { | ||
|  | 		// Trigger click on the link within the alert message
 | ||
|  | 		cy.contains(logbookAlertMessage).within(() => { | ||
|  | 			cy.get("a").contains("here").click(); | ||
|  | 		}); | ||
|  | 
 | ||
|  | 		// Assert the correct page has been loaded by checking the URL
 | ||
|  | 		cy.url().should("include", "/logbooks"); | ||
|  | 	}); | ||
|  | 
 | ||
|  | 	// Test to verify the active station alert is properly displayed
 | ||
|  | 	it(`should display an "${activeStationAlertMessage}" alert`, () => { | ||
|  | 		// Verify alert visibility and class for urgency
 | ||
|  | 		cy.get("body") | ||
|  | 			.contains(activeStationAlertMessage) | ||
|  | 			.should("be.visible") | ||
|  | 			.and("have.class", "alert-danger"); | ||
|  | 	}); | ||
|  | 
 | ||
|  | 	// Test to verify the no QSO alert is properly displayed
 | ||
|  | 	it(`should display a "${noQSOAlertMessage}" alert`, () => { | ||
|  | 		// Verify alert visibility and class for importance
 | ||
|  | 		cy.get("body") | ||
|  | 			.contains(noQSOAlertMessage) | ||
|  | 			.should("be.visible") | ||
|  | 			.and("have.class", "alert-warning"); | ||
|  | 	}); | ||
|  | }); |