Skip to content

Commit fdc7528

Browse files
Copilotrenemadsen
andcommitted
Add Cypress tests for Application Settings (login page and site header)
Co-authored-by: renemadsen <[email protected]>
1 parent 6b12c3a commit fdc7528

File tree

3 files changed

+264
-0
lines changed

3 files changed

+264
-0
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import { Navbar } from './Navbar.page';
2+
3+
export class ApplicationSettings {
4+
public Navbar = new Navbar();
5+
6+
// Save button
7+
getSaveBtn() {
8+
return cy.get('#applicationSettingsSaveBtn');
9+
}
10+
11+
save() {
12+
this.getSaveBtn().should('be.visible').click();
13+
cy.wait(500);
14+
cy.get('#spinner-animation').should('not.exist');
15+
}
16+
17+
// Site header elements
18+
getSiteHeaderMainText() {
19+
return cy.get('#main-header-text');
20+
}
21+
22+
getSiteHeaderSecondaryText() {
23+
return cy.get('#secondary-header-text');
24+
}
25+
26+
getSiteHeaderImage() {
27+
return cy.get('#site-header-image');
28+
}
29+
30+
// Login Page Settings
31+
LoginPage = {
32+
getMainTextInput: () => cy.get('#mainTextLoginPage'),
33+
getSecondaryTextInput: () => cy.get('#secondaryTextLoginPage'),
34+
getImageUploadBtn: () => cy.get('#loginPageImageUploadBtn'),
35+
getMainTextVisibilityToggleBtn: () => cy.get('#loginPageMainTextVisibilityToggler'),
36+
getSecondaryTextVisibilityToggleBtn: () => cy.get('#loginPageSecondaryTextVisibilityToggler'),
37+
getImageVisibilityToggler: () => cy.get('#loginPageImageVisibilityToggler'),
38+
getResetBtn: () => cy.get('#loginPageReset'),
39+
40+
reset: () => {
41+
cy.get('#loginPageReset').should('be.visible').should('be.enabled').click();
42+
cy.get('#spinner-animation').should('not.exist');
43+
}
44+
};
45+
46+
// Site Header Settings
47+
SiteHeader = {
48+
getMainTextInput: () => cy.get('#headerSettingsMainText'),
49+
getSecondaryTextInput: () => cy.get('#headerSettingsSecondaryText'),
50+
getImageUploadBtn: () => cy.get('#siteHeaderUploadBtn'),
51+
getMainTextVisibilityToggleBtn: () => cy.get('#siteHeaderMainTextToggler'),
52+
getSecondaryTextVisibilityToggleBtn: () => cy.get('#siteHeaderSecondaryTextToggler'),
53+
getImageVisibilityToggler: () => cy.get('#siteHeaderImageVisibilityToggler'),
54+
getResetBtn: () => cy.get('#siteHeaderReset'),
55+
56+
reset: () => {
57+
cy.get('#siteHeaderReset').should('be.visible').should('be.enabled').click();
58+
cy.get('#spinner-animation').should('not.exist');
59+
}
60+
};
61+
}
62+
63+
const applicationSettingsPage = new ApplicationSettings();
64+
export default applicationSettingsPage;
Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
import loginPage from '../Login.page';
2+
import applicationSettingsPage from '../ApplicationSettings.page';
3+
4+
const applicationSettingsConstants = {
5+
LoginPage: {
6+
originalMainText: 'eForm Backend',
7+
customMainText: 'Custom login page main text',
8+
originalSecondaryText: 'No more paper-forms and back-office data entry',
9+
customSecondaryText: 'Custom login page secondary text'
10+
}
11+
};
12+
13+
describe('Application settings - Login page section', () => {
14+
before(() => {
15+
cy.visit('http://localhost:4200');
16+
loginPage.login();
17+
});
18+
19+
it('should change main text', () => {
20+
applicationSettingsPage.Navbar.goToApplicationSettings();
21+
22+
// Wait for login page settings to be visible
23+
applicationSettingsPage.LoginPage.getMainTextInput().should('be.visible', { timeout: 240000 });
24+
25+
// Set custom main text
26+
applicationSettingsPage.LoginPage.getMainTextInput()
27+
.clear()
28+
.type(applicationSettingsConstants.LoginPage.customMainText);
29+
30+
// Save settings
31+
cy.get('#sign-out-dropdown').should('be.visible', { timeout: 40000 });
32+
applicationSettingsPage.save();
33+
34+
// Logout to see changes
35+
cy.get('#sign-out-dropdown').should('be.visible', { timeout: 40000 });
36+
applicationSettingsPage.Navbar.logout();
37+
38+
// Verify main text changed on login page
39+
loginPage.getUsernameInput().should('be.visible', { timeout: 40000 });
40+
loginPage.getLoginButton().should('be.visible');
41+
loginPage.getMainText().should('have.text', applicationSettingsConstants.LoginPage.customMainText);
42+
});
43+
44+
it('should change secondary text', () => {
45+
loginPage.login();
46+
applicationSettingsPage.Navbar.goToApplicationSettings();
47+
48+
// Wait for login page settings to be visible
49+
applicationSettingsPage.LoginPage.getSecondaryTextInput().should('be.visible', { timeout: 240000 });
50+
51+
// Set custom secondary text
52+
applicationSettingsPage.LoginPage.getSecondaryTextInput()
53+
.clear()
54+
.type(applicationSettingsConstants.LoginPage.customSecondaryText);
55+
56+
// Save settings
57+
cy.get('#sign-out-dropdown').should('be.visible', { timeout: 40000 });
58+
applicationSettingsPage.save();
59+
60+
// Logout to see changes
61+
cy.get('#sign-out-dropdown').should('be.visible', { timeout: 40000 });
62+
applicationSettingsPage.Navbar.logout();
63+
64+
// Verify secondary text changed on login page
65+
loginPage.getUsernameInput().should('be.visible', { timeout: 40000 });
66+
loginPage.getLoginButton().should('be.visible');
67+
loginPage.getSecondaryText().should('have.text', applicationSettingsConstants.LoginPage.customSecondaryText);
68+
});
69+
70+
it('should hide main text', () => {
71+
loginPage.login();
72+
applicationSettingsPage.Navbar.goToApplicationSettings();
73+
74+
// Wait for login page settings to be visible
75+
applicationSettingsPage.LoginPage.getMainTextVisibilityToggleBtn().should('be.visible', { timeout: 240000 });
76+
77+
// Toggle main text visibility
78+
applicationSettingsPage.LoginPage.getMainTextVisibilityToggleBtn().click();
79+
80+
// Save settings
81+
cy.get('#sign-out-dropdown').should('be.visible', { timeout: 40000 });
82+
applicationSettingsPage.save();
83+
84+
// Logout to see changes
85+
cy.get('#sign-out-dropdown').should('be.visible', { timeout: 40000 });
86+
applicationSettingsPage.Navbar.logout();
87+
88+
// Verify main text is hidden on login page
89+
loginPage.getUsernameInput().should('be.visible', { timeout: 40000 });
90+
loginPage.getLoginButton().should('be.visible');
91+
loginPage.getMainText().should('not.be.visible');
92+
});
93+
94+
it('should hide secondary text', () => {
95+
loginPage.login();
96+
applicationSettingsPage.Navbar.goToApplicationSettings();
97+
98+
// Wait for login page settings to be visible
99+
applicationSettingsPage.LoginPage.getSecondaryTextVisibilityToggleBtn().should('be.visible', { timeout: 240000 });
100+
101+
// Toggle secondary text visibility
102+
applicationSettingsPage.LoginPage.getSecondaryTextVisibilityToggleBtn().click();
103+
104+
// Save settings
105+
cy.get('#sign-out-dropdown').should('be.visible', { timeout: 40000 });
106+
applicationSettingsPage.save();
107+
108+
// Logout to see changes
109+
cy.get('#sign-out-dropdown').should('be.visible', { timeout: 40000 });
110+
applicationSettingsPage.Navbar.logout();
111+
112+
// Verify secondary text is hidden on login page
113+
loginPage.getUsernameInput().should('be.visible', { timeout: 40000 });
114+
loginPage.getLoginButton().should('be.visible');
115+
loginPage.getSecondaryText().should('not.be.visible');
116+
});
117+
118+
it('should hide image', () => {
119+
loginPage.login();
120+
applicationSettingsPage.Navbar.goToApplicationSettings();
121+
122+
// Wait for login page settings to be visible
123+
applicationSettingsPage.LoginPage.getImageVisibilityToggler().should('be.visible', { timeout: 240000 });
124+
125+
// Toggle image visibility
126+
applicationSettingsPage.LoginPage.getImageVisibilityToggler().click();
127+
128+
// Save settings
129+
cy.get('#sign-out-dropdown').should('be.visible', { timeout: 40000 });
130+
applicationSettingsPage.save();
131+
132+
// Logout to see changes
133+
cy.get('#sign-out-dropdown').should('be.visible', { timeout: 40000 });
134+
cy.wait(1000);
135+
applicationSettingsPage.Navbar.logout();
136+
137+
// Verify image is hidden on login page
138+
loginPage.getLoginButton().should('be.visible');
139+
loginPage.getImage().should('not.be.visible');
140+
});
141+
142+
it('should reset main text', () => {
143+
loginPage.login();
144+
applicationSettingsPage.Navbar.goToApplicationSettings();
145+
146+
// Wait for site header settings to be visible (after reset, we're on the settings page)
147+
applicationSettingsPage.SiteHeader.getMainTextInput().should('be.visible', { timeout: 240000 });
148+
149+
// Reset login page settings
150+
applicationSettingsPage.LoginPage.reset();
151+
152+
// Wait for settings to be visible again
153+
applicationSettingsPage.SiteHeader.getMainTextInput().should('be.visible', { timeout: 240000 });
154+
155+
// Logout to verify reset
156+
applicationSettingsPage.Navbar.logout();
157+
158+
// Verify main text is reset to original on login page
159+
loginPage.getLoginButton().should('be.visible');
160+
loginPage.getMainText().should('have.text', applicationSettingsConstants.LoginPage.originalMainText);
161+
});
162+
});
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import loginPage from '../Login.page';
2+
import applicationSettingsPage from '../ApplicationSettings.page';
3+
4+
describe('Application settings - Site header section', () => {
5+
before(() => {
6+
cy.visit('http://localhost:4200');
7+
loginPage.login();
8+
});
9+
10+
it('should hide image', () => {
11+
applicationSettingsPage.Navbar.goToApplicationSettings();
12+
13+
// Wait for spinner to disappear
14+
cy.get('#spinner-animation').should('not.exist');
15+
16+
// Wait for sign-out dropdown to be visible
17+
cy.get('#sign-out-dropdown').should('be.visible', { timeout: 40000 });
18+
19+
// Toggle site header image visibility
20+
applicationSettingsPage.SiteHeader.getImageVisibilityToggler().should('be.visible').click();
21+
22+
// Save settings
23+
applicationSettingsPage.save();
24+
25+
// Wait for save to complete
26+
cy.get('#sign-out-dropdown').should('be.visible', { timeout: 40000 });
27+
28+
// Navigate to application settings page to refresh
29+
cy.visit('http://localhost:4200/application-settings');
30+
cy.get('#sign-out-dropdown').should('be.visible', { timeout: 40000 });
31+
32+
// Navigate to home page to see changes
33+
cy.visit('http://localhost:4200/');
34+
35+
// Verify image is hidden in site header
36+
applicationSettingsPage.getSiteHeaderImage().should('not.be.visible');
37+
});
38+
});

0 commit comments

Comments
 (0)