trip-planner/tests/pages/DashboardPage.js

64 lines
1.5 KiB
JavaScript
Raw Normal View History

2025-09-27 00:23:19 +02:00
const BasePage = require('./BasePage');
class DashboardPage extends BasePage {
constructor(driver) {
super(driver);
// Selectors for the Dashboard component
this.selectors = {
dashboard: '.dashboard',
welcomeMessage: '.dashboard h2',
userInfo: '.user-info',
logoutButton: 'button[onclick*="logout"]'
};
}
async navigateToDashboard() {
await this.navigateTo('/dashboard');
await this.waitForDashboard();
}
async waitForDashboard() {
await this.utils.waitForElementVisible(this.selectors.dashboard);
}
async isDashboardDisplayed() {
return await this.isElementVisible(this.selectors.dashboard);
}
async getWelcomeMessage() {
try {
return await this.getElementText(this.selectors.welcomeMessage);
} catch (error) {
return null;
}
}
async getUserInfo() {
try {
return await this.getElementText(this.selectors.userInfo);
} catch (error) {
return null;
}
}
async logout() {
if (await this.isElementVisible(this.selectors.logoutButton)) {
await this.clickElement(this.selectors.logoutButton);
}
}
async waitForLogout() {
// Wait for redirect away from dashboard
await this.driver.wait(
async () => {
const currentUrl = await this.getCurrentUrl();
return !currentUrl.includes('/dashboard');
},
10000,
'Logout did not redirect within expected time'
);
}
}
module.exports = DashboardPage;