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
package/README.md CHANGED
@@ -54,7 +54,7 @@ $ sf browserforce apply -f ./config/currency.json --target-org myOrg@example.com
54
54
 
55
55
  - 🔧 configuration using JSON Schema (similar to the [Scratch Org Definition Configuration](https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_scratch_orgs_def_file.htm))
56
56
  - 🧠 idempotency of the `apply` command only applies what's necessary and allows re-execution (concept similar to [terraform](https://www.terraform.io/docs/commands/apply.html))
57
- - 🏎️ browser automation powered by Puppeteer and "Chrome for Testing", [learn more about Puppeteer and Browserforce](#puppeteer)
57
+ - 🏎️ browser automation powered by Playwright, [learn more about Playwright and Browserforce](#playwright)
58
58
 
59
59
  # Supported Browserforce Settings
60
60
 
@@ -126,30 +126,68 @@ Both the `browserforce apply` and `browserforce plan` commands expect a config f
126
126
  - `BROWSERFORCE_RETRY_MAX_RETRIES`: number of retries on failures opening a page (default: `4`)
127
127
  - `BROWSERFORCE_RETRY_TIMEOUT_MS`: initial time between retries in exponential mode (default: `4000`)
128
128
 
129
- # Puppeteer
129
+ # Migration to Playwright
130
130
 
131
- We use [Puppeteer](https://github.com/puppeteer/puppeteer) for browser automation which comes with its own "Chrome for Testing" browser.
131
+ **Important Notice for Next Version Release:**
132
132
 
133
- The puppeteer [installation doc](https://github.com/puppeteer/puppeteer#installation) describes how this works:
133
+ This project is transitioning from Puppeteer to Playwright for browser automation. The migration is planned for the next major version release.
134
134
 
135
- > When you install Puppeteer, it automatically downloads a recent version of
136
- > [Chrome for Testing](https://goo.gle/chrome-for-testing) (~170MB macOS, ~282MB Linux, ~280MB Windows) that is [guaranteed to
137
- > work](https://pptr.dev/faq#q-why-doesnt-puppeteer-vxxx-work-with-chromium-vyyy)
138
- > with Puppeteer. The browser is downloaded to the `$HOME/.cache/puppeteer` folder
139
- > by default (starting with Puppeteer v19.0.0).
135
+ ## What This Means for Users
140
136
 
141
- In most of the cases this just works! If you still want to skip the download and use another browser installation, you can do this as follows:
137
+ ### Current Version (Puppeteer-based)
138
+ - Continues to work as expected
139
+ - No action required from users
140
+ - Maintained for stability
142
141
 
143
- ```console
144
- export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
145
- sf plugins install sfdx-browserforce-plugin
146
- export PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
147
- sf browserforce:apply ...
148
- ```
142
+ ### Next Version (Playwright-based)
143
+ The upcoming release will include:
144
+
145
+ 1. **Improved Reliability**: Playwright offers better auto-waiting and more robust element interaction
146
+ 2. **Better Frame Support**: Native iframe handling without workarounds
147
+ 3. **Enhanced Debugging**: Built-in trace viewer and inspector tools
148
+ 4. **Modern API**: More intuitive locator-based API
149
+
150
+ ### Migration Actions Required
151
+
152
+ **For Plugin Developers:**
153
+ If you've created custom plugins or extended this project:
154
+
155
+ 1. **Update Browser Automation Code**:
156
+ - Replace `page.$()` with `page.locator()`
157
+ - Replace `page.$$()` with `page.locator().all()`
158
+ - Update `ElementHandle` references to `Locator`
159
+ - Review frame handling code (Playwright has better native support)
160
+
161
+ 2. **Update Dependencies**:
162
+ - Remove `puppeteer` dependency
163
+ - Add `playwright` or `@playwright/test` dependency
164
+
165
+ 3. **Review Documentation**:
166
+ - See [`docs/PLAYWRIGHT.md`](docs/PLAYWRIGHT.md) for best practices
167
+
168
+ **For End Users:**
169
+ - No configuration changes required
170
+ - Browser download process remains similar
171
+ - Environment variables remain compatible
172
+ - All existing configuration files will continue to work
173
+
174
+ # Playwright
175
+
176
+ We use [Playwright](https://playwright.dev/) for browser automation which comes with its own Chromium browser.
177
+
178
+ The Playwright [installation guide](https://playwright.dev/docs/intro) describes how this works:
179
+
180
+ > Playwright comes with bundled browser binaries for Chromium, Firefox, and WebKit. When you install Playwright, it automatically downloads the Chromium browser to ensure consistent automation across different environments. The browser is downloaded to the OS-specific cache directory.
181
+
182
+ In most cases this just works! If you want to skip the download and use another browser installation, you can do this as follows:
183
+
184
+
185
+ For more information on browser automation best practices, see the [Playwright documentation](docs/PLAYWRIGHT.md).
149
186
 
150
187
  Troubleshooting:
151
188
 
152
189
  - The installation is triggered via the `postinstall` hook of npm/yarn. If you've disabled running scripts with npm (`--ignore-scripts` or via config file), it will not download the browser.
190
+ - If you encounter issues with browser downloads, you can manually install browsers with: `npx playwright install chromium`
153
191
 
154
192
  # Contributing
155
193
 
@@ -1,4 +1,4 @@
1
- import { Flags, SfCommand, Ux, requiredOrgFlagWithDeprecations, } from '@salesforce/sf-plugins-core';
1
+ import { Flags, SfCommand, Ux } from '@salesforce/sf-plugins-core';
2
2
  import { promises } from 'fs';
3
3
  import * as path from 'path';
4
4
  import { Browserforce } from './browserforce.js';
@@ -8,7 +8,7 @@ import * as DRIVERS from './plugins/index.js';
8
8
  export class BrowserforceCommand extends SfCommand {
9
9
  static baseFlags = {
10
10
  ...SfCommand.baseFlags,
11
- 'target-org': requiredOrgFlagWithDeprecations,
11
+ 'target-org': Flags.requiredOrg(),
12
12
  definitionfile: Flags.string({
13
13
  char: 'f',
14
14
  description: 'path to a browserforce state file',
@@ -1 +1 @@
1
- {"version":3,"file":"browserforce-command.js","sourceRoot":"","sources":["../src/browserforce-command.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,SAAS,EACT,EAAE,EACF,+BAA+B,GAChC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAE9C,MAAM,OAAgB,mBAAuB,SAAQ,SAAY;IAC/D,MAAM,CAAC,SAAS,GAAG;QACjB,GAAG,SAAS,CAAC,SAAS;QACtB,YAAY,EAAE,+BAA+B;QAC7C,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC;YAC3B,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,mCAAmC;SACjD,CAAC;QACF,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,kCAAkC;SAChD,CAAC;QACF,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,OAAO;YACb,WAAW,EACT,4MAA4M;SAC/M,CAAC;KACH,CAAC;IACQ,EAAE,CAAe;IACjB,QAAQ,CAAQ;IAEnB,KAAK,CAAC,IAAI;QACf,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC;YACjC,SAAS,EAAE,mBAAmB,CAAC,SAAS;SACzC,CAAC,CAAC;QACH,IAAI,UAAU,CAAC;QACf,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,kBAAkB,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAChD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,EAClC,MAAM,CACP,CAAC;YACF,IAAI,CAAC;gBACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAC9C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QACD,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC/B,0EAA0E;QAC1E,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,EAAE,GAAG,IAAI,YAAY,CACxB,KAAK,CAAC,YAAY,CAAC,EACnB,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAC5C,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,GAAW;QAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAClC,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;IACH,CAAC"}
1
+ {"version":3,"file":"browserforce-command.js","sourceRoot":"","sources":["../src/browserforce-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAE9C,MAAM,OAAgB,mBAAuB,SAAQ,SAAY;IAC/D,MAAM,CAAC,SAAS,GAAG;QACjB,GAAG,SAAS,CAAC,SAAS;QACtB,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE;QACjC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC;YAC3B,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,mCAAmC;SACjD,CAAC;QACF,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,kCAAkC;SAChD,CAAC;QACF,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,OAAO;YACb,WAAW,EACT,4MAA4M;SAC/M,CAAC;KACH,CAAC;IACQ,EAAE,CAAe;IACjB,QAAQ,CAAQ;IAEnB,KAAK,CAAC,IAAI;QACf,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC;YACjC,SAAS,EAAE,mBAAmB,CAAC,SAAS;SACzC,CAAC,CAAC;QACH,IAAI,UAAU,CAAC;QACf,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,kBAAkB,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAChD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,EAClC,MAAM,CACP,CAAC;YACF,IAAI,CAAC;gBACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAC9C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QACD,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC/B,0EAA0E;QAC1E,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,EAAE,GAAG,IAAI,YAAY,CACxB,KAAK,CAAC,YAAY,CAAC,EACnB,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAC5C,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,GAAW;QAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAClC,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;IACH,CAAC"}
@@ -1,10 +1,11 @@
1
1
  import { Org } from '@salesforce/core';
2
2
  import { type Ux } from '@salesforce/sf-plugins-core';
3
- import { Browser, Frame, Page, WaitForOptions } from 'puppeteer';
3
+ import { Browser, BrowserContext, Page, FrameLocator } from 'playwright';
4
4
  export declare class Browserforce {
5
5
  org: Org;
6
6
  logger?: Ux;
7
7
  browser: Browser;
8
+ context: BrowserContext;
8
9
  page: Page;
9
10
  lightningSetupUrl: string;
10
11
  constructor(org: Org, logger?: Ux);
@@ -12,14 +13,17 @@ export declare class Browserforce {
12
13
  logout(): Promise<Browserforce>;
13
14
  throwPageErrors(page: Page): Promise<void>;
14
15
  getNewPage(): Promise<Page>;
15
- openPage(urlPath: string, options?: WaitForOptions): Promise<Page>;
16
- waitForSelectorInFrameOrPage(page: Page, selector: string): Promise<Page | Frame>;
16
+ openPage(urlPath: string, options?: {
17
+ waitUntil?: 'load' | 'domcontentloaded' | 'networkidle' | 'commit';
18
+ }): Promise<Page>;
19
+ waitForSelectorInFrameOrPage(page: Page, selector: string): Promise<Page | FrameLocator>;
17
20
  getMyDomain(): string | null;
18
21
  getInstanceUrl(): string;
19
22
  /**
20
23
  * @returns the setup url (e.g. https://[MyDomainName].my.salesforce-setup.com)
21
24
  */
22
25
  getLightningSetupUrl(): Promise<string>;
26
+ waitForIdle(page: Page, maxWaitTime?: number): Promise<void>;
23
27
  }
24
28
  export declare function throwPageErrors(page: Page): Promise<void>;
25
29
  export declare function retry<T>(input: (attemptCount: number) => PromiseLike<T> | T): Promise<T>;
@@ -1,5 +1,5 @@
1
1
  import pRetry from 'p-retry';
2
- import { launch } from 'puppeteer';
2
+ import { chromium, } from 'playwright';
3
3
  import { LoginPage } from './pages/login.js';
4
4
  const ERROR_DIV_SELECTOR = '#errorTitle';
5
5
  const ERROR_DIVS_SELECTOR = 'div.errorMsg';
@@ -8,6 +8,7 @@ export class Browserforce {
8
8
  org;
9
9
  logger;
10
10
  browser;
11
+ context;
11
12
  page;
12
13
  lightningSetupUrl;
13
14
  constructor(org, logger) {
@@ -15,16 +16,23 @@ export class Browserforce {
15
16
  this.logger = logger;
16
17
  }
17
18
  async login() {
18
- this.browser = await launch({
19
- args: [
20
- '--no-sandbox',
21
- '--disable-setuid-sandbox',
22
- // workaround for navigating frames https://github.com/puppeteer/puppeteer/issues/5123
23
- '--disable-features=site-per-process',
24
- ],
19
+ this.browser = await chromium.launch({
20
+ channel: process.env.CI ? 'chrome' : undefined,
21
+ args: ['--no-sandbox', '--disable-setuid-sandbox'],
25
22
  headless: !(process.env.BROWSER_DEBUG === 'true'),
26
23
  slowMo: parseInt(process.env.BROWSER_SLOWMO, 10) ?? 0,
27
24
  });
25
+ this.context = await this.browser.newContext({
26
+ viewport: { width: 1024, height: 768 },
27
+ });
28
+ // Start tracing if PLAYWRIGHT_TRACE is set
29
+ if (process.env.PLAYWRIGHT_TRACE === 'true') {
30
+ await this.context.tracing.start({
31
+ screenshots: true,
32
+ snapshots: true,
33
+ sources: true,
34
+ });
35
+ }
28
36
  const page = await this.getNewPage();
29
37
  try {
30
38
  const loginPage = new LoginPage(page);
@@ -37,6 +45,15 @@ export class Browserforce {
37
45
  }
38
46
  async logout() {
39
47
  if (this.browser) {
48
+ // Stop tracing and save if it was started
49
+ if (process.env.PLAYWRIGHT_TRACE === 'true') {
50
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
51
+ const tracePath = `trace-${timestamp}.zip`;
52
+ await this.context.tracing.stop({ path: tracePath });
53
+ if (this.logger) {
54
+ this.logger.log(`Playwright trace saved to: ${tracePath}`);
55
+ }
56
+ }
40
57
  await this.browser.close();
41
58
  }
42
59
  return this;
@@ -45,9 +62,8 @@ export class Browserforce {
45
62
  await throwPageErrors(page);
46
63
  }
47
64
  async getNewPage() {
48
- const page = await this.browser.newPage();
65
+ const page = await this.context.newPage();
49
66
  page.setDefaultNavigationTimeout(parseInt(process.env.BROWSERFORCE_NAVIGATION_TIMEOUT_MS ?? '90000', 10));
50
- await page.setViewport({ width: 1024, height: 768 });
51
67
  return page;
52
68
  }
53
69
  // path instead of url
@@ -59,7 +75,7 @@ export class Browserforce {
59
75
  ? await this.getLightningSetupUrl()
60
76
  : this.getInstanceUrl();
61
77
  const url = `${setupUrl}/${urlPath}`;
62
- const response = await page.goto(url, options);
78
+ const response = await page.goto(url, options ?? { waitUntil: 'load' });
63
79
  if (response) {
64
80
  if (!response.ok()) {
65
81
  await this.throwPageErrors(page);
@@ -88,19 +104,17 @@ export class Browserforce {
88
104
  }
89
105
  // If LEX is enabled, the classic url will be opened in an iframe.
90
106
  // Wait for either the selector in the page or in the iframe.
91
- // returns the page or the frame
107
+ // returns the page or the frame locator
92
108
  async waitForSelectorInFrameOrPage(page, selector) {
93
- await page.locator(`${selector}, ${VF_IFRAME_SELECTOR}`).wait();
94
- const frameElementHandle = await page.$(VF_IFRAME_SELECTOR);
95
- let frameOrPage = page;
96
- if (frameElementHandle) {
97
- const frame = await page.waitForFrame(async (f) => f.name().startsWith('vfFrameId') &&
98
- f.url()?.length > 0 &&
99
- f.url() !== 'about:blank');
100
- frameOrPage = frame;
109
+ await page.locator(`${selector}, ${VF_IFRAME_SELECTOR}`).first().waitFor();
110
+ const iframeCount = await page.locator(VF_IFRAME_SELECTOR).count();
111
+ if (iframeCount > 0) {
112
+ const frameLocator = page.frameLocator(VF_IFRAME_SELECTOR);
113
+ await frameLocator.locator(selector).first().waitFor();
114
+ return frameLocator;
101
115
  }
102
- await frameOrPage.locator(selector).wait();
103
- return frameOrPage;
116
+ await page.locator(selector).first().waitFor();
117
+ return page;
104
118
  }
105
119
  getMyDomain() {
106
120
  const instanceUrl = this.getInstanceUrl();
@@ -123,7 +137,7 @@ export class Browserforce {
123
137
  if (!this.lightningSetupUrl) {
124
138
  const page = await this.getNewPage();
125
139
  try {
126
- const lightningResponse = await page.goto(`${this.getInstanceUrl()}/lightning/setup/SetupOneHome/home`, { waitUntil: ['load', 'networkidle2'] });
140
+ const lightningResponse = await page.goto(`${this.getInstanceUrl()}/lightning/setup/SetupOneHome/home`, { waitUntil: 'load' });
127
141
  this.lightningSetupUrl = new URL(lightningResponse.url()).origin;
128
142
  }
129
143
  finally {
@@ -132,21 +146,32 @@ export class Browserforce {
132
146
  }
133
147
  return this.lightningSetupUrl;
134
148
  }
149
+ async waitForIdle(page, maxWaitTime = 2000) {
150
+ try {
151
+ await page.waitForLoadState('networkidle', { timeout: maxWaitTime });
152
+ }
153
+ catch {
154
+ console.log(`Waited ${maxWaitTime}ms, continuing regardless of network state`);
155
+ }
156
+ }
135
157
  }
136
158
  export async function throwPageErrors(page) {
137
- const errorHandle = await page.$(ERROR_DIV_SELECTOR);
138
- if (errorHandle) {
139
- const errorMsg = await page.evaluate((div) => div.innerText, errorHandle);
140
- await errorHandle.dispose();
159
+ const errorLocator = page.locator(ERROR_DIV_SELECTOR);
160
+ const errorCount = await errorLocator.count();
161
+ if (errorCount > 0) {
162
+ const errorMsg = await errorLocator.first().innerText();
141
163
  if (errorMsg && errorMsg.trim()) {
142
164
  throw new Error(errorMsg.trim());
143
165
  }
144
166
  }
145
- const errorElements = await page.$$(ERROR_DIVS_SELECTOR);
146
- if (errorElements.length) {
147
- const errorMessages = await page.evaluate((...errorDivs) => {
148
- return errorDivs.map((div) => div.innerText);
149
- }, ...errorElements);
167
+ const errorDivsLocator = page.locator(ERROR_DIVS_SELECTOR);
168
+ const errorDivsCount = await errorDivsLocator.count();
169
+ if (errorDivsCount > 0) {
170
+ const errorMessages = [];
171
+ for (let i = 0; i < errorDivsCount; i++) {
172
+ const text = await errorDivsLocator.nth(i).innerText();
173
+ errorMessages.push(text);
174
+ }
150
175
  const errorMsg = errorMessages
151
176
  .map((m) => m.trim())
152
177
  .join(' ')
@@ -1 +1 @@
1
- {"version":3,"file":"browserforce.js","sourceRoot":"","sources":["../src/browserforce.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browserforce.js","sourceRoot":"","sources":["../src/browserforce.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type Org } from '@salesforce/core';
2
- import { type Page } from 'puppeteer';
2
+ import { type Page } from 'playwright';
3
3
  export declare class LoginPage {
4
4
  private page;
5
5
  constructor(page: Page);
@@ -15,8 +15,7 @@ export class LoginPage {
15
15
  }
16
16
  const conn = org.getConnection();
17
17
  const response = await this.page.goto(`${conn.instanceUrl.replace(/\/$/, '')}/${FRONT_DOOR_PATH}?sid=${conn.accessToken}&retURL=${encodeURIComponent(POST_LOGIN_PATH)}`, {
18
- // should have waited at least 500ms for network connections, redirects should probably have happened already
19
- waitUntil: ['load', 'networkidle2'],
18
+ waitUntil: 'load',
20
19
  });
21
20
  const url = new URL(response.url());
22
21
  if (url.searchParams.has('startURL')) {
@@ -27,9 +26,10 @@ export class LoginPage {
27
26
  return this;
28
27
  }
29
28
  async throwPageErrors() {
30
- const errorHandle = await this.page.$(ERROR_DIV_SELECTOR);
31
- if (errorHandle) {
32
- const errorMessage = (await this.page.evaluate((div) => div.innerText, errorHandle))?.trim();
29
+ const errorLocator = this.page.locator(ERROR_DIV_SELECTOR);
30
+ const errorCount = await errorLocator.count();
31
+ if (errorCount > 0) {
32
+ const errorMessage = (await errorLocator.first().innerText())?.trim();
33
33
  if (errorMessage) {
34
34
  throw new Error(errorMessage);
35
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/pages/login.ts"],"names":[],"mappings":"AAGA,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAC9C,MAAM,eAAe,GAAG,8BAA8B,CAAC;AAEvD,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAEpC,MAAM,OAAO,SAAS;IACZ,IAAI,CAAO;IAEnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAQ;QAClB,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QAClC,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CACnC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,eAAe,QACvD,IAAI,CAAC,WACP,WAAW,kBAAkB,CAAC,eAAe,CAAC,EAAE,EAChD;YACE,6GAA6G;YAC7G,SAAS,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC;SACpC,CACF,CAAC;QACF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QACpC,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,qDAAqD;YACrD,kCAAkC;YAClC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAC1D,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,YAAY,GAAG,CACnB,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CACtB,CAAC,GAAmB,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,EACtC,WAAW,CACZ,CACF,EAAE,IAAI,EAAE,CAAC;YACV,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/pages/login.ts"],"names":[],"mappings":"AAGA,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAC9C,MAAM,eAAe,GAAG,8BAA8B,CAAC;AAEvD,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAEpC,MAAM,OAAO,SAAS;IACZ,IAAI,CAAO;IAEnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAQ;QAClB,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QAClC,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CACnC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,eAAe,QACvD,IAAI,CAAC,WACP,WAAW,kBAAkB,CAAC,eAAe,CAAC,EAAE,EAChD;YACE,SAAS,EAAE,MAAM;SAClB,CACF,CAAC;QACF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QACpC,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,qDAAqD;YACrD,kCAAkC;YAClC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;QAE9C,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,YAAY,GAAG,CAAC,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;YACtE,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -5,9 +5,10 @@ const SUBMIT_BUTTON_SELECTOR = 'input[id="thePage:theForm:theBlock:buttons:submi
5
5
  export class ActivitySettings extends BrowserforcePlugin {
6
6
  async retrieve() {
7
7
  const page = await this.browserforce.openPage(BASE_PATH);
8
- await page.waitForSelector(MANY_WHO_PREF_INPUT_SELECTOR);
9
8
  const response = {
10
- allowUsersToRelateMultipleContactsToTasksAndEvents: await page.$eval(MANY_WHO_PREF_INPUT_SELECTOR, (el) => el.checked),
9
+ allowUsersToRelateMultipleContactsToTasksAndEvents: await page
10
+ .locator(MANY_WHO_PREF_INPUT_SELECTOR)
11
+ .isChecked(),
11
12
  };
12
13
  await page.close();
13
14
  return response;
@@ -17,13 +18,15 @@ export class ActivitySettings extends BrowserforcePlugin {
17
18
  throw new Error('`allowUsersToRelateMultipleContactsToTasksAndEvents` can only be disabled with help of the salesforce.com Support team');
18
19
  }
19
20
  const page = await this.browserforce.openPage(BASE_PATH);
20
- await page.waitForSelector(MANY_WHO_PREF_INPUT_SELECTOR);
21
- await page.$eval(MANY_WHO_PREF_INPUT_SELECTOR, (e, v) => {
21
+ await page.locator(MANY_WHO_PREF_INPUT_SELECTOR).waitFor();
22
+ await page
23
+ .locator(MANY_WHO_PREF_INPUT_SELECTOR)
24
+ .evaluate((e, v) => {
22
25
  e.checked = v;
23
26
  }, config.allowUsersToRelateMultipleContactsToTasksAndEvents);
24
27
  await Promise.all([
25
- page.waitForNavigation(),
26
- page.click(SUBMIT_BUTTON_SELECTOR),
28
+ page.waitForLoadState('load'),
29
+ page.locator(SUBMIT_BUTTON_SELECTOR).click(),
27
30
  ]);
28
31
  await page.close();
29
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/activity-settings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,SAAS,GAAG,iCAAiC,CAAC;AAEpD,MAAM,4BAA4B,GAChC,kDAAkD,CAAC;AACrD,MAAM,sBAAsB,GAC1B,qDAAqD,CAAC;AAMxD,MAAM,OAAO,gBAAiB,SAAQ,kBAAkB;IAC/C,KAAK,CAAC,QAAQ;QACnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG;YACf,kDAAkD,EAAE,MAAM,IAAI,CAAC,KAAK,CAClE,4BAA4B,EAC5B,CAAC,EAAoB,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CACrC;SACF,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,kDAAkD,KAAK,KAAK,EAAE,CAAC;YACxE,MAAM,IAAI,KAAK,CACb,wHAAwH,CACzH,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,KAAK,CACd,4BAA4B,EAC5B,CAAC,CAAmB,EAAE,CAAU,EAAE,EAAE;YAClC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;QAChB,CAAC,EACD,MAAM,CAAC,kDAAkD,CAC1D,CAAC;QACF,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;SACnC,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/activity-settings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,SAAS,GAAG,iCAAiC,CAAC;AAEpD,MAAM,4BAA4B,GAChC,kDAAkD,CAAC;AACrD,MAAM,sBAAsB,GAC1B,qDAAqD,CAAC;AAMxD,MAAM,OAAO,gBAAiB,SAAQ,kBAAkB;IAC/C,KAAK,CAAC,QAAQ;QACnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG;YACf,kDAAkD,EAAE,MAAM,IAAI;iBAC3D,OAAO,CAAC,4BAA4B,CAAC;iBACrC,SAAS,EAAE;SACf,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,kDAAkD,KAAK,KAAK,EAAE,CAAC;YACxE,MAAM,IAAI,KAAK,CACb,wHAAwH,CACzH,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,OAAO,EAAE,CAAC;QAE3D,MAAM,IAAI;aACP,OAAO,CAAC,4BAA4B,CAAC;aACrC,QAAQ,CAAC,CAAC,CAAmB,EAAE,CAAU,EAAE,EAAE;YAC5C,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;QAChB,CAAC,EAAE,MAAM,CAAC,kDAAkD,CAAC,CAAC;QAEhE,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE;SAC7C,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
@@ -5,13 +5,16 @@ const SAVE_BUTTON_SELECTOR = 'input[class="btn"][type="submit"][name="save"]';
5
5
  export class CompanyInformation extends BrowserforcePlugin {
6
6
  async retrieve() {
7
7
  const page = await this.browserforce.openPage(getUrl(this.org.getOrgId()));
8
- await page.waitForSelector(CURRENCY_DROPDOWN_SELECTOR);
8
+ await page.locator(CURRENCY_DROPDOWN_SELECTOR).waitFor();
9
9
  const response = {
10
10
  defaultCurrencyIsoCode: '',
11
11
  };
12
- const selectedOptions = await page.$$eval(`${CURRENCY_DROPDOWN_SELECTOR} > option[selected]`, (options) => options.map((option) => option.textContent));
13
- if (selectedOptions?.length) {
14
- response.defaultCurrencyIsoCode = selectedOptions[0] ?? '';
12
+ const selectedOption = await page
13
+ .locator(`${CURRENCY_DROPDOWN_SELECTOR} > option[selected]`)
14
+ .first()
15
+ .textContent();
16
+ if (selectedOption) {
17
+ response.defaultCurrencyIsoCode = selectedOption;
15
18
  }
16
19
  await page.close();
17
20
  return response;
@@ -20,28 +23,35 @@ export class CompanyInformation extends BrowserforcePlugin {
20
23
  if (config.defaultCurrencyIsoCode !== undefined) {
21
24
  const page = await this.browserforce.openPage(getUrl(this.org.getOrgId()));
22
25
  // wait for selectors
23
- await page.waitForSelector(CURRENCY_DROPDOWN_SELECTOR);
24
- const selectElem = await page.$(CURRENCY_DROPDOWN_SELECTOR);
25
- await page.waitForSelector(SAVE_BUTTON_SELECTOR);
26
+ await page.locator(CURRENCY_DROPDOWN_SELECTOR).waitFor();
27
+ await page.locator(SAVE_BUTTON_SELECTOR).waitFor();
26
28
  // apply changes
27
- // await page.click(CURRENCY_DROPDOWN_SELECTOR);
28
- const optionList = await page.$$eval(`${CURRENCY_DROPDOWN_SELECTOR} > option`, (options) => options.map((option) => ({
29
- value: option.value,
30
- textContent: option.textContent,
31
- })));
32
- const toBeSelectedOption = optionList.find((option) => option.textContent == config.defaultCurrencyIsoCode);
29
+ const optionLocator = page.locator(`${CURRENCY_DROPDOWN_SELECTOR} > option`);
30
+ const optionCount = await optionLocator.count();
31
+ const optionList = [];
32
+ for (let i = 0; i < optionCount; i++) {
33
+ const option = optionLocator.nth(i);
34
+ const value = await option.getAttribute('value');
35
+ const textContent = await option.textContent();
36
+ if (value && textContent) {
37
+ optionList.push({ value, textContent });
38
+ }
39
+ }
40
+ const toBeSelectedOption = optionList.find((option) => option.textContent === config.defaultCurrencyIsoCode);
33
41
  if (!toBeSelectedOption) {
34
42
  throw new Error(`Invalid currency provided. '${config.defaultCurrencyIsoCode}' is not a valid option available for currencies. Please use the exact name as it appears in the list.`);
35
43
  }
36
- await selectElem.select(toBeSelectedOption.value);
44
+ await page
45
+ .locator(CURRENCY_DROPDOWN_SELECTOR)
46
+ .selectOption(toBeSelectedOption.value);
37
47
  // auto accept the dialog when it appears
38
48
  page.on('dialog', (dialog) => {
39
49
  dialog.accept();
40
50
  });
41
51
  // save
42
52
  await Promise.all([
43
- page.waitForNavigation(),
44
- page.click(SAVE_BUTTON_SELECTOR),
53
+ page.waitForLoadState('load'),
54
+ page.locator(SAVE_BUTTON_SELECTOR).click(),
45
55
  ]);
46
56
  await page.close();
47
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/company-information/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/company-information/index.ts"],"names":[],"mappings":"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"}
@@ -52,7 +52,9 @@ export class CustomerPortalAvailableCustomObjects extends BrowserforcePlugin {
52
52
  const frameOrPage = await this.browserforce.waitForSelectorInFrameOrPage(editPage, CUSTOM_OBJECT_AVAILABLE_FOR_CUSTOMER_PORTAL_SELECTOR);
53
53
  response.push({
54
54
  ...result,
55
- available: await frameOrPage.$eval(CUSTOM_OBJECT_AVAILABLE_FOR_CUSTOMER_PORTAL_SELECTOR, (el) => el.checked),
55
+ available: await frameOrPage
56
+ .locator(CUSTOM_OBJECT_AVAILABLE_FOR_CUSTOMER_PORTAL_SELECTOR)
57
+ .evaluate((el) => el.checked),
56
58
  });
57
59
  await editPage.close();
58
60
  }
@@ -101,10 +103,8 @@ export class CustomerPortalAvailableCustomObjects extends BrowserforcePlugin {
101
103
  const pageUrl = getObjectPageUrl(customObject, isLEX);
102
104
  const editPage = await this.browserforce.openPage(pageUrl);
103
105
  const frameOrPage = await this.browserforce.waitForSelectorInFrameOrPage(editPage, SAVE_BUTTON_SELECTOR);
104
- await Promise.all([
105
- editPage.waitForNavigation(),
106
- frameOrPage.click(SAVE_BUTTON_SELECTOR),
107
- ]);
106
+ await frameOrPage.locator(SAVE_BUTTON_SELECTOR).first().click();
107
+ await editPage.getByRole('heading', { name: 'Details' }).waitFor();
108
108
  await editPage.close();
109
109
  }
110
110
  await page.close();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/customer-portal/available-custom-objects/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/customer-portal/available-custom-objects/index.ts"],"names":[],"mappings":"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"}
@@ -15,12 +15,11 @@ export class CustomerPortalEnable extends BrowserforcePlugin {
15
15
  const page = await this.browserforce.openPage(BASE_PATH);
16
16
  await page
17
17
  .locator(ENABLE_CHECKBOX)
18
- .map((checkbox) => (checkbox.checked = true))
19
- .wait();
20
- await Promise.all([
21
- page.waitForNavigation(),
22
- page.locator(SAVE_BUTTON).click(),
23
- ]);
18
+ .evaluate((checkbox) => {
19
+ checkbox.checked = true;
20
+ });
21
+ await page.locator(SAVE_BUTTON).first().click();
22
+ await page.waitForLoadState('load');
24
23
  await page.close();
25
24
  }
26
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/customer-portal/enabled/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,SAAS,GAAG,8CAA8C,CAAC;AAEjE,MAAM,WAAW,GAAG,oBAAoB,CAAC;AACzC,MAAM,eAAe,GAAG,uCAAuC,CAAC;AAIhE,MAAM,OAAO,oBAAqB,SAAQ,kBAAkB;IACnD,KAAK,CAAC,QAAQ;QACnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACzD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACnE,OAAO,WAAW,CAAC,2BAA2B,IAAI,KAAK,CAAC;IAC1D,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,IAAY;QAC7B,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,IAAI;aACP,OAAO,CAAC,eAAe,CAAC;aACxB,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;aAC5C,IAAI,EAAE,CAAC;QACV,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE;SAClC,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/customer-portal/enabled/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,SAAS,GAAG,8CAA8C,CAAC;AAEjE,MAAM,WAAW,GAAG,oBAAoB,CAAC;AACzC,MAAM,eAAe,GAAG,uCAAuC,CAAC;AAIhE,MAAM,OAAO,oBAAqB,SAAQ,kBAAkB;IACnD,KAAK,CAAC,QAAQ;QACnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACzD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACnE,OAAO,WAAW,CAAC,2BAA2B,IAAI,KAAK,CAAC;IAC1D,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,IAAY;QAC7B,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,IAAI;aACP,OAAO,CAAC,eAAe,CAAC;aACxB,QAAQ,CAAC,CAAC,QAA0B,EAAE,EAAE;YACvC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,CAAC,CAAC,CAAC;QACL,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;QAChD,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}