@bigbinary/neeto-playwright-commons 1.20.5 → 1.21.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/index.cjs.js +337 -72
- package/index.cjs.js.map +1 -1
- package/index.d.ts +146 -98
- package/index.js +334 -73
- package/index.js.map +1 -1
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -225,6 +225,7 @@ const CREDENTIALS = {
|
|
|
225
225
|
};
|
|
226
226
|
const OTP_EMAIL_PATTERN = "is your login code";
|
|
227
227
|
const SLACK_DEFAULT_CHANNEL = "general";
|
|
228
|
+
const CUSTOM_DOMAIN_SUFFIX = "aceinvoice.com";
|
|
228
229
|
const ZAPIER_TEST_EMAIL = (product) => `neeto-${product}-zapier-test@${process.env.FASTMAIL_DOMAIN_NAME}`;
|
|
229
230
|
// constants for translation
|
|
230
231
|
const SINGULAR = { count: 1 };
|
|
@@ -321,6 +322,11 @@ const skipTest = {
|
|
|
321
322
|
},
|
|
322
323
|
};
|
|
323
324
|
const shouldSkipSetupAndTeardown = () => { var _a; return ((_a = getGlobalUserState()) === null || _a === void 0 ? void 0 : _a.isLoggedIn) && process.env.SKIP_SETUP === "true"; };
|
|
325
|
+
const shouldSkipCustomDomainSetup = () => process.env.SETUP_CUSTOM_DOMAIN !== "true" || !IS_STAGING_ENV;
|
|
326
|
+
const baseURLGenerator = (product, customSubdomain) => {
|
|
327
|
+
const { subdomainName } = getGlobalUserState();
|
|
328
|
+
return `https://${customSubdomain !== null && customSubdomain !== void 0 ? customSubdomain : subdomainName}.neeto${product.toLowerCase()}.net`;
|
|
329
|
+
};
|
|
324
330
|
// trims and replaces multiple whitespace characters in a string with a single space
|
|
325
331
|
const squish = (text) => text.trim().replace(/\s+/g, " ");
|
|
326
332
|
const toCamelCase = (string) => string.toLowerCase().replace(/( \w)/g, letter => letter[1].toUpperCase());
|
|
@@ -340,6 +346,20 @@ const getListCount = async ({ page, countSelector, }) => {
|
|
|
340
346
|
};
|
|
341
347
|
const getGlobalUserProps = async (page) => (await page.evaluate(() => window.globalProps.user));
|
|
342
348
|
const getClipboardContent = (page) => page.evaluate(() => navigator.clipboard.readText());
|
|
349
|
+
const globalShortcuts = (t) => [
|
|
350
|
+
{
|
|
351
|
+
description: t("neetoMolecules.keyboardShortcuts.global.openKeyboardShortcutsPane"),
|
|
352
|
+
sequence: "shift+/",
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
description: t("neetoMolecules.keyboardShortcuts.global.close"),
|
|
356
|
+
sequence: "esc",
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
description: t("neetoMolecules.keyboardShortcuts.global.submitForm"),
|
|
360
|
+
sequence: "ctrl+enter",
|
|
361
|
+
},
|
|
362
|
+
];
|
|
343
363
|
|
|
344
364
|
const optionSelector = (option) => `neeto-editor-fixed-menu-${option}-option`;
|
|
345
365
|
const fixedMenuSelector = (selector) => `neeto-editor-fixed-menu-${selector}`;
|
|
@@ -807,6 +827,7 @@ const CUSTOM_DOMAIN_SELECTORS = {
|
|
|
807
827
|
editCustomDomainButton: "edit-custom-domain-button",
|
|
808
828
|
deleteCustomDomainButton: "delete-custom-domain-button",
|
|
809
829
|
dropdownButton: "custom-domains-more-dropdown-button",
|
|
830
|
+
activeTagContainer: "active-tag-container",
|
|
810
831
|
};
|
|
811
832
|
const API_KEYS_SELECTORS = {
|
|
812
833
|
editApiKeyButton: "api-key-edit-button",
|
|
@@ -188515,12 +188536,12 @@ class ThankYouPage {
|
|
|
188515
188536
|
class EmbedBase {
|
|
188516
188537
|
constructor({ context, page, neetoPlaywrightUtilities, appName, }) {
|
|
188517
188538
|
/**
|
|
188518
|
-
* @deprecated This method is deprecated. Use
|
|
188539
|
+
* @deprecated This method is deprecated. Use initializeEmbedPage instead.
|
|
188519
188540
|
*/
|
|
188520
|
-
this.
|
|
188541
|
+
this.initializeEmbedPageV2 = async ({ embedType, embedCode, customElementText = "Click here", }) => {
|
|
188521
188542
|
this.embedTestPage = await this.context.newPage();
|
|
188522
188543
|
this.embedTestPageType = embedType;
|
|
188523
|
-
const fileContent = basicHTMLContent(this.embedTestPageType === "
|
|
188544
|
+
const fileContent = basicHTMLContent(this.embedTestPageType === "elementPopup"
|
|
188524
188545
|
? `${embedCode}<a href='#' id='open-popup-button'>${customElementText}</a>`
|
|
188525
188546
|
: embedCode);
|
|
188526
188547
|
this.filePath = `tmp/${faker.word.noun()}.html`;
|
|
@@ -188534,7 +188555,7 @@ class EmbedBase {
|
|
|
188534
188555
|
: EMBED_SELECTORS.iframe(this.appName));
|
|
188535
188556
|
return this.embedTestPage;
|
|
188536
188557
|
};
|
|
188537
|
-
this.
|
|
188558
|
+
this.initializeEmbedPage = async ({ embedType, embedCode, customElementText = "Click here", }) => {
|
|
188538
188559
|
this.embedTestPage = await this.context.newPage();
|
|
188539
188560
|
this.embedTestPageType = embedType;
|
|
188540
188561
|
const fileContent = basicHTMLContent(this.embedTestPageType === "elementPopup"
|
|
@@ -188576,33 +188597,29 @@ class EmbedBase {
|
|
|
188576
188597
|
}).toPass({ timeout: 2 * 60 * 1000 });
|
|
188577
188598
|
};
|
|
188578
188599
|
/**
|
|
188579
|
-
* @deprecated This method is deprecated. Use
|
|
188600
|
+
* @deprecated This method is deprecated. Use copyEmbedScript instead.
|
|
188580
188601
|
*/
|
|
188581
|
-
this.
|
|
188582
|
-
await this.
|
|
188583
|
-
.getByTestId(COMMON_SELECTORS.radioLabel(embedLabel))
|
|
188584
|
-
.check();
|
|
188602
|
+
this.copyEmbedScriptV2 = async (embedType) => {
|
|
188603
|
+
await this.selectEmbedType(embedType);
|
|
188585
188604
|
await this.page.getByTestId(COMMON_SELECTORS.copyButton).click();
|
|
188586
188605
|
return await this.page.evaluate(() => navigator.clipboard.readText());
|
|
188587
188606
|
};
|
|
188588
|
-
this.
|
|
188589
|
-
await this.
|
|
188607
|
+
this.copyEmbedScript = async (embedType) => {
|
|
188608
|
+
await this.selectEmbedType(embedType);
|
|
188590
188609
|
await this.page.getByTestId(COMMON_SELECTORS.copyButton).click();
|
|
188591
188610
|
return await this.page.evaluate(() => navigator.clipboard.readText());
|
|
188592
188611
|
};
|
|
188593
188612
|
/**
|
|
188594
|
-
* @deprecated This method is deprecated. Use
|
|
188613
|
+
* @deprecated This method is deprecated. Use selectEmbedType instead.
|
|
188595
188614
|
*/
|
|
188596
|
-
this.selectEmbedType = async (embedLabel) => {
|
|
188597
|
-
await this.page.getByTestId(EMBED_SELECTORS.htmlTab).click();
|
|
188598
|
-
await this.page
|
|
188599
|
-
.getByTestId(COMMON_SELECTORS.radioLabel(embedLabel))
|
|
188600
|
-
.check();
|
|
188601
|
-
};
|
|
188602
188615
|
this.selectEmbedTypeV2 = async (embedType) => {
|
|
188603
188616
|
await this.page.locator(EMBED_SELECTORS.embedSelector(embedType)).click();
|
|
188604
188617
|
await this.neetoPlaywrightUtilities.waitForPageLoad();
|
|
188605
188618
|
};
|
|
188619
|
+
this.selectEmbedType = async (embedType) => {
|
|
188620
|
+
await this.page.locator(EMBED_SELECTORS.embedSelector(embedType)).click();
|
|
188621
|
+
await this.neetoPlaywrightUtilities.waitForPageLoad();
|
|
188622
|
+
};
|
|
188606
188623
|
this.verifyInlineCustomization = async ({ headingTestId,
|
|
188607
188624
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
188608
188625
|
inlineEmbedInterceptParams, customizationOptions, }) => {
|
|
@@ -188712,10 +188729,7 @@ class EmbedBase {
|
|
|
188712
188729
|
.fill(customizationOptions.customId);
|
|
188713
188730
|
await expect(this.codeBlock).toContainText(`elementSelector: "#${customizationOptions.customId}"`);
|
|
188714
188731
|
(await this.previewTab.isVisible()) && (await this.previewTab.click());
|
|
188715
|
-
await
|
|
188716
|
-
expect(this.page.getByTestId(EMBED_SELECTORS.previewElementPopupButton)).toBeVisible(),
|
|
188717
|
-
await expect(this.page.locator(`#${customizationOptions.customId}`)).toBeVisible(),
|
|
188718
|
-
]);
|
|
188732
|
+
await expect(this.page.getByTestId(EMBED_SELECTORS.previewElementPopupButton)).toBeVisible();
|
|
188719
188733
|
await this.backToEmbedSelection();
|
|
188720
188734
|
};
|
|
188721
188735
|
this.expectMultipleTextsInCodeblock = async (containTextOptions) => {
|
|
@@ -188760,6 +188774,14 @@ const ROUTES = {
|
|
|
188760
188774
|
attachment: `/neeto_editor${BASE_URL}/direct_uploads/attach`,
|
|
188761
188775
|
dashboard: "/dashboard",
|
|
188762
188776
|
neetoThankYou: "/neeto_thank_you_engine",
|
|
188777
|
+
adminPanel: {
|
|
188778
|
+
roles: "/admin/admin-panel/roles",
|
|
188779
|
+
index: "/admin/admin-panel",
|
|
188780
|
+
auditLogs: "/admin/admin-panel/audit-logs",
|
|
188781
|
+
apiKeys: "/admin/admin-panel/apiKeys",
|
|
188782
|
+
customDomain: "/admin/admin-panel/custom-domain",
|
|
188783
|
+
ipRestriction: "/admin/admin-panel/ip-restriction",
|
|
188784
|
+
},
|
|
188763
188785
|
};
|
|
188764
188786
|
const API_ROUTES = {
|
|
188765
188787
|
teamMembers: {
|
|
@@ -188856,7 +188878,6 @@ const ZAPIER_WEB_TEXTS = {
|
|
|
188856
188878
|
welcomeText: (zapierLoginEmail) => `Welcome back ${zapierLoginEmail}`,
|
|
188857
188879
|
connectStagingApp: (appName) => `Connect ${appName} Staging`,
|
|
188858
188880
|
zapierWorkflowTriggered: "Zapier Workflow Triggered",
|
|
188859
|
-
confirmPublishing: "Confirm Publishing",
|
|
188860
188881
|
startFreeWithEmail: "Start free with email",
|
|
188861
188882
|
appsByTitle: "Apps by title",
|
|
188862
188883
|
logIn: "Log in",
|
|
@@ -188913,6 +188934,9 @@ const ORGANIZATION_TEXTS = {
|
|
|
188913
188934
|
class HelpAndProfilePage {
|
|
188914
188935
|
constructor({ page, neetoPlaywrightUtilities, chatApiBaseURL, kbDocsBaseURL, changelogBaseURL, }) {
|
|
188915
188936
|
this.hoverOnBody = () => this.page.locator("body").hover();
|
|
188937
|
+
/**
|
|
188938
|
+
* @deprecated This method is deprecated. Use openHelpCenter instead.
|
|
188939
|
+
*/
|
|
188916
188940
|
this.openHelpCenterV2 = async () => {
|
|
188917
188941
|
await expect(async () => {
|
|
188918
188942
|
await this.hoverOnBody();
|
|
@@ -188922,9 +188946,18 @@ class HelpAndProfilePage {
|
|
|
188922
188946
|
await expect(this.page.getByTestId(HELP_CENTER_SELECTORS.chatButton)).toBeVisible();
|
|
188923
188947
|
}).toPass({ timeout: 15000 });
|
|
188924
188948
|
};
|
|
188949
|
+
this.openHelpCenter = async () => {
|
|
188950
|
+
await expect(async () => {
|
|
188951
|
+
await this.hoverOnBody();
|
|
188952
|
+
const floatingActionMenuButton = this.page.getByTestId(COMMON_SELECTORS.floatingActionMenuButton);
|
|
188953
|
+
await floatingActionMenuButton.scrollIntoViewIfNeeded();
|
|
188954
|
+
await floatingActionMenuButton.hover();
|
|
188955
|
+
await expect(this.page.getByTestId(HELP_CENTER_SELECTORS.chatButton)).toBeVisible();
|
|
188956
|
+
}).toPass({ timeout: 15000 });
|
|
188957
|
+
};
|
|
188925
188958
|
this.openLiveChatAndVerify = async (widgetVisibilityTimeout = 10000) => {
|
|
188926
188959
|
await expect(async () => {
|
|
188927
|
-
await this.
|
|
188960
|
+
await this.openHelpCenter();
|
|
188928
188961
|
await this.page.getByTestId(HELP_CENTER_SELECTORS.chatButton).click();
|
|
188929
188962
|
await expect(this.neetoChatWidget).toBeVisible({
|
|
188930
188963
|
timeout: widgetVisibilityTimeout,
|
|
@@ -188935,6 +188968,9 @@ class HelpAndProfilePage {
|
|
|
188935
188968
|
});
|
|
188936
188969
|
}).toPass({ timeout: 35000 + widgetVisibilityTimeout * 2 });
|
|
188937
188970
|
};
|
|
188971
|
+
/**
|
|
188972
|
+
* @deprecated This method is deprecated. Use openAndVerifyChatWidget instead.
|
|
188973
|
+
*/
|
|
188938
188974
|
this.openAndVerifyChatWidgetV2 = async () => {
|
|
188939
188975
|
await this.page.reload();
|
|
188940
188976
|
await this.neetoPlaywrightUtilities.waitForPageLoad();
|
|
@@ -188948,6 +188984,22 @@ class HelpAndProfilePage {
|
|
|
188948
188984
|
})).toBeVisible({ timeout: 35000 });
|
|
188949
188985
|
});
|
|
188950
188986
|
};
|
|
188987
|
+
this.openAndVerifyChatWidget = async () => {
|
|
188988
|
+
await this.page.reload();
|
|
188989
|
+
await this.neetoPlaywrightUtilities.waitForPageLoad();
|
|
188990
|
+
await test$2.step("Step 1: Open live chat and verify iframe", () => this.openLiveChatAndVerify());
|
|
188991
|
+
await test$2.step("Step 2: Close and reopen live chat frame", async () => {
|
|
188992
|
+
await this.page.getByTestId(CHAT_WIDGET_SELECTORS.closeChat).click();
|
|
188993
|
+
await expect(this.neetoChatWidget).toBeHidden({ timeout: 35000 });
|
|
188994
|
+
await this.openLiveChatAndVerify();
|
|
188995
|
+
await expect(this.neetoChatFrame.getByRole("button", {
|
|
188996
|
+
name: CHAT_WIDGET_TEXTS.newConversation,
|
|
188997
|
+
})).toBeVisible({ timeout: 35000 });
|
|
188998
|
+
});
|
|
188999
|
+
};
|
|
189000
|
+
/**
|
|
189001
|
+
* @deprecated This method is deprecated. Use openAndVerifyHelpArticles instead.
|
|
189002
|
+
*/
|
|
188951
189003
|
this.openAndVerifyHelpArticlesV2 = async () => {
|
|
188952
189004
|
await test$2.step("Step 1: Open Help Center links", this.openHelpCenterV2);
|
|
188953
189005
|
await test$2.step("Step 2: Open and verify help articles link", async () => {
|
|
@@ -188961,21 +189013,36 @@ class HelpAndProfilePage {
|
|
|
188961
189013
|
await helpArticlesPage.close();
|
|
188962
189014
|
});
|
|
188963
189015
|
};
|
|
188964
|
-
this.
|
|
189016
|
+
this.openAndVerifyHelpArticles = async () => {
|
|
189017
|
+
await test$2.step("Step 1: Open Help Center links", this.openHelpCenter);
|
|
189018
|
+
await test$2.step("Step 2: Open and verify help articles link", async () => {
|
|
189019
|
+
const helpArticlesPromise = this.page.waitForEvent("popup");
|
|
189020
|
+
await this.page
|
|
189021
|
+
.getByTestId(HELP_CENTER_SELECTORS.documentationButton)
|
|
189022
|
+
.click();
|
|
189023
|
+
const helpArticlesPage = await helpArticlesPromise;
|
|
189024
|
+
await helpArticlesPage.waitForLoadState();
|
|
189025
|
+
await expect(helpArticlesPage).toHaveURL(this.kbDocsBaseURL);
|
|
189026
|
+
});
|
|
189027
|
+
};
|
|
189028
|
+
this.openChangelogPane = async () => {
|
|
188965
189029
|
await expect(async () => {
|
|
188966
|
-
await this.
|
|
189030
|
+
await this.openHelpCenter();
|
|
188967
189031
|
await this.page.getByTestId(HELP_CENTER_SELECTORS.whatsNewButton).click();
|
|
188968
189032
|
await expect(this.page.locator(CHANGELOG_WIDGET_SELECTORS.changelogWrapper)).toBeVisible();
|
|
188969
189033
|
}).toPass({ timeout: 45000 });
|
|
188970
189034
|
};
|
|
189035
|
+
/**
|
|
189036
|
+
* @deprecated This method is deprecated. Use openAndVerifyChangelog instead.
|
|
189037
|
+
*/
|
|
188971
189038
|
this.openAndVerifyChangelogV2 = async () => {
|
|
188972
|
-
await test$2.step("Step 1: Open Help Center links and changelog", this.
|
|
189039
|
+
await test$2.step("Step 1: Open Help Center links and changelog", this.openChangelogPane);
|
|
188973
189040
|
await test$2.step("Step 2: Close and reopen changelog pane", async () => {
|
|
188974
189041
|
await this.page
|
|
188975
189042
|
.getByTestId(CHANGELOG_WIDGET_SELECTORS.closeButton)
|
|
188976
189043
|
.click();
|
|
188977
189044
|
await expect(this.page.locator(CHANGELOG_WIDGET_SELECTORS.changelogWrapper)).toBeHidden();
|
|
188978
|
-
await this.
|
|
189045
|
+
await this.openChangelogPane();
|
|
188979
189046
|
});
|
|
188980
189047
|
await test$2.step("Step 3: Open and verify public URL", async () => {
|
|
188981
189048
|
const changelogPagePromise = this.page.waitForEvent("popup");
|
|
@@ -188988,6 +189055,25 @@ class HelpAndProfilePage {
|
|
|
188988
189055
|
await changelogPage.close();
|
|
188989
189056
|
});
|
|
188990
189057
|
};
|
|
189058
|
+
this.openAndVerifyChangelog = async () => {
|
|
189059
|
+
await test$2.step("Step 1: Open Help Center links and changelog", this.openChangelogPane);
|
|
189060
|
+
await test$2.step("Step 2: Close and reopen changelog pane", async () => {
|
|
189061
|
+
await this.page
|
|
189062
|
+
.getByTestId(CHANGELOG_WIDGET_SELECTORS.closeButton)
|
|
189063
|
+
.click();
|
|
189064
|
+
await expect(this.page.locator(CHANGELOG_WIDGET_SELECTORS.changelogWrapper)).toBeHidden();
|
|
189065
|
+
await this.openChangelogPane();
|
|
189066
|
+
});
|
|
189067
|
+
await test$2.step("Step 3: Open and verify public URL", async () => {
|
|
189068
|
+
const changelogPagePromise = this.page.waitForEvent("popup");
|
|
189069
|
+
await this.page
|
|
189070
|
+
.getByTestId(CHANGELOG_WIDGET_SELECTORS.publicUrlLink)
|
|
189071
|
+
.click();
|
|
189072
|
+
const changelogPage = await changelogPagePromise;
|
|
189073
|
+
await expect(changelogPage.getByRole("button", { name: ENGAGE_TEXTS.subscribe })).toBeVisible();
|
|
189074
|
+
await expect(changelogPage).toHaveURL(this.changelogBaseURL);
|
|
189075
|
+
});
|
|
189076
|
+
};
|
|
188991
189077
|
this.formatKeyboardShortcut = (shortcut, osPlatform = "windows") => {
|
|
188992
189078
|
const formattedShortcut = shortcut
|
|
188993
189079
|
.replaceAll(" ", "then")
|
|
@@ -188996,6 +189082,9 @@ class HelpAndProfilePage {
|
|
|
188996
189082
|
? formattedShortcut.replace(/ctrl/g, "⌘").replace(/alt/g, "opt")
|
|
188997
189083
|
: formattedShortcut;
|
|
188998
189084
|
};
|
|
189085
|
+
/**
|
|
189086
|
+
* @deprecated This method is deprecated. Use openAndVerifyKeyboardShortcutsPane instead.
|
|
189087
|
+
*/
|
|
188999
189088
|
this.openAndVerifyKeyboardShortcutsPaneV2 = async (productShortcuts, osPlatform = "windows") => {
|
|
189000
189089
|
const globalShortcuts = [
|
|
189001
189090
|
{
|
|
@@ -189041,6 +189130,40 @@ class HelpAndProfilePage {
|
|
|
189041
189130
|
.locator("div")).toHaveText(formattedSequences);
|
|
189042
189131
|
});
|
|
189043
189132
|
};
|
|
189133
|
+
this.openAndVerifyKeyboardShortcutsPane = async (productShortcuts, osPlatform = "windows") => {
|
|
189134
|
+
const shortcuts = [...globalShortcuts(this.t), ...productShortcuts];
|
|
189135
|
+
await test$2.step("Step 1: Open Help Center", this.openHelpCenter);
|
|
189136
|
+
await test$2.step("Step 2: Open and close keyboard shortcuts from UI", async () => {
|
|
189137
|
+
await this.page
|
|
189138
|
+
.getByTestId(HELP_CENTER_SELECTORS.keyboardShortcutButton)
|
|
189139
|
+
.click();
|
|
189140
|
+
await expect(this.page.getByTestId(KEYBOARD_SHORTCUTS_SELECTORS.keyboardShortcutsPane)).not.toHaveCSS("width", "1px");
|
|
189141
|
+
await this.page
|
|
189142
|
+
.getByTestId(KEYBOARD_SHORTCUTS_SELECTORS.closePaneButton)
|
|
189143
|
+
.click();
|
|
189144
|
+
await expect(this.page.getByTestId(KEYBOARD_SHORTCUTS_SELECTORS.keyboardShortcutsPane)).toHaveCSS("width", "1px");
|
|
189145
|
+
});
|
|
189146
|
+
await test$2.step("Step 3: Open and close keyboard shortcuts through shortcut", async () => {
|
|
189147
|
+
await this.page.keyboard.press("Shift+/");
|
|
189148
|
+
await expect(this.page.getByTestId(KEYBOARD_SHORTCUTS_SELECTORS.keyboardShortcutsPane)).not.toHaveCSS("width", "1px");
|
|
189149
|
+
await this.page.keyboard.press("Escape");
|
|
189150
|
+
await expect(this.page.getByTestId(KEYBOARD_SHORTCUTS_SELECTORS.keyboardShortcutsPane)).toHaveCSS("width", "1px");
|
|
189151
|
+
});
|
|
189152
|
+
await test$2.step("Step 4: Verify all displayed keyboard shortcuts", async () => {
|
|
189153
|
+
await this.page.keyboard.press("Shift+/");
|
|
189154
|
+
await expect(this.page.getByTestId(KEYBOARD_SHORTCUTS_SELECTORS.keyboardShortcutsPane)).not.toHaveCSS("width", "1px");
|
|
189155
|
+
await expect(this.page
|
|
189156
|
+
.getByTestId(KEYBOARD_SHORTCUTS_SELECTORS.hotKeyItem)
|
|
189157
|
+
.locator("p")).toHaveText(shortcuts.map(shortcut => shortcut.description));
|
|
189158
|
+
const formattedSequences = shortcuts.map(shortcut => this.formatKeyboardShortcut(shortcut.sequence, osPlatform));
|
|
189159
|
+
await expect(this.page
|
|
189160
|
+
.getByTestId(KEYBOARD_SHORTCUTS_SELECTORS.hotKeyItem)
|
|
189161
|
+
.locator("div")).toHaveText(formattedSequences);
|
|
189162
|
+
});
|
|
189163
|
+
};
|
|
189164
|
+
/**
|
|
189165
|
+
* @deprecated This method is deprecated. Use openAppSwitcherAndVerify instead.
|
|
189166
|
+
*/
|
|
189044
189167
|
this.openAppSwitcherAndVerifyV2 = async () => {
|
|
189045
189168
|
const productName = "Playdash";
|
|
189046
189169
|
const searchQueryPartial = productName.slice(0, 4).toLowerCase();
|
|
@@ -189069,45 +189192,58 @@ class HelpAndProfilePage {
|
|
|
189069
189192
|
]);
|
|
189070
189193
|
});
|
|
189071
189194
|
};
|
|
189072
|
-
this.
|
|
189073
|
-
|
|
189074
|
-
const
|
|
189075
|
-
|
|
189076
|
-
|
|
189077
|
-
|
|
189078
|
-
|
|
189079
|
-
|
|
189080
|
-
|
|
189195
|
+
this.openAppSwitcherAndVerify = async () => {
|
|
189196
|
+
const productName = "Playdash";
|
|
189197
|
+
const searchQueryPartial = productName.slice(0, 4).toLowerCase();
|
|
189198
|
+
const searchQueryFull = productName.toLowerCase();
|
|
189199
|
+
await test$2.step("Step 1: Verify hovering over app switcher opens the app switcher drawer", () => expect(async () => {
|
|
189200
|
+
await this.openHelpCenter();
|
|
189201
|
+
await this.page.getByTestId(COMMON_SELECTORS.appSwitcherButton).hover();
|
|
189202
|
+
await expect(this.page.getByTestId(COMMON_SELECTORS.appSwitcherWrapper)).toBeVisible();
|
|
189203
|
+
}).toPass({ timeout: 45000 }));
|
|
189204
|
+
await test$2.step("Step 2: Verify search functionality", async () => {
|
|
189205
|
+
const playdashAppLink = this.page.getByTestId(COMMON_SELECTORS.appLink(productName));
|
|
189206
|
+
const replayAppLink = this.page.getByTestId(COMMON_SELECTORS.appLink("Replay"));
|
|
189207
|
+
const searchInput = this.page.getByTestId(COMMON_SELECTORS.productSwitcherSearchInput);
|
|
189208
|
+
await searchInput.fill(faker.word.words(3));
|
|
189209
|
+
//TODO: Use data-cy label when this https://github.com/bigbinary/neeto-molecules/issues/2114 is resolved
|
|
189210
|
+
await expect(this.page.getByText(this.t("neetoMolecules.productSwitcher.noApps"))).toBeVisible();
|
|
189211
|
+
await searchInput.fill(searchQueryPartial);
|
|
189212
|
+
await Promise.all([
|
|
189213
|
+
expect(playdashAppLink).toBeVisible(),
|
|
189214
|
+
expect(replayAppLink).toBeVisible(),
|
|
189215
|
+
]);
|
|
189216
|
+
await searchInput.fill(searchQueryFull);
|
|
189217
|
+
await Promise.all([
|
|
189218
|
+
expect(playdashAppLink).toBeVisible(),
|
|
189219
|
+
expect(replayAppLink).toBeHidden(),
|
|
189220
|
+
]);
|
|
189221
|
+
});
|
|
189081
189222
|
};
|
|
189082
|
-
|
|
189223
|
+
/**
|
|
189224
|
+
* @deprecated This method is deprecated. Use verifyLogout instead.
|
|
189225
|
+
*/
|
|
189226
|
+
this.verifyLogoutV2 = async () => {
|
|
189227
|
+
if (shouldSkipSetupAndTeardown())
|
|
189228
|
+
return;
|
|
189083
189229
|
await test$2.step("Step 1: Open Help center and verify", this.openHelpCenterV2);
|
|
189084
|
-
await test$2.step("Step 2:
|
|
189230
|
+
await test$2.step("Step 2: Click logout and verify", async () => {
|
|
189085
189231
|
await this.page
|
|
189086
|
-
.getByTestId(PROFILE_SECTION_SELECTORS.
|
|
189087
|
-
.click();
|
|
189088
|
-
|
|
189089
|
-
|
|
189090
|
-
|
|
189091
|
-
|
|
189092
|
-
|
|
189232
|
+
.getByTestId(PROFILE_SECTION_SELECTORS.logoutButton)
|
|
189233
|
+
.click({ timeout: 35000 });
|
|
189234
|
+
process.env.TEST_ENV === ENVIRONMENT.staging &&
|
|
189235
|
+
(await expect(this.page).toHaveURL(new RegExp(NEETO_AUTH_BASE_URL()), {
|
|
189236
|
+
timeout: 15000,
|
|
189237
|
+
}));
|
|
189238
|
+
await expect(this.page).toHaveURL(new RegExp(ROUTES.loginLink), {
|
|
189239
|
+
timeout: 15000,
|
|
189093
189240
|
});
|
|
189094
|
-
await this.page
|
|
189095
|
-
.getByTestId(PROFILE_SECTION_SELECTORS.profileSidebarCancelButton)
|
|
189096
|
-
.click();
|
|
189097
|
-
await expect(profileSidebarHeader).toBeHidden();
|
|
189098
|
-
});
|
|
189099
|
-
await test$2.step("Step 3: Open Help center and verify", this.openHelpCenterV2);
|
|
189100
|
-
await test$2.step("Step 4: Open My organization link and verify", async () => {
|
|
189101
|
-
await this.page
|
|
189102
|
-
.getByTestId(PROFILE_SECTION_SELECTORS.profileOrganizationSettingsButton)
|
|
189103
|
-
.click();
|
|
189104
|
-
await expect(this.page).toHaveURL(new RegExp(ROUTES.dashboard));
|
|
189105
189241
|
});
|
|
189106
189242
|
};
|
|
189107
|
-
this.
|
|
189243
|
+
this.verifyLogout = async () => {
|
|
189108
189244
|
if (shouldSkipSetupAndTeardown())
|
|
189109
189245
|
return;
|
|
189110
|
-
await test$2.step("Step 1: Open Help center and verify", this.
|
|
189246
|
+
await test$2.step("Step 1: Open Help center and verify", this.openHelpCenter);
|
|
189111
189247
|
await test$2.step("Step 2: Click logout and verify", async () => {
|
|
189112
189248
|
await this.page
|
|
189113
189249
|
.getByTestId(PROFILE_SECTION_SELECTORS.logoutButton)
|
|
@@ -189121,7 +189257,7 @@ class HelpAndProfilePage {
|
|
|
189121
189257
|
});
|
|
189122
189258
|
});
|
|
189123
189259
|
};
|
|
189124
|
-
this.
|
|
189260
|
+
this.openAuthLinkAndVerify = async ({ linkName, redirectLink, }) => {
|
|
189125
189261
|
var _a, _b;
|
|
189126
189262
|
await this.page
|
|
189127
189263
|
.getByTestId(COMMON_SELECTORS.pane)
|
|
@@ -189135,15 +189271,18 @@ class HelpAndProfilePage {
|
|
|
189135
189271
|
await expect(this.page).toHaveURL(new RegExp(redirectLink));
|
|
189136
189272
|
await this.page.goBack();
|
|
189137
189273
|
};
|
|
189274
|
+
/**
|
|
189275
|
+
* @deprecated This method is deprecated. Use verifyProfileAndOrganizationLinks instead.
|
|
189276
|
+
*/
|
|
189138
189277
|
this.verifyProfileAndOrganizationLinksV3 = async () => {
|
|
189139
|
-
await test$2.step("Step 1: Open Help center and verify", this.
|
|
189278
|
+
await test$2.step("Step 1: Open Help center and verify", this.openHelpCenter);
|
|
189140
189279
|
await test$2.step("Step 2: Open My profile link and verify", async () => {
|
|
189141
189280
|
const profileSidebarHeader = this.page.getByTestId(COMMON_SELECTORS.paneHeader);
|
|
189142
189281
|
await this.page
|
|
189143
189282
|
.getByTestId(PROFILE_SECTION_SELECTORS.myProfileButton)
|
|
189144
189283
|
.click();
|
|
189145
189284
|
await expect(profileSidebarHeader).toContainText(this.t("neetoTeamMembers.profile.common.myProfile"));
|
|
189146
|
-
await this.
|
|
189285
|
+
await this.openAuthLinkAndVerify({
|
|
189147
189286
|
redirectLink: ROUTES.myProfile,
|
|
189148
189287
|
linkName: this.t("neetoTeamMembers.buttons.manageBillingAndSubscriptions"),
|
|
189149
189288
|
});
|
|
@@ -189156,8 +189295,29 @@ class HelpAndProfilePage {
|
|
|
189156
189295
|
await expect(this.page).toHaveURL(new RegExp(ROUTES.dashboard));
|
|
189157
189296
|
});
|
|
189158
189297
|
};
|
|
189298
|
+
this.verifyProfileAndOrganizationLinks = async () => {
|
|
189299
|
+
await test$2.step("Step 1: Open Help center and verify", this.openHelpCenter);
|
|
189300
|
+
await test$2.step("Step 2: Open My profile link and verify", async () => {
|
|
189301
|
+
const profileSidebarHeader = this.page.getByTestId(COMMON_SELECTORS.paneHeader);
|
|
189302
|
+
await this.page
|
|
189303
|
+
.getByTestId(PROFILE_SECTION_SELECTORS.myProfileButton)
|
|
189304
|
+
.click();
|
|
189305
|
+
await expect(profileSidebarHeader).toContainText(this.t("neetoTeamMembers.profile.common.myProfile"));
|
|
189306
|
+
await this.openAuthLinkAndVerify({
|
|
189307
|
+
redirectLink: ROUTES.myProfile,
|
|
189308
|
+
linkName: this.t("neetoTeamMembers.buttons.manageBillingAndSubscriptions"),
|
|
189309
|
+
});
|
|
189310
|
+
});
|
|
189311
|
+
await test$2.step("Step 3: Open Help center and verify", this.openHelpCenter);
|
|
189312
|
+
await test$2.step("Step 4: Open My organization link and verify", async () => {
|
|
189313
|
+
await this.page
|
|
189314
|
+
.getByTestId(PROFILE_SECTION_SELECTORS.profileOrganizationSettingsButton)
|
|
189315
|
+
.click();
|
|
189316
|
+
await expect(this.page).toHaveURL(new RegExp(ROUTES.dashboard));
|
|
189317
|
+
});
|
|
189318
|
+
};
|
|
189159
189319
|
this.openAndVerifyStatus = async (appName) => {
|
|
189160
|
-
await test$2.step("Step 1: Open Help Center links", this.
|
|
189320
|
+
await test$2.step("Step 1: Open Help Center links", this.openHelpCenter);
|
|
189161
189321
|
await test$2.step("Step 2: Open and verify status page", async () => {
|
|
189162
189322
|
const statusPagePromise = this.page.waitForEvent("popup");
|
|
189163
189323
|
await this.page.getByTestId(HELP_CENTER_SELECTORS.statusButton).click();
|
|
@@ -189172,7 +189332,7 @@ class HelpAndProfilePage {
|
|
|
189172
189332
|
});
|
|
189173
189333
|
};
|
|
189174
189334
|
this.openAndVerifyCommunity = async () => {
|
|
189175
|
-
await test$2.step("Step 1: Open Help Center links", this.
|
|
189335
|
+
await test$2.step("Step 1: Open Help Center links", this.openHelpCenter);
|
|
189176
189336
|
await test$2.step("Step 2: Open and verify community", async () => {
|
|
189177
189337
|
const communityPagePromise = this.page.waitForEvent("popup");
|
|
189178
189338
|
await this.page
|
|
@@ -191537,6 +191697,9 @@ class ZapierPage extends IntegrationBase {
|
|
|
191537
191697
|
const testTriggerButton = this.zapierWebPage.getByRole("button", {
|
|
191538
191698
|
name: ZAPIER_WEB_TEXTS.testTrigger,
|
|
191539
191699
|
});
|
|
191700
|
+
await expect(this.zapierWebPage.locator(ZAPIER_SELECTORS.spinner)).toBeHidden({
|
|
191701
|
+
timeout: 25000,
|
|
191702
|
+
});
|
|
191540
191703
|
(await testTriggerButton.isVisible()) && (await testTriggerButton.click());
|
|
191541
191704
|
await expect(this.zapierWebPage.getByText(ZAPIER_WEB_TEXTS.testCurrentlyInQueue)).toBeHidden({ timeout: 20000 });
|
|
191542
191705
|
await expect(this.zapierWebPage.getByLabel(ZAPIER_WEB_TEXTS.statusLabel, {
|
|
@@ -191557,14 +191720,8 @@ class ZapierPage extends IntegrationBase {
|
|
|
191557
191720
|
.getByRole("button", { name: ZAPIER_WEB_TEXTS.publish }))
|
|
191558
191721
|
.click({ timeout: 20000 });
|
|
191559
191722
|
await this.zapierWebPage
|
|
191560
|
-
.getByRole("button", { name: ZAPIER_WEB_TEXTS.confirmPublishing })
|
|
191561
|
-
.or(this.zapierWebPage
|
|
191562
191723
|
.getByRole("dialog")
|
|
191563
|
-
.getByLabel(ZAPIER_WEB_TEXTS.publish)
|
|
191564
|
-
.or(this.zapierWebPage.getByRole("dialog").getByRole("button", {
|
|
191565
|
-
name: ZAPIER_WEB_TEXTS.publish,
|
|
191566
|
-
exact: true,
|
|
191567
|
-
})))
|
|
191724
|
+
.getByLabel(new RegExp(ZAPIER_WEB_TEXTS.publish, "i"))
|
|
191568
191725
|
.click();
|
|
191569
191726
|
await this.zapierWebPage
|
|
191570
191727
|
.getByLabel(ZAPIER_WEB_TEXTS.publishingZapHeading)
|
|
@@ -192892,7 +193049,8 @@ class AuditLogsPage {
|
|
|
192892
193049
|
}
|
|
192893
193050
|
|
|
192894
193051
|
class CustomDomainPage {
|
|
192895
|
-
constructor(page, neetoPlaywrightUtilities
|
|
193052
|
+
constructor(page, neetoPlaywrightUtilities, browser // Made optional to avoid breaking changes during the compliance release
|
|
193053
|
+
) {
|
|
192896
193054
|
this.addCustomDomainViaUI = async (domainName) => {
|
|
192897
193055
|
const addCustomDomainButton = this.page.getByTestId(CUSTOM_DOMAIN_SELECTORS.addCustomDomainButton);
|
|
192898
193056
|
await expect(addCustomDomainButton).toBeVisible();
|
|
@@ -192929,6 +193087,109 @@ class CustomDomainPage {
|
|
|
192929
193087
|
await this.neetoPlaywrightUtilities.verifyToast();
|
|
192930
193088
|
await expect(this.page.getByTestId(COMMON_SELECTORS.noDataTitle)).toBeVisible();
|
|
192931
193089
|
};
|
|
193090
|
+
this.getCustomDomain = (newSubdomain) => {
|
|
193091
|
+
const { subdomainName } = getGlobalUserState();
|
|
193092
|
+
this.subdomain = newSubdomain !== null && newSubdomain !== void 0 ? newSubdomain : subdomainName;
|
|
193093
|
+
return `${this.subdomain}.${CUSTOM_DOMAIN_SUFFIX}`;
|
|
193094
|
+
};
|
|
193095
|
+
this.addCustomDomain = async (domain) => {
|
|
193096
|
+
await this.page
|
|
193097
|
+
.getByTestId(CUSTOM_DOMAIN_SELECTORS.addCustomDomainButton)
|
|
193098
|
+
.click();
|
|
193099
|
+
await this.page
|
|
193100
|
+
.getByTestId(CUSTOM_DOMAIN_SELECTORS.customDomainInputField)
|
|
193101
|
+
.fill(domain);
|
|
193102
|
+
await this.page
|
|
193103
|
+
.getByTestId(CUSTOM_DOMAIN_SELECTORS.submitCustomDomainButton)
|
|
193104
|
+
.click();
|
|
193105
|
+
};
|
|
193106
|
+
this.validateCustomDomain = async (domain) => {
|
|
193107
|
+
const validateButton = this.page.getByTestId(CUSTOM_DOMAIN_SELECTORS.customDomainValidateButton);
|
|
193108
|
+
await Promise.all([
|
|
193109
|
+
expect(validateButton).toBeVisible(),
|
|
193110
|
+
expect(this.page.getByTestId(COMMON_SELECTORS.paneBody).getByText(domain)).toBeVisible(),
|
|
193111
|
+
]);
|
|
193112
|
+
await expect(async () => {
|
|
193113
|
+
await validateButton.click();
|
|
193114
|
+
await this.neetoPlaywrightUtilities.verifyToast({
|
|
193115
|
+
message: this.t("neetoCustomDomains.validation.successMessage"),
|
|
193116
|
+
});
|
|
193117
|
+
}).toPass({ timeout: 60000 });
|
|
193118
|
+
await this.neetoPlaywrightUtilities.waitForPageLoad();
|
|
193119
|
+
await expect(this.page.getByTestId(CUSTOM_DOMAIN_SELECTORS.activeTagContainer)).toBeVisible();
|
|
193120
|
+
};
|
|
193121
|
+
this.loginToCustomDomain = async () => {
|
|
193122
|
+
void this.page.close();
|
|
193123
|
+
const loginPage = this.loginPage;
|
|
193124
|
+
const { email } = getGlobalUserState();
|
|
193125
|
+
const loginUrl = `${this.baseURL}${ROUTES.admin}`;
|
|
193126
|
+
const playwrightUtils = new CustomCommands(loginPage, loginPage.request);
|
|
193127
|
+
const organizationPage = new OrganizationPage(loginPage, playwrightUtils);
|
|
193128
|
+
await loginPage.goto(loginUrl);
|
|
193129
|
+
await organizationPage.loginViaSSO(email);
|
|
193130
|
+
await expect(loginPage).toHaveURL(RegExp(loginUrl), { timeout: 15000 });
|
|
193131
|
+
await playwrightUtils.waitForPageLoad();
|
|
193132
|
+
};
|
|
193133
|
+
this.waitForTrustedSSL = () => expect
|
|
193134
|
+
.poll(() => new Promise(resolve => {
|
|
193135
|
+
https$1
|
|
193136
|
+
.get(this.baseURL, { rejectUnauthorized: true }, res => {
|
|
193137
|
+
res.resume();
|
|
193138
|
+
resolve(true);
|
|
193139
|
+
})
|
|
193140
|
+
.on("error", () => {
|
|
193141
|
+
resolve(false);
|
|
193142
|
+
});
|
|
193143
|
+
}), { timeout: 25000, intervals: [3000] })
|
|
193144
|
+
.toBe(true);
|
|
193145
|
+
this.saveCustomDomainState = async () => {
|
|
193146
|
+
const { user } = readFileSyncIfExists();
|
|
193147
|
+
await this.loginPage.context().storageState({ path: STORAGE_STATE });
|
|
193148
|
+
const mergedCredentials = mergeAll([readFileSyncIfExists(), { user }]);
|
|
193149
|
+
writeDataToFile(JSON.stringify(mergedCredentials, null, 2));
|
|
193150
|
+
updateCredentials({ key: "baseUrl", value: this.baseURL });
|
|
193151
|
+
updateCredentials({ key: "domain", value: CUSTOM_DOMAIN_SUFFIX });
|
|
193152
|
+
};
|
|
193153
|
+
this.setupCustomDomain = async (product) => {
|
|
193154
|
+
if (shouldSkipCustomDomainSetup())
|
|
193155
|
+
return;
|
|
193156
|
+
await this.connectCustomDomain(product);
|
|
193157
|
+
const context = await this.browser.newContext(EMPTY_STORAGE_STATE);
|
|
193158
|
+
this.loginPage = await context.newPage();
|
|
193159
|
+
await this.loginToCustomDomain();
|
|
193160
|
+
await this.saveCustomDomainState();
|
|
193161
|
+
};
|
|
193162
|
+
this.connectCustomDomain = async (product, subdomain) => {
|
|
193163
|
+
if (shouldSkipCustomDomainSetup())
|
|
193164
|
+
return;
|
|
193165
|
+
const baseURL = baseURLGenerator(product, subdomain);
|
|
193166
|
+
const domain = this.getCustomDomain(subdomain);
|
|
193167
|
+
this.baseURL = `https://${domain}`;
|
|
193168
|
+
await this.page.goto(`${baseURL}${ROUTES.adminPanel.customDomain}`);
|
|
193169
|
+
await this.neetoPlaywrightUtilities.waitForPageLoad();
|
|
193170
|
+
await this.addCustomDomain(domain);
|
|
193171
|
+
await this.validateCustomDomain(domain);
|
|
193172
|
+
process.env.BASE_URL = this.baseURL;
|
|
193173
|
+
await this.waitForTrustedSSL();
|
|
193174
|
+
};
|
|
193175
|
+
this.disconnectCustomDomain = async (product, subdomain) => {
|
|
193176
|
+
if (shouldSkipCustomDomainSetup())
|
|
193177
|
+
return;
|
|
193178
|
+
const baseURL = baseURLGenerator(product, subdomain);
|
|
193179
|
+
await this.page.goto(`${baseURL}${ROUTES.adminPanel.customDomain}`);
|
|
193180
|
+
await this.neetoPlaywrightUtilities.waitForPageLoad();
|
|
193181
|
+
await this.page.getByTestId(CUSTOM_DOMAIN_SELECTORS.dropdownButton).click();
|
|
193182
|
+
await this.page
|
|
193183
|
+
.getByTestId(CUSTOM_DOMAIN_SELECTORS.deleteCustomDomainButton)
|
|
193184
|
+
.click();
|
|
193185
|
+
await expect(this.page.getByTestId(COMMON_SELECTORS.alertTitle)).toHaveText(this.t("neetoCustomDomains.delete"));
|
|
193186
|
+
await this.page
|
|
193187
|
+
.getByTestId(COMMON_SELECTORS.alertModalSubmitButton)
|
|
193188
|
+
.click();
|
|
193189
|
+
await this.neetoPlaywrightUtilities.verifyToast();
|
|
193190
|
+
await expect(this.page.getByTestId(COMMON_SELECTORS.noDataTitle)).toBeVisible();
|
|
193191
|
+
};
|
|
193192
|
+
this.browser = browser;
|
|
192932
193193
|
this.page = page;
|
|
192933
193194
|
this.neetoPlaywrightUtilities = neetoPlaywrightUtilities;
|
|
192934
193195
|
this.t = getI18nInstance().t;
|
|
@@ -195141,5 +195402,5 @@ const definePlaywrightConfig = (overrides) => {
|
|
|
195141
195402
|
});
|
|
195142
195403
|
};
|
|
195143
195404
|
|
|
195144
|
-
export { ADMIN_PANEL_SELECTORS, API_KEYS_SELECTORS, API_ROUTES, AUDIT_LOGS_TEXTS, AdminPanelPage, ApiKeysPage, AuditLogsPage, BASE_URL, CHANGELOG_WIDGET_SELECTORS, CHAT_WIDGET_SELECTORS, CHAT_WIDGET_TEXTS, COLOR, COMMON_SELECTORS, COMMON_TEXTS, COMMUNITY_TEXTS, CREDENTIALS, CUSTOM_DOMAIN_SELECTORS, CustomCommands, CustomDomainPage as CustomDomainsPage, DATE_PICKER_SELECTORS, DATE_TEXTS, DESCRIPTION_EDITOR_TEXTS, EMBED_SELECTORS, EMOJI_LABEL, EMPTY_STORAGE_STATE, ENGAGE_TEXTS, ENVIRONMENT, EXPANDED_FONT_SIZE, EditorPage, EmbedBase, FONT_SIZE_SELECTORS, GLOBAL_TRANSLATIONS_PATTERN, GOOGLE_CALENDAR_DATE_FORMAT, GOOGLE_LOGIN_SELECTORS, GOOGLE_LOGIN_TEXTS, GooglePage, HELP_CENTER_SELECTORS, HelpAndProfilePage, INTEGRATIONS_TEXTS, INTEGRATION_SELECTORS, IS_STAGING_ENV, ImageUploader, IntegrationBase, KEYBOARD_SHORTCUTS_SELECTORS, LIST_MODIFIER_SELECTORS, LIST_MODIFIER_TAGS, LOGIN_SELECTORS, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MailerUtils, Member, MemberApis$1 as MemberApis, NEETO_AUTH_BASE_URL, NEETO_EDITOR_SELECTORS, NEETO_FILTERS_SELECTORS, NEETO_IMAGE_UPLOADER_SELECTORS, NEETO_ROUTES, NEETO_TEXT_MODIFIER_SELECTORS, ORGANIZATION_TEXTS, OTP_EMAIL_PATTERN, OrganizationPage, PLURAL, PROFILE_LINKS, PROFILE_SECTION_SELECTORS, PROJECT_TRANSLATIONS_PATH, ROLES_SELECTORS, ROUTES, RolesPage, SELECT_COUNTRY, SIGNUP_SELECTORS, SINGULAR, SLACK_DATA_QA_SELECTORS, SLACK_DEFAULT_CHANNEL, SLACK_SELECTORS, SLACK_WEB_TEXTS, STATUS_TEXTS, STORAGE_STATE, SidebarSection, SlackPage, TABLE_SELECTORS, TAB_SELECTORS, TAGS_SELECTORS, TEXT_MODIFIER_ROLES, TEXT_MODIFIER_SELECTORS, TEXT_MODIFIER_TAGS, THANK_YOU_SELECTORS, THEMES_SELECTORS, THIRD_PARTY_ROUTES, TOASTR_MESSAGES, TagsPage, TeamMembers, ThankYouPage, USER_AGENTS, WEBHOOK_SELECTORS, WebhooksPage, ZAPIER_LIMIT_EXHAUSTED_MESSAGE, ZAPIER_SELECTORS, ZAPIER_TEST_EMAIL, ZAPIER_WEB_TEXTS, ZapierPage, basicHTMLContent, clearCredentials, commands, cpuThrottlingUsingCDP, currencyUtils, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, filterUtils, generateRandomBypassEmail, generateRandomFile, generateStagingData, getByDataQA, getClipboardContent, getGlobalUserProps, getGlobalUserState, getImagePathAndName, getListCount, headerUtils, hexToRGB, hexToRGBA, hyphenize, i18nFixture, initializeCredentials, initializeTotp, isGithubIssueOpen, joinHyphenCase, joinString, login, loginWithoutSSO, networkConditions, networkThrottlingUsingCDP, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, stealth as stealthTest, tableUtils, toCamelCase, updateCredentials, writeDataToFile };
|
|
195405
|
+
export { ADMIN_PANEL_SELECTORS, API_KEYS_SELECTORS, API_ROUTES, AUDIT_LOGS_TEXTS, AdminPanelPage, ApiKeysPage, AuditLogsPage, BASE_URL, CHANGELOG_WIDGET_SELECTORS, CHAT_WIDGET_SELECTORS, CHAT_WIDGET_TEXTS, COLOR, COMMON_SELECTORS, COMMON_TEXTS, COMMUNITY_TEXTS, CREDENTIALS, CUSTOM_DOMAIN_SELECTORS, CUSTOM_DOMAIN_SUFFIX, CustomCommands, CustomDomainPage as CustomDomainsPage, DATE_PICKER_SELECTORS, DATE_TEXTS, DESCRIPTION_EDITOR_TEXTS, EMBED_SELECTORS, EMOJI_LABEL, EMPTY_STORAGE_STATE, ENGAGE_TEXTS, ENVIRONMENT, EXPANDED_FONT_SIZE, EditorPage, EmbedBase, FONT_SIZE_SELECTORS, GLOBAL_TRANSLATIONS_PATTERN, GOOGLE_CALENDAR_DATE_FORMAT, GOOGLE_LOGIN_SELECTORS, GOOGLE_LOGIN_TEXTS, GooglePage, HELP_CENTER_SELECTORS, HelpAndProfilePage, INTEGRATIONS_TEXTS, INTEGRATION_SELECTORS, IS_STAGING_ENV, ImageUploader, IntegrationBase, KEYBOARD_SHORTCUTS_SELECTORS, LIST_MODIFIER_SELECTORS, LIST_MODIFIER_TAGS, LOGIN_SELECTORS, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MailerUtils, Member, MemberApis$1 as MemberApis, NEETO_AUTH_BASE_URL, NEETO_EDITOR_SELECTORS, NEETO_FILTERS_SELECTORS, NEETO_IMAGE_UPLOADER_SELECTORS, NEETO_ROUTES, NEETO_TEXT_MODIFIER_SELECTORS, ORGANIZATION_TEXTS, OTP_EMAIL_PATTERN, OrganizationPage, PLURAL, PROFILE_LINKS, PROFILE_SECTION_SELECTORS, PROJECT_TRANSLATIONS_PATH, ROLES_SELECTORS, ROUTES, RolesPage, SELECT_COUNTRY, SIGNUP_SELECTORS, SINGULAR, SLACK_DATA_QA_SELECTORS, SLACK_DEFAULT_CHANNEL, SLACK_SELECTORS, SLACK_WEB_TEXTS, STATUS_TEXTS, STORAGE_STATE, SidebarSection, SlackPage, TABLE_SELECTORS, TAB_SELECTORS, TAGS_SELECTORS, TEXT_MODIFIER_ROLES, TEXT_MODIFIER_SELECTORS, TEXT_MODIFIER_TAGS, THANK_YOU_SELECTORS, THEMES_SELECTORS, THIRD_PARTY_ROUTES, TOASTR_MESSAGES, TagsPage, TeamMembers, ThankYouPage, USER_AGENTS, WEBHOOK_SELECTORS, WebhooksPage, ZAPIER_LIMIT_EXHAUSTED_MESSAGE, ZAPIER_SELECTORS, ZAPIER_TEST_EMAIL, ZAPIER_WEB_TEXTS, ZapierPage, baseURLGenerator, basicHTMLContent, clearCredentials, commands, cpuThrottlingUsingCDP, currencyUtils, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, filterUtils, generateRandomBypassEmail, generateRandomFile, generateStagingData, getByDataQA, getClipboardContent, getGlobalUserProps, getGlobalUserState, getImagePathAndName, getListCount, globalShortcuts, headerUtils, hexToRGB, hexToRGBA, hyphenize, i18nFixture, initializeCredentials, initializeTotp, isGithubIssueOpen, joinHyphenCase, joinString, login, loginWithoutSSO, networkConditions, networkThrottlingUsingCDP, readFileSyncIfExists, removeCredentialFile, serializeFileForBrowser, shouldSkipCustomDomainSetup, shouldSkipSetupAndTeardown, simulateClickWithDelay, simulateTypingWithDelay, skipTest, squish, stealth as stealthTest, tableUtils, toCamelCase, updateCredentials, writeDataToFile };
|
|
195145
195406
|
//# sourceMappingURL=index.js.map
|