sf-browserforce 1.0.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/LICENSE +21 -0
- package/README.md +266 -0
- package/bin/run +9 -0
- package/bin/run.cmd +3 -0
- package/lib/browserforce-command.d.ts +27 -0
- package/lib/browserforce-command.js +162 -0
- package/lib/browserforce-command.js.map +1 -0
- package/lib/browserforce.d.ts +27 -0
- package/lib/browserforce.js +163 -0
- package/lib/browserforce.js.map +1 -0
- package/lib/commands/browserforce/apply.d.ts +10 -0
- package/lib/commands/browserforce/apply.js +83 -0
- package/lib/commands/browserforce/apply.js.map +1 -0
- package/lib/commands/browserforce/playwright.d.ts +9 -0
- package/lib/commands/browserforce/playwright.js +53 -0
- package/lib/commands/browserforce/playwright.js.map +1 -0
- package/lib/config-parser.d.ts +16 -0
- package/lib/config-parser.js +24 -0
- package/lib/config-parser.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -0
- package/lib/jsforce-utils.d.ts +5 -0
- package/lib/jsforce-utils.js +14 -0
- package/lib/jsforce-utils.js.map +1 -0
- package/lib/pages/login.d.ts +7 -0
- package/lib/pages/login.js +17 -0
- package/lib/pages/login.js.map +1 -0
- package/lib/plugin.d.ts +15 -0
- package/lib/plugin.js +28 -0
- package/lib/plugin.js.map +1 -0
- package/lib/plugins/activity-settings/index.d.ts +9 -0
- package/lib/plugins/activity-settings/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/activity-settings/index.e2e-spec.js +36 -0
- package/lib/plugins/activity-settings/index.e2e-spec.js.map +1 -0
- package/lib/plugins/activity-settings/index.js +102 -0
- package/lib/plugins/activity-settings/index.js.map +1 -0
- package/lib/plugins/auth-providers/index.d.ts +13 -0
- package/lib/plugins/auth-providers/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/auth-providers/index.e2e-spec.js +78 -0
- package/lib/plugins/auth-providers/index.e2e-spec.js.map +1 -0
- package/lib/plugins/auth-providers/index.js +135 -0
- package/lib/plugins/auth-providers/index.js.map +1 -0
- package/lib/plugins/company-information/index.d.ts +8 -0
- package/lib/plugins/company-information/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/company-information/index.e2e-spec.js +37 -0
- package/lib/plugins/company-information/index.e2e-spec.js.map +1 -0
- package/lib/plugins/company-information/index.js +114 -0
- package/lib/plugins/company-information/index.js.map +1 -0
- package/lib/plugins/customer-portal/available-custom-objects/index.d.ts +14 -0
- package/lib/plugins/customer-portal/available-custom-objects/index.js +203 -0
- package/lib/plugins/customer-portal/available-custom-objects/index.js.map +1 -0
- package/lib/plugins/customer-portal/available-custom-objects/index.test.d.ts +1 -0
- package/lib/plugins/customer-portal/available-custom-objects/index.test.js +39 -0
- package/lib/plugins/customer-portal/available-custom-objects/index.test.js.map +1 -0
- package/lib/plugins/customer-portal/enabled/index.d.ts +6 -0
- package/lib/plugins/customer-portal/enabled/index.js +89 -0
- package/lib/plugins/customer-portal/enabled/index.js.map +1 -0
- package/lib/plugins/customer-portal/enabled/index.test.d.ts +1 -0
- package/lib/plugins/customer-portal/enabled/index.test.js +34 -0
- package/lib/plugins/customer-portal/enabled/index.test.js.map +1 -0
- package/lib/plugins/customer-portal/index.d.ts +15 -0
- package/lib/plugins/customer-portal/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/customer-portal/index.e2e-spec.js +188 -0
- package/lib/plugins/customer-portal/index.e2e-spec.js.map +1 -0
- package/lib/plugins/customer-portal/index.js +58 -0
- package/lib/plugins/customer-portal/index.js.map +1 -0
- package/lib/plugins/customer-portal/index.test.d.ts +1 -0
- package/lib/plugins/customer-portal/index.test.js +84 -0
- package/lib/plugins/customer-portal/index.test.js.map +1 -0
- package/lib/plugins/customer-portal/portals/index.d.ts +25 -0
- package/lib/plugins/customer-portal/portals/index.js +254 -0
- package/lib/plugins/customer-portal/portals/index.js.map +1 -0
- package/lib/plugins/customer-portal/portals/index.test.d.ts +1 -0
- package/lib/plugins/customer-portal/portals/index.test.js +140 -0
- package/lib/plugins/customer-portal/portals/index.test.js.map +1 -0
- package/lib/plugins/density-settings/index.d.ts +10 -0
- package/lib/plugins/density-settings/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/density-settings/index.e2e-spec.js +39 -0
- package/lib/plugins/density-settings/index.e2e-spec.js.map +1 -0
- package/lib/plugins/density-settings/index.js +101 -0
- package/lib/plugins/density-settings/index.js.map +1 -0
- package/lib/plugins/deprecated.d.ts +4 -0
- package/lib/plugins/deprecated.js +28 -0
- package/lib/plugins/deprecated.js.map +1 -0
- package/lib/plugins/email-deliverability/index.d.ts +9 -0
- package/lib/plugins/email-deliverability/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/email-deliverability/index.e2e-spec.js +55 -0
- package/lib/plugins/email-deliverability/index.e2e-spec.js.map +1 -0
- package/lib/plugins/email-deliverability/index.js +109 -0
- package/lib/plugins/email-deliverability/index.js.map +1 -0
- package/lib/plugins/high-velocity-sales-settings/index.d.ts +10 -0
- package/lib/plugins/high-velocity-sales-settings/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/high-velocity-sales-settings/index.e2e-spec.js +29 -0
- package/lib/plugins/high-velocity-sales-settings/index.e2e-spec.js.map +1 -0
- package/lib/plugins/high-velocity-sales-settings/index.js +105 -0
- package/lib/plugins/high-velocity-sales-settings/index.js.map +1 -0
- package/lib/plugins/high-velocity-sales-settings/page.d.ts +8 -0
- package/lib/plugins/high-velocity-sales-settings/page.js +27 -0
- package/lib/plugins/high-velocity-sales-settings/page.js.map +1 -0
- package/lib/plugins/history-tracking/index.d.ts +19 -0
- package/lib/plugins/history-tracking/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/history-tracking/index.e2e-spec.js +128 -0
- package/lib/plugins/history-tracking/index.e2e-spec.js.map +1 -0
- package/lib/plugins/history-tracking/index.js +272 -0
- package/lib/plugins/history-tracking/index.js.map +1 -0
- package/lib/plugins/home-page-layouts/index.d.ts +14 -0
- package/lib/plugins/home-page-layouts/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/home-page-layouts/index.e2e-spec.js +47 -0
- package/lib/plugins/home-page-layouts/index.e2e-spec.js.map +1 -0
- package/lib/plugins/home-page-layouts/index.js +145 -0
- package/lib/plugins/home-page-layouts/index.js.map +1 -0
- package/lib/plugins/home-page-layouts/index.test.d.ts +1 -0
- package/lib/plugins/home-page-layouts/index.test.js +104 -0
- package/lib/plugins/home-page-layouts/index.test.js.map +1 -0
- package/lib/plugins/index.d.ts +28 -0
- package/lib/plugins/index.js +29 -0
- package/lib/plugins/index.js.map +1 -0
- package/lib/plugins/lightning-experience-settings/index.d.ts +17 -0
- package/lib/plugins/lightning-experience-settings/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/lightning-experience-settings/index.e2e-spec.js +48 -0
- package/lib/plugins/lightning-experience-settings/index.e2e-spec.js.map +1 -0
- package/lib/plugins/lightning-experience-settings/index.js +149 -0
- package/lib/plugins/lightning-experience-settings/index.js.map +1 -0
- package/lib/plugins/linkedin-sales-navigator-settings/index.d.ts +8 -0
- package/lib/plugins/linkedin-sales-navigator-settings/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/linkedin-sales-navigator-settings/index.e2e-spec.js +29 -0
- package/lib/plugins/linkedin-sales-navigator-settings/index.e2e-spec.js.map +1 -0
- package/lib/plugins/linkedin-sales-navigator-settings/index.js +93 -0
- package/lib/plugins/linkedin-sales-navigator-settings/index.js.map +1 -0
- package/lib/plugins/linkedin-sales-navigator-settings/page.d.ts +9 -0
- package/lib/plugins/linkedin-sales-navigator-settings/page.js +35 -0
- package/lib/plugins/linkedin-sales-navigator-settings/page.js.map +1 -0
- package/lib/plugins/login-as-user/index.d.ts +9 -0
- package/lib/plugins/login-as-user/index.js +104 -0
- package/lib/plugins/login-as-user/index.js.map +1 -0
- package/lib/plugins/logout-login-as-user/index.d.ts +6 -0
- package/lib/plugins/logout-login-as-user/index.js +76 -0
- package/lib/plugins/logout-login-as-user/index.js.map +1 -0
- 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 +30 -0
- package/lib/plugins/omni-channel-settings/index.e2e-spec.js.map +1 -0
- package/lib/plugins/omni-channel-settings/index.js +97 -0
- package/lib/plugins/omni-channel-settings/index.js.map +1 -0
- package/lib/plugins/opportunity-splits/index.d.ts +9 -0
- package/lib/plugins/opportunity-splits/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/opportunity-splits/index.e2e-spec.js +46 -0
- package/lib/plugins/opportunity-splits/index.e2e-spec.js.map +1 -0
- package/lib/plugins/opportunity-splits/index.js +117 -0
- package/lib/plugins/opportunity-splits/index.js.map +1 -0
- package/lib/plugins/opportunity-splits/pages/layout-selection.d.ts +8 -0
- package/lib/plugins/opportunity-splits/pages/layout-selection.js +15 -0
- package/lib/plugins/opportunity-splits/pages/layout-selection.js.map +1 -0
- package/lib/plugins/opportunity-splits/pages/overview.d.ts +11 -0
- package/lib/plugins/opportunity-splits/pages/overview.js +32 -0
- package/lib/plugins/opportunity-splits/pages/overview.js.map +1 -0
- package/lib/plugins/opportunity-splits/pages/setup.d.ts +9 -0
- package/lib/plugins/opportunity-splits/pages/setup.js +17 -0
- package/lib/plugins/opportunity-splits/pages/setup.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 +47 -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 +124 -0
- package/lib/plugins/permission-sets/service-presence-status/index.js.map +1 -0
- package/lib/plugins/picklists/field-dependencies/index.d.ts +11 -0
- package/lib/plugins/picklists/field-dependencies/index.js +133 -0
- package/lib/plugins/picklists/field-dependencies/index.js.map +1 -0
- package/lib/plugins/picklists/field-dependencies/index.test.d.ts +1 -0
- package/lib/plugins/picklists/field-dependencies/index.test.js +64 -0
- package/lib/plugins/picklists/field-dependencies/index.test.js.map +1 -0
- package/lib/plugins/picklists/field-dependencies/pages.d.ts +15 -0
- package/lib/plugins/picklists/field-dependencies/pages.js +50 -0
- package/lib/plugins/picklists/field-dependencies/pages.js.map +1 -0
- package/lib/plugins/picklists/index.d.ts +23 -0
- package/lib/plugins/picklists/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/picklists/index.e2e-spec.js +128 -0
- package/lib/plugins/picklists/index.e2e-spec.js.map +1 -0
- package/lib/plugins/picklists/index.js +229 -0
- package/lib/plugins/picklists/index.js.map +1 -0
- package/lib/plugins/picklists/pages.d.ts +45 -0
- package/lib/plugins/picklists/pages.js +185 -0
- package/lib/plugins/picklists/pages.js.map +1 -0
- package/lib/plugins/picklists/standard-value-set.d.ts +1 -0
- package/lib/plugins/picklists/standard-value-set.js +80 -0
- package/lib/plugins/picklists/standard-value-set.js.map +1 -0
- package/lib/plugins/record-types/index.d.ts +14 -0
- package/lib/plugins/record-types/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/record-types/index.e2e-spec.js +76 -0
- package/lib/plugins/record-types/index.e2e-spec.js.map +1 -0
- package/lib/plugins/record-types/index.js +133 -0
- package/lib/plugins/record-types/index.js.map +1 -0
- package/lib/plugins/record-types/pages.d.ts +14 -0
- package/lib/plugins/record-types/pages.js +50 -0
- package/lib/plugins/record-types/pages.js.map +1 -0
- package/lib/plugins/relate-contact-to-multiple-accounts/index.d.ts +11 -0
- package/lib/plugins/relate-contact-to-multiple-accounts/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/relate-contact-to-multiple-accounts/index.e2e-spec.js +30 -0
- package/lib/plugins/relate-contact-to-multiple-accounts/index.e2e-spec.js.map +1 -0
- package/lib/plugins/relate-contact-to-multiple-accounts/index.js +120 -0
- package/lib/plugins/relate-contact-to-multiple-accounts/index.js.map +1 -0
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.d.ts +8 -0
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.e2e-spec.js +3 -0
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.e2e-spec.js.map +1 -0
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.js +116 -0
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.js.map +1 -0
- package/lib/plugins/reports-and-dashboards/index.d.ts +11 -0
- package/lib/plugins/reports-and-dashboards/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/reports-and-dashboards/index.e2e-spec.js +3 -0
- package/lib/plugins/reports-and-dashboards/index.e2e-spec.js.map +1 -0
- package/lib/plugins/reports-and-dashboards/index.js +29 -0
- package/lib/plugins/reports-and-dashboards/index.js.map +1 -0
- package/lib/plugins/salesforce-cpq-config/formConfig.d.ts +17 -0
- package/lib/plugins/salesforce-cpq-config/formConfig.js +649 -0
- package/lib/plugins/salesforce-cpq-config/formConfig.js.map +1 -0
- package/lib/plugins/salesforce-cpq-config/index.d.ts +7 -0
- package/lib/plugins/salesforce-cpq-config/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/salesforce-cpq-config/index.e2e-spec.js +37 -0
- package/lib/plugins/salesforce-cpq-config/index.e2e-spec.js.map +1 -0
- package/lib/plugins/salesforce-cpq-config/index.js +261 -0
- package/lib/plugins/salesforce-cpq-config/index.js.map +1 -0
- package/lib/plugins/salesforce-to-salesforce/index.d.ts +9 -0
- package/lib/plugins/salesforce-to-salesforce/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/salesforce-to-salesforce/index.e2e-spec.js +34 -0
- package/lib/plugins/salesforce-to-salesforce/index.e2e-spec.js.map +1 -0
- package/lib/plugins/salesforce-to-salesforce/index.js +107 -0
- package/lib/plugins/salesforce-to-salesforce/index.js.map +1 -0
- package/lib/plugins/scheduled-batches/index.d.ts +10 -0
- package/lib/plugins/scheduled-batches/index.js +145 -0
- package/lib/plugins/scheduled-batches/index.js.map +1 -0
- package/lib/plugins/scheduled-batches/page.d.ts +19 -0
- package/lib/plugins/scheduled-batches/page.js +39 -0
- package/lib/plugins/scheduled-batches/page.js.map +1 -0
- package/lib/plugins/security/authentication-configuration/index.d.ts +15 -0
- package/lib/plugins/security/authentication-configuration/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/security/authentication-configuration/index.e2e-spec.js +129 -0
- package/lib/plugins/security/authentication-configuration/index.e2e-spec.js.map +1 -0
- package/lib/plugins/security/authentication-configuration/index.js +200 -0
- package/lib/plugins/security/authentication-configuration/index.js.map +1 -0
- package/lib/plugins/security/certificate-and-key-management/index.d.ts +23 -0
- package/lib/plugins/security/certificate-and-key-management/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/security/certificate-and-key-management/index.e2e-spec.js +59 -0
- package/lib/plugins/security/certificate-and-key-management/index.e2e-spec.js.map +1 -0
- package/lib/plugins/security/certificate-and-key-management/index.js +233 -0
- package/lib/plugins/security/certificate-and-key-management/index.js.map +1 -0
- package/lib/plugins/security/certificate-and-key-management/index.test.d.ts +1 -0
- package/lib/plugins/security/certificate-and-key-management/index.test.js +61 -0
- package/lib/plugins/security/certificate-and-key-management/index.test.js.map +1 -0
- package/lib/plugins/security/index.d.ts +13 -0
- package/lib/plugins/security/index.js +41 -0
- package/lib/plugins/security/index.js.map +1 -0
- package/lib/plugins/service-channels/capacity/index.d.ts +18 -0
- package/lib/plugins/service-channels/capacity/index.js +194 -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 +67 -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.d.ts +9 -0
- package/lib/plugins/slack/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/slack/index.e2e-spec.js +47 -0
- package/lib/plugins/slack/index.e2e-spec.js.map +1 -0
- package/lib/plugins/slack/index.js +111 -0
- package/lib/plugins/slack/index.js.map +1 -0
- package/lib/plugins/user-access-policies/index.d.ts +19 -0
- package/lib/plugins/user-access-policies/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/user-access-policies/index.e2e-spec.js +61 -0
- package/lib/plugins/user-access-policies/index.e2e-spec.js.map +1 -0
- package/lib/plugins/user-access-policies/index.js +176 -0
- package/lib/plugins/user-access-policies/index.js.map +1 -0
- package/lib/plugins/user-access-policies/page.d.ts +30 -0
- package/lib/plugins/user-access-policies/page.js +114 -0
- package/lib/plugins/user-access-policies/page.js.map +1 -0
- package/lib/plugins/utils.d.ts +13 -0
- package/lib/plugins/utils.js +159 -0
- package/lib/plugins/utils.js.map +1 -0
- package/oclif.manifest.json +177 -0
- package/package.json +65 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import assert from 'assert';
|
|
2
|
+
import { HomePageLayouts } from './index.js';
|
|
3
|
+
const tests = [
|
|
4
|
+
{
|
|
5
|
+
description: 'should return no change',
|
|
6
|
+
source: {
|
|
7
|
+
homePageLayoutAssignments: [
|
|
8
|
+
{
|
|
9
|
+
profile: 'Standard User',
|
|
10
|
+
layout: '',
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
profile: 'System Administrator',
|
|
14
|
+
layout: '',
|
|
15
|
+
},
|
|
16
|
+
],
|
|
17
|
+
},
|
|
18
|
+
target: {
|
|
19
|
+
homePageLayoutAssignments: [
|
|
20
|
+
{
|
|
21
|
+
profile: 'Standard User',
|
|
22
|
+
layout: '',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
profile: 'System Administrator',
|
|
26
|
+
layout: '',
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
},
|
|
30
|
+
expected: undefined,
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
description: 'should filter irrelevant assignments',
|
|
34
|
+
source: {
|
|
35
|
+
homePageLayoutAssignments: [
|
|
36
|
+
{
|
|
37
|
+
profile: 'Foo User',
|
|
38
|
+
layout: '',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
profile: 'Standard User',
|
|
42
|
+
layout: '',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
profile: 'System Administrator',
|
|
46
|
+
layout: '',
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
target: {
|
|
51
|
+
homePageLayoutAssignments: [
|
|
52
|
+
{
|
|
53
|
+
profile: 'Standard User',
|
|
54
|
+
layout: '',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
profile: 'System Administrator',
|
|
58
|
+
layout: '',
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
expected: undefined,
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
description: 'should match when unsorted',
|
|
66
|
+
source: {
|
|
67
|
+
homePageLayoutAssignments: [
|
|
68
|
+
{
|
|
69
|
+
profile: 'System Administrator',
|
|
70
|
+
layout: '',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
profile: 'Standard User',
|
|
74
|
+
layout: '',
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
},
|
|
78
|
+
target: {
|
|
79
|
+
homePageLayoutAssignments: [
|
|
80
|
+
{
|
|
81
|
+
profile: 'Standard User',
|
|
82
|
+
layout: '',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
profile: 'System Administrator',
|
|
86
|
+
layout: '',
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
},
|
|
90
|
+
expected: undefined,
|
|
91
|
+
},
|
|
92
|
+
];
|
|
93
|
+
describe('HomePageLayouts', () => {
|
|
94
|
+
describe('diff()', () => {
|
|
95
|
+
const p = new HomePageLayouts(global.browserforce);
|
|
96
|
+
for (const t of tests) {
|
|
97
|
+
it(t.description, () => {
|
|
98
|
+
const actual = p.diff(t.source, t.target);
|
|
99
|
+
assert.deepStrictEqual(actual, t.expected);
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../src/plugins/home-page-layouts/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,KAAK,GAAG;IACZ;QACE,WAAW,EAAE,yBAAyB;QACtC,MAAM,EAAE;YACN,yBAAyB,EAAE;gBACzB;oBACE,OAAO,EAAE,eAAe;oBACxB,MAAM,EAAE,EAAE;iBACX;gBACD;oBACE,OAAO,EAAE,sBAAsB;oBAC/B,MAAM,EAAE,EAAE;iBACX;aACF;SACF;QACD,MAAM,EAAE;YACN,yBAAyB,EAAE;gBACzB;oBACE,OAAO,EAAE,eAAe;oBACxB,MAAM,EAAE,EAAE;iBACX;gBACD;oBACE,OAAO,EAAE,sBAAsB;oBAC/B,MAAM,EAAE,EAAE;iBACX;aACF;SACF;QACD,QAAQ,EAAE,SAAS;KACpB;IACD;QACE,WAAW,EAAE,sCAAsC;QACnD,MAAM,EAAE;YACN,yBAAyB,EAAE;gBACzB;oBACE,OAAO,EAAE,UAAU;oBACnB,MAAM,EAAE,EAAE;iBACX;gBACD;oBACE,OAAO,EAAE,eAAe;oBACxB,MAAM,EAAE,EAAE;iBACX;gBACD;oBACE,OAAO,EAAE,sBAAsB;oBAC/B,MAAM,EAAE,EAAE;iBACX;aACF;SACF;QACD,MAAM,EAAE;YACN,yBAAyB,EAAE;gBACzB;oBACE,OAAO,EAAE,eAAe;oBACxB,MAAM,EAAE,EAAE;iBACX;gBACD;oBACE,OAAO,EAAE,sBAAsB;oBAC/B,MAAM,EAAE,EAAE;iBACX;aACF;SACF;QACD,QAAQ,EAAE,SAAS;KACpB;IACD;QACE,WAAW,EAAE,4BAA4B;QACzC,MAAM,EAAE;YACN,yBAAyB,EAAE;gBACzB;oBACE,OAAO,EAAE,sBAAsB;oBAC/B,MAAM,EAAE,EAAE;iBACX;gBACD;oBACE,OAAO,EAAE,eAAe;oBACxB,MAAM,EAAE,EAAE;iBACX;aACF;SACF;QACD,MAAM,EAAE;YACN,yBAAyB,EAAE;gBACzB;oBACE,OAAO,EAAE,eAAe;oBACxB,MAAM,EAAE,EAAE;iBACX;gBACD;oBACE,OAAO,EAAE,sBAAsB;oBAC/B,MAAM,EAAE,EAAE;iBACX;aACF;SACF;QACD,QAAQ,EAAE,SAAS;KACpB;CACF,CAAC;AAEF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,MAAM,CAAC,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACnD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE;gBACrB,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC1C,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ActivitySettings as activitySettings } from './activity-settings/index.js';
|
|
2
|
+
import { AuthProviders as authProviders } from './auth-providers/index.js';
|
|
3
|
+
import { CompanyInformation as companyInformation } from './company-information/index.js';
|
|
4
|
+
import { CustomerPortal as customerPortal } from './customer-portal/index.js';
|
|
5
|
+
import { DensitySettings as densitySettings } from './density-settings/index.js';
|
|
6
|
+
import { EmailDeliverability as emailDeliverability } from './email-deliverability/index.js';
|
|
7
|
+
import { HighVelocitySalesSettings as highVelocitySalesSettings } from './high-velocity-sales-settings/index.js';
|
|
8
|
+
import { HistoryTracking as historyTracking } from './history-tracking/index.js';
|
|
9
|
+
import { HomePageLayouts as homePageLayouts } from './home-page-layouts/index.js';
|
|
10
|
+
import { LightningExperienceSettings as lightningExperienceSettings } from './lightning-experience-settings/index.js';
|
|
11
|
+
import { LinkedInSalesNavigatorSettings as linkedInSalesNavigatorSettings } from './linkedin-sales-navigator-settings/index.js';
|
|
12
|
+
import { LoginAsUser as loginAsUser } from './login-as-user/index.js';
|
|
13
|
+
import { LogoutLoginAsUser as logoutLoginAsUser } from './logout-login-as-user/index.js';
|
|
14
|
+
import { OmniChannelSettings as omniChannelSettings } from './omni-channel-settings/index.js';
|
|
15
|
+
import { OpportunitySplits as opportunitySplits } from './opportunity-splits/index.js';
|
|
16
|
+
import { PermissionSets as permissionSets } from './permission-sets/index.js';
|
|
17
|
+
import { Picklists as picklists } from './picklists/index.js';
|
|
18
|
+
import { RecordTypes as recordTypes } from './record-types/index.js';
|
|
19
|
+
import { RelateContactToMultipleAccounts as relateContactToMultipleAccounts } from './relate-contact-to-multiple-accounts/index.js';
|
|
20
|
+
import { ReportsAndDashboards as reportsAndDashboards } from './reports-and-dashboards/index.js';
|
|
21
|
+
import { ScheduledBatches as scheduledBatches } from './scheduled-batches/index.js';
|
|
22
|
+
import { SalesforceCpqConfig as salesforceCpqConfig } from './salesforce-cpq-config/index.js';
|
|
23
|
+
import { SalesforceToSalesforce as salesforceToSalesforce } from './salesforce-to-salesforce/index.js';
|
|
24
|
+
import { Security as security } from './security/index.js';
|
|
25
|
+
import { ServiceChannels as serviceChannels } from './service-channels/index.js';
|
|
26
|
+
import { Slack as slack } from './slack/index.js';
|
|
27
|
+
import { UserAccessPolicies as userAccessPolicies } from './user-access-policies/index.js';
|
|
28
|
+
export { activitySettings, authProviders, companyInformation, customerPortal, densitySettings, emailDeliverability, highVelocitySalesSettings, historyTracking, homePageLayouts, lightningExperienceSettings, linkedInSalesNavigatorSettings, loginAsUser, logoutLoginAsUser, omniChannelSettings, opportunitySplits, permissionSets, picklists, recordTypes, relateContactToMultipleAccounts, reportsAndDashboards, scheduledBatches, salesforceCpqConfig, salesforceToSalesforce, security, serviceChannels, slack, userAccessPolicies, };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ActivitySettings as activitySettings } from './activity-settings/index.js';
|
|
2
|
+
import { AuthProviders as authProviders } from './auth-providers/index.js';
|
|
3
|
+
import { CompanyInformation as companyInformation } from './company-information/index.js';
|
|
4
|
+
import { CustomerPortal as customerPortal } from './customer-portal/index.js';
|
|
5
|
+
import { DensitySettings as densitySettings } from './density-settings/index.js';
|
|
6
|
+
import { EmailDeliverability as emailDeliverability } from './email-deliverability/index.js';
|
|
7
|
+
import { HighVelocitySalesSettings as highVelocitySalesSettings } from './high-velocity-sales-settings/index.js';
|
|
8
|
+
import { HistoryTracking as historyTracking } from './history-tracking/index.js';
|
|
9
|
+
import { HomePageLayouts as homePageLayouts } from './home-page-layouts/index.js';
|
|
10
|
+
import { LightningExperienceSettings as lightningExperienceSettings } from './lightning-experience-settings/index.js';
|
|
11
|
+
import { LinkedInSalesNavigatorSettings as linkedInSalesNavigatorSettings } from './linkedin-sales-navigator-settings/index.js';
|
|
12
|
+
import { LoginAsUser as loginAsUser } from './login-as-user/index.js';
|
|
13
|
+
import { LogoutLoginAsUser as logoutLoginAsUser } from './logout-login-as-user/index.js';
|
|
14
|
+
import { OmniChannelSettings as omniChannelSettings } from './omni-channel-settings/index.js';
|
|
15
|
+
import { OpportunitySplits as opportunitySplits } from './opportunity-splits/index.js';
|
|
16
|
+
import { PermissionSets as permissionSets } from './permission-sets/index.js';
|
|
17
|
+
import { Picklists as picklists } from './picklists/index.js';
|
|
18
|
+
import { RecordTypes as recordTypes } from './record-types/index.js';
|
|
19
|
+
import { RelateContactToMultipleAccounts as relateContactToMultipleAccounts } from './relate-contact-to-multiple-accounts/index.js';
|
|
20
|
+
import { ReportsAndDashboards as reportsAndDashboards } from './reports-and-dashboards/index.js';
|
|
21
|
+
import { ScheduledBatches as scheduledBatches } from './scheduled-batches/index.js';
|
|
22
|
+
import { SalesforceCpqConfig as salesforceCpqConfig } from './salesforce-cpq-config/index.js';
|
|
23
|
+
import { SalesforceToSalesforce as salesforceToSalesforce } from './salesforce-to-salesforce/index.js';
|
|
24
|
+
import { Security as security } from './security/index.js';
|
|
25
|
+
import { ServiceChannels as serviceChannels } from './service-channels/index.js';
|
|
26
|
+
import { Slack as slack } from './slack/index.js';
|
|
27
|
+
import { UserAccessPolicies as userAccessPolicies } from './user-access-policies/index.js';
|
|
28
|
+
export { activitySettings, authProviders, companyInformation, customerPortal, densitySettings, emailDeliverability, highVelocitySalesSettings, historyTracking, homePageLayouts, lightningExperienceSettings, linkedInSalesNavigatorSettings, loginAsUser, logoutLoginAsUser, omniChannelSettings, opportunitySplits, permissionSets, picklists, recordTypes, relateContactToMultipleAccounts, reportsAndDashboards, scheduledBatches, salesforceCpqConfig, salesforceToSalesforce, security, serviceChannels, slack, userAccessPolicies, };
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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,aAAa,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,kBAAkB,IAAI,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EAAE,cAAc,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC9E,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,6BAA6B,CAAC;AACjF,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,WAAW,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,iBAAiB,IAAI,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzF,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,gBAAgB,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACpF,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;AAClD,OAAO,EAAE,kBAAkB,IAAI,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE3F,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,2BAA2B,EAC3B,8BAA8B,EAC9B,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,WAAW,EACX,+BAA+B,EAC/B,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,QAAQ,EACR,eAAe,EACf,KAAK,EACL,kBAAkB,GACnB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Locator, Page } from 'playwright';
|
|
2
|
+
import { BrowserforcePlugin } from '../../plugin.js';
|
|
3
|
+
type Config = {
|
|
4
|
+
activeThemeName: string;
|
|
5
|
+
};
|
|
6
|
+
type Theme = {
|
|
7
|
+
developerName: string;
|
|
8
|
+
isActive: boolean;
|
|
9
|
+
rowLocator: Locator;
|
|
10
|
+
};
|
|
11
|
+
export declare class LightningExperienceSettings extends BrowserforcePlugin {
|
|
12
|
+
retrieve(): Promise<Config>;
|
|
13
|
+
apply(config: Config): Promise<void>;
|
|
14
|
+
getThemeData(page: Page): Promise<Theme[]>;
|
|
15
|
+
setActiveTheme(page: Page, themeDeveloperName: string): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import assert from 'assert';
|
|
2
|
+
import { LightningExperienceSettings } from './index.js';
|
|
3
|
+
describe(LightningExperienceSettings.name, function () {
|
|
4
|
+
describe('activeThemeName', () => {
|
|
5
|
+
let plugin;
|
|
6
|
+
let configOriginal;
|
|
7
|
+
before(async () => {
|
|
8
|
+
plugin = new LightningExperienceSettings(global.browserforce);
|
|
9
|
+
configOriginal = await plugin.retrieve();
|
|
10
|
+
});
|
|
11
|
+
const configSLDS2 = { activeThemeName: 'SalesforceCosmos' };
|
|
12
|
+
const configLightningLite = { activeThemeName: 'LightningLite' };
|
|
13
|
+
it('should activate SalesforceCosmos theme (SLDS2)', async () => {
|
|
14
|
+
await plugin.run(configSLDS2);
|
|
15
|
+
});
|
|
16
|
+
it('SalesforceCosmos theme should already be activated', async () => {
|
|
17
|
+
const state = await plugin.retrieve();
|
|
18
|
+
assert.deepStrictEqual(state, configSLDS2);
|
|
19
|
+
});
|
|
20
|
+
it('should activate LightningLite theme', async () => {
|
|
21
|
+
await plugin.run(configLightningLite);
|
|
22
|
+
});
|
|
23
|
+
it('LightningLite theme should already be activated', async () => {
|
|
24
|
+
const state = await plugin.retrieve();
|
|
25
|
+
assert.deepStrictEqual(state, configLightningLite);
|
|
26
|
+
});
|
|
27
|
+
it('should activate original theme', async () => {
|
|
28
|
+
await plugin.apply(configOriginal);
|
|
29
|
+
});
|
|
30
|
+
it('original theme should already be activated', async () => {
|
|
31
|
+
const state = await plugin.retrieve();
|
|
32
|
+
assert.deepStrictEqual(state, configOriginal);
|
|
33
|
+
});
|
|
34
|
+
it('should throw for invalid theme', async () => {
|
|
35
|
+
let err;
|
|
36
|
+
try {
|
|
37
|
+
await plugin.run({ activeThemeName: 'Foo' });
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
err = e;
|
|
41
|
+
}
|
|
42
|
+
assert.throws(() => {
|
|
43
|
+
throw err;
|
|
44
|
+
}, /Could not find theme/);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=index.e2e-spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/lightning-experience-settings/index.e2e-spec.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAEzD,QAAQ,CAAC,2BAA2B,CAAC,IAAI,EAAE;IACzC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,IAAI,MAAmC,CAAC;QACxC,IAAI,cAAc,CAAC;QACnB,MAAM,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,GAAG,IAAI,2BAA2B,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC9D,cAAc,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAC;QAC5D,MAAM,mBAAmB,GAAG,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC;QACjE,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,IAAI,GAAG,CAAC;YACR,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,GAAG,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,GAAG,GAAG,CAAC,CAAC;YACV,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;gBACjB,MAAM,GAAG,CAAC;YACZ,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
|
|
2
|
+
if (value !== null && value !== void 0) {
|
|
3
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
4
|
+
var dispose, inner;
|
|
5
|
+
if (async) {
|
|
6
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
7
|
+
dispose = value[Symbol.asyncDispose];
|
|
8
|
+
}
|
|
9
|
+
if (dispose === void 0) {
|
|
10
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
11
|
+
dispose = value[Symbol.dispose];
|
|
12
|
+
if (async) inner = dispose;
|
|
13
|
+
}
|
|
14
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
15
|
+
if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
|
|
16
|
+
env.stack.push({ value: value, dispose: dispose, async: async });
|
|
17
|
+
}
|
|
18
|
+
else if (async) {
|
|
19
|
+
env.stack.push({ async: true });
|
|
20
|
+
}
|
|
21
|
+
return value;
|
|
22
|
+
};
|
|
23
|
+
var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
|
|
24
|
+
return function (env) {
|
|
25
|
+
function fail(e) {
|
|
26
|
+
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
27
|
+
env.hasError = true;
|
|
28
|
+
}
|
|
29
|
+
var r, s = 0;
|
|
30
|
+
function next() {
|
|
31
|
+
while (r = env.stack.pop()) {
|
|
32
|
+
try {
|
|
33
|
+
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
34
|
+
if (r.dispose) {
|
|
35
|
+
var result = r.dispose.call(r.value);
|
|
36
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
37
|
+
}
|
|
38
|
+
else s |= 1;
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
fail(e);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
45
|
+
if (env.hasError) throw env.error;
|
|
46
|
+
}
|
|
47
|
+
return next();
|
|
48
|
+
};
|
|
49
|
+
})(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
50
|
+
var e = new Error(message);
|
|
51
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
52
|
+
});
|
|
53
|
+
import { BrowserforcePlugin } from '../../plugin.js';
|
|
54
|
+
const BASE_PATH = '/lightning/setup/ThemingAndBranding/home';
|
|
55
|
+
// Spring 25 changed "lightning-datatable" to "one-theme-datatable"
|
|
56
|
+
const THEME_ROW_SELECTOR = '#setupComponent table > tbody > tr';
|
|
57
|
+
const DEVELOPER_NAMES_SELECTOR = `${THEME_ROW_SELECTOR} > td:nth-child(2) > lightning-primitive-cell-factory lightning-base-formatted-text`;
|
|
58
|
+
const STATES_SELECTOR = `${THEME_ROW_SELECTOR} > td:nth-child(6) > lightning-primitive-cell-factory`;
|
|
59
|
+
export class LightningExperienceSettings extends BrowserforcePlugin {
|
|
60
|
+
async retrieve() {
|
|
61
|
+
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
62
|
+
try {
|
|
63
|
+
const page = __addDisposableResource(env_1, await this.browserforce.openPage(BASE_PATH), true);
|
|
64
|
+
const themes = await this.getThemeData(page);
|
|
65
|
+
const activeTheme = themes.find((theme) => theme.isActive);
|
|
66
|
+
const response = {
|
|
67
|
+
activeThemeName: activeTheme.developerName,
|
|
68
|
+
};
|
|
69
|
+
return response;
|
|
70
|
+
}
|
|
71
|
+
catch (e_1) {
|
|
72
|
+
env_1.error = e_1;
|
|
73
|
+
env_1.hasError = true;
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
const result_1 = __disposeResources(env_1);
|
|
77
|
+
if (result_1)
|
|
78
|
+
await result_1;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async apply(config) {
|
|
82
|
+
const env_2 = { stack: [], error: void 0, hasError: false };
|
|
83
|
+
try {
|
|
84
|
+
const page = __addDisposableResource(env_2, await this.browserforce.openPage(BASE_PATH), true);
|
|
85
|
+
await this.setActiveTheme(page, config.activeThemeName);
|
|
86
|
+
}
|
|
87
|
+
catch (e_2) {
|
|
88
|
+
env_2.error = e_2;
|
|
89
|
+
env_2.hasError = true;
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
const result_2 = __disposeResources(env_2);
|
|
93
|
+
if (result_2)
|
|
94
|
+
await result_2;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
async getThemeData(page) {
|
|
98
|
+
await page.locator(THEME_ROW_SELECTOR).first().waitFor();
|
|
99
|
+
const rowLocator = page.locator(THEME_ROW_SELECTOR);
|
|
100
|
+
const rowCount = await rowLocator.count();
|
|
101
|
+
await page.locator(DEVELOPER_NAMES_SELECTOR).first().waitFor();
|
|
102
|
+
const developerNameLocator = page.locator(DEVELOPER_NAMES_SELECTOR);
|
|
103
|
+
const stateLocator = page.locator(STATES_SELECTOR);
|
|
104
|
+
const themes = [];
|
|
105
|
+
for (let i = 0; i < rowCount; i++) {
|
|
106
|
+
const developerName = await developerNameLocator.nth(i).innerText();
|
|
107
|
+
const hasIcon = await stateLocator
|
|
108
|
+
.nth(i)
|
|
109
|
+
.filter({ has: page.locator('lightning-primitive-icon') })
|
|
110
|
+
.isVisible();
|
|
111
|
+
themes.push({
|
|
112
|
+
developerName,
|
|
113
|
+
isActive: hasIcon,
|
|
114
|
+
rowLocator: rowLocator.nth(i),
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
return themes;
|
|
118
|
+
}
|
|
119
|
+
async setActiveTheme(page, themeDeveloperName) {
|
|
120
|
+
const data = await this.getThemeData(page);
|
|
121
|
+
const theme = data.find((theme) => theme.developerName === themeDeveloperName);
|
|
122
|
+
if (!theme) {
|
|
123
|
+
throw new Error(`Could not find theme "${themeDeveloperName}" in list of themes: ${data.map((d) => d.developerName)}`);
|
|
124
|
+
}
|
|
125
|
+
const newActiveThemeRowLocator = theme.rowLocator;
|
|
126
|
+
await page.locator(`${THEME_ROW_SELECTOR} lightning-button-menu`).first().waitFor();
|
|
127
|
+
const menuButton = newActiveThemeRowLocator.locator('td lightning-primitive-cell-factory lightning-primitive-cell-actions lightning-button-menu');
|
|
128
|
+
await menuButton.click();
|
|
129
|
+
await page.locator(`${THEME_ROW_SELECTOR} lightning-button-menu slot lightning-menu-item`).first().waitFor();
|
|
130
|
+
// second last item: [show, activate, preview]
|
|
131
|
+
const activateMenuItem = menuButton.locator('slot lightning-menu-item').nth(-2);
|
|
132
|
+
await Promise.all([
|
|
133
|
+
Promise.race([
|
|
134
|
+
page.waitForEvent('load'), // immediate page reload when SLDS1 theme was activated
|
|
135
|
+
Promise.all([
|
|
136
|
+
page.waitForEvent('load'),
|
|
137
|
+
// When switching from a SDLS2 to a SLDS1 theme, the following modal appears:
|
|
138
|
+
// Activate this theme?
|
|
139
|
+
// This theme uses SLDS 1. When you activate this theme, you also disable SLDS 2.
|
|
140
|
+
// - Never Mind
|
|
141
|
+
// - Activate <--
|
|
142
|
+
page.locator('lightning-modal lightning-button[variant="brand"]').click(),
|
|
143
|
+
]),
|
|
144
|
+
]),
|
|
145
|
+
activateMenuItem.click(),
|
|
146
|
+
]);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/lightning-experience-settings/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BrowserforcePlugin } from '../../plugin.js';
|
|
2
|
+
export type Config = {
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
};
|
|
5
|
+
export declare class LinkedInSalesNavigatorSettings extends BrowserforcePlugin {
|
|
6
|
+
retrieve(definition?: Config): Promise<Config>;
|
|
7
|
+
apply(config: Config): Promise<void>;
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import assert from 'assert';
|
|
2
|
+
import { LinkedInSalesNavigatorSettings } from './index.js';
|
|
3
|
+
describe(LinkedInSalesNavigatorSettings.name, function () {
|
|
4
|
+
let plugin;
|
|
5
|
+
before(() => {
|
|
6
|
+
plugin = new LinkedInSalesNavigatorSettings(global.browserforce);
|
|
7
|
+
});
|
|
8
|
+
const configEnabled = {
|
|
9
|
+
enabled: true,
|
|
10
|
+
};
|
|
11
|
+
const configDisabled = {
|
|
12
|
+
enabled: false,
|
|
13
|
+
};
|
|
14
|
+
it('should enable', async () => {
|
|
15
|
+
await plugin.run(configEnabled);
|
|
16
|
+
});
|
|
17
|
+
it('should already be enabled', async () => {
|
|
18
|
+
const res = await plugin.run(configEnabled);
|
|
19
|
+
assert.deepStrictEqual(res, { message: 'no action necessary' });
|
|
20
|
+
});
|
|
21
|
+
it('should disable', async () => {
|
|
22
|
+
await plugin.run(configDisabled);
|
|
23
|
+
});
|
|
24
|
+
it('should already be disabled', async () => {
|
|
25
|
+
const res = await plugin.run(configDisabled);
|
|
26
|
+
assert.deepStrictEqual(res, { message: 'no action necessary' });
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=index.e2e-spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../src/plugins/linkedin-sales-navigator-settings/index.e2e-spec.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAU,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAEpE,QAAQ,CAAC,8BAA8B,CAAC,IAAI,EAAE;IAC5C,IAAI,MAAsC,CAAC;IAC3C,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,GAAG,IAAI,8BAA8B,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAW;QAC5B,OAAO,EAAE,IAAI;KACd,CAAC;IACF,MAAM,cAAc,GAAW;QAC7B,OAAO,EAAE,KAAK;KACf,CAAC;IAEF,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;QAC7B,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC7C,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
|
|
2
|
+
if (value !== null && value !== void 0) {
|
|
3
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
4
|
+
var dispose, inner;
|
|
5
|
+
if (async) {
|
|
6
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
7
|
+
dispose = value[Symbol.asyncDispose];
|
|
8
|
+
}
|
|
9
|
+
if (dispose === void 0) {
|
|
10
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
11
|
+
dispose = value[Symbol.dispose];
|
|
12
|
+
if (async) inner = dispose;
|
|
13
|
+
}
|
|
14
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
15
|
+
if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
|
|
16
|
+
env.stack.push({ value: value, dispose: dispose, async: async });
|
|
17
|
+
}
|
|
18
|
+
else if (async) {
|
|
19
|
+
env.stack.push({ async: true });
|
|
20
|
+
}
|
|
21
|
+
return value;
|
|
22
|
+
};
|
|
23
|
+
var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
|
|
24
|
+
return function (env) {
|
|
25
|
+
function fail(e) {
|
|
26
|
+
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
27
|
+
env.hasError = true;
|
|
28
|
+
}
|
|
29
|
+
var r, s = 0;
|
|
30
|
+
function next() {
|
|
31
|
+
while (r = env.stack.pop()) {
|
|
32
|
+
try {
|
|
33
|
+
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
34
|
+
if (r.dispose) {
|
|
35
|
+
var result = r.dispose.call(r.value);
|
|
36
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
37
|
+
}
|
|
38
|
+
else s |= 1;
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
fail(e);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
45
|
+
if (env.hasError) throw env.error;
|
|
46
|
+
}
|
|
47
|
+
return next();
|
|
48
|
+
};
|
|
49
|
+
})(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
50
|
+
var e = new Error(message);
|
|
51
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
52
|
+
});
|
|
53
|
+
import { BrowserforcePlugin } from '../../plugin.js';
|
|
54
|
+
import { LinkedInSalesNavigatorPage } from './page.js';
|
|
55
|
+
export class LinkedInSalesNavigatorSettings extends BrowserforcePlugin {
|
|
56
|
+
async retrieve(definition) {
|
|
57
|
+
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
58
|
+
try {
|
|
59
|
+
const result = { enabled: false };
|
|
60
|
+
const page = __addDisposableResource(env_1, await this.browserforce.openPage(LinkedInSalesNavigatorPage.getUrl()), true);
|
|
61
|
+
const linkedIn = new LinkedInSalesNavigatorPage(page);
|
|
62
|
+
result.enabled = await linkedIn.getStatus();
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
catch (e_1) {
|
|
66
|
+
env_1.error = e_1;
|
|
67
|
+
env_1.hasError = true;
|
|
68
|
+
}
|
|
69
|
+
finally {
|
|
70
|
+
const result_1 = __disposeResources(env_1);
|
|
71
|
+
if (result_1)
|
|
72
|
+
await result_1;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async apply(config) {
|
|
76
|
+
const env_2 = { stack: [], error: void 0, hasError: false };
|
|
77
|
+
try {
|
|
78
|
+
const page = __addDisposableResource(env_2, await this.browserforce.openPage(LinkedInSalesNavigatorPage.getUrl()), true);
|
|
79
|
+
const linkedIn = new LinkedInSalesNavigatorPage(page);
|
|
80
|
+
await linkedIn.setStatus(config.enabled);
|
|
81
|
+
}
|
|
82
|
+
catch (e_2) {
|
|
83
|
+
env_2.error = e_2;
|
|
84
|
+
env_2.hasError = true;
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
const result_2 = __disposeResources(env_2);
|
|
88
|
+
if (result_2)
|
|
89
|
+
await result_2;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/linkedin-sales-navigator-settings/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAMvD,MAAM,OAAO,8BAA+B,SAAQ,kBAAkB;IAC7D,KAAK,CAAC,QAAQ,CAAC,UAAmB;;;YACvC,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAClC,MAAY,IAAI,kCAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,OAAA,CAAC;YACzF,MAAM,QAAQ,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,CAAC;YACtD,MAAM,CAAC,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC;YAC5C,OAAO,MAAM,CAAC;;;;;;;;;;;KACf;IAEM,KAAK,CAAC,KAAK,CAAC,MAAc;;;YAC/B,MAAY,IAAI,kCAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,OAAA,CAAC;YACzF,MAAM,QAAQ,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,CAAC;YACtD,MAAM,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;;;;;;;;;;;KAC1C;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Page } from 'playwright';
|
|
2
|
+
import { type SalesforceUrlPath } from '../../browserforce.js';
|
|
3
|
+
export declare class LinkedInSalesNavigatorPage {
|
|
4
|
+
private page;
|
|
5
|
+
constructor(page: Page);
|
|
6
|
+
static getUrl(): SalesforceUrlPath;
|
|
7
|
+
getStatus(): Promise<boolean>;
|
|
8
|
+
setStatus(enable: boolean): Promise<void>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { waitForPageErrors } from '../../browserforce.js';
|
|
2
|
+
const ENABLE_TOGGLE = 'div[data-aura-class="setup_sales_linkedinLinkedInSetupRow"] input[type="checkbox"]:not(:disabled)';
|
|
3
|
+
// unfortunately the divs intercept pointer events so we need to click on the label instead
|
|
4
|
+
const ENABLE_BUTTON = 'div[data-aura-class="setup_sales_linkedinLinkedInSetupRow"]:has(input[type="checkbox"]:not(:disabled)) label';
|
|
5
|
+
const CONFIRM_CHECKBOX = 'section[role="dialog"] lightning-input lightning-primitive-input-checkbox';
|
|
6
|
+
const ACCEPT_BUTTON = 'section[role="dialog"] div div button:not(:disabled):nth-child(2)';
|
|
7
|
+
export class LinkedInSalesNavigatorPage {
|
|
8
|
+
page;
|
|
9
|
+
constructor(page) {
|
|
10
|
+
this.page = page;
|
|
11
|
+
}
|
|
12
|
+
static getUrl() {
|
|
13
|
+
return '/lightning/setup/LinkedInSalesNavigatorPage/home';
|
|
14
|
+
}
|
|
15
|
+
async getStatus() {
|
|
16
|
+
const isEnabled = await this.page.locator(ENABLE_TOGGLE).isChecked();
|
|
17
|
+
return isEnabled;
|
|
18
|
+
}
|
|
19
|
+
async setStatus(enable) {
|
|
20
|
+
await Promise.all([
|
|
21
|
+
Promise.race([this.page.waitForResponse(/LinkedInIntegrationSetup.updatePref=1/), waitForPageErrors(this.page)]),
|
|
22
|
+
(async () => {
|
|
23
|
+
if (enable) {
|
|
24
|
+
await this.page.locator(ENABLE_BUTTON).click();
|
|
25
|
+
await this.page.locator(CONFIRM_CHECKBOX).click();
|
|
26
|
+
await this.page.locator(ACCEPT_BUTTON).click();
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
await this.page.locator(ENABLE_BUTTON).click();
|
|
30
|
+
}
|
|
31
|
+
})(),
|
|
32
|
+
]);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../../src/plugins/linkedin-sales-navigator-settings/page.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAElF,MAAM,aAAa,GACjB,mGAAmG,CAAC;AAEtG,2FAA2F;AAC3F,MAAM,aAAa,GACjB,8GAA8G,CAAC;AACjH,MAAM,gBAAgB,GAAG,2EAA2E,CAAC;AACrG,MAAM,aAAa,GAAG,mEAAmE,CAAC;AAE1F,MAAM,OAAO,0BAA0B;IAC7B,IAAI,CAAO;IAEnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,MAAM,CAAC,MAAM;QAClB,OAAO,kDAAkD,CAAC;IAC5D,CAAC;IAEM,KAAK,CAAC,SAAS;QACpB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,SAAS,EAAE,CAAC;QACrE,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,MAAe;QACpC,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,uCAAuC,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAChH,CAAC,KAAK,IAAI,EAAE;gBACV,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;oBAC/C,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC;oBAClD,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;gBACjD,CAAC;YACH,CAAC,CAAC,EAAE;SACL,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BrowserforcePlugin } from '../../plugin.js';
|
|
2
|
+
export type Config = {
|
|
3
|
+
userAliasOrName: string;
|
|
4
|
+
};
|
|
5
|
+
export declare class LoginAsUser extends BrowserforcePlugin {
|
|
6
|
+
private resolveUserId;
|
|
7
|
+
retrieve(): Promise<Config>;
|
|
8
|
+
apply(config: Config): Promise<void>;
|
|
9
|
+
}
|