[AAE-6485] protractor e2e login changes for canary layout (#7714)

* [AAE-6485] header selector

* change header check on login

* e2e login - optional wait for icon

* fix lint error + rebase
This commit is contained in:
Rafal Szmit
2022-07-19 12:30:03 +02:00
committed by GitHub
parent 0eadc86bc9
commit 46926ed818

View File

@@ -15,12 +15,15 @@
* limitations under the License. * limitations under the License.
*/ */
import { element, by, browser, protractor, $ } from 'protractor'; import { browser, protractor, $ } from 'protractor';
import { BrowserVisibility } from '../utils/browser-visibility'; import { BrowserVisibility } from '../utils/browser-visibility';
import { BrowserActions } from '../utils/browser-actions'; import { BrowserActions } from '../utils/browser-actions';
import { LocalStorageUtil } from '../utils/local-storage.util'; import { LocalStorageUtil } from '../utils/local-storage.util';
import { Logger } from '../utils/logger'; import { Logger } from '../utils/logger';
export interface LoginOptions {
waitForUserIcon: boolean;
}
export class LoginPage { export class LoginPage {
loginUrl = `${browser.baseUrl}/login`; loginUrl = `${browser.baseUrl}/login`;
@@ -29,7 +32,7 @@ export class LoginPage {
usernameField = $('#username'); usernameField = $('#username');
passwordField = $('#password'); passwordField = $('#password');
loginButton = $('input[type="submit"]'); loginButton = $('input[type="submit"]');
header = element(by.tagName('adf-layout-header')); userIcon = $(`[id*='user-initials']`);
loginError = $(`div[data-automation-id="login-error"]`); loginError = $(`div[data-automation-id="login-error"]`);
visibilityLabel = $('#v'); visibilityLabel = $('#v');
@@ -62,23 +65,21 @@ export class LoginPage {
} }
} }
async login(username: string, password: string) { async login(username: string, password: string, options: LoginOptions = { waitForUserIcon: true }) {
Logger.log('Login With ' + username); Logger.log('Login With ' + username);
const authType = await LocalStorageUtil.getConfigField('authType'); const authType = await LocalStorageUtil.getConfigField('authType');
if (!authType || authType === 'OAUTH') { if (!authType || authType === 'OAUTH') {
await this.loginSSOIdentityService(username, password); await this.loginSSOIdentityService(username, password, options);
} else { } else {
await this.loginBasicAuth(username, password); await this.loginBasicAuth(username, password, options);
} }
await browser.waitForAngular(); await browser.waitForAngular();
} }
async loginSSOIdentityService(username: string, password: string) { async loginSSOIdentityService(username: string, password: string, options: LoginOptions = { waitForUserIcon: true }) {
browser.ignoreSynchronization = true; browser.ignoreSynchronization = true;
const loginURL: string = browser.baseUrl + (browser.params.loginRoute ? browser.params.loginRoute : ''); const loginURL: string = browser.baseUrl + (browser.params.loginRoute ? browser.params.loginRoute : '');
const oauth2 = await LocalStorageUtil.getConfigField('oauth2'); const oauth2 = await LocalStorageUtil.getConfigField('oauth2');
@@ -94,16 +95,20 @@ export class LoginPage {
await this.enterPassword(password); await this.enterPassword(password);
await this.clickLoginButton(); await this.clickLoginButton();
await browser.actions().sendKeys(protractor.Key.ENTER).perform(); await browser.actions().sendKeys(protractor.Key.ENTER).perform();
await BrowserVisibility.waitUntilElementIsVisible(this.header, BrowserVisibility.DEFAULT_TIMEOUT * 2); if (options.waitForUserIcon) {
await BrowserVisibility.waitUntilElementIsVisible(this.userIcon, BrowserVisibility.DEFAULT_TIMEOUT * 2);
}
} }
async loginBasicAuth(username: string, password: string): Promise<void> { async loginBasicAuth(username: string, password: string, options: LoginOptions = { waitForUserIcon: true }): Promise<void> {
await this.goToLoginPage(); await this.goToLoginPage();
await this.enterUsernameBasicAuth(username); await this.enterUsernameBasicAuth(username);
await this.enterPasswordBasicAuth(password); await this.enterPasswordBasicAuth(password);
await this.clickSignInBasicAuthButton(); await this.clickSignInBasicAuthButton();
await BrowserVisibility.waitUntilElementIsVisible(this.header); if (options.waitForUserIcon) {
await BrowserVisibility.waitUntilElementIsVisible(this.userIcon);
}
} }
async clickSignInBasicAuthButton(): Promise<void> { async clickSignInBasicAuthButton(): Promise<void> {