yanweiyuan3
2023-08-09 588bc7829387dfc761cc25f06f77d4c81818bd10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import { ActionBarPage } from '../../e2elib/lib/src/pageobjects/actionbarpage.component';
import { ButtonSOP } from '../../libappsop/buttonsop';
import { DialogOptimizer } from '../dialogs/dialog.optimizer';
import { FormOptimizerPuzzles } from '../forms/form.optimizerpuzzles';
 
export class ActionBarPageScenarioSelection extends ActionBarPage {
  // Buttons
  public btnRunOptimizer = new ButtonSOP('ButtonOptimizer', 'ContextMenuOptimizerFunctions');
 
  // Right docked forms
  public formOptimizerPuzzles = new FormOptimizerPuzzles();
 
  // Dialog for optimizer
  public dlgOptimizer = new DialogOptimizer();
 
  public constructor() {
    super('ActionBarPageScenarioSelection');
  }
 
  /**
   * Clicks on Optimizer button to display run dialog.
   *
   * @returns Dialog for optimizer.
   */
  public async clickOptimizerButton(): Promise<DialogOptimizer> {
    await this.btnRunOptimizer.click();
    await this.dlgOptimizer.waitUntilPresent();
 
    return this.dlgOptimizer;
  }
 
  /**
   * To verify is optimizer completed after pass-in wait time
   *
   * @param optimizerWaitTime miliseconds of how long it should wait for optimizer to be complete
   */
  public async verifyIsOptimizerCompleted(optimizerWaitTime: number): Promise<boolean> {
    // first to check whether btnRunOptimizer icon is change to GEAR_STOP
    await this.btnRunOptimizer.waitForScreenUpdate();
    let btnIcon = await this.btnRunOptimizer.getButtonIcon();
    let result = btnIcon === ButtonRunOptimizerIcon.Stop;
    // If btnRunOptimizer icon is changed, then wait for sometimes and check again whether btnRunOptimizer icon is change to GEAR_PLAY
    if (result) {
      await this.btnRunOptimizer.waitForScreenUpdate(optimizerWaitTime);
      btnIcon = await this.btnRunOptimizer.getButtonIcon();
      result = btnIcon === ButtonRunOptimizerIcon.Play;
    }
    return result;
  }
 
  /**
   * Toggle show right docked Optimizer Puzzles form by clicking sub-menu of Optimizer button.
   *
   * @param show True to show, False to hide.
   */
  public async toggleOptimizerPuzzles(show: boolean): Promise<void> {
    if (show !== (await this.formOptimizerPuzzles.isOpen())) {
      await this.btnRunOptimizer.clickDropdownAndSelectMenu(optimizerButtonContextMenuItem.OptimizerPuzzles.Name);
    }
  }
}
 
export enum ButtonRunOptimizerIcon {
  Stop = 'GEAR_STOP',
  Play = 'GEAR_RUN',
}
 
const optimizerButtonContextMenuItem = {
  OptimizerStrategies: { ContextMenu: 'ContextMenuOptimizerFunctions', Name: 'MenuOptimizerStrategies', Label: 'Optimizer Strategies' },
  OptimizerPuzzles: { ContextMenu: 'ContextMenuOptimizerFunctions', Name: 'MenuOptimizerPuzzles', Label: 'Optimizer Puzzles' },
};
 
export { optimizerButtonContextMenuItem as OptimizerButtonContextMenuItem };
 
const stepActionBarScenarioSelection = {
  clickOptimizerButton: (): string => 'In the action bar page, click on the Optimizer button to bring up optimizer run dialog.',
  toggleOptimizerPuzzles: (show: boolean): string => `${show ? 'Show' : 'Hide'} right docked Optimizer Puzzles by clicking Top right > Optimizer > Optimizer Puzzles.`,
  verifyIsOptimizerCompleted: (): string => 'Wait for the optimizer to complete (optimizer button icon should not have the red stop sign).',
};
 
export { stepActionBarScenarioSelection as StepActionBarScenarioSelection };