qe-fe-automation
Version:
FE test automation framework using cypress
62 lines (55 loc) • 2.26 kB
text/typescript
import { AdminInterceptsApis } from '@admin-lib/api-intercept';
import { GrowthUtilities } from '@growth-lib/growth-utilities';
const impersonateSelector = {
navanHomepageUrl: 'app/user2/home',
expenseAdminPageUrl: 'app/liquid/admin/activity/transactions',
userMenuButton: '[data-qaid="USER_MENU-button"]',
logInAsButton: '.ta-user',
userSearchField: '[class="popover login-as-search enter"] input',
userSearchResult: '.ta-search-result__user',
successToast: 'ta-user-toastr .ta-toastr-event__message'
};
export class ImpersonateUser {
static visitNavanHomePage() {
cy.visit(impersonateSelector.navanHomepageUrl);
}
static visitExpenseAdminHomePage() {
AdminInterceptsApis.interceptAdminsApis();
cy.visit(impersonateSelector.expenseAdminPageUrl);
}
static verifyDelegateNameOnUserMenuButton(delegateUser: string) {
cy.get(impersonateSelector.userMenuButton).should('contain', delegateUser);
}
static searchForAndSelectUserToImpersonate(impersonatedUser: string) {
cy.get(impersonateSelector.logInAsButton).click();
cy.get(impersonateSelector.userSearchField).type(impersonatedUser);
cy.get(impersonateSelector.userSearchResult).click();
cy.get(impersonateSelector.successToast).should(
'contain',
`Successfully logged in as ${impersonatedUser}`
);
}
static verifyImpersonatedUserNameOnUserMenuButton(impersonatedUser: string) {
AdminInterceptsApis.interceptAdminsApis();
cy.wait('@waitForImpersonatedUser').then((xhr) => {
const name = xhr.response?.body?.name;
expect(name).to.equal(impersonatedUser);
});
cy.get(impersonateSelector.userMenuButton)
.should('contain', 'Logged in as')
.and('contain', impersonatedUser)
.then(() => {
GrowthUtilities.hideLiquidUnifiedListBanner();
});
}
static verifyImpersonatedUserNameOnUserMenuButtoInAdmin(impersonatedUser: string) {
AdminInterceptsApis.interceptAdminsApis();
cy.wait('@waitForImpersonatedUser').then((xhr) => {
const name = xhr.response?.body?.name;
expect(name).to.equal(impersonatedUser);
});
cy.get(impersonateSelector.userMenuButton)
.should('contain', 'Logged in as')
.and('contain', impersonatedUser);
}
}