sfdx-browserforce-plugin 5.1.2 → 5.2.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/README.md +54 -16
  2. package/lib/browserforce-command.js +2 -2
  3. package/lib/browserforce-command.js.map +1 -1
  4. package/lib/browserforce.d.ts +7 -3
  5. package/lib/browserforce.js +57 -32
  6. package/lib/browserforce.js.map +1 -1
  7. package/lib/pages/login.d.ts +1 -1
  8. package/lib/pages/login.js +5 -5
  9. package/lib/pages/login.js.map +1 -1
  10. package/lib/plugins/activity-settings/index.js +9 -6
  11. package/lib/plugins/activity-settings/index.js.map +1 -1
  12. package/lib/plugins/company-information/index.js +26 -16
  13. package/lib/plugins/company-information/index.js.map +1 -1
  14. package/lib/plugins/customer-portal/available-custom-objects/index.js +5 -5
  15. package/lib/plugins/customer-portal/available-custom-objects/index.js.map +1 -1
  16. package/lib/plugins/customer-portal/enabled/index.js +5 -6
  17. package/lib/plugins/customer-portal/enabled/index.js.map +1 -1
  18. package/lib/plugins/customer-portal/portals/index.js +68 -32
  19. package/lib/plugins/customer-portal/portals/index.js.map +1 -1
  20. package/lib/plugins/density-settings/index.d.ts +1 -8
  21. package/lib/plugins/density-settings/index.js +37 -29
  22. package/lib/plugins/density-settings/index.js.map +1 -1
  23. package/lib/plugins/email-deliverability/index.js +11 -8
  24. package/lib/plugins/email-deliverability/index.js.map +1 -1
  25. package/lib/plugins/high-velocity-sales-settings/page.d.ts +1 -1
  26. package/lib/plugins/high-velocity-sales-settings/page.js +7 -8
  27. package/lib/plugins/high-velocity-sales-settings/page.js.map +1 -1
  28. package/lib/plugins/history-tracking/index.js +21 -14
  29. package/lib/plugins/history-tracking/index.js.map +1 -1
  30. package/lib/plugins/home-page-layouts/index.js +16 -12
  31. package/lib/plugins/home-page-layouts/index.js.map +1 -1
  32. package/lib/plugins/lightning-experience-settings/index.d.ts +2 -2
  33. package/lib/plugins/lightning-experience-settings/index.js +42 -38
  34. package/lib/plugins/lightning-experience-settings/index.js.map +1 -1
  35. package/lib/plugins/linkedin-sales-navigator-settings/index.js +2 -2
  36. package/lib/plugins/linkedin-sales-navigator-settings/index.js.map +1 -1
  37. package/lib/plugins/linkedin-sales-navigator-settings/page.d.ts +4 -2
  38. package/lib/plugins/linkedin-sales-navigator-settings/page.js +18 -8
  39. package/lib/plugins/linkedin-sales-navigator-settings/page.js.map +1 -1
  40. package/lib/plugins/omni-channel-settings/index.e2e-spec.js +4 -0
  41. package/lib/plugins/omni-channel-settings/index.e2e-spec.js.map +1 -1
  42. package/lib/plugins/omni-channel-settings/index.js +6 -14
  43. package/lib/plugins/omni-channel-settings/index.js.map +1 -1
  44. package/lib/plugins/opportunity-splits/index.js +4 -4
  45. package/lib/plugins/opportunity-splits/index.js.map +1 -1
  46. package/lib/plugins/opportunity-splits/pages/layout-selection.d.ts +1 -1
  47. package/lib/plugins/opportunity-splits/pages/layout-selection.js +2 -4
  48. package/lib/plugins/opportunity-splits/pages/layout-selection.js.map +1 -1
  49. package/lib/plugins/opportunity-splits/pages/overview.d.ts +1 -1
  50. package/lib/plugins/opportunity-splits/pages/overview.js +6 -11
  51. package/lib/plugins/opportunity-splits/pages/overview.js.map +1 -1
  52. package/lib/plugins/opportunity-splits/pages/setup.d.ts +1 -1
  53. package/lib/plugins/opportunity-splits/pages/setup.js +2 -4
  54. package/lib/plugins/opportunity-splits/pages/setup.js.map +1 -1
  55. package/lib/plugins/permission-sets/index.e2e-spec.js +16 -5
  56. package/lib/plugins/permission-sets/index.e2e-spec.js.map +1 -1
  57. package/lib/plugins/permission-sets/service-presence-status/index.js +32 -25
  58. package/lib/plugins/permission-sets/service-presence-status/index.js.map +1 -1
  59. package/lib/plugins/picklists/field-dependencies/pages.d.ts +1 -1
  60. package/lib/plugins/picklists/field-dependencies/pages.js +9 -17
  61. package/lib/plugins/picklists/field-dependencies/pages.js.map +1 -1
  62. package/lib/plugins/picklists/pages.d.ts +2 -1
  63. package/lib/plugins/picklists/pages.js +35 -63
  64. package/lib/plugins/picklists/pages.js.map +1 -1
  65. package/lib/plugins/record-types/pages.d.ts +1 -1
  66. package/lib/plugins/record-types/pages.js +15 -23
  67. package/lib/plugins/record-types/pages.js.map +1 -1
  68. package/lib/plugins/relate-contact-to-multiple-accounts/index.d.ts +1 -1
  69. package/lib/plugins/relate-contact-to-multiple-accounts/index.js +32 -42
  70. package/lib/plugins/relate-contact-to-multiple-accounts/index.js.map +1 -1
  71. package/lib/plugins/reports-and-dashboards/folder-sharing/index.js +18 -13
  72. package/lib/plugins/reports-and-dashboards/folder-sharing/index.js.map +1 -1
  73. package/lib/plugins/salesforce-cpq-config/formConfig.js +12 -12
  74. package/lib/plugins/salesforce-cpq-config/formConfig.js.map +1 -1
  75. package/lib/plugins/salesforce-cpq-config/index.js +87 -68
  76. package/lib/plugins/salesforce-cpq-config/index.js.map +1 -1
  77. package/lib/plugins/salesforce-to-salesforce/index.e2e-spec.js +1 -0
  78. package/lib/plugins/salesforce-to-salesforce/index.e2e-spec.js.map +1 -1
  79. package/lib/plugins/salesforce-to-salesforce/index.js +8 -16
  80. package/lib/plugins/salesforce-to-salesforce/index.js.map +1 -1
  81. package/lib/plugins/security/authentication-configuration/index.js +18 -13
  82. package/lib/plugins/security/authentication-configuration/index.js.map +1 -1
  83. package/lib/plugins/security/certificate-and-key-management/index.js +16 -21
  84. package/lib/plugins/security/certificate-and-key-management/index.js.map +1 -1
  85. package/lib/plugins/service-channels/capacity/index.js +64 -35
  86. package/lib/plugins/service-channels/capacity/index.js.map +1 -1
  87. package/lib/plugins/service-channels/index.e2e-spec.js +4 -0
  88. package/lib/plugins/service-channels/index.e2e-spec.js.map +1 -1
  89. package/lib/plugins/slack/index.js +13 -14
  90. package/lib/plugins/slack/index.js.map +1 -1
  91. package/lib/plugins/user-access-policies/index.e2e-spec.js +4 -2
  92. package/lib/plugins/user-access-policies/index.e2e-spec.js.map +1 -1
  93. package/lib/plugins/user-access-policies/index.js +4 -2
  94. package/lib/plugins/user-access-policies/index.js.map +1 -1
  95. package/lib/plugins/user-access-policies/page.d.ts +2 -2
  96. package/lib/plugins/user-access-policies/page.js +34 -51
  97. package/lib/plugins/user-access-policies/page.js.map +1 -1
  98. package/oclif.manifest.json +1 -11
  99. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- import { ElementHandle, Page } from 'puppeteer';
