Skip to content

Commit

Permalink
Enhance ComboBox handling in functional tests
Browse files Browse the repository at this point in the history
Signed-off-by: Miki <miki@amazon.com>
  • Loading branch information
AMoo-Miki committed Jul 21, 2023
1 parent 2097f43 commit 0f70227
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 6 deletions.
7 changes: 5 additions & 2 deletions test/functional/services/combo_box.ts
Original file line number Diff line number Diff line change
Expand Up @@ -188,9 +188,12 @@ export function ComboBoxProvider({ getService, getPageObjects }: FtrProviderCont
log.debug(`comboBox.getOptionsList, comboBoxSelector: ${comboBoxSelector}`);
const comboBox = await testSubjects.find(comboBoxSelector);
const menu = await retry.try(async () => {
await testSubjects.click(comboBoxSelector);
let isOptionsListOpen = await testSubjects.exists('~comboBoxOptionsList');
if (!isOptionsListOpen) {
await testSubjects.click('comboBoxToggleListButton', undefined, comboBoxSelector);
}
await this.waitForOptionsListLoading(comboBox);
const isOptionsListOpen = await testSubjects.exists('~comboBoxOptionsList');
isOptionsListOpen = await testSubjects.exists('~comboBoxOptionsList');
if (!isOptionsListOpen) {
throw new Error('Combo box options list did not open on click');
}
Expand Down
12 changes: 10 additions & 2 deletions test/functional/services/common/find.ts
Original file line number Diff line number Diff line change
Expand Up @@ -435,11 +435,19 @@ export async function FindProvider({ getService }: FtrProviderContext) {

public async clickByCssSelector(
selector: string,
timeout: number = defaultFindTimeout
timeout: number = defaultFindTimeout,
parentSelector?: string
): Promise<void> {
log.debug(`Find.clickByCssSelector('${selector}') with timeout=${timeout}`);
await retry.try(async () => {
const element = await this.byCssSelector(selector, timeout);
let element;
if (parentSelector) {
const parent = await this.byCssSelector(parentSelector, timeout);
const child = await parent._webElement.findElement(By.css(selector));
element = wrap(child, By.css(selector));
} else {
element = await this.byCssSelector(selector, timeout);
}
if (element) {
// await element.moveMouseTo();
await element.click();
Expand Down
12 changes: 10 additions & 2 deletions test/functional/services/common/test_subjects.ts
Original file line number Diff line number Diff line change
Expand Up @@ -122,9 +122,17 @@ export function TestSubjectsProvider({ getService }: FtrProviderContext) {
await find.clickByCssSelectorWhenNotDisabled(testSubjSelector(selector), { timeout });
}

public async click(selector: string, timeout: number = FIND_TIME): Promise<void> {
public async click(
selector: string,
timeout: number = FIND_TIME,
parentSelector?: string
): Promise<void> {
log.debug(`TestSubjects.click(${selector})`);
await find.clickByCssSelector(testSubjSelector(selector), timeout);
await find.clickByCssSelector(
testSubjSelector(selector),
timeout,
parentSelector && testSubjSelector(parentSelector)
);
}

public async doubleClick(selector: string, timeout: number = FIND_TIME): Promise<void> {
Expand Down

0 comments on commit 0f70227

Please sign in to comment.