sfdx-browserforce-plugin 4.4.3 → 4.6.0
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.
- package/lib/browserforce.d.ts +5 -0
- package/lib/browserforce.js +24 -5
- package/lib/browserforce.js.map +1 -1
- package/lib/pages/login.js +2 -2
- package/lib/pages/login.js.map +1 -1
- package/lib/plugins/density-settings/index.js +1 -1
- package/lib/plugins/density-settings/index.js.map +1 -1
- package/lib/plugins/high-velocity-sales-settings/page.js +3 -5
- package/lib/plugins/high-velocity-sales-settings/page.js.map +1 -1
- package/lib/plugins/index.d.ts +4 -1
- package/lib/plugins/index.js +4 -1
- package/lib/plugins/index.js.map +1 -1
- package/lib/plugins/lightning-experience-settings/index.js +3 -3
- package/lib/plugins/lightning-experience-settings/index.js.map +1 -1
- package/lib/plugins/linkedin-sales-navigator-settings/page.js +3 -2
- package/lib/plugins/linkedin-sales-navigator-settings/page.js.map +1 -1
- package/lib/plugins/omni-channel-settings/index.d.ts +9 -0
- package/lib/plugins/omni-channel-settings/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/omni-channel-settings/index.e2e-spec.js +26 -0
- package/lib/plugins/omni-channel-settings/index.e2e-spec.js.map +1 -0
- package/lib/plugins/omni-channel-settings/index.js +33 -0
- package/lib/plugins/omni-channel-settings/index.js.map +1 -0
- package/lib/plugins/opportunity-splits/index.e2e-spec.js +1 -0
- package/lib/plugins/opportunity-splits/index.e2e-spec.js.map +1 -1
- package/lib/plugins/opportunity-splits/index.js +2 -2
- package/lib/plugins/opportunity-splits/index.js.map +1 -1
- package/lib/plugins/opportunity-splits/pages/overview.d.ts +1 -2
- package/lib/plugins/opportunity-splits/pages/overview.js +1 -6
- package/lib/plugins/opportunity-splits/pages/overview.js.map +1 -1
- package/lib/plugins/permission-sets/index.d.ts +10 -0
- package/lib/plugins/permission-sets/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/permission-sets/index.e2e-spec.js +36 -0
- package/lib/plugins/permission-sets/index.e2e-spec.js.map +1 -0
- package/lib/plugins/permission-sets/index.js +22 -0
- package/lib/plugins/permission-sets/index.js.map +1 -0
- package/lib/plugins/permission-sets/service-presence-status/index.d.ts +10 -0
- package/lib/plugins/permission-sets/service-presence-status/index.js +56 -0
- package/lib/plugins/permission-sets/service-presence-status/index.js.map +1 -0
- package/lib/plugins/service-channels/capacity/index.d.ts +18 -0
- package/lib/plugins/service-channels/capacity/index.js +126 -0
- package/lib/plugins/service-channels/capacity/index.js.map +1 -0
- package/lib/plugins/service-channels/index.d.ts +12 -0
- package/lib/plugins/service-channels/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/service-channels/index.e2e-spec.js +57 -0
- package/lib/plugins/service-channels/index.e2e-spec.js.map +1 -0
- package/lib/plugins/service-channels/index.js +37 -0
- package/lib/plugins/service-channels/index.js.map +1 -0
- package/lib/plugins/slack/index.e2e-spec.js +2 -2
- package/lib/plugins/slack/index.e2e-spec.js.map +1 -1
- package/lib/plugins/slack/index.js +2 -2
- package/lib/plugins/slack/index.js.map +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +4 -4
package/lib/browserforce.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export declare class Browserforce {
|
|
|
6
6
|
logger?: Ux;
|
|
7
7
|
browser: Browser;
|
|
8
8
|
page: Page;
|
|
9
|
+
lightningSetupUrl: string;
|
|
9
10
|
constructor(org: Org, logger?: Ux);
|
|
10
11
|
login(): Promise<Browserforce>;
|
|
11
12
|
logout(): Promise<Browserforce>;
|
|
@@ -15,6 +16,10 @@ export declare class Browserforce {
|
|
|
15
16
|
waitForSelectorInFrameOrPage(page: Page, selector: string): Promise<Page | Frame>;
|
|
16
17
|
getMyDomain(): string | null;
|
|
17
18
|
getInstanceUrl(): string;
|
|
19
|
+
/**
|
|
20
|
+
* @returns the setup url (e.g. https://[MyDomainName].my.salesforce-setup.com)
|
|
21
|
+
*/
|
|
22
|
+
getLightningSetupUrl(): Promise<string>;
|
|
18
23
|
}
|
|
19
24
|
export declare function throwPageErrors(page: Page): Promise<void>;
|
|
20
25
|
export declare function retry<T>(input: (attemptCount: number) => PromiseLike<T> | T): Promise<T>;
|
package/lib/browserforce.js
CHANGED
|
@@ -3,12 +3,13 @@ import { launch } from 'puppeteer';
|
|
|
3
3
|
import { LoginPage } from './pages/login.js';
|
|
4
4
|
const ERROR_DIV_SELECTOR = '#errorTitle';
|
|
5
5
|
const ERROR_DIVS_SELECTOR = 'div.errorMsg';
|
|
6
|
-
const VF_IFRAME_SELECTOR = 'iframe[name^=vfFrameId]';
|
|
6
|
+
const VF_IFRAME_SELECTOR = 'force-aloha-page iframe[name^=vfFrameId]';
|
|
7
7
|
export class Browserforce {
|
|
8
8
|
org;
|
|
9
9
|
logger;
|
|
10
10
|
browser;
|
|
11
11
|
page;
|
|
12
|
+
lightningSetupUrl;
|
|
12
13
|
constructor(org, logger) {
|
|
13
14
|
this.org = org;
|
|
14
15
|
this.logger = logger;
|
|
@@ -21,7 +22,8 @@ export class Browserforce {
|
|
|
21
22
|
// workaround for navigating frames https://github.com/puppeteer/puppeteer/issues/5123
|
|
22
23
|
'--disable-features=site-per-process'
|
|
23
24
|
],
|
|
24
|
-
headless: !(process.env.BROWSER_DEBUG === 'true')
|
|
25
|
+
headless: !(process.env.BROWSER_DEBUG === 'true'),
|
|
26
|
+
slowMo: parseInt(process.env.BROWSER_SLOWMO, 10) ?? 0
|
|
25
27
|
});
|
|
26
28
|
const page = await this.getNewPage();
|
|
27
29
|
try {
|
|
@@ -53,7 +55,8 @@ export class Browserforce {
|
|
|
53
55
|
let page;
|
|
54
56
|
const result = await pRetry(async () => {
|
|
55
57
|
page = await this.getNewPage();
|
|
56
|
-
const
|
|
58
|
+
const setupUrl = urlPath.startsWith("lightning") ? await this.getLightningSetupUrl() : this.getInstanceUrl();
|
|
59
|
+
const url = `${setupUrl}/${urlPath}`;
|
|
57
60
|
const response = await page.goto(url, options);
|
|
58
61
|
if (response) {
|
|
59
62
|
if (!response.ok()) {
|
|
@@ -85,8 +88,8 @@ export class Browserforce {
|
|
|
85
88
|
// Wait for either the selector in the page or in the iframe.
|
|
86
89
|
// returns the page or the frame
|
|
87
90
|
async waitForSelectorInFrameOrPage(page, selector) {
|
|
88
|
-
await page.waitForSelector(
|
|
89
|
-
const frameElementHandle = await page.$(
|
|
91
|
+
await page.waitForSelector(`${selector}, ${VF_IFRAME_SELECTOR}`);
|
|
92
|
+
const frameElementHandle = await page.$(VF_IFRAME_SELECTOR);
|
|
90
93
|
let frameOrPage = page;
|
|
91
94
|
if (frameElementHandle) {
|
|
92
95
|
const frame = await page.waitForFrame(async (f) => f.name().startsWith('vfFrameId') && f.url()?.length > 0 && f.url() !== 'about:blank');
|
|
@@ -109,6 +112,22 @@ export class Browserforce {
|
|
|
109
112
|
// sometimes the instanceUrl includes a trailing slash
|
|
110
113
|
return this.org.getConnection().instanceUrl?.replace(/\/$/, '');
|
|
111
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* @returns the setup url (e.g. https://[MyDomainName].my.salesforce-setup.com)
|
|
117
|
+
*/
|
|
118
|
+
async getLightningSetupUrl() {
|
|
119
|
+
if (!this.lightningSetupUrl) {
|
|
120
|
+
const page = await this.getNewPage();
|
|
121
|
+
try {
|
|
122
|
+
const lightningResponse = await page.goto(`${this.getInstanceUrl()}/lightning/setup/SetupOneHome/home`, { waitUntil: ["load", "networkidle2"] });
|
|
123
|
+
this.lightningSetupUrl = new URL(lightningResponse.url()).origin;
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
await page.close();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return this.lightningSetupUrl;
|
|
130
|
+
}
|
|
112
131
|
}
|
|
113
132
|
export async function throwPageErrors(page) {
|
|
114
133
|
const errorHandle = await page.$(ERROR_DIV_SELECTOR);
|
package/lib/browserforce.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browserforce.js","sourceRoot":"","sources":["../src/browserforce.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAkB,MAAM,EAAwB,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,kBAAkB,GAAG,aAAa,CAAC;AACzC,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAC3C,MAAM,kBAAkB,GAAG,
|
|
1
|
+
{"version":3,"file":"browserforce.js","sourceRoot":"","sources":["../src/browserforce.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAkB,MAAM,EAAwB,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,kBAAkB,GAAG,aAAa,CAAC;AACzC,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAC3C,MAAM,kBAAkB,GAAG,0CAA0C,CAAC;AAEtE,MAAM,OAAO,YAAY;IAChB,GAAG,CAAM;IACT,MAAM,CAAM;IACZ,OAAO,CAAU;IACjB,IAAI,CAAO;IACX,iBAAiB,CAAS;IAEjC,YAAY,GAAQ,EAAE,MAAW;QAC/B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC;YAC1B,IAAI,EAAE;gBACJ,cAAc;gBACd,0BAA0B;gBAC1B,sFAAsF;gBACtF,qCAAqC;aACtC;YACD,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,CAAC;YACjD,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC;SACtD,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;gBAAS,CAAC;YACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,IAAU;QACrC,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1C,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kCAAkC,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1G,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sBAAsB;IACf,KAAK,CAAC,QAAQ,CAAC,OAAe,EAAE,OAAwB;QAC7D,IAAI,IAAU,CAAC;QACf,MAAM,MAAM,GAAG,MAAM,MAAM,CACzB,KAAK,IAAI,EAAE;YACT,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAC7G,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,OAAO,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC/C,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;oBACnB,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;oBACjC,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,EACD;YACE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBAC/B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,WAAW,6BAA6B,KAAK,GAAG,CAAC,CAAC;gBACvF,CAAC;gBACD,IAAI,IAAI,EAAE,CAAC;oBACT,IAAI,CAAC;wBACH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;oBACrB,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,cAAc;oBAChB,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,GAAG,EAAE,EAAE,CAAC;YACxE,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,MAAM,EAAE,EAAE,CAAC;SAC9E,CACF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,kEAAkE;IAClE,6DAA6D;IAC7D,gCAAgC;IACzB,KAAK,CAAC,4BAA4B,CAAC,IAAU,EAAE,QAAgB;QACpE,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,QAAQ,KAAK,kBAAkB,EAAE,CAAC,CAAC;QACjE,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAC5D,IAAI,WAAW,GAAiB,IAAI,CAAC;QACrC,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CACnC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,aAAa,CAClG,CAAC;YACF,WAAW,GAAG,KAAK,CAAC;QACtB,CAAC;QACD,MAAM,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO,WAAW,CAAC;IACrB,CAAC;IAEM,WAAW;QAChB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,yBAAyB;QACzB,4CAA4C;QAC5C,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzE,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,cAAc;QACnB,sDAAsD;QACtD,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,oBAAoB;QAC/B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACrC,IAAI,CAAC;gBACH,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,oCAAoC,EAAE,EAAC,SAAS,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,EAAC,CAAC,CAAC;gBAC/I,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;YACnE,CAAC;oBAAS,CAAC;gBACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAU;IAC9C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;IACrD,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAmB,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC1F,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC;IACzD,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CACvC,CAAC,GAAG,SAAS,EAAE,EAAE;YACf,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,GAAmB,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/D,CAAC,EACD,GAAG,aAAa,CACjB,CAAC;QACF,MAAM,QAAQ,GAAG,aAAa;aAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,IAAI,CAAC,GAAG,CAAC;aACT,IAAI,EAAE,CAAC;QACV,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CAAI,KAAmD;IAChF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE;QAC9B,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,WAAW,6BAA6B,KAAK,GAAG,CAAC,CAAC;QACnF,CAAC;QACD,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,GAAG,EAAE,EAAE,CAAC;QACxE,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,MAAM,EAAE,EAAE,CAAC;KAC9E,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/lib/pages/login.js
CHANGED
|
@@ -14,11 +14,11 @@ export class LoginPage {
|
|
|
14
14
|
throw new Error('login failed');
|
|
15
15
|
}
|
|
16
16
|
const conn = org.getConnection();
|
|
17
|
-
await this.page.goto(`${conn.instanceUrl}/${PATH}?sid=${conn.accessToken}&retURL=${encodeURIComponent(POST_LOGIN_PATH)}`, {
|
|
17
|
+
const response = await this.page.goto(`${conn.instanceUrl.replace(/\/$/, '')}/${PATH}?sid=${conn.accessToken}&retURL=${encodeURIComponent(POST_LOGIN_PATH)}`, {
|
|
18
18
|
// should have waited at least 500ms for network connections, redirects should probably have happened already
|
|
19
19
|
waitUntil: ['load', 'networkidle2']
|
|
20
20
|
});
|
|
21
|
-
const url = new URL(
|
|
21
|
+
const url = new URL(response.url());
|
|
22
22
|
if (url.searchParams.has('startURL')) {
|
|
23
23
|
// when query param startURL exists, the login failed
|
|
24
24
|
// e.g. /?ec=302&startURL=https...
|
package/lib/pages/login.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/pages/login.ts"],"names":[],"mappings":"AAGA,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AACpC,MAAM,IAAI,GAAG,qBAAqB,CAAC;AACnC,MAAM,eAAe,GAAG,8BAA8B,CAAC;AAEvD,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,IAAI,CAAC,IAAI,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/pages/login.ts"],"names":[],"mappings":"AAGA,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AACpC,MAAM,IAAI,GAAG,qBAAqB,CAAC;AACnC,MAAM,eAAe,GAAG,8BAA8B,CAAC;AAEvD,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,IAAI,QAAQ,IAAI,CAAC,WAAW,WAAW,kBAAkB,CAAC,eAAe,CAAC,EAAE,EACtH;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,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAmB,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YAC7G,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -3,7 +3,7 @@ const PATHS = {
|
|
|
3
3
|
BASE: 'lightning/setup/DensitySetup/home'
|
|
4
4
|
};
|
|
5
5
|
const SELECTORS = {
|
|
6
|
-
PICKER_ITEMS: '
|
|
6
|
+
PICKER_ITEMS: 'one-density-visual-picker one-density-visual-picker-item input'
|
|
7
7
|
};
|
|
8
8
|
export class DensitySettings extends BrowserforcePlugin {
|
|
9
9
|
async retrieve() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/density-settings/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,KAAK,GAAG;IACZ,IAAI,EAAE,mCAAmC;CAC1C,CAAC;AAEF,MAAM,SAAS,GAAG;IAChB,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/density-settings/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,KAAK,GAAG;IACZ,IAAI,EAAE,mCAAmC;CAC1C,CAAC;AAEF,MAAM,SAAS,GAAG;IAChB,YAAY,EAAE,gEAAgE;CAC/E,CAAC;AAYF,MAAM,OAAO,eAAgB,SAAQ,kBAAkB;IAC9C,KAAK,CAAC,QAAQ;QACnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1D,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO;YACL,OAAO,EAAE,QAAS,CAAC,KAAK;SACzB,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,MAAc;QAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAU;QAC3B,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACnD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,WAA+B,EAAE,EAAE,CAC3F,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QACF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YAC7B,OAAO,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAU,EAAE,IAAY;QACvC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;QACxE,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,2BAA2B,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7G,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,eAAe,CAClB,CAAC,QAAQ,EAAE,EAAE,CACX,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;gBACtF,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,CAC5B;YACD,eAAe,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,KAAuB,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;SACnF,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { throwPageErrors } from '../../browserforce.js';
|
|
2
2
|
const SET_UP_AND_ENABLE_HVS_BUTTON = 'button.setupAndEnableButton';
|
|
3
3
|
const ENABLE_TOGGLE = '#toggleHighVelocitySalesPref';
|
|
4
|
-
const AUTOMATION_TAB_ITEM = '
|
|
4
|
+
const AUTOMATION_TAB_ITEM = 'lightning-tab-bar li[data-tab-value="automationTab"]';
|
|
5
5
|
export class HighVelocitySalesSetupPage {
|
|
6
6
|
page;
|
|
7
7
|
constructor(page) {
|
|
@@ -11,14 +11,12 @@ export class HighVelocitySalesSetupPage {
|
|
|
11
11
|
return 'lightning/setup/SalesEngagement/home';
|
|
12
12
|
}
|
|
13
13
|
async setUpAndEnable() {
|
|
14
|
-
|
|
15
|
-
// wait for tab item or the button directly
|
|
16
|
-
await this.page.waitForSelector(`${AUTOMATION_TAB_ITEM}, ${SET_UP_AND_ENABLE_HVS_BUTTON}`, { timeout: 60_000 });
|
|
14
|
+
await this.page.waitForSelector(AUTOMATION_TAB_ITEM);
|
|
17
15
|
const tab = await this.page.$(AUTOMATION_TAB_ITEM);
|
|
18
16
|
if (tab) {
|
|
19
17
|
await this.page.evaluate((e) => e.click(), tab);
|
|
20
18
|
}
|
|
21
|
-
await this.page.waitForSelector(SET_UP_AND_ENABLE_HVS_BUTTON
|
|
19
|
+
await this.page.waitForSelector(SET_UP_AND_ENABLE_HVS_BUTTON);
|
|
22
20
|
const enableButton = await this.page.$(SET_UP_AND_ENABLE_HVS_BUTTON);
|
|
23
21
|
await Promise.all([
|
|
24
22
|
this.page.waitForSelector(ENABLE_TOGGLE, { timeout: 60_000 }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../../src/plugins/high-velocity-sales-settings/page.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,4BAA4B,GAAG,6BAA6B,CAAC;AACnE,MAAM,aAAa,GAAG,8BAA8B,CAAC;AACrD,MAAM,mBAAmB,GAAG,
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../../src/plugins/high-velocity-sales-settings/page.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,4BAA4B,GAAG,6BAA6B,CAAC;AACnE,MAAM,aAAa,GAAG,8BAA8B,CAAC;AACrD,MAAM,mBAAmB,GAAG,sDAAsD,CAAC;AAEnF,MAAM,OAAO,0BAA0B;IAC7B,IAAI,CAAO;IAEnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,MAAM,CAAC,MAAM;QAClB,OAAO,sCAAsC,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,cAAc;QACzB,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;QACnD,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAc,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC;QACrE,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAC7D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAc,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,YAAa,CAAC;SACjE,CAAC,CAAC;QACH,MAAM,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF"}
|
package/lib/plugins/index.d.ts
CHANGED
|
@@ -9,7 +9,9 @@ import { HighVelocitySalesSettings as highVelocitySalesSettings } from './high-v
|
|
|
9
9
|
import { HomePageLayouts as homePageLayouts } from './home-page-layouts/index.js';
|
|
10
10
|
import { LightningExperienceSettings as lightningExperienceSettings } from './lightning-experience-settings/index.js';
|
|
11
11
|
import { LinkedInSalesNavigatorSettings as linkedInSalesNavigatorSettings } from './linkedin-sales-navigator-settings/index.js';
|
|
12
|
+
import { OmniChannelSettings as omniChannelSettings } from './omni-channel-settings/index.js';
|
|
12
13
|
import { OpportunitySplits as opportunitySplits } from './opportunity-splits/index.js';
|
|
14
|
+
import { PermissionSets as permissionSets } from './permission-sets/index.js';
|
|
13
15
|
import { Picklists as picklists } from './picklists/index.js';
|
|
14
16
|
import { RecordTypes as recordTypes } from './record-types/index.js';
|
|
15
17
|
import { RelateContactToMultipleAccounts as relateContactToMultipleAccounts } from './relate-contact-to-multiple-accounts/index.js';
|
|
@@ -17,5 +19,6 @@ import { ReportsAndDashboards as reportsAndDashboards } from './reports-and-dash
|
|
|
17
19
|
import { SalesforceCpqConfig as salesforceCpqConfig } from './salesforce-cpq-config/index.js';
|
|
18
20
|
import { SalesforceToSalesforce as salesforceToSalesforce } from './salesforce-to-salesforce/index.js';
|
|
19
21
|
import { Security as security } from './security/index.js';
|
|
22
|
+
import { ServiceChannels as serviceChannels } from './service-channels/index.js';
|
|
20
23
|
import { Slack as slack } from './slack/index.js';
|
|
21
|
-
export { activitySettings, communities, companyInformation, customerPortal, deferSharingCalculation, densitySettings, emailDeliverability, highVelocitySalesSettings, homePageLayouts, lightningExperienceSettings, linkedInSalesNavigatorSettings, opportunitySplits, picklists, recordTypes, relateContactToMultipleAccounts, reportsAndDashboards, salesforceCpqConfig, salesforceToSalesforce, security, slack };
|
|
24
|
+
export { activitySettings, communities, companyInformation, customerPortal, deferSharingCalculation, densitySettings, emailDeliverability, highVelocitySalesSettings, homePageLayouts, lightningExperienceSettings, linkedInSalesNavigatorSettings, omniChannelSettings, opportunitySplits, permissionSets, picklists, recordTypes, relateContactToMultipleAccounts, reportsAndDashboards, salesforceCpqConfig, salesforceToSalesforce, security, serviceChannels, slack };
|
package/lib/plugins/index.js
CHANGED
|
@@ -9,7 +9,9 @@ import { HighVelocitySalesSettings as highVelocitySalesSettings } from './high-v
|
|
|
9
9
|
import { HomePageLayouts as homePageLayouts } from './home-page-layouts/index.js';
|
|
10
10
|
import { LightningExperienceSettings as lightningExperienceSettings } from './lightning-experience-settings/index.js';
|
|
11
11
|
import { LinkedInSalesNavigatorSettings as linkedInSalesNavigatorSettings } from './linkedin-sales-navigator-settings/index.js';
|
|
12
|
+
import { OmniChannelSettings as omniChannelSettings } from './omni-channel-settings/index.js';
|
|
12
13
|
import { OpportunitySplits as opportunitySplits } from './opportunity-splits/index.js';
|
|
14
|
+
import { PermissionSets as permissionSets } from './permission-sets/index.js';
|
|
13
15
|
import { Picklists as picklists } from './picklists/index.js';
|
|
14
16
|
import { RecordTypes as recordTypes } from './record-types/index.js';
|
|
15
17
|
import { RelateContactToMultipleAccounts as relateContactToMultipleAccounts } from './relate-contact-to-multiple-accounts/index.js';
|
|
@@ -17,6 +19,7 @@ import { ReportsAndDashboards as reportsAndDashboards } from './reports-and-dash
|
|
|
17
19
|
import { SalesforceCpqConfig as salesforceCpqConfig } from './salesforce-cpq-config/index.js';
|
|
18
20
|
import { SalesforceToSalesforce as salesforceToSalesforce } from './salesforce-to-salesforce/index.js';
|
|
19
21
|
import { Security as security } from './security/index.js';
|
|
22
|
+
import { ServiceChannels as serviceChannels } from './service-channels/index.js';
|
|
20
23
|
import { Slack as slack } from './slack/index.js';
|
|
21
|
-
export { activitySettings, communities, companyInformation, customerPortal, deferSharingCalculation, densitySettings, emailDeliverability, highVelocitySalesSettings, homePageLayouts, lightningExperienceSettings, linkedInSalesNavigatorSettings, opportunitySplits, picklists, recordTypes, relateContactToMultipleAccounts, reportsAndDashboards, salesforceCpqConfig, salesforceToSalesforce, security, slack };
|
|
24
|
+
export { activitySettings, communities, companyInformation, customerPortal, deferSharingCalculation, densitySettings, emailDeliverability, highVelocitySalesSettings, homePageLayouts, lightningExperienceSettings, linkedInSalesNavigatorSettings, omniChannelSettings, opportunitySplits, permissionSets, picklists, recordTypes, relateContactToMultipleAccounts, reportsAndDashboards, salesforceCpqConfig, salesforceToSalesforce, security, serviceChannels, slack };
|
|
22
25
|
//# sourceMappingURL=index.js.map
|
package/lib/plugins/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,kBAAkB,IAAI,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EAAE,cAAc,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,uBAAuB,IAAI,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC1G,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,mBAAmB,IAAI,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC7F,OAAO,EAAE,yBAAyB,IAAI,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACjH,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,2BAA2B,IAAI,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACtH,OAAO,EAAE,8BAA8B,IAAI,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AAChI,OAAO,EAAE,iBAAiB,IAAI,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,SAAS,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,+BAA+B,IAAI,+BAA+B,EAAE,MAAM,gDAAgD,CAAC;AACpI,OAAO,EAAE,oBAAoB,IAAI,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACjG,OAAO,EAAE,mBAAmB,IAAI,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC9F,OAAO,EAAE,sBAAsB,IAAI,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AACvG,OAAO,EAAE,QAAQ,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EACzB,eAAe,EACf,2BAA2B,EAC3B,8BAA8B,EAC9B,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,+BAA+B,EAC/B,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,QAAQ,EACR,KAAK,EACN,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,kBAAkB,IAAI,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EAAE,cAAc,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,uBAAuB,IAAI,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC1G,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,mBAAmB,IAAI,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC7F,OAAO,EAAE,yBAAyB,IAAI,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACjH,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,2BAA2B,IAAI,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACtH,OAAO,EAAE,8BAA8B,IAAI,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AAChI,OAAO,EAAE,mBAAmB,IAAI,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC9F,OAAO,EAAE,iBAAiB,IAAI,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,cAAc,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,SAAS,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,+BAA+B,IAAI,+BAA+B,EAAE,MAAM,gDAAgD,CAAC;AACpI,OAAO,EAAE,oBAAoB,IAAI,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACjG,OAAO,EAAE,mBAAmB,IAAI,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC9F,OAAO,EAAE,sBAAsB,IAAI,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AACvG,OAAO,EAAE,QAAQ,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EACzB,eAAe,EACf,2BAA2B,EAC3B,8BAA8B,EAC9B,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,WAAW,EACX,+BAA+B,EAC/B,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,QAAQ,EACR,eAAe,EACf,KAAK,EACN,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { BrowserforcePlugin } from '../../plugin.js';
|
|
|
2
2
|
const PATHS = {
|
|
3
3
|
BASE: 'lightning/setup/ThemingAndBranding/home'
|
|
4
4
|
};
|
|
5
|
-
const THEME_ROW_SELECTOR = '
|
|
5
|
+
const THEME_ROW_SELECTOR = '#setupComponent lightning-datatable table > tbody > tr';
|
|
6
6
|
const SELECTORS = {
|
|
7
7
|
DEVELOPER_NAMES: `${THEME_ROW_SELECTOR} > td:nth-child(2) > lightning-primitive-cell-factory lightning-base-formatted-text`,
|
|
8
8
|
STATES: `${THEME_ROW_SELECTOR} > td:nth-child(6) > lightning-primitive-cell-factory`
|
|
@@ -47,12 +47,12 @@ export class LightningExperienceSettings extends BrowserforcePlugin {
|
|
|
47
47
|
await page.waitForSelector(`${THEME_ROW_SELECTOR} lightning-button-menu`, {
|
|
48
48
|
visible: true
|
|
49
49
|
});
|
|
50
|
-
const menuButton = await newActiveThemeRowElementHandle.$('
|
|
50
|
+
const menuButton = await newActiveThemeRowElementHandle.$('td lightning-primitive-cell-factory lightning-primitive-cell-actions lightning-button-menu');
|
|
51
51
|
await page.evaluate((e) => e.click(), menuButton);
|
|
52
52
|
await page.waitForSelector(`${THEME_ROW_SELECTOR} lightning-button-menu slot lightning-menu-item`, {
|
|
53
53
|
visible: true
|
|
54
54
|
});
|
|
55
|
-
const menuItems = await menuButton.$$('
|
|
55
|
+
const menuItems = await menuButton.$$('slot lightning-menu-item');
|
|
56
56
|
// second last item: [show, activate, preview]
|
|
57
57
|
const activateMenuItem = menuItems[menuItems.length - 2];
|
|
58
58
|
await Promise.all([page.waitForNavigation(), page.evaluate((e) => e.click(), activateMenuItem)]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/lightning-experience-settings/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,KAAK,GAAG;IACZ,IAAI,EAAE,yCAAyC;CAChD,CAAC;AAEF,MAAM,kBAAkB,GAAG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/lightning-experience-settings/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { throwPageErrors } from '../../browserforce.js';
|
|
2
2
|
const ENABLE_TOGGLE = 'div[data-aura-class="setup_sales_linkedinLinkedInSetupRow"] input[type="checkbox"]';
|
|
3
|
-
const CONFIRM_CHECKBOX = '
|
|
3
|
+
const CONFIRM_CHECKBOX = 'lightning-input lightning-primitive-input-checkbox input[name="LinkedIn Sales Navigator Integration Acceptance Checkbox"]';
|
|
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;
|
|
@@ -18,7 +18,8 @@ export class LinkedInSalesNavigatorPage {
|
|
|
18
18
|
}
|
|
19
19
|
async setStatus(enable) {
|
|
20
20
|
await this.page.waitForSelector(ENABLE_TOGGLE, { visible: true });
|
|
21
|
-
await this.page
|
|
21
|
+
const toggle = await this.page.$(ENABLE_TOGGLE);
|
|
22
|
+
await toggle?.evaluate((input) => input.click());
|
|
22
23
|
if (enable) {
|
|
23
24
|
await this.page.waitForSelector(CONFIRM_CHECKBOX, { visible: true });
|
|
24
25
|
const checkbox = await this.page.$(CONFIRM_CHECKBOX);
|
|
@@ -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,GAAG,oFAAoF,CAAC;AAC3G,MAAM,gBAAgB,GACpB,
|
|
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,GAAG,oFAAoF,CAAC;AAC3G,MAAM,gBAAgB,GACpB,2HAA2H,CAAC;AAC9H,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,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,EAAoB,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAC7F,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,MAAe;QACpC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QAChD,MAAM,MAAM,EAAE,QAAQ,CAAC,CAAC,KAAuB,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAEnE,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACrE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;YACrD,MAAM,QAAQ,EAAE,QAAQ,CAAC,CAAC,KAAuB,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YACrE,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BrowserforcePlugin } from '../../plugin.js';
|
|
2
|
+
type Config = {
|
|
3
|
+
enableStatusBasedCapacityModel?: boolean;
|
|
4
|
+
};
|
|
5
|
+
export declare class OmniChannelSettings extends BrowserforcePlugin {
|
|
6
|
+
retrieve(definition?: Config): Promise<Config>;
|
|
7
|
+
apply(config: Config): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import assert from 'assert';
|
|
2
|
+
import { OmniChannelSettings } from './index.js';
|
|
3
|
+
describe(OmniChannelSettings.name, function () {
|
|
4
|
+
this.timeout('10m');
|
|
5
|
+
let plugin;
|
|
6
|
+
before(() => {
|
|
7
|
+
plugin = new OmniChannelSettings(global.bf);
|
|
8
|
+
});
|
|
9
|
+
const configEnableStatusBasedCapacityModel = {
|
|
10
|
+
enableStatusBasedCapacityModel: true
|
|
11
|
+
};
|
|
12
|
+
const configDisableStatusBasedCapacityModel = {
|
|
13
|
+
enableStatusBasedCapacityModel: false
|
|
14
|
+
};
|
|
15
|
+
it('should enable status based capacity model', async () => {
|
|
16
|
+
await plugin.run(configEnableStatusBasedCapacityModel);
|
|
17
|
+
const res = await plugin.retrieve();
|
|
18
|
+
assert.deepStrictEqual(res, configEnableStatusBasedCapacityModel);
|
|
19
|
+
});
|
|
20
|
+
it('should disable status based capacity model', async () => {
|
|
21
|
+
await plugin.run(configDisableStatusBasedCapacityModel);
|
|
22
|
+
const res = await plugin.retrieve();
|
|
23
|
+
assert.deepStrictEqual(res, configDisableStatusBasedCapacityModel);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
//# sourceMappingURL=index.e2e-spec.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { BrowserforcePlugin } from '../../plugin.js';
|
|
2
|
+
const PATHS = {
|
|
3
|
+
BASE: 'omnichannel/settings.apexp'
|
|
4
|
+
};
|
|
5
|
+
const SELECTORS = {
|
|
6
|
+
SAVE_BUTTON: 'input[id$=":save"]',
|
|
7
|
+
STATUS_CAPACITY_TOGGLE: 'input[id$=":toggleOmniStatusCapModelPref"]'
|
|
8
|
+
};
|
|
9
|
+
export class OmniChannelSettings extends BrowserforcePlugin {
|
|
10
|
+
async retrieve(definition) {
|
|
11
|
+
// Open the omni-channel setup page
|
|
12
|
+
const page = await this.browserforce.openPage(PATHS.BASE);
|
|
13
|
+
// Retrieve the service channel config
|
|
14
|
+
await page.waitForSelector(SELECTORS.STATUS_CAPACITY_TOGGLE);
|
|
15
|
+
const enableStatusBasedCapacityModel = await page.$eval(SELECTORS.STATUS_CAPACITY_TOGGLE, el => (el.getAttribute('checked') === "checked" ? true : false));
|
|
16
|
+
return { enableStatusBasedCapacityModel };
|
|
17
|
+
}
|
|
18
|
+
async apply(config) {
|
|
19
|
+
// Open the omni-channel setup page
|
|
20
|
+
const page = await this.browserforce.openPage(PATHS.BASE);
|
|
21
|
+
// Click the checkbox
|
|
22
|
+
const capacityModel = await page.waitForSelector(SELECTORS.STATUS_CAPACITY_TOGGLE);
|
|
23
|
+
await capacityModel.click();
|
|
24
|
+
// Save the settings
|
|
25
|
+
const saveButton = await page.waitForSelector(SELECTORS.SAVE_BUTTON);
|
|
26
|
+
await saveButton.click();
|
|
27
|
+
// Wait for the page to refresh
|
|
28
|
+
await page.waitForNavigation();
|
|
29
|
+
// Close the page
|
|
30
|
+
await page.close();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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,KAAK,GAAG;IACZ,IAAI,EAAE,4BAA4B;CACnC,CAAC;AAEF,MAAM,SAAS,GAAG;IAChB,WAAW,EAAE,oBAAoB;IACjC,sBAAsB,EAAE,4CAA4C;CACrE,CAAC;AAMF,MAAM,OAAO,mBAAoB,SAAQ,kBAAkB;IAClD,KAAK,CAAC,QAAQ,CAAC,UAAmB;QACvC,mCAAmC;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE1D,sCAAsC;QACtC,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAC7D,MAAM,8BAA8B,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,sBAAsB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAE3J,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,KAAK,CAAC,IAAI,CAAC,CAAC;QAE1D,qBAAqB;QACrB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QACnF,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;QAE5B,oBAAoB;QACpB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACrE,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;QAEzB,+BAA+B;QAC/B,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAE9B,iBAAiB;QACjB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -5,6 +5,7 @@ import * as path from 'path';
|
|
|
5
5
|
import { OpportunitySplits } from './index.js';
|
|
6
6
|
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
|
7
7
|
describe(OpportunitySplits.name, function () {
|
|
8
|
+
this.timeout('10m');
|
|
8
9
|
let plugin;
|
|
9
10
|
before(() => {
|
|
10
11
|
plugin = new OpportunitySplits(global.bf);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/opportunity-splits/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,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE;IAC/B,IAAI,MAAyB,CAAC;IAC9B,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG;QACpB,OAAO,EAAE,IAAI;KACd,CAAC;IACF,MAAM,cAAc,GAAG;QACrB,OAAO,EAAE,KAAK;KACf,CAAC;IACF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,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,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;QAC7B,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/opportunity-splits/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,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE;IAC/B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,IAAI,MAAyB,CAAC;IAC9B,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG;QACpB,OAAO,EAAE,IAAI;KACd,CAAC;IACF,MAAM,cAAc,GAAG;QACrB,OAAO,EAAE,KAAK;KACf,CAAC;IACF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,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,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;QAC7B,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -18,13 +18,13 @@ export class OpportunitySplits extends BrowserforcePlugin {
|
|
|
18
18
|
const setupPage = new SetupPage(page);
|
|
19
19
|
const layoutSelectionPage = await setupPage.enable();
|
|
20
20
|
const overviewPage = await layoutSelectionPage.choose();
|
|
21
|
-
await overviewPage.
|
|
21
|
+
await overviewPage.waitUntilCompleted();
|
|
22
22
|
}
|
|
23
23
|
else {
|
|
24
24
|
page = await this.browserforce.openPage(OverviewPage.PATH);
|
|
25
25
|
const overviewPage = new OverviewPage(page);
|
|
26
26
|
await overviewPage.disable();
|
|
27
|
-
await overviewPage.
|
|
27
|
+
await overviewPage.waitUntilCompleted();
|
|
28
28
|
}
|
|
29
29
|
await page.close();
|
|
30
30
|
}
|
|
@@ -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,
|
|
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,4 +1,3 @@
|
|
|
1
|
-
const IN_PRGOGRESS = '#enablingInProgress';
|
|
2
1
|
const COMPLETED = '#prefSettingSucceeded';
|
|
3
2
|
const DISABLE_LINK = 'div[id*=":disable_form:"] a';
|
|
4
3
|
const DISABLE_CONFIRM_CHECKBOX = 'input#dis_confirm';
|
|
@@ -12,8 +11,7 @@ export class OverviewPage {
|
|
|
12
11
|
async isEnabled() {
|
|
13
12
|
return (await this.page.$(DISABLE_LINK)) !== null;
|
|
14
13
|
}
|
|
15
|
-
async
|
|
16
|
-
await this.page.waitForSelector(IN_PRGOGRESS);
|
|
14
|
+
async waitUntilCompleted() {
|
|
17
15
|
// 10 minutes
|
|
18
16
|
await this.page.waitForSelector(COMPLETED, { timeout: 10 * 60 * 1000 });
|
|
19
17
|
}
|
|
@@ -26,8 +24,5 @@ export class OverviewPage {
|
|
|
26
24
|
await Promise.all([this.page.waitForNavigation(), this.page.click(DISABLE_CONFIRM_BUTTON)]);
|
|
27
25
|
return this;
|
|
28
26
|
}
|
|
29
|
-
async waitUntilDisabled() {
|
|
30
|
-
await this.page.waitForSelector(COMPLETED);
|
|
31
|
-
}
|
|
32
27
|
}
|
|
33
28
|
//# sourceMappingURL=overview.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overview.js","sourceRoot":"","sources":["../../../../src/plugins/opportunity-splits/pages/overview.ts"],"names":[],"mappings":"AAEA,MAAM,
|
|
1
|
+
{"version":3,"file":"overview.js","sourceRoot":"","sources":["../../../../src/plugins/opportunity-splits/pages/overview.ts"],"names":[],"mappings":"AAEA,MAAM,SAAS,GAAG,uBAAuB,CAAC;AAC1C,MAAM,YAAY,GAAG,6BAA6B,CAAC;AACnD,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AACrD,MAAM,sBAAsB,GAAG,uDAAuD,CAAC;AAEvF,MAAM,OAAO,YAAY;IACvB,MAAM,CAAC,IAAI,GAAG,uEAAuE,CAAC;IAC9E,IAAI,CAAC;IAEb,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,SAAS;QACpB,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,CAAC;IACpD,CAAC;IAEM,KAAK,CAAC,kBAAkB;QAC7B,aAAa;QACb,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC;QAC1D,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC;QACxD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAC5F,OAAO,IAAI,CAAC;IACd,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BrowserforcePlugin } from '../../plugin.js';
|
|
2
|
+
type PermissionSet = {
|
|
3
|
+
permissionSetName: string;
|
|
4
|
+
servicePresenceStatuses: string[];
|
|
5
|
+
};
|
|
6
|
+
export declare class PermissionSets extends BrowserforcePlugin {
|
|
7
|
+
retrieve(definition?: PermissionSet[]): Promise<PermissionSet[]>;
|
|
8
|
+
apply(plan: PermissionSet[]): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import assert from 'assert';
|
|
2
|
+
import * as child from 'child_process';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
import { PermissionSets } from './index.js';
|
|
6
|
+
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
|
7
|
+
describe(PermissionSets.name, function () {
|
|
8
|
+
this.timeout('10m');
|
|
9
|
+
let plugin;
|
|
10
|
+
before(() => {
|
|
11
|
+
plugin = new PermissionSets(global.bf);
|
|
12
|
+
});
|
|
13
|
+
const configurePermissionSet = [
|
|
14
|
+
{
|
|
15
|
+
permissionSetName: "ServicePresenceTest",
|
|
16
|
+
servicePresenceStatuses: ["TestStatus", "TestStatus3"]
|
|
17
|
+
}
|
|
18
|
+
];
|
|
19
|
+
it('should create permission set and service presence status as a prerequisite', () => {
|
|
20
|
+
const sourceDeployCmd = child.spawnSync('sf', [
|
|
21
|
+
'project',
|
|
22
|
+
'deploy',
|
|
23
|
+
'start',
|
|
24
|
+
'-d',
|
|
25
|
+
path.join(__dirname, 'sfdx-source'),
|
|
26
|
+
'--json'
|
|
27
|
+
]);
|
|
28
|
+
assert.deepStrictEqual(sourceDeployCmd.status, 0, sourceDeployCmd.output.toString());
|
|
29
|
+
});
|
|
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);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=index.e2e-spec.js.map
|
|
@@ -0,0 +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,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvF,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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BrowserforcePlugin } from '../../plugin.js';
|
|
2
|
+
import { ServicePresenceStatus } from './service-presence-status/index.js';
|
|
3
|
+
export class PermissionSets extends BrowserforcePlugin {
|
|
4
|
+
async retrieve(definition) {
|
|
5
|
+
const pluginServicePresenceStatus = new ServicePresenceStatus(this.browserforce);
|
|
6
|
+
const permissionSets = [];
|
|
7
|
+
for await (const permissionSet of definition) {
|
|
8
|
+
permissionSets.push({
|
|
9
|
+
permissionSetName: permissionSet.permissionSetName,
|
|
10
|
+
servicePresenceStatuses: await pluginServicePresenceStatus.retrieve(permissionSet)
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
return permissionSets;
|
|
14
|
+
}
|
|
15
|
+
async apply(plan) {
|
|
16
|
+
const pluginServicePresenceStatus = new ServicePresenceStatus(this.browserforce);
|
|
17
|
+
for await (const permissionSet of plan) {
|
|
18
|
+
await pluginServicePresenceStatus.apply(permissionSet);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/permission-sets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAO3E,MAAM,OAAO,cAAe,SAAQ,kBAAkB;IAC7C,KAAK,CAAC,QAAQ,CAAC,UAA4B;QAChD,MAAM,2BAA2B,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEjF,MAAM,cAAc,GAAoB,EAAE,CAAC;QAE3C,IAAI,KAAK,EAAE,MAAM,aAAa,IAAI,UAAU,EAAE,CAAC;YAC7C,cAAc,CAAC,IAAI,CAAC;gBAClB,iBAAiB,EAAE,aAAa,CAAC,iBAAiB;gBAClD,uBAAuB,EAAE,MAAM,2BAA2B,CAAC,QAAQ,CAAC,aAAa,CAAC;aACnF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,IAAqB;QACtC,MAAM,2BAA2B,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEjF,IAAI,KAAK,EAAE,MAAM,aAAa,IAAI,IAAI,EAAE,CAAC;YACvC,MAAM,2BAA2B,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BrowserforcePlugin } from '../../../plugin.js';
|
|
2
|
+
type PermissionSet = {
|
|
3
|
+
permissionSetName: string;
|
|
4
|
+
servicePresenceStatuses: string[];
|
|
5
|
+
};
|
|
6
|
+
export declare class ServicePresenceStatus extends BrowserforcePlugin {
|
|
7
|
+
retrieve(definition: PermissionSet): Promise<string[]>;
|
|
8
|
+
apply(config: PermissionSet): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { BrowserforcePlugin } from '../../../plugin.js';
|
|
2
|
+
const SELECTORS = {
|
|
3
|
+
ADD_BUTTON: 'a[id$=":duelingListBox:backingList_add"]',
|
|
4
|
+
REMOVE_BUTTON: 'a[id$=":duelingListBox:backingList_remove"]',
|
|
5
|
+
SAVE_BUTTON: 'input[id$=":button_pc_save"]',
|
|
6
|
+
VALUES_AVAILABLE: 'select[id$=":duelingListBox:backingList_a"]:not([disabled="disabled"])',
|
|
7
|
+
VALUES_ENABLED: 'select[id$=":duelingListBox:backingList_s"]:not([disabled="disabled"])'
|
|
8
|
+
};
|
|
9
|
+
export class ServicePresenceStatus extends BrowserforcePlugin {
|
|
10
|
+
async retrieve(definition) {
|
|
11
|
+
// Query for the permission set
|
|
12
|
+
const permissionSetName = definition.permissionSetName;
|
|
13
|
+
const permissionSet = await this.org.getConnection().singleRecordQuery(`SELECT Id FROM PermissionSet WHERE Name='${permissionSetName}'`);
|
|
14
|
+
// Open the permission set setup page
|
|
15
|
+
const page = await this.browserforce.openPage(`${permissionSet.Id}/e?s=ServicePresenceStatusAccess`);
|
|
16
|
+
const enabledServicePresenceStatuses = await page.$$eval(`${SELECTORS.VALUES_ENABLED} > option`, (options) => {
|
|
17
|
+
return options.map((option) => option.title ?? '');
|
|
18
|
+
});
|
|
19
|
+
return enabledServicePresenceStatuses;
|
|
20
|
+
}
|
|
21
|
+
async apply(config) {
|
|
22
|
+
// Query for the permission set
|
|
23
|
+
const permissionSetName = config.permissionSetName;
|
|
24
|
+
const permissionSet = await this.org.getConnection().singleRecordQuery(`SELECT Id FROM PermissionSet WHERE Name='${permissionSetName}'`);
|
|
25
|
+
// Open the permission set setup page
|
|
26
|
+
const page = await this.browserforce.openPage(`${permissionSet.Id}/e?s=ServicePresenceStatusAccess`);
|
|
27
|
+
if (config?.servicePresenceStatuses) {
|
|
28
|
+
await page.waitForSelector(`${SELECTORS.VALUES_AVAILABLE} > option`);
|
|
29
|
+
const availableElements = await page.$$(`${SELECTORS.VALUES_AVAILABLE} > option`);
|
|
30
|
+
for (const availableElement of availableElements) {
|
|
31
|
+
const optionTitle = (await availableElement.evaluate(node => node.getAttribute('title')))?.toString();
|
|
32
|
+
if (optionTitle && config.servicePresenceStatuses.includes(optionTitle)) {
|
|
33
|
+
await availableElement.click();
|
|
34
|
+
await page.click(SELECTORS.ADD_BUTTON);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
await page.waitForSelector(`${SELECTORS.VALUES_ENABLED} > option`);
|
|
38
|
+
const enabledElements = await page.$$(`${SELECTORS.VALUES_ENABLED} > option`);
|
|
39
|
+
for (const enabledElement of enabledElements) {
|
|
40
|
+
const optionTitle = (await enabledElement.evaluate(node => node.getAttribute('title')))?.toString();
|
|
41
|
+
if (optionTitle && !config.servicePresenceStatuses.includes(optionTitle)) {
|
|
42
|
+
await enabledElement.click();
|
|
43
|
+
await page.click(SELECTORS.REMOVE_BUTTON);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Save the settings and wait for page refresh
|
|
48
|
+
await Promise.all([
|
|
49
|
+
page.waitForNavigation(),
|
|
50
|
+
page.click(SELECTORS.SAVE_BUTTON)
|
|
51
|
+
]);
|
|
52
|
+
// Close the page
|
|
53
|
+
await page.close();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/permission-sets/service-presence-status/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BrowserforcePlugin } from '../../../plugin.js';
|
|
2
|
+
type ServiceChannel = {
|
|
3
|
+
serviceChannelDeveloperName: string;
|
|
4
|
+
capacity: CapacityConfig;
|
|
5
|
+
};
|
|
6
|
+
export type CapacityConfig = {
|
|
7
|
+
capacityModel?: string;
|
|
8
|
+
statusField?: string;
|
|
9
|
+
valuesForInProgress?: string[];
|
|
10
|
+
checkAgentCapacityOnReopenedWorkItems?: boolean;
|
|
11
|
+
checkAgentCapacityOnReassignedWorkItems?: boolean;
|
|
12
|
+
};
|
|
13
|
+
export declare class Capacity extends BrowserforcePlugin {
|
|
14
|
+
retrieve(definition: ServiceChannel): Promise<CapacityConfig>;
|
|
15
|
+
diff(state?: CapacityConfig, definition?: CapacityConfig): CapacityConfig | undefined;
|
|
16
|
+
apply(config: ServiceChannel): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { BrowserforcePlugin } from '../../../plugin.js';
|
|
2
|
+
const SELECTORS = {
|
|
3
|
+
ADD_BUTTON: 'a[id$=":duelingListBox:backingList_add"]',
|
|
4
|
+
CAPACITY_MODEL: 'select[id$=":capacityModelSection:editCapacityModel"]',
|
|
5
|
+
OWNER_CHANGE_CAPACITY: 'input[name*=":ownerChangeCapacityCheck"]',
|
|
6
|
+
REMOVE_BUTTON: 'a[id$=":duelingListBox:backingList_remove"]',
|
|
7
|
+
SAVE_BUTTON: 'input[id$=":save"]',
|
|
8
|
+
STATUS_FIELD: 'select[id$=":statusFieldSection:editCapacityModel"]',
|
|
9
|
+
STATUS_CHANGE_CAPACITY: 'input[name*=":statusChangeCapacityCheck"]',
|
|
10
|
+
VALUES_COMPLETED: 'select[id$=":statusFieldValues:duelingListBox:backingList_a"]:not([disabled="disabled"])',
|
|
11
|
+
VALUES_IN_PROGRESS: 'select[id$=":statusFieldValues:duelingListBox:backingList_s"]:not([disabled="disabled"])'
|
|
12
|
+
};
|
|
13
|
+
export class Capacity extends BrowserforcePlugin {
|
|
14
|
+
async retrieve(definition) {
|
|
15
|
+
// Query for the service channel
|
|
16
|
+
const serviceChannelDeveloperName = definition.serviceChannelDeveloperName;
|
|
17
|
+
const serviceChannel = await this.org.getConnection().singleRecordQuery(`SELECT Id FROM ServiceChannel WHERE DeveloperName='${serviceChannelDeveloperName}'`);
|
|
18
|
+
// Open the service channel setup page
|
|
19
|
+
const page = await this.browserforce.openPage(`${serviceChannel.Id}/e`);
|
|
20
|
+
// Retrieve the service channel config
|
|
21
|
+
if (!await page.$(SELECTORS.CAPACITY_MODEL)) {
|
|
22
|
+
return {};
|
|
23
|
+
}
|
|
24
|
+
const capacityModel = (await page.$eval(`${SELECTORS.CAPACITY_MODEL} > option[selected]`, (el) => el.value)) ?? '';
|
|
25
|
+
if (capacityModel === 'StatusBased') {
|
|
26
|
+
const statusField = (await page.$eval(`${SELECTORS.STATUS_FIELD} > option[selected]`, (el) => el.value)) ?? '';
|
|
27
|
+
const valuesForInProgress = await page.$$eval(`${SELECTORS.VALUES_IN_PROGRESS} > option`, (options) => {
|
|
28
|
+
return options.map((option) => option.title ?? '');
|
|
29
|
+
});
|
|
30
|
+
const checkAgentCapacityOnReopenedWorkItems = await page.$eval(SELECTORS.STATUS_CHANGE_CAPACITY, (el) => el.getAttribute('checked') === 'checked' ? true : false);
|
|
31
|
+
const checkAgentCapacityOnReassignedWorkItems = await page.$eval(SELECTORS.OWNER_CHANGE_CAPACITY, (el) => el.getAttribute('checked') === 'checked' ? true : false);
|
|
32
|
+
return {
|
|
33
|
+
capacityModel,
|
|
34
|
+
statusField,
|
|
35
|
+
valuesForInProgress,
|
|
36
|
+
checkAgentCapacityOnReopenedWorkItems,
|
|
37
|
+
checkAgentCapacityOnReassignedWorkItems
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return { capacityModel };
|
|
41
|
+
}
|
|
42
|
+
diff(state, definition) {
|
|
43
|
+
const response = {};
|
|
44
|
+
if (state && definition) {
|
|
45
|
+
if (definition.capacityModel === 'Tab-based') {
|
|
46
|
+
if (definition.capacityModel !== state.capacityModel) {
|
|
47
|
+
response.capacityModel = definition.capacityModel;
|
|
48
|
+
return response;
|
|
49
|
+
}
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
if (definition.capacityModel !== state.capacityModel) {
|
|
53
|
+
response.capacityModel = definition.capacityModel;
|
|
54
|
+
}
|
|
55
|
+
if (definition.statusField !== state.statusField) {
|
|
56
|
+
response.statusField = definition.statusField;
|
|
57
|
+
}
|
|
58
|
+
if (JSON.stringify(definition.valuesForInProgress) !== JSON.stringify(state.valuesForInProgress)) {
|
|
59
|
+
response.valuesForInProgress = definition.valuesForInProgress;
|
|
60
|
+
}
|
|
61
|
+
if (definition.checkAgentCapacityOnReassignedWorkItems !== state.checkAgentCapacityOnReassignedWorkItems) {
|
|
62
|
+
response.checkAgentCapacityOnReassignedWorkItems = definition.checkAgentCapacityOnReassignedWorkItems;
|
|
63
|
+
}
|
|
64
|
+
if (definition.checkAgentCapacityOnReopenedWorkItems !== state.checkAgentCapacityOnReopenedWorkItems) {
|
|
65
|
+
response.checkAgentCapacityOnReopenedWorkItems = definition.checkAgentCapacityOnReopenedWorkItems;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return Object.keys(response).length ? response : undefined;
|
|
69
|
+
}
|
|
70
|
+
async apply(config) {
|
|
71
|
+
const conn = this.org.getConnection();
|
|
72
|
+
// Query for the service channel
|
|
73
|
+
const serviceChannelDeveloperName = config.serviceChannelDeveloperName;
|
|
74
|
+
const serviceChannel = await conn.singleRecordQuery(`SELECT Id FROM ServiceChannel WHERE DeveloperName='${serviceChannelDeveloperName}'`);
|
|
75
|
+
// Open the service channel setup page
|
|
76
|
+
const page = await this.browserforce.openPage(`${serviceChannel.Id}/e`);
|
|
77
|
+
// Update the service channel config
|
|
78
|
+
const configCapacity = config.capacity;
|
|
79
|
+
if (configCapacity?.capacityModel) {
|
|
80
|
+
await page.waitForSelector(SELECTORS.CAPACITY_MODEL);
|
|
81
|
+
await page.select(SELECTORS.CAPACITY_MODEL, configCapacity.capacityModel);
|
|
82
|
+
}
|
|
83
|
+
if (configCapacity?.statusField) {
|
|
84
|
+
await page.waitForSelector(SELECTORS.STATUS_FIELD);
|
|
85
|
+
await page.select(SELECTORS.STATUS_FIELD, configCapacity.statusField);
|
|
86
|
+
}
|
|
87
|
+
if (configCapacity?.valuesForInProgress) {
|
|
88
|
+
await page.waitForSelector(`${SELECTORS.VALUES_COMPLETED} > option`);
|
|
89
|
+
const completedElements = await page.$$(`${SELECTORS.VALUES_COMPLETED} > option`);
|
|
90
|
+
for (const completedElement of completedElements) {
|
|
91
|
+
const optionTitle = (await completedElement.evaluate(node => node.getAttribute('title')))?.toString();
|
|
92
|
+
if (optionTitle && configCapacity.valuesForInProgress.includes(optionTitle)) {
|
|
93
|
+
await completedElement.click();
|
|
94
|
+
await page.click(SELECTORS.ADD_BUTTON);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
await page.waitForSelector(`${SELECTORS.VALUES_IN_PROGRESS} > option`);
|
|
98
|
+
const inprogressElements = await page.$$(`${SELECTORS.VALUES_IN_PROGRESS} > option`);
|
|
99
|
+
for (const inprogressElement of inprogressElements) {
|
|
100
|
+
const optionTitle = (await inprogressElement.evaluate(node => node.getAttribute('title')))?.toString();
|
|
101
|
+
if (optionTitle && !configCapacity.valuesForInProgress.includes(optionTitle)) {
|
|
102
|
+
await inprogressElement.click();
|
|
103
|
+
await page.click(SELECTORS.REMOVE_BUTTON);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (configCapacity?.checkAgentCapacityOnReassignedWorkItems !== undefined) {
|
|
108
|
+
await page.$eval(SELECTORS.STATUS_CHANGE_CAPACITY, (e, v) => {
|
|
109
|
+
e.checked = v;
|
|
110
|
+
}, configCapacity.checkAgentCapacityOnReassignedWorkItems);
|
|
111
|
+
}
|
|
112
|
+
if (configCapacity?.checkAgentCapacityOnReopenedWorkItems !== undefined) {
|
|
113
|
+
await page.$eval(SELECTORS.OWNER_CHANGE_CAPACITY, (e, v) => {
|
|
114
|
+
e.checked = v;
|
|
115
|
+
}, configCapacity.checkAgentCapacityOnReopenedWorkItems);
|
|
116
|
+
}
|
|
117
|
+
// Save the settings and wait for page refresh
|
|
118
|
+
await Promise.all([
|
|
119
|
+
page.waitForNavigation(),
|
|
120
|
+
page.click(SELECTORS.SAVE_BUTTON)
|
|
121
|
+
]);
|
|
122
|
+
// Close the page
|
|
123
|
+
await page.close();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/service-channels/capacity/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BrowserforcePlugin } from '../../plugin.js';
|
|
2
|
+
import { CapacityConfig } from './capacity/index.js';
|
|
3
|
+
type ServiceChannel = {
|
|
4
|
+
serviceChannelDeveloperName: string;
|
|
5
|
+
capacity: CapacityConfig;
|
|
6
|
+
};
|
|
7
|
+
export declare class ServiceChannels extends BrowserforcePlugin {
|
|
8
|
+
retrieve(definition?: ServiceChannel[]): Promise<ServiceChannel[]>;
|
|
9
|
+
diff(state: ServiceChannel[], definition: ServiceChannel[]): ServiceChannel[] | undefined;
|
|
10
|
+
apply(plan: ServiceChannel[]): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import assert from 'assert';
|
|
2
|
+
import * as child from 'child_process';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
import { ServiceChannels } from './index.js';
|
|
6
|
+
import { OmniChannelSettings } from '../omni-channel-settings/index.js';
|
|
7
|
+
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
|
8
|
+
describe(ServiceChannels.name, function () {
|
|
9
|
+
this.timeout('10m');
|
|
10
|
+
let plugin;
|
|
11
|
+
before(() => {
|
|
12
|
+
plugin = new ServiceChannels(global.bf);
|
|
13
|
+
});
|
|
14
|
+
const configureServiceChannels = [
|
|
15
|
+
{
|
|
16
|
+
serviceChannelDeveloperName: "CaseTest",
|
|
17
|
+
capacity: {
|
|
18
|
+
capacityModel: "StatusBased",
|
|
19
|
+
statusField: "Case.Type",
|
|
20
|
+
valuesForInProgress: ["Electrical", "Mechanical"],
|
|
21
|
+
checkAgentCapacityOnReopenedWorkItems: true,
|
|
22
|
+
checkAgentCapacityOnReassignedWorkItems: true
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
serviceChannelDeveloperName: "LeadTest",
|
|
27
|
+
capacity: {
|
|
28
|
+
capacityModel: "StatusBased",
|
|
29
|
+
statusField: "Lead.Industry",
|
|
30
|
+
valuesForInProgress: ["Agriculture", "Chemicals"],
|
|
31
|
+
checkAgentCapacityOnReopenedWorkItems: true,
|
|
32
|
+
checkAgentCapacityOnReassignedWorkItems: true
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
];
|
|
36
|
+
it('should create service channel as a prerequisite', () => {
|
|
37
|
+
const sourceDeployCmd = child.spawnSync('sf', [
|
|
38
|
+
'project',
|
|
39
|
+
'deploy',
|
|
40
|
+
'start',
|
|
41
|
+
'-d',
|
|
42
|
+
path.join(__dirname, 'sfdx-source'),
|
|
43
|
+
'--json'
|
|
44
|
+
]);
|
|
45
|
+
assert.deepStrictEqual(sourceDeployCmd.status, 0, sourceDeployCmd.output.toString());
|
|
46
|
+
});
|
|
47
|
+
it('should enable status based capacity model as a prerequisite', async () => {
|
|
48
|
+
const omnniChannelPlugin = new OmniChannelSettings(global.bf);
|
|
49
|
+
await omnniChannelPlugin.run({ enableStatusBasedCapacityModel: true });
|
|
50
|
+
});
|
|
51
|
+
it('should configure status based capacity model for service channels', async () => {
|
|
52
|
+
await plugin.run(configureServiceChannels);
|
|
53
|
+
const res = await plugin.retrieve(configureServiceChannels);
|
|
54
|
+
assert.deepStrictEqual(res, configureServiceChannels);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=index.e2e-spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/service-channels/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,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE;IAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,IAAI,MAAuB,CAAC;IAC5B,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,MAAM,wBAAwB,GAAG;QAC/B;YACE,2BAA2B,EAAE,UAAU;YACvC,QAAQ,EAAE;gBACR,aAAa,EAAE,aAAa;gBAC5B,WAAW,EAAE,WAAW;gBACxB,mBAAmB,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;gBACjD,qCAAqC,EAAE,IAAI;gBAC3C,uCAAuC,EAAE,IAAI;aAC9C;SACF;QACD;YACE,2BAA2B,EAAE,UAAU;YACvC,QAAQ,EAAE;gBACR,aAAa,EAAE,aAAa;gBAC5B,WAAW,EAAE,eAAe;gBAC5B,mBAAmB,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC;gBACjD,qCAAqC,EAAE,IAAI;gBAC3C,uCAAuC,EAAE,IAAI;aAC9C;SACF;KACF,CAAC;IAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,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,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,kBAAkB,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9D,MAAM,kBAAkB,CAAC,GAAG,CAAC,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;QAC5D,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { BrowserforcePlugin } from '../../plugin.js';
|
|
2
|
+
import { Capacity } from './capacity/index.js';
|
|
3
|
+
export class ServiceChannels extends BrowserforcePlugin {
|
|
4
|
+
async retrieve(definition) {
|
|
5
|
+
const pluginCapacity = new Capacity(this.browserforce);
|
|
6
|
+
const serviceChannels = [];
|
|
7
|
+
for await (const serviceChannel of definition) {
|
|
8
|
+
serviceChannels.push({
|
|
9
|
+
serviceChannelDeveloperName: serviceChannel.serviceChannelDeveloperName,
|
|
10
|
+
capacity: await pluginCapacity.retrieve(serviceChannel)
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
return serviceChannels;
|
|
14
|
+
}
|
|
15
|
+
diff(state, definition) {
|
|
16
|
+
const pluginCapacity = new Capacity(this.browserforce);
|
|
17
|
+
const serviceChannels = [];
|
|
18
|
+
for (const serviceChannelDefinition of definition) {
|
|
19
|
+
const serviceChannelState = state.find((serviceChannelState) => serviceChannelState.serviceChannelDeveloperName === serviceChannelDefinition.serviceChannelDeveloperName);
|
|
20
|
+
const capacity = pluginCapacity.diff(serviceChannelState.capacity, serviceChannelDefinition.capacity);
|
|
21
|
+
if (capacity !== undefined) {
|
|
22
|
+
serviceChannels.push({
|
|
23
|
+
serviceChannelDeveloperName: serviceChannelDefinition.serviceChannelDeveloperName,
|
|
24
|
+
capacity
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return serviceChannels.length ? serviceChannels : undefined;
|
|
29
|
+
}
|
|
30
|
+
async apply(plan) {
|
|
31
|
+
const pluginCapacity = new Capacity(this.browserforce);
|
|
32
|
+
for await (const serviceChannel of plan) {
|
|
33
|
+
await pluginCapacity.apply(serviceChannel);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/service-channels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAkB,MAAM,qBAAqB,CAAC;AAO/D,MAAM,OAAO,eAAgB,SAAQ,kBAAkB;IAC9C,KAAK,CAAC,QAAQ,CAAC,UAA6B;QACjD,MAAM,cAAc,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEvD,MAAM,eAAe,GAAqB,EAAE,CAAC;QAE7C,IAAI,KAAK,EAAE,MAAM,cAAc,IAAI,UAAU,EAAE,CAAC;YAC9C,eAAe,CAAC,IAAI,CAAC;gBACnB,2BAA2B,EAAE,cAAc,CAAC,2BAA2B;gBACvE,QAAQ,EAAE,MAAM,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC;aACxD,CAAC,CAAC;QACL,CAAC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;IAEM,IAAI,CAAC,KAAuB,EAAE,UAA4B;QAC/D,MAAM,cAAc,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEvD,MAAM,eAAe,GAAqB,EAAE,CAAC;QAE7C,KAAK,MAAM,wBAAwB,IAAI,UAAU,EAAE,CAAC;YAClD,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CACpC,CAAC,mBAAmB,EAAE,EAAE,CAAC,mBAAmB,CAAC,2BAA2B,KAAK,wBAAwB,CAAC,2BAA2B,CAClI,CAAC;YAEF,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;YAEtG,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,eAAe,CAAC,IAAI,CAAC;oBACnB,2BAA2B,EAAE,wBAAwB,CAAC,2BAA2B;oBACjF,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,IAAsB;QACvC,MAAM,cAAc,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEvD,IAAI,KAAK,EAAE,MAAM,cAAc,IAAI,IAAI,EAAE,CAAC;YACxC,MAAM,cAAc,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;CACF"}
|
|
@@ -17,10 +17,10 @@ describe(Slack.name, function () {
|
|
|
17
17
|
agreeToTermsAndConditions: false,
|
|
18
18
|
enableSalesCloudForSlack: false
|
|
19
19
|
};
|
|
20
|
-
it('should accept terms and conditions', async () => {
|
|
20
|
+
it('should accept terms and conditions and enable Sales Cloud for Slack', async () => {
|
|
21
21
|
await plugin.run(configEnable);
|
|
22
22
|
});
|
|
23
|
-
it('should already be accepted', async () => {
|
|
23
|
+
it('should already be accepted and enabled', async () => {
|
|
24
24
|
const res = await plugin.run(configEnable);
|
|
25
25
|
assert.deepStrictEqual(res, { message: 'no action necessary' });
|
|
26
26
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/slack/index.e2e-spec.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAe,KAAK,EAAE,MAAM,YAAY,CAAC;AAEhD,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;IACnB,IAAI,MAAa,CAAC;IAClB,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAW;QAC3B,yBAAyB,EAAE,IAAI;QAC/B,wBAAwB,EAAE,IAAI;KAC/B,CAAC;IACF,MAAM,wBAAwB,GAAW;QACvC,yBAAyB,EAAE,IAAI;QAC/B,wBAAwB,EAAE,KAAK;KAChC,CAAC;IACF,MAAM,cAAc,GAAW;QAC7B,yBAAyB,EAAE,KAAK;QAChC,wBAAwB,EAAE,KAAK;KAChC,CAAC;IACF,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/slack/index.e2e-spec.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAe,KAAK,EAAE,MAAM,YAAY,CAAC;AAEhD,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;IACnB,IAAI,MAAa,CAAC;IAClB,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAW;QAC3B,yBAAyB,EAAE,IAAI;QAC/B,wBAAwB,EAAE,IAAI;KAC/B,CAAC;IACF,MAAM,wBAAwB,GAAW;QACvC,yBAAyB,EAAE,IAAI;QAC/B,wBAAwB,EAAE,KAAK;KAChC,CAAC;IACF,MAAM,cAAc,GAAW;QAC7B,yBAAyB,EAAE,KAAK;QAChC,wBAAwB,EAAE,KAAK;KAChC,CAAC;IACF,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC3C,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACvD,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,IAAI,GAAG,CAAC;QACR,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,GAAG,CAAC,CAAC;QACV,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,MAAM,GAAG,CAAC;QACZ,CAAC,EAAE,sBAAsB,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -3,8 +3,8 @@ const PATHS = {
|
|
|
3
3
|
BASE: 'lightning/setup/SlackSetupAssistant/home'
|
|
4
4
|
};
|
|
5
5
|
const SELECTORS = {
|
|
6
|
-
TOS_LIGHTNING_INPUT: '
|
|
7
|
-
SALES_CLOUD_FOR_SLACK_TOGGLE: '
|
|
6
|
+
TOS_LIGHTNING_INPUT: 'setup_service-slack-setup-assistant-container setup_service-slack-agree-to-terms lightning-input',
|
|
7
|
+
SALES_CLOUD_FOR_SLACK_TOGGLE: 'setup_service-slack-setup-assistant-container setup_service-stage setup_service-steps setup_service-step lightning-input:has(lightning-primitive-input-toggle input[name="SlkSetupStepSalesCloudForSlack"])',
|
|
8
8
|
TOAST_MESSAGE: 'div[id^="toastDescription"]'
|
|
9
9
|
};
|
|
10
10
|
export class Slack extends BrowserforcePlugin {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/slack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,KAAK,GAAG;IACZ,IAAI,EAAE,0CAA0C;CACjD,CAAC;AACF,MAAM,SAAS,GAAG;IAChB,mBAAmB,EACjB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/slack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,KAAK,GAAG;IACZ,IAAI,EAAE,0CAA0C;CACjD,CAAC;AACF,MAAM,SAAS,GAAG;IAChB,mBAAmB,EACjB,kGAAkG;IACpG,4BAA4B,EAC1B,6MAA6M;IAC/M,aAAa,EAAE,6BAA6B;CAC7C,CAAC;AAOF,MAAM,OAAO,KAAM,SAAQ,kBAAkB;IACpC,KAAK,CAAC,QAAQ,CAAC,UAAmB;QACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,4BAA4B,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACtF,MAAM,QAAQ,GAAG;YACf,yBAAyB,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC9G,wBAAwB,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,4BAA4B,EAAE,CAAC,EAAE,EAAE,EAAE,CACxF,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAC3B;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,yBAAyB,KAAK,KAAK,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,IAAI,KAAK,CAAC,yBAAyB,KAAK,MAAM,CAAC,yBAAyB,EAAE,CAAC;YACzE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAC9G,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,4BAA4B,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACtF,IAAI,KAAK,CAAC,wBAAwB,KAAK,MAAM,CAAC,wBAAwB,EAAE,CAAC;YACvE,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC;gBAC7C,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,4BAA4B,CAAC;aACnD,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF"}
|
package/oclif.manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sfdx-browserforce-plugin",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.6.0",
|
|
4
4
|
"description": "sfdx plugin for browser automation",
|
|
5
5
|
"author": "Matthias Rolke <mr.amtrack@gmail.com>",
|
|
6
6
|
"type": "module",
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@mdapi-issues/listmetadata-standardvalueset": "3.1.0",
|
|
12
|
-
"@salesforce/sf-plugins-core": "12.0
|
|
12
|
+
"@salesforce/sf-plugins-core": "12.1.0",
|
|
13
13
|
"p-retry": "6.2.1",
|
|
14
|
-
"puppeteer": "23.
|
|
14
|
+
"puppeteer": "23.10.1"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"@salesforce/dev-scripts": "10.2.11",
|
|
18
|
-
"oclif": "4.
|
|
18
|
+
"oclif": "4.17.7"
|
|
19
19
|
},
|
|
20
20
|
"files": [
|
|
21
21
|
"/bin",
|