1
+ import { Locator, Page } from 'playwright';
2
2
  import { BrowserforcePlugin } from '../../plugin.js';
3
3
  type Config = {
4
4
  activeThemeName: string;
@@ -6,7 +6,7 @@ type Config = {
6
6
  type Theme = {
7
7
  developerName: string;
8
8
  isActive: boolean;
9
- rowElementHandle: ElementHandle;
9
+ rowLocator: Locator;
10
10
  };
11
11
  export declare class LightningExperienceSettings extends BrowserforcePlugin {
12
12
  setupDOMObserver(page: Page, elementName: string, callbackName: string): Promise<void>;
@@ -6,7 +6,7 @@ const DEVELOPER_NAMES_SELECTOR = `${THEME_ROW_SELECTOR} > td:nth-child(2) > ligh
6
6
  const STATES_SELECTOR = `${THEME_ROW_SELECTOR} > td:nth-child(6) > lightning-primitive-cell-factory`;
7
7
  export class LightningExperienceSettings extends BrowserforcePlugin {
8
8
  async setupDOMObserver(page, elementName, callbackName) {
9
- await page.evaluate((elementName, callbackName) => {
9
+ await page.evaluate(({ elementName, callbackName, }) => {
10
10
  const observer = new MutationObserver((mutations) => {
11
11
  for (const mutation of mutations) {
12
12
  for (const node of Array.from(mutation.addedNodes)) {
@@ -25,7 +25,7 @@ export class LightningExperienceSettings extends BrowserforcePlugin {
25
25
  window.addEventListener('beforeunload', () => {
26
26
  observer.disconnect();
27
27
  }, { once: true });
28
- }, elementName, callbackName);
28
+ }, { elementName, callbackName });
29
29
  }
30
30
  async retrieve() {
31
31
  const page = await this.browserforce.openPage(BASE_PATH);
@@ -43,18 +43,25 @@ export class LightningExperienceSettings extends BrowserforcePlugin {
43
43
  await page.close();
44
44
  }
45
45
  async getThemeData(page) {
46
- await page.waitForSelector(THEME_ROW_SELECTOR);
47
- const rowElementHandles = await page.$$(THEME_ROW_SELECTOR);
48
- await page.waitForSelector(DEVELOPER_NAMES_SELECTOR);
49
- const developerNames = await page.$$eval(DEVELOPER_NAMES_SELECTOR, (cells) => cells.map((cell) => cell.innerText));
50
- const states = await page.$$eval(STATES_SELECTOR, (cells) => cells.map((cell) => cell.shadowRoot?.querySelector('lightning-primitive-icon') !== null));
51
- return developerNames.map((developerName, i) => {
52
- return {
46
+ await page.locator(THEME_ROW_SELECTOR).first().waitFor();
47
+ const rowLocator = page.locator(THEME_ROW_SELECTOR);
48
+ const rowCount = await rowLocator.count();
49
+ await page.locator(DEVELOPER_NAMES_SELECTOR).first().waitFor();
50
+ const developerNameLocator = page.locator(DEVELOPER_NAMES_SELECTOR);
51
+ const stateLocator = page.locator(STATES_SELECTOR);
52
+ const themes = [];
53
+ for (let i = 0; i < rowCount; i++) {
54
+ const developerName = await developerNameLocator.nth(i).innerText();
55
+ const hasIcon = await stateLocator
56
+ .nth(i)
57
+ .evaluate((cell) => cell.shadowRoot?.querySelector('lightning-primitive-icon') !== null);
58
+ themes.push({
53
59
  developerName,
54
- isActive: states[i],
55
- rowElementHandle: rowElementHandles[i],
56
- };
57
- });
60
+ isActive: hasIcon,
61
+ rowLocator: rowLocator.nth(i),
62
+ });
63
+ }
64
+ return themes;
58
65
  }
59
66
  async setActiveTheme(page, themeDeveloperName) {
60
67
  const data = await this.getThemeData(page);
@@ -62,36 +69,33 @@ export class LightningExperienceSettings extends BrowserforcePlugin {
62
69
  if (!theme) {
63
70
  throw new Error(`Could not find theme "${themeDeveloperName}" in list of themes: ${data.map((d) => d.developerName)}`);
64
71
  }
72
+ const newActiveThemeRowLocator = theme.rowLocator;
73
+ await page
74
+ .locator(`${THEME_ROW_SELECTOR} lightning-button-menu`)
75
+ .first()
76
+ .waitFor({ state: 'visible' });
77
+ const menuButton = newActiveThemeRowLocator.locator('td lightning-primitive-cell-factory lightning-primitive-cell-actions lightning-button-menu');
78
+ await menuButton.click();
79
+ await page
80
+ .locator(`${THEME_ROW_SELECTOR} lightning-button-menu slot lightning-menu-item`)
81
+ .first()
82
+ .waitFor({ state: 'visible' });
83
+ const menuItems = menuButton.locator('slot lightning-menu-item');
84
+ const menuItemCount = await menuItems.count();
85
+ // second last item: [show, activate, preview]
86
+ const activateMenuItem = menuItems.nth(menuItemCount - 2);
87
+ await activateMenuItem.click();
65
88
  // When switching from a SDLS2 to a SLDS1 theme, the following modal appears:
66
89
  // Activate this theme?
67
90
  // This theme uses SLDS 1. When you activate this theme, you also disable SLDS 2.
68
91
  // - Never Mind
69
92
  // - Activate
70
- await page.exposeFunction('onModalAppeared', async () => {
71
- const confirmButtonSelector = 'lightning-modal lightning-button[variant="brand"]';
72
- await page.waitForSelector(confirmButtonSelector, { visible: true });
73
- const confirmButton = await page.$(confirmButtonSelector);
74
- if (confirmButton) {
75
- await page.evaluate((e) => e.click(), confirmButton);
76
- }
77
- });
78
- await this.setupDOMObserver(page, 'lightning-overlay-container', 'onModalAppeared');
79
- const newActiveThemeRowElementHandle = theme.rowElementHandle;
80
- await page.waitForSelector(`${THEME_ROW_SELECTOR} lightning-button-menu`, {
81
- visible: true,
82
- });
83
- const menuButton = await newActiveThemeRowElementHandle.$('td lightning-primitive-cell-factory lightning-primitive-cell-actions lightning-button-menu');
84
- await page.evaluate((e) => e.click(), menuButton);
85
- await page.waitForSelector(`${THEME_ROW_SELECTOR} lightning-button-menu slot lightning-menu-item`, {
86
- visible: true,
87
- });
88
- const menuItems = await menuButton.$$('slot lightning-menu-item');
89
- // second last item: [show, activate, preview]
90
- const activateMenuItem = menuItems[menuItems.length - 2];
91
- await Promise.all([
92
- page.waitForNavigation(),
93
- page.evaluate((e) => e.click(), activateMenuItem),
94
- ]);
93
+ const confirmButton = await page.locator('lightning-modal lightning-button[variant="brand"]');
94
+ if (await confirmButton.isVisible()) {
95
+ await confirmButton.waitFor({ state: 'visible' });
96
+ await confirmButton.click();
97
+ }
98
+ await page.locator('span.breadcrumbDetail.uiOutputText').waitFor();
95
99
  }
96
100
  }
97
101
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/lightning-experience-settings/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/lightning-experience-settings/index.ts"],"names":[],"mappings":"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"}
@@ -3,12 +3,12 @@ import { LinkedInSalesNavigatorPage } from './page.js';
3
3
  export class LinkedInSalesNavigatorSettings extends BrowserforcePlugin {
4
4
  async retrieve(definition) {
5
5
  const result = { enabled: false };
6
- const page = new LinkedInSalesNavigatorPage(await this.browserforce.openPage(LinkedInSalesNavigatorPage.getUrl()));
6
+ const page = new LinkedInSalesNavigatorPage(await this.browserforce.openPage(LinkedInSalesNavigatorPage.getUrl()), this.browserforce);
7
7
  result.enabled = await page.getStatus();
8
8
  return result;
9
9
  }
10
10
  async apply(config) {
11
- const page = new LinkedInSalesNavigatorPage(await this.browserforce.openPage(LinkedInSalesNavigatorPage.getUrl()));
11
+ const page = new LinkedInSalesNavigatorPage(await this.browserforce.openPage(LinkedInSalesNavigatorPage.getUrl()), this.browserforce);
12
12
  await page.setStatus(config.enabled);
13
13
  }
14
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/linkedin-sales-navigator-settings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAMvD,MAAM,OAAO,8BAA+B,SAAQ,kBAAkB;IAC7D,KAAK,CAAC,QAAQ,CAAC,UAAmB;QACvC,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,0BAA0B,CACzC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,CACtE,CAAC;QACF,MAAM,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACxC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,MAAc;QAC/B,MAAM,IAAI,GAAG,IAAI,0BAA0B,CACzC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,CACtE,CAAC;QACF,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/linkedin-sales-navigator-settings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAMvD,MAAM,OAAO,8BAA+B,SAAQ,kBAAkB;IAC7D,KAAK,CAAC,QAAQ,CAAC,UAAmB;QACvC,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,0BAA0B,CACzC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,EACrE,IAAI,CAAC,YAAY,CAClB,CAAC;QACF,MAAM,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACxC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,MAAc;QAC/B,MAAM,IAAI,GAAG,IAAI,0BAA0B,CACzC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,EACrE,IAAI,CAAC,YAAY,CAClB,CAAC;QACF,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;CACF"}
@@ -1,7 +1,9 @@
1
- import { Page } from 'puppeteer';
1
+ import { Page } from 'playwright';
2
+ import { Browserforce } from '../../browserforce.js';
2
3
  export declare class LinkedInSalesNavigatorPage {
3
4
  private page;
4
- constructor(page: Page);
5
+ private browserforce;
6
+ constructor(page: Page, browserforce: Browserforce);
5
7
  static getUrl(): string;
6
8
  getStatus(): Promise<boolean>;
7
9
  setStatus(enable: boolean): Promise<void>;
@@ -4,28 +4,38 @@ const CONFIRM_CHECKBOX = 'lightning-input lightning-primitive-input-checkbox inp
4
4
  const ACCEPT_BUTTON = 'section[data-aura-class="setup_sales_linkedinLinkedInSetupAcceptTermsModal"] div div button:not(:disabled):nth-child(2)';
5
5
  export class LinkedInSalesNavigatorPage {
6
6
  page;
7
- constructor(page) {
7
+ browserforce;
8
+ constructor(page, browserforce) {
8
9
  this.page = page;
10
+ this.browserforce = browserforce;
9
11
  }
10
12
  static getUrl() {
11
13
  return 'lightning/setup/LinkedInSalesNavigatorPage/home';
12
14
  }
13
15
  async getStatus() {
14
- const isEnabled = await this.page
15
- .locator(ENABLE_TOGGLE)
16
- .map((checkbox) => checkbox.checked)
17
- .wait();
16
+ await this.page.locator(ENABLE_TOGGLE).waitFor();
17
+ const isEnabled = await this.page.locator(ENABLE_TOGGLE).isChecked();
18
18
  await this.page.close();
19
19
  return isEnabled;
20
20
  }
21
21
  async setStatus(enable) {
22
22
  // NOTE: Unfortunately a simple click() on the locator does not work here
23
- await (await this.page.locator(ENABLE_TOGGLE).waitHandle()).evaluate((checkbox) => checkbox.click());
23
+ await this.page.locator(ENABLE_TOGGLE).waitFor();
24
+ await this.page
25
+ .locator(ENABLE_TOGGLE)
26
+ .evaluate((checkbox) => checkbox.click());
24
27
  if (enable) {
25
- await (await this.page.locator(CONFIRM_CHECKBOX).waitHandle()).evaluate((checkbox) => checkbox.click());
26
- await (await this.page.locator(ACCEPT_BUTTON).waitHandle()).evaluate((button) => button.click());
28
+ await this.page.locator(CONFIRM_CHECKBOX).waitFor();
29
+ await this.page
30
+ .locator(CONFIRM_CHECKBOX)
31
+ .evaluate((checkbox) => checkbox.click());
32
+ await this.page.locator(ACCEPT_BUTTON).waitFor();
33
+ await this.page
34
+ .locator(ACCEPT_BUTTON)
35
+ .evaluate((button) => button.click());
27
36
  }
28
37
  await throwPageErrors(this.page);
38
+ await this.browserforce.waitForIdle(this.page);
29
39
  await this.page.close();
30
40
  }
31
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"page.js","sourceRoot":"","sources":["../../../src/plugins/linkedin-sales-navigator-settings/page.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,aAAa,GACjB,mGAAmG,CAAC;AACtG,MAAM,gBAAgB,GACpB,0IAA0I,CAAC;AAC7I,MAAM,aAAa,GACjB,yHAAyH,CAAC;AAE5H,MAAM,OAAO,0BAA0B;IAC7B,IAAI,CAAO;IAEnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,MAAM,CAAC,MAAM;QAClB,OAAO,iDAAiD,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,SAAS;QACpB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI;aAC9B,OAAO,CAAC,aAAa,CAAC;aACtB,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;aACnC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,MAAe;QACpC,yEAAyE;QACzE,MAAM,CACJ,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CACpD,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAE3C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CACJ,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,UAAU,EAAE,CACvD,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3C,MAAM,CACJ,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CACpD,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../../../src/plugins/linkedin-sales-navigator-settings/page.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEtE,MAAM,aAAa,GACjB,mGAAmG,CAAC;AACtG,MAAM,gBAAgB,GACpB,0IAA0I,CAAC;AAC7I,MAAM,aAAa,GACjB,yHAAyH,CAAC;AAE5H,MAAM,OAAO,0BAA0B;IAC7B,IAAI,CAAO;IACX,YAAY,CAAe;IAEnC,YAAY,IAAU,EAAE,YAA0B;QAChD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAEM,MAAM,CAAC,MAAM;QAClB,OAAO,iDAAiD,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,SAAS;QACpB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,SAAS,EAAE,CAAC;QACrE,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,MAAe;QACpC,yEAAyE;QACzE,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC;QACjD,MAAM,IAAI,CAAC,IAAI;aACZ,OAAO,CAAC,aAAa,CAAC;aACtB,QAAQ,CAAC,CAAC,QAA0B,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAE9D,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC;YACpD,MAAM,IAAI,CAAC,IAAI;iBACZ,OAAO,CAAC,gBAAgB,CAAC;iBACzB,QAAQ,CAAC,CAAC,QAA0B,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9D,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC;YACjD,MAAM,IAAI,CAAC,IAAI;iBACZ,OAAO,CAAC,aAAa,CAAC;iBACtB,QAAQ,CAAC,CAAC,MAAyB,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF"}
@@ -14,11 +14,15 @@ describe(OmniChannelSettings.name, function () {
14
14
  };
15
15
  it('should enable status based capacity model', async () => {
16
16
  await plugin.run(configEnableStatusBasedCapacityModel);
17
+ });
18
+ it('should verify status based capacity model is enabled', async () => {
17
19
  const res = await plugin.retrieve();
18
20
  assert.deepStrictEqual(res, configEnableStatusBasedCapacityModel);
19
21
  });
20
22
  it('should disable status based capacity model', async () => {
21
23
  await plugin.run(configDisableStatusBasedCapacityModel);
24
+ });
25
+ it('should verify status based capacity model is disabled', async () => {
22
26
  const res = await plugin.retrieve();
23
27
  assert.deepStrictEqual(res, configDisableStatusBasedCapacityModel);
24
28
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/omni-channel-settings/index.e2e-spec.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE;IACjC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,IAAI,MAA2B,CAAC;IAChC,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,MAAM,oCAAoC,GAAG;QAC3C,8BAA8B,EAAE,IAAI;KACrC,CAAC;IACF,MAAM,qCAAqC,GAAG;QAC5C,8BAA8B,EAAE,KAAK;KACtC,CAAC;IAEF,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,MAAM,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,MAAM,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/omni-channel-settings/index.e2e-spec.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE;IACjC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,IAAI,MAA2B,CAAC;IAChC,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,MAAM,oCAAoC,GAAG;QAC3C,8BAA8B,EAAE,IAAI;KACrC,CAAC;IACF,MAAM,qCAAqC,GAAG;QAC5C,8BAA8B,EAAE,KAAK;KACtC,CAAC;IAEF,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,MAAM,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,MAAM,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -4,25 +4,17 @@ const SAVE_BUTTON_SELECTOR = 'input[id$=":save"]';
4
4
  const STATUS_CAPACITY_TOGGLE_SELECTOR = 'input[id$=":toggleOmniStatusCapModelPref"]';
5
5
  export class OmniChannelSettings extends BrowserforcePlugin {
6
6
  async retrieve(definition) {
7
- // Open the omni-channel setup page
8
7
  const page = await this.browserforce.openPage(BASE_PATH);
9
- // Retrieve the service channel config
10
- await page.waitForSelector(STATUS_CAPACITY_TOGGLE_SELECTOR);
11
- const enableStatusBasedCapacityModel = await page.$eval(STATUS_CAPACITY_TOGGLE_SELECTOR, (el) => (el.getAttribute('checked') === 'checked' ? true : false));
8
+ const enableStatusBasedCapacityModel = await page
9
+ .locator(STATUS_CAPACITY_TOGGLE_SELECTOR)
10
+ .evaluate((el) => el.getAttribute('checked') === 'checked' ? true : false);
12
11
  return { enableStatusBasedCapacityModel };
13
12
  }
14
13
  async apply(config) {
15
- // Open the omni-channel setup page
16
14
  const page = await this.browserforce.openPage(BASE_PATH);
17
- // Click the checkbox
18
- const capacityModel = await page.waitForSelector(STATUS_CAPACITY_TOGGLE_SELECTOR);
19
- await capacityModel.click();
20
- // Save the settings
21
- const saveButton = await page.waitForSelector(SAVE_BUTTON_SELECTOR);
22
- await saveButton.click();
23
- // Wait for the page to refresh
24
- await page.waitForNavigation();
25
- // Close the page
15
+ await page.locator(STATUS_CAPACITY_TOGGLE_SELECTOR).click();
16
+ await page.locator(SAVE_BUTTON_SELECTOR).click();
17
+ await page.waitForLoadState('networkidle');
26
18
  await page.close();
27
19
  }
28
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/omni-channel-settings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,SAAS,GAAG,4BAA4B,CAAC;AAE/C,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AAClD,MAAM,+BAA+B,GACnC,4CAA4C,CAAC;AAM/C,MAAM,OAAO,mBAAoB,SAAQ,kBAAkB;IAClD,KAAK,CAAC,QAAQ,CAAC,UAAmB;QACvC,mCAAmC;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEzD,sCAAsC;QACtC,MAAM,IAAI,CAAC,eAAe,CAAC,+BAA+B,CAAC,CAAC;QAC5D,MAAM,8BAA8B,GAAG,MAAM,IAAI,CAAC,KAAK,CACrD,+BAA+B,EAC/B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAClE,CAAC;QAEF,OAAO,EAAE,8BAA8B,EAAE,CAAC;IAC5C,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,MAAc;QAC/B,mCAAmC;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEzD,qBAAqB;QACrB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,eAAe,CAC9C,+BAA+B,CAChC,CAAC;QACF,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;QAE5B,oBAAoB;QACpB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;QACpE,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;QAEzB,+BAA+B;QAC/B,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,iBAAiB;QACjB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/omni-channel-settings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,SAAS,GAAG,4BAA4B,CAAC;AAE/C,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AAClD,MAAM,+BAA+B,GACnC,4CAA4C,CAAC;AAM/C,MAAM,OAAO,mBAAoB,SAAQ,kBAAkB;IAClD,KAAK,CAAC,QAAQ,CAAC,UAAmB;QACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEzD,MAAM,8BAA8B,GAAG,MAAM,IAAI;aAC9C,OAAO,CAAC,+BAA+B,CAAC;aACxC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,CACf,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CACxD,CAAC;QAEJ,OAAO,EAAE,8BAA8B,EAAE,CAAC;IAC5C,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,MAAc;QAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEzD,MAAM,IAAI,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC,KAAK,EAAE,CAAC;QAE5D,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC;QAEjD,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAC3C,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
@@ -12,21 +12,21 @@ export class OpportunitySplits extends BrowserforcePlugin {
12
12
  return response;
13
13
  }
14
14
  async apply(config) {
15
- let page;
16
15
  if (config.enabled) {
17
- page = await this.browserforce.openPage(SetupPage.PATH);
16
+ const page = await this.browserforce.openPage(SetupPage.PATH);
18
17
  const setupPage = new SetupPage(page);
19
18
  const layoutSelectionPage = await setupPage.enable();
20
19
  const overviewPage = await layoutSelectionPage.choose();
21
20
  await overviewPage.waitUntilCompleted();
21
+ await page.close();
22
22
  }
23
23
  else {
24
- page = await this.browserforce.openPage(OverviewPage.PATH);
24
+ const page = await this.browserforce.openPage(OverviewPage.PATH);
25
25
  const overviewPage = new OverviewPage(page);
26
26
  await overviewPage.disable();
27
27
  await overviewPage.waitUntilCompleted();
28
+ await page.close();
28
29
  }
29
- await page.close();
30
30
  }
31
31
  }
32
32
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/opportunity-splits/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAM7C,MAAM,OAAO,iBAAkB,SAAQ,kBAAkB;IAChD,KAAK,CAAC,QAAQ,CAAC,UAAmB;QACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG;YACf,OAAO,EAAE,MAAM,YAAY,CAAC,SAAS,EAAE;SACxC,CAAC;QACF,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,MAAc;QAC/B,IAAI,IAAU,CAAC;QACf,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACxD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,mBAAmB,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,CAAC;YACrD,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,CAAC;YACxD,MAAM,YAAY,CAAC,kBAAkB,EAAE,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC3D,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAC7B,MAAM,YAAY,CAAC,kBAAkB,EAAE,CAAC;QAC1C,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/opportunity-splits/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAM7C,MAAM,OAAO,iBAAkB,SAAQ,kBAAkB;IAChD,KAAK,CAAC,QAAQ,CAAC,UAAmB;QACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG;YACf,OAAO,EAAE,MAAM,YAAY,CAAC,SAAS,EAAE;SACxC,CAAC;QACF,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,MAAc;QAC/B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9D,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,mBAAmB,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,CAAC;YACrD,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,CAAC;YACxD,MAAM,YAAY,CAAC,kBAAkB,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACjE,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAC7B,MAAM,YAAY,CAAC,kBAAkB,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import { Page } from 'puppeteer';
1
+ import { Page } from 'playwright';
2
2
  import { OverviewPage } from './overview.js';
3
3
  export declare class LayoutSelectionPage {
4
4
  static PATH: string;
@@ -7,10 +7,8 @@ export class LayoutSelectionPage {
7
7
  this.page = page;
8
8
  }
9
9
  async choose() {
10
- await Promise.all([
11
- this.page.waitForNavigation(),
12
- this.page.locator(SAVE_BUTTON).click(),
13
- ]);
10
+ await this.page.locator(SAVE_BUTTON).click();
11
+ await this.page.waitForLoadState('networkidle');
14
12
  return new OverviewPage(this.page);
15
13
  }
16
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"layout-selection.js","sourceRoot":"","sources":["../../../../src/plugins/opportunity-splits/pages/layout-selection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAEzC,MAAM,OAAO,mBAAmB;IAC9B,MAAM,CAAC,IAAI,GACT,qEAAqE,CAAC;IAChE,IAAI,CAAO;IAEnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE;SACvC,CAAC,CAAC;QACH,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC"}
1
+ {"version":3,"file":"layout-selection.js","sourceRoot":"","sources":["../../../../src/plugins/opportunity-splits/pages/layout-selection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAEzC,MAAM,OAAO,mBAAmB;IAC9B,MAAM,CAAC,IAAI,GACT,qEAAqE,CAAC;IAChE,IAAI,CAAO;IAEnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAChD,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { Page } from 'puppeteer';
1
+ import { Page } from 'playwright';
2
2
  export declare class OverviewPage {
3
3
  static PATH: string;
4
4
  private page;
@@ -11,27 +11,22 @@ export class OverviewPage {
11
11
  }
12
12
  async isEnabled() {
13
13
  await this.waitUntilCompleted();
14
- return ((await this.page.url()).includes(OverviewPage.PATH) &&
15
- (await this.page.$(DISABLE_LINK)) !== null);
14
+ return (this.page.url().includes(OverviewPage.PATH) &&
15
+ (await this.page.locator(DISABLE_LINK).count()) > 0);
16
16
  }
17
17
  async waitUntilCompleted() {
18
18
  if (await this.isInProgress()) {
19
- await this.page
20
- .locator(COMPLETED)
21
- .setTimeout(10 * 60 * 1000) // 10 minutes
22
- .wait();
19
+ await this.page.locator(COMPLETED).waitFor({ timeout: 10 * 60 * 1000 }); // 10 minutes
23
20
  }
24
21
  }
25
22
  async isInProgress() {
26
- return (await this.page.$(IN_PROGRESS)) !== null;
23
+ return (await this.page.locator(IN_PROGRESS).count()) > 0;
27
24
  }
28
25
  async disable() {
29
26
  await this.page.locator(DISABLE_LINK).click();
30
27
  await this.page.locator(DISABLE_CONFIRM_CHECKBOX).click();
31
- await Promise.all([
32
- this.page.waitForNavigation(),
33
- this.page.locator(DISABLE_CONFIRM_BUTTON).click(),
34
- ]);
28
+ await this.page.locator(DISABLE_CONFIRM_BUTTON).click();
29
+ await this.page.waitForLoadState('networkidle');
35
30
  return this;
36
31
  }
37
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"overview.js","sourceRoot":"","sources":["../../../../src/plugins/opportunity-splits/pages/overview.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,GAAG,2CAA2C,CAAC;AAChE,MAAM,SAAS,GAAG,uBAAuB,CAAC;AAC1C,MAAM,YAAY,GAAG,6BAA6B,CAAC;AACnD,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AACrD,MAAM,sBAAsB,GAC1B,uDAAuD,CAAC;AAE1D,MAAM,OAAO,YAAY;IACvB,MAAM,CAAC,IAAI,GACT,uEAAuE,CAAC;IAClE,IAAI,CAAO;IAEnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,SAAS;QACpB,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAChC,OAAO,CACL,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;YACnD,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,CAC3C,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,kBAAkB;QAC7B,IAAI,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YAC9B,MAAM,IAAI,CAAC,IAAI;iBACZ,OAAO,CAAC,SAAS,CAAC;iBAClB,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;iBACxC,IAAI,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,YAAY;QACvB,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,IAAI,CAAC;IACnD,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9C,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1D,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE;SAClD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC"}
1
+ {"version":3,"file":"overview.js","sourceRoot":"","sources":["../../../../src/plugins/opportunity-splits/pages/overview.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,GAAG,2CAA2C,CAAC;AAChE,MAAM,SAAS,GAAG,uBAAuB,CAAC;AAC1C,MAAM,YAAY,GAAG,6BAA6B,CAAC;AACnD,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AACrD,MAAM,sBAAsB,GAC1B,uDAAuD,CAAC;AAE1D,MAAM,OAAO,YAAY;IACvB,MAAM,CAAC,IAAI,GACT,uEAAuE,CAAC;IAClE,IAAI,CAAO;IAEnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,SAAS;QACpB,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAChC,OAAO,CACL,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;YAC3C,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CACpD,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,kBAAkB;QAC7B,IAAI,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;YAC9B,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,aAAa;QACxF,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,YAAY;QACvB,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IAC5D,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9C,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1D,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;QACxD,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC"}
@@ -1,4 +1,4 @@
1
- import { Page } from 'puppeteer';
1
+ import { Page } from 'playwright';
2
2
  import { LayoutSelectionPage } from './layout-selection.js';
3
3
  export declare class SetupPage {
4
4
  static PATH: string;
@@ -9,10 +9,8 @@ export class SetupPage {
9
9
  }
10
10
  async enable() {
11
11
  await this.page.locator(SAVE_BUTTON).click();
12
- await Promise.all([
13
- this.page.waitForNavigation(),
14
- this.page.locator(MODAL_CONFIRM_BUTTON).click(),
15
- ]);
12
+ await this.page.locator(MODAL_CONFIRM_BUTTON).click();
13
+ await this.page.waitForLoadState('networkidle');
16
14
  return new LayoutSelectionPage(this.page);
17
15
  }
18
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../../src/plugins/opportunity-splits/pages/setup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,GAAG,+BAA+B,CAAC;AACpD,MAAM,oBAAoB,GACxB,mEAAmE,CAAC;AAEtE,MAAM,OAAO,SAAS;IACpB,MAAM,CAAC,IAAI,GACT,mEAAmE,CAAC;IAC9D,IAAI,CAAO;IAEnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC;QAC7C,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE;SAChD,CAAC,CAAC;QACH,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../../src/plugins/opportunity-splits/pages/setup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,GAAG,+BAA+B,CAAC;AACpD,MAAM,oBAAoB,GACxB,mEAAmE,CAAC;AAEtE,MAAM,OAAO,SAAS;IACpB,MAAM,CAAC,IAAI,GACT,mEAAmE,CAAC;IAC9D,IAAI,CAAO;IAEnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC;QACtD,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAChD,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC"}
@@ -10,12 +10,18 @@ describe(PermissionSets.name, function () {
10
10
  before(() => {
11
11
  plugin = new PermissionSets(global.bf);
12
12
  });
13
- const configurePermissionSet = [
13
+ const addConfigurePermissionSet = [
14
14
  {
15
15
  permissionSetName: 'ServicePresenceTest',
16
16
  servicePresenceStatuses: ['TestStatus', 'TestStatus3'],
17
17
  },
18
18
  ];
19
+ const removeConfigurePermissionSet = [
20
+ {
21
+ permissionSetName: 'ServicePresenceTest',
22
+ servicePresenceStatuses: [],
23
+ },
24
+ ];
19
25
  it('should create permission set and service presence status as a prerequisite', () => {
20
26
  const sourceDeployCmd = child.spawnSync('sf', [
21
27
  'project',
@@ -27,10 +33,15 @@ describe(PermissionSets.name, function () {
27
33
  ]);
28
34
  assert.deepStrictEqual(sourceDeployCmd.status, 0, sourceDeployCmd.output.toString());
29
35
  });
30
- it('should configure permission set presence status', async () => {
31
- await plugin.run(configurePermissionSet);
32
- const res = await plugin.retrieve(configurePermissionSet);
33
- assert.deepStrictEqual(res, configurePermissionSet);
36
+ it('should add permission set presence status', async () => {
37
+ await plugin.run(addConfigurePermissionSet);
38
+ const res = await plugin.retrieve(addConfigurePermissionSet);
39
+ assert.deepStrictEqual(res, addConfigurePermissionSet);
40
+ });
41
+ it('should remove permission set presence status', async () => {
42
+ await plugin.run(removeConfigurePermissionSet);
43
+ const res = await plugin.retrieve(removeConfigurePermissionSet);
44
+ assert.deepStrictEqual(res, removeConfigurePermissionSet);
34
45
  });
35
46
  });
36
47
  //# sourceMappingURL=index.e2e-spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/permission-sets/index.e2e-spec.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,KAAK,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE;IAC5B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,IAAI,MAAsB,CAAC;IAC3B,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,MAAM,sBAAsB,GAAG;QAC7B;YACE,iBAAiB,EAAE,qBAAqB;YACxC,uBAAuB,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;SACvD;KACF,CAAC;IAEF,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE;YAC5C,SAAS;YACT,QAAQ;YACR,OAAO;YACP,IAAI;YACJ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;YACnC,QAAQ;SACT,CAAC,CAAC;QACH,MAAM,CAAC,eAAe,CACpB,eAAe,CAAC,MAAM,EACtB,CAAC,EACD,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,CAClC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;QAC1D,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/permission-sets/index.e2e-spec.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,KAAK,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE;IAC5B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,IAAI,MAAsB,CAAC;IAC3B,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,MAAM,yBAAyB,GAAG;QAChC;YACE,iBAAiB,EAAE,qBAAqB;YACxC,uBAAuB,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;SACvD;KACF,CAAC;IAEF,MAAM,4BAA4B,GAAG;QACnC;YACE,iBAAiB,EAAE,qBAAqB;YACxC,uBAAuB,EAAE,EAAE;SAC5B;KACF,CAAC;IAEF,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE;YAC5C,SAAS;YACT,QAAQ;YACR,OAAO;YACP,IAAI;YACJ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;YACnC,QAAQ;SACT,CAAC,CAAC;QACH,MAAM,CAAC,eAAe,CACpB,eAAe,CAAC,MAAM,EACtB,CAAC,EACD,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,CAClC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;QAC7D,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;QAChE,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,4BAA4B,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -2,8 +2,8 @@ import { BrowserforcePlugin } from '../../../plugin.js';
2
2
  const ADD_BUTTON_SELECTOR = 'a[id$=":duelingListBox:backingList_add"]';
3
3
  const REMOVE_BUTTON_SELECTOR = 'a[id$=":duelingListBox:backingList_remove"]';
4
4
  const SAVE_BUTTON_SELECTOR = 'input[id$=":button_pc_save"]';
5
- const VALUES_AVAILABLE_SELECTOR = 'select[id$=":duelingListBox:backingList_a"]:not([disabled="disabled"])';
6
- const VALUES_ENABLED_SELECTOR = 'select[id$=":duelingListBox:backingList_s"]:not([disabled="disabled"])';
5
+ const VALUES_AVAILABLE_SELECTOR = 'select[id$=":duelingListBox:backingList_a"]';
6
+ const VALUES_ENABLED_SELECTOR = 'select[id$=":duelingListBox:backingList_s"]';
7
7
  export class ServicePresenceStatus extends BrowserforcePlugin {
8
8
  async retrieve(definition) {
9
9
  // Query for the permission set
@@ -13,9 +13,12 @@ export class ServicePresenceStatus extends BrowserforcePlugin {
13
13
  .singleRecordQuery(`SELECT Id FROM PermissionSet WHERE Name='${permissionSetName}'`);
14
14
  // Open the permission set setup page
15
15
  const page = await this.browserforce.openPage(`${permissionSet.Id}/e?s=ServicePresenceStatusAccess`);
16
- const enabledServicePresenceStatuses = await page.$$eval(`${VALUES_ENABLED_SELECTOR} > option`, (options) => {
17
- return options.map((option) => option.title ?? '');
16
+ const enabledServicePresenceStatuses = await page
17
+ .locator(`${VALUES_ENABLED_SELECTOR} > option:not(:disabled)`)
18
+ .evaluateAll((options) => {
19
+ return options.map((option) => option.title);
18
20
  });
21
+ await page.close();
19
22
  return enabledServicePresenceStatuses;
20
23
  }
21
24
  async apply(config) {
@@ -24,35 +27,39 @@ export class ServicePresenceStatus extends BrowserforcePlugin {
24
27
  const permissionSet = await this.org
25
28
  .getConnection()
26
29
  .singleRecordQuery(`SELECT Id FROM PermissionSet WHERE Name='${permissionSetName}'`);
27
- // Open the permission set setup page
28
30
  const page = await this.browserforce.openPage(`${permissionSet.Id}/e?s=ServicePresenceStatusAccess`);
29
31
  if (config?.servicePresenceStatuses) {
30
- await page.waitForSelector(`${VALUES_AVAILABLE_SELECTOR} > option`);
31
- const availableElements = await page.$$(`${VALUES_AVAILABLE_SELECTOR} > option`);
32
- for (const availableElement of availableElements) {
33
- const optionTitle = (await availableElement.evaluate((node) => node.getAttribute('title')))?.toString();
34
- if (optionTitle &&
35
- config.servicePresenceStatuses.includes(optionTitle)) {
36
- await availableElement.click();
37
- await page.click(ADD_BUTTON_SELECTOR);
32
+ const availableOptions = await page
33
+ .locator(`${VALUES_AVAILABLE_SELECTOR} > option:not(:disabled)`)
34
+ .evaluateAll((options) => {
35
+ return options.map((option) => option.title);
36
+ });
37
+ const enabledOptions = await page
38
+ .locator(`${VALUES_ENABLED_SELECTOR} > option:not(:disabled)`)
39
+ .evaluateAll((options) => {
40
+ return options.map((option) => option.title);
41
+ });
42
+ for (const optionTitle of availableOptions) {
43
+ if (config.servicePresenceStatuses.includes(optionTitle)) {
44
+ await page
45
+ .getByRole('option', { name: optionTitle, exact: true })
46
+ .click();
47
+ await page.locator(ADD_BUTTON_SELECTOR).click();
38
48
  }
39
49
  }
40
- await page.waitForSelector(`${VALUES_ENABLED_SELECTOR} > option`);
41
- const enabledElements = await page.$$(`${VALUES_ENABLED_SELECTOR} > option`);
42
- for (const enabledElement of enabledElements) {
43
- const optionTitle = (await enabledElement.evaluate((node) => node.getAttribute('title')))?.toString();
44
- if (optionTitle &&
45
- !config.servicePresenceStatuses.includes(optionTitle)) {
46
- await enabledElement.click();
47
- await page.click(REMOVE_BUTTON_SELECTOR);
50
+ // Find first option that needs to be removed
51
+ for (const optionTitle of enabledOptions) {
52
+ if (!config.servicePresenceStatuses.includes(optionTitle)) {
53
+ await page
54
+ .getByRole('option', { name: optionTitle, exact: true })
55
+ .click();
56
+ await page.locator(REMOVE_BUTTON_SELECTOR).click();
48
57
  }
49
58
  }
50
59
  }
51
60
  // Save the settings and wait for page refresh
52
- await Promise.all([
53
- page.waitForNavigation(),
54
- page.click(SAVE_BUTTON_SELECTOR),
55
- ]);
61
+ await page.locator(SAVE_BUTTON_SELECTOR).click();
62
+ await page.waitForLoadState('load');
56
63
  // Close the page
57
64
  await page.close();
58
65
  }