Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ftr] migrate "flyout" and "inspector" services to FtrService class #100602

Merged
74 changes: 35 additions & 39 deletions test/functional/services/flyout.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,50 +6,46 @@
* Side Public License, v 1.
*/

import { FtrProviderContext } from '../ftr_provider_context';

export function FlyoutProvider({ getService }: FtrProviderContext) {
const testSubjects = getService('testSubjects');
const find = getService('find');
const log = getService('log');
const retry = getService('retry');

class Flyout {
public async close(dataTestSubj: string): Promise<void> {
log.debug('Closing flyout', dataTestSubj);
const flyoutElement = await testSubjects.find(dataTestSubj);
const closeBtn = await flyoutElement.findByCssSelector('[aria-label*="Close"]');
await closeBtn.click();
await retry.waitFor(
'flyout closed',
async () => !(await testSubjects.exists(dataTestSubj, { timeout: 1000 }))
);
}
import { FtrService } from '../ftr_provider_context';

export class FlyoutService extends FtrService {
private readonly testSubjects = this.ctx.getService('testSubjects');
private readonly find = this.ctx.getService('find');
private readonly log = this.ctx.getService('log');
private readonly retry = this.ctx.getService('retry');

public async close(dataTestSubj: string): Promise<void> {
this.log.debug('Closing flyout', dataTestSubj);
const flyoutElement = await this.testSubjects.find(dataTestSubj);
const closeBtn = await flyoutElement.findByCssSelector('[aria-label*="Close"]');
await closeBtn.click();
await this.retry.waitFor(
'flyout closed',
async () => !(await this.testSubjects.exists(dataTestSubj, { timeout: 1000 }))
);
}

public async ensureClosed(dataTestSubj: string): Promise<void> {
if (await testSubjects.exists(dataTestSubj, { timeout: 1000 })) {
await this.close(dataTestSubj);
}
public async ensureClosed(dataTestSubj: string): Promise<void> {
if (await this.testSubjects.exists(dataTestSubj, { timeout: 1000 })) {
await this.close(dataTestSubj);
}
}

public async ensureAllClosed(): Promise<void> {
const flyoutElements = await find.allByCssSelector('.euiFlyout');

if (!flyoutElements.length) {
return;
}
public async ensureAllClosed(): Promise<void> {
const flyoutElements = await this.find.allByCssSelector('.euiFlyout');

for (let i = 0; i < flyoutElements.length; i++) {
const closeBtn = await flyoutElements[i].findByCssSelector('[aria-label*="Close"]');
await closeBtn.click();
}
if (!flyoutElements.length) {
return;
}

await retry.waitFor(
'all flyouts to be closed',
async () => (await find.allByCssSelector('.euiFlyout')).length === 0
);
for (let i = 0; i < flyoutElements.length; i++) {
const closeBtn = await flyoutElements[i].findByCssSelector('[aria-label*="Close"]');
await closeBtn.click();
}
}

return new Flyout();
await this.retry.waitFor(
'all flyouts to be closed',
async () => (await this.find.allByCssSelector('.euiFlyout')).length === 0
);
}
}
8 changes: 4 additions & 4 deletions test/functional/services/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ import {
import { DocTableService } from './doc_table';
import { EmbeddingProvider } from './embedding';
import { FilterBarService } from './filter_bar';
import { FlyoutProvider } from './flyout';
import { FlyoutService } from './flyout';
import { GlobalNavService } from './global_nav';
import { InspectorProvider } from './inspector';
import { InspectorService } from './inspector';
import { FieldEditorService } from './field_editor';
import { ManagementMenuService } from './management';
import { QueryBarProvider } from './query_bar';
Expand Down Expand Up @@ -67,14 +67,14 @@ export const services = {
dashboardAddPanel: DashboardAddPanelService,
dashboardReplacePanel: DashboardReplacePanelService,
dashboardPanelActions: DashboardPanelActionsService,
flyout: FlyoutProvider,
flyout: FlyoutService,
comboBox: ComboBoxProvider,
dataGrid: DataGridService,
embedding: EmbeddingProvider,
renderable: RenderableProvider,
browser: BrowserProvider,
pieChart: PieChartService,
inspector: InspectorProvider,
inspector: InspectorService,
fieldEditor: FieldEditorService,
vegaDebugInspector: VegaDebugInspectorViewService,
appsMenu: AppsMenuProvider,
Expand Down
Loading