sfdx-browserforce-plugin 4.5.0 → 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.js +2 -1
- package/lib/browserforce.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/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/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/oclif.manifest.json +1 -1
- package/package.json +2 -2
package/lib/browserforce.js
CHANGED
|
@@ -22,7 +22,8 @@ export class Browserforce {
|
|
|
22
22
|
// workaround for navigating frames https://github.com/puppeteer/puppeteer/issues/5123
|
|
23
23
|
'--disable-features=site-per-process'
|
|
24
24
|
],
|
|
25
|
-
headless: !(process.env.BROWSER_DEBUG === 'true')
|
|
25
|
+
headless: !(process.env.BROWSER_DEBUG === 'true'),
|
|
26
|
+
slowMo: parseInt(process.env.BROWSER_SLOWMO, 10) ?? 0
|
|
26
27
|
});
|
|
27
28
|
const page = await this.getNewPage();
|
|
28
29
|
try {
|
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,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;
|
|
1
|
+
{"version":3,"file":"browserforce.js","sourceRoot":"","sources":["../src/browserforce.ts"],"names":[],"mappings":"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"}
|
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"}
|
|
@@ -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"}
|
|
@@ -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"}
|
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",
|
|
@@ -15,7 +15,7 @@
|
|
|
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",
|