| /** | 
|  * @file Panel component base class | 
|  * @description Allow to call switchTo function to perform clickTab action in panel (tab type) and wait for all child component presented | 
|  * @author      Adrian Foo (adrian.foo@3ds.com), Wong Jia Hui (jiahui.wong@3ds.com) | 
|  * @copyright   Dassault Systèmes | 
|  */ | 
| import { Panel } from '../e2elib/lib/src/pageobjects/panel.component'; | 
| import { QObject } from '../e2elib/lib/src/pageobjects/base/qobject.class'; | 
|   | 
| export class PanelBase extends Panel { | 
|   public constructor(panelComponentPath: string) { | 
|     super(panelComponentPath); | 
|   } | 
|   | 
|   /** | 
|    * Switch to the tab and wait until all component in tab is present | 
|    */ | 
|   public async switchTo(): Promise<void> { | 
|     await this.clickTab(); | 
|     // Get all property name and check whether it is QObject type | 
|     const allPropertyName = Object.getOwnPropertyNames(this); | 
|     for (const propertyName of allPropertyName) { | 
|       const property = Object.getOwnPropertyDescriptor(this, propertyName); | 
|       // Call waitUntilPresent() if the property is QObject type | 
|       if (property!.value instanceof QObject) { | 
|         const childComponent = property!.value; | 
|         await childComponent.waitUntilPresent(); | 
|       } | 
|     } | 
|   } | 
| } |