@bigbinary/neeto-playwright-commons 1.27.0 → 1.27.2
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 +141 -83
- package/index.cjs.js.map +1 -1
- package/index.d.ts +80 -49
- package/index.js +141 -84
- package/index.js.map +1 -1
- package/package.json +1 -1
package/index.cjs.js
CHANGED
|
@@ -542,6 +542,14 @@ class SlackApi {
|
|
|
542
542
|
this.fetchMessages = (channelId, unixTimestamp) => this.apiRequest("history", { channel: channelId, oldest: unixTimestamp });
|
|
543
543
|
this.createChannel = (channelName) => this.apiRequest("create", { name: channelName });
|
|
544
544
|
this.addUser = (channelId, userId) => this.apiRequest("invite", { channel: channelId, users: userId });
|
|
545
|
+
this.mockChannelDeleted = (channelId) => this.neetoPlaywrightUtilities.apiRequest({
|
|
546
|
+
url: "/neeto_slack/api/v1/testing/webhooks",
|
|
547
|
+
method: "post",
|
|
548
|
+
data: neetoCist.keysToSnakeCase({
|
|
549
|
+
eventType: "channel_deleted",
|
|
550
|
+
notificationChannelId: channelId,
|
|
551
|
+
}),
|
|
552
|
+
});
|
|
545
553
|
if (!process.env.SLACK_BOT_TOKEN) {
|
|
546
554
|
throw new Error("SLACK_BOT_TOKEN is not set");
|
|
547
555
|
}
|
|
@@ -5046,7 +5054,6 @@ const generateStagingData = (product = "invoice") => {
|
|
|
5046
5054
|
};
|
|
5047
5055
|
};
|
|
5048
5056
|
|
|
5049
|
-
/* eslint-disable playwright/no-skipped-test */
|
|
5050
5057
|
const execCommand = (command) => child_process.execSync(command)
|
|
5051
5058
|
.toString("utf-8")
|
|
5052
5059
|
.replace(/[\n\r\s]+$/, "");
|
|
@@ -5211,7 +5218,7 @@ const globalShortcuts = (t) => [
|
|
|
5211
5218
|
},
|
|
5212
5219
|
{
|
|
5213
5220
|
description: t("neetoMolecules.keyboardShortcuts.global.openProductSwitcher"),
|
|
5214
|
-
sequence: "ctrl+
|
|
5221
|
+
sequence: "ctrl+u",
|
|
5215
5222
|
},
|
|
5216
5223
|
];
|
|
5217
5224
|
const generatePhoneNumber = () => `${"+91"} 9${faker.faker.string.numeric(4)} ${faker.faker.string.numeric(5)}`;
|
|
@@ -5377,8 +5384,9 @@ const NEETO_FILTERS_SELECTORS = {
|
|
|
5377
5384
|
};
|
|
5378
5385
|
|
|
5379
5386
|
const HELP_CENTER_SELECTORS = {
|
|
5387
|
+
helpMenuBtn: "help-menu-button",
|
|
5380
5388
|
helpButton: "help-button",
|
|
5381
|
-
documentationButton: "help-link-help-
|
|
5389
|
+
documentationButton: "help-link-help-articles-button",
|
|
5382
5390
|
keyboardShortcutButton: "help-link-keyboard-shortcut-button",
|
|
5383
5391
|
chatButton: "help-link-live-chat-button",
|
|
5384
5392
|
whatsNewButton: "help-link-engage-button",
|
|
@@ -114416,29 +114424,21 @@ const THEMES_TEXTS = {
|
|
|
114416
114424
|
|
|
114417
114425
|
class HelpAndProfilePage {
|
|
114418
114426
|
constructor({ page, neetoPlaywrightUtilities, chatApiBaseURL, kbDocsBaseURL, changelogBaseURL, }) {
|
|
114419
|
-
this.hoverOnBody = () => this.page.locator("body").hover({ timeout: 10000 });
|
|
114420
114427
|
this.openHelpCenter = async () => {
|
|
114428
|
+
const floatingActionMenuBtn = this.page.getByTestId(COMMON_SELECTORS.floatingActionMenuButton);
|
|
114421
114429
|
await test.expect(async () => {
|
|
114422
|
-
await
|
|
114423
|
-
|
|
114424
|
-
await
|
|
114425
|
-
await floatingActionMenuButton.hover();
|
|
114426
|
-
await test.expect(this.page.getByTestId(HELP_CENTER_SELECTORS.chatButton)).toBeVisible();
|
|
114430
|
+
await floatingActionMenuBtn.scrollIntoViewIfNeeded();
|
|
114431
|
+
await floatingActionMenuBtn.hover();
|
|
114432
|
+
await test.expect(this.page.getByTestId(HELP_CENTER_SELECTORS.whatsNewButton)).toBeVisible();
|
|
114427
114433
|
}).toPass({ timeout: 60000 });
|
|
114428
114434
|
};
|
|
114429
|
-
this.openLiveChatAndVerify = async (
|
|
114430
|
-
await
|
|
114431
|
-
|
|
114432
|
-
|
|
114433
|
-
|
|
114434
|
-
|
|
114435
|
-
|
|
114436
|
-
await test.expect(this.neetoChatSpinner).toBeHidden({ timeout: 20 * 1000 });
|
|
114437
|
-
await test.expect(this.neetoChatWidget).toBeVisible({
|
|
114438
|
-
timeout: widgetVisibilityTimeout,
|
|
114439
|
-
});
|
|
114440
|
-
}).toPass({ timeout: 35000 + widgetVisibilityTimeout * 2 });
|
|
114441
|
-
};
|
|
114435
|
+
this.openLiveChatAndVerify = () => test.expect(async () => {
|
|
114436
|
+
await this.openHelpCenter();
|
|
114437
|
+
await this.page.getByTestId(HELP_CENTER_SELECTORS.helpMenuBtn).click();
|
|
114438
|
+
await this.page.getByTestId(HELP_CENTER_SELECTORS.chatButton).click();
|
|
114439
|
+
await test.expect(this.neetoChatSpinner).toBeHidden({ timeout: 20000 });
|
|
114440
|
+
await test.expect(this.neetoChatWidget).toBeVisible({ timeout: 10000 });
|
|
114441
|
+
}).toPass({ timeout: 60000 });
|
|
114442
114442
|
/**
|
|
114443
114443
|
* @deprecated This method is deprecated. Use openAndVerifyChatWidget instead.
|
|
114444
114444
|
*/
|
|
@@ -114458,7 +114458,7 @@ class HelpAndProfilePage {
|
|
|
114458
114458
|
this.openAndVerifyChatWidget = async () => {
|
|
114459
114459
|
await this.page.reload();
|
|
114460
114460
|
await this.neetoPlaywrightUtilities.waitForPageLoad();
|
|
114461
|
-
await test.test.step("1: Open live chat
|
|
114461
|
+
await test.test.step("1: Open live chat", this.openLiveChatAndVerify);
|
|
114462
114462
|
await test.test.step("2: Close and reopen live chat frame", async () => {
|
|
114463
114463
|
await this.page.getByTestId(CHAT_WIDGET_SELECTORS.closeChat).click();
|
|
114464
114464
|
await test.expect(this.neetoChatWidget).toBeHidden({ timeout: 35000 });
|
|
@@ -114487,6 +114487,7 @@ class HelpAndProfilePage {
|
|
|
114487
114487
|
this.openAndVerifyHelpArticles = async () => {
|
|
114488
114488
|
await test.test.step("1: Open Help Center links", this.openHelpCenter);
|
|
114489
114489
|
await test.test.step("2: Open and verify help articles link", async () => {
|
|
114490
|
+
await this.page.getByTestId(HELP_CENTER_SELECTORS.helpMenuBtn).click();
|
|
114490
114491
|
const helpArticlesPromise = this.page.waitForEvent("popup");
|
|
114491
114492
|
await this.page
|
|
114492
114493
|
.getByTestId(HELP_CENTER_SELECTORS.documentationButton)
|
|
@@ -114527,7 +114528,7 @@ class HelpAndProfilePage {
|
|
|
114527
114528
|
});
|
|
114528
114529
|
};
|
|
114529
114530
|
this.openAndVerifyChangelog = async () => {
|
|
114530
|
-
await test.test.step("1: Open
|
|
114531
|
+
await test.test.step("1: Open changelog", this.openChangelogPane);
|
|
114531
114532
|
await test.test.step("2: Close and reopen changelog pane", async () => {
|
|
114532
114533
|
await this.page
|
|
114533
114534
|
.getByTestId(CHANGELOG_WIDGET_SELECTORS.closeButton)
|
|
@@ -114544,8 +114545,10 @@ class HelpAndProfilePage {
|
|
|
114544
114545
|
await this.neetoPlaywrightUtilities.waitForPageLoad({
|
|
114545
114546
|
customPageContext: changelogPage,
|
|
114546
114547
|
});
|
|
114547
|
-
await
|
|
114548
|
-
|
|
114548
|
+
await Promise.all([
|
|
114549
|
+
test.expect(changelogPage).toHaveURL(this.changelogBaseURL),
|
|
114550
|
+
test.expect(changelogPage.getByRole("button", { name: ENGAGE_TEXTS.subscribe })).toBeVisible({ timeout: 10000 }),
|
|
114551
|
+
]);
|
|
114549
114552
|
await changelogPage.close();
|
|
114550
114553
|
});
|
|
114551
114554
|
};
|
|
@@ -114664,21 +114667,21 @@ class HelpAndProfilePage {
|
|
|
114664
114667
|
await test.expect(this.page.getByTestId(COMMON_SELECTORS.appSwitcherWrapper)).toBeVisible();
|
|
114665
114668
|
}).toPass({ timeout: 45000 }));
|
|
114666
114669
|
await test.test.step("2: Verify search functionality", async () => {
|
|
114667
|
-
const
|
|
114668
|
-
const
|
|
114670
|
+
const playdash = this.page.getByTestId(COMMON_SELECTORS.appLink(productName));
|
|
114671
|
+
const replay = this.page.getByTestId(COMMON_SELECTORS.appLink("Replay"));
|
|
114669
114672
|
const searchInput = this.page.getByTestId(COMMON_SELECTORS.productSwitcherSearchInput);
|
|
114670
114673
|
await searchInput.fill(faker.faker.word.words(3));
|
|
114671
114674
|
//TODO: Use data-testid label when this https://github.com/bigbinary/neeto-molecules/issues/2114 is resolved
|
|
114672
114675
|
await test.expect(this.page.getByText(this.t("neetoMolecules.productSwitcher.noApps"))).toBeVisible();
|
|
114673
114676
|
await searchInput.fill(searchQueryPartial);
|
|
114674
114677
|
await Promise.all([
|
|
114675
|
-
test.expect(
|
|
114676
|
-
test.expect(
|
|
114678
|
+
test.expect(playdash).toBeVisible(),
|
|
114679
|
+
test.expect(replay).toBeVisible(),
|
|
114677
114680
|
]);
|
|
114678
114681
|
await searchInput.fill(searchQueryFull);
|
|
114679
114682
|
await Promise.all([
|
|
114680
|
-
test.expect(
|
|
114681
|
-
test.expect(
|
|
114683
|
+
test.expect(playdash).toBeVisible(),
|
|
114684
|
+
test.expect(replay).toBeHidden(),
|
|
114682
114685
|
]);
|
|
114683
114686
|
});
|
|
114684
114687
|
};
|
|
@@ -114705,7 +114708,7 @@ class HelpAndProfilePage {
|
|
|
114705
114708
|
this.verifyLogout = async () => {
|
|
114706
114709
|
if (shouldSkipSetupAndTeardown())
|
|
114707
114710
|
return;
|
|
114708
|
-
await test.test.step("1: Open Help center
|
|
114711
|
+
await test.test.step("1: Open Help center", this.openHelpCenter);
|
|
114709
114712
|
await test.test.step("2: Click logout and verify", async () => {
|
|
114710
114713
|
await this.page
|
|
114711
114714
|
.getByTestId(PROFILE_SECTION_SELECTORS.logoutButton)
|
|
@@ -114787,6 +114790,7 @@ class HelpAndProfilePage {
|
|
|
114787
114790
|
this.openAndVerifyStatus = async (appName) => {
|
|
114788
114791
|
await test.test.step("1: Open Help Center links", this.openHelpCenter);
|
|
114789
114792
|
await test.test.step("2: Open and verify status page", async () => {
|
|
114793
|
+
await this.page.getByTestId(HELP_CENTER_SELECTORS.helpMenuBtn).click();
|
|
114790
114794
|
const statusPagePromise = this.page.waitForEvent("popup");
|
|
114791
114795
|
await this.page.getByTestId(HELP_CENTER_SELECTORS.statusButton).click();
|
|
114792
114796
|
const statusPage = await statusPagePromise;
|
|
@@ -114800,6 +114804,7 @@ class HelpAndProfilePage {
|
|
|
114800
114804
|
this.openAndVerifyCommunity = async () => {
|
|
114801
114805
|
await test.test.step("1: Open Help Center links", this.openHelpCenter);
|
|
114802
114806
|
await test.test.step("2: Open and verify community", async () => {
|
|
114807
|
+
await this.page.getByTestId(HELP_CENTER_SELECTORS.helpMenuBtn).click();
|
|
114803
114808
|
const communityPagePromise = this.page.waitForEvent("popup");
|
|
114804
114809
|
await this.page
|
|
114805
114810
|
.getByTestId(HELP_CENTER_SELECTORS.communityButton)
|
|
@@ -116911,11 +116916,17 @@ class GooglePage extends IntegrationBase {
|
|
|
116911
116916
|
totpToken = this.totp.generate({ timestamp: Date.now() });
|
|
116912
116917
|
}
|
|
116913
116918
|
previousToken = totpToken;
|
|
116919
|
+
if (await codeInput.isHidden())
|
|
116920
|
+
return;
|
|
116914
116921
|
await codeInput.fill(totpToken);
|
|
116915
116922
|
test.expect(this.totp.validate({ token: totpToken })).not.toBeNull();
|
|
116916
116923
|
await this.page.locator(GOOGLE_LOGIN_SELECTORS.totpNext).click();
|
|
116917
|
-
await
|
|
116918
|
-
|
|
116924
|
+
await Promise.all([
|
|
116925
|
+
test.expect(codeInput).toBeHidden({ timeout: 20000 }),
|
|
116926
|
+
test.expect(this.page.getByText(GOOGLE_LOGIN_TEXTS.wrongCode)).toBeHidden({
|
|
116927
|
+
timeout: 20000,
|
|
116928
|
+
}),
|
|
116929
|
+
]);
|
|
116919
116930
|
}).toPass({ timeout: 2 * 60 * 1000 });
|
|
116920
116931
|
};
|
|
116921
116932
|
this.logoutFromGoogle = async () => {
|
|
@@ -117112,32 +117123,58 @@ class SlackPage extends IntegrationBase {
|
|
|
117112
117123
|
await slackWebappPage.addLocatorHandler(slackWebappPageDataQa(SLACK_DATA_QA_SELECTORS.messagePaneBannerCloseIcon), locator => locator.click(), { times: 1 });
|
|
117113
117124
|
await slackWebappPage.addLocatorHandler(slackWebappPageDataQa(SLACK_DATA_QA_SELECTORS.permissionBannerCloseIcon), locator => locator.click(), { noWaitAfter: true, times: 2 });
|
|
117114
117125
|
};
|
|
117115
|
-
this.
|
|
117126
|
+
this.initializeSlackPermissionPage = async () => {
|
|
117116
117127
|
await this.connect();
|
|
117117
|
-
const loginButton = this.page.getByRole("button", {
|
|
117118
|
-
name: this.t("neetoSlack.slack.connect.loginButton"),
|
|
117119
|
-
});
|
|
117120
|
-
const installButton = this.page.locator(SLACK_SELECTORS.installButton);
|
|
117121
|
-
const allowButton = this.page.getByRole("button", {
|
|
117122
|
-
name: SLACK_WEB_TEXTS.allow,
|
|
117123
|
-
});
|
|
117124
|
-
const button = installButton.or(allowButton);
|
|
117125
|
-
if (await loginButton.isVisible()) {
|
|
117126
|
-
await loginButton.click({ delay: 5000 });
|
|
117127
|
-
await this.page.waitForURL(RegExp("(.*)slack.com/.*"));
|
|
117128
|
-
}
|
|
117129
117128
|
await this.page.waitForLoadState("domcontentloaded", { timeout: 25000 });
|
|
117130
|
-
await test.expect(
|
|
117131
|
-
await test.expect(
|
|
117132
|
-
|
|
117129
|
+
await test.expect(this.allowButton).toBeVisible({ timeout: 25000 });
|
|
117130
|
+
await test.expect(this.allowButton).toBeEnabled({ timeout: 25000 });
|
|
117131
|
+
return await this.page
|
|
117133
117132
|
.locator(SLACK_SELECTORS.teamPicketButtonContent)
|
|
117134
|
-
.textContent()
|
|
117135
|
-
|
|
117136
|
-
|
|
117133
|
+
.textContent();
|
|
117134
|
+
};
|
|
117135
|
+
this.navigateToCallbackUrl = async () => {
|
|
117136
|
+
await this.page.goto(this.callbackUrl.replace(/^https:/, "http:"));
|
|
117137
|
+
await this.neetoPlaywrightUtilities.waitForPageLoad();
|
|
117138
|
+
};
|
|
117139
|
+
this.captureCallbackUrl = () => this.page.on("request", (request) => {
|
|
117140
|
+
const url = request.url();
|
|
117141
|
+
if (url.includes("/neeto_slack/api/v2/slack/callbacks") &&
|
|
117142
|
+
url.startsWith("https:")) {
|
|
117143
|
+
this.callbackUrl = url;
|
|
117144
|
+
}
|
|
117145
|
+
});
|
|
117146
|
+
this.connectAndVerifyInDev = async (redirectUrl, channelToConfigure, customSteps) => {
|
|
117147
|
+
this.currentWorkspace = (await this.initializeSlackPermissionPage()) || "";
|
|
117148
|
+
this.captureCallbackUrl();
|
|
117149
|
+
await this.allowButton.click({ timeout: 25000 });
|
|
117150
|
+
await test.expect(this.allowButton).toBeHidden({ timeout: 25000 });
|
|
117151
|
+
await this.page.waitForLoadState("domcontentloaded", { timeout: 20000 });
|
|
117152
|
+
await this.navigateToCallbackUrl();
|
|
117153
|
+
await this.page.waitForURL(redirectUrl, {
|
|
117154
|
+
timeout: 15000,
|
|
117155
|
+
});
|
|
117156
|
+
await this.completeSlackChannelSetup(channelToConfigure, customSteps);
|
|
117157
|
+
};
|
|
117158
|
+
this.connectAndVerifyInStaging = async (redirectUrl, channelToConfigure, customSteps) => {
|
|
117159
|
+
this.currentWorkspace = (await this.initializeSlackPermissionPage()) || "";
|
|
117160
|
+
await this.allowButton.click({ timeout: 25000 });
|
|
117161
|
+
await test.expect(this.allowButton).toBeHidden({ timeout: 25000 });
|
|
117162
|
+
await this.page.waitForLoadState("domcontentloaded", { timeout: 20000 });
|
|
117163
|
+
await this.page.waitForURL(redirectUrl, {
|
|
117164
|
+
timeout: 15000,
|
|
117165
|
+
});
|
|
117166
|
+
await this.completeSlackChannelSetup(channelToConfigure, customSteps);
|
|
117167
|
+
};
|
|
117168
|
+
this.connectAndVerifyIntegration = async (redirectUrl, customSteps, channelToConfigure = SLACK_DEFAULT_CHANNEL) => {
|
|
117169
|
+
IS_DEV_ENV
|
|
117170
|
+
? await this.connectAndVerifyInDev(redirectUrl, channelToConfigure, customSteps)
|
|
117171
|
+
: await this.connectAndVerifyInStaging(redirectUrl, channelToConfigure, customSteps);
|
|
117172
|
+
};
|
|
117173
|
+
this.completeSlackChannelSetup = async (channelToConfigure, customSteps) => {
|
|
117137
117174
|
await this.neetoPlaywrightUtilities.waitForPageLoad();
|
|
117138
117175
|
await test.expect(this.page.getByRole("heading", {
|
|
117139
117176
|
name: this.t("neetoSlack.slack.configure.title", {
|
|
117140
|
-
teamName: currentWorkspace,
|
|
117177
|
+
teamName: this.currentWorkspace,
|
|
117141
117178
|
}),
|
|
117142
117179
|
})).toBeVisible({ timeout: 10000 });
|
|
117143
117180
|
await this.neetoPlaywrightUtilities.selectOptionFromDropdown({
|
|
@@ -117146,14 +117183,17 @@ class SlackPage extends IntegrationBase {
|
|
|
117146
117183
|
await this.page
|
|
117147
117184
|
.getByRole("button", { name: this.t("neetoSlack.common.continue") })
|
|
117148
117185
|
.click();
|
|
117149
|
-
await
|
|
117186
|
+
await Promise.all([
|
|
117187
|
+
this.neetoPlaywrightUtilities.waitForPageLoad(),
|
|
117188
|
+
this.neetoPlaywrightUtilities.verifyToast(),
|
|
117189
|
+
]);
|
|
117150
117190
|
if (customSteps) {
|
|
117151
117191
|
await customSteps();
|
|
117152
117192
|
}
|
|
117153
117193
|
else {
|
|
117154
117194
|
await test.expect(this.page.getByRole("heading", {
|
|
117155
117195
|
name: this.t("neetoSlack.slack.finish.title", {
|
|
117156
|
-
teamName: currentWorkspace,
|
|
117196
|
+
teamName: this.currentWorkspace,
|
|
117157
117197
|
}),
|
|
117158
117198
|
})).toBeVisible();
|
|
117159
117199
|
await this.page
|
|
@@ -117280,6 +117320,9 @@ class SlackPage extends IntegrationBase {
|
|
|
117280
117320
|
.click();
|
|
117281
117321
|
await test.expect(channelItem).toBeHidden();
|
|
117282
117322
|
};
|
|
117323
|
+
this.allowButton = this.page.getByRole("button", {
|
|
117324
|
+
name: SLACK_WEB_TEXTS.allow,
|
|
117325
|
+
});
|
|
117283
117326
|
}
|
|
117284
117327
|
}
|
|
117285
117328
|
|
|
@@ -119248,36 +119291,45 @@ class OrganizationPage {
|
|
|
119248
119291
|
}
|
|
119249
119292
|
}
|
|
119250
119293
|
|
|
119294
|
+
dayjs.extend(customParseFormat);
|
|
119251
119295
|
class ApiKeysPage {
|
|
119252
119296
|
constructor(page, neetoPlaywrightUtilities) {
|
|
119297
|
+
this.page = page;
|
|
119298
|
+
this.neetoPlaywrightUtilities = neetoPlaywrightUtilities;
|
|
119299
|
+
this.enableExpiryDate = async (expiryDate) => {
|
|
119300
|
+
const userProps = await getGlobalUserProps(this.page);
|
|
119301
|
+
const normalizedDate = dayjs(expiryDate, DATE_FORMATS.date);
|
|
119302
|
+
const formattedExpiryDate = normalizedDate.format(userProps === null || userProps === void 0 ? void 0 : userProps.dateFormat);
|
|
119303
|
+
const expiryDateInput = this.page
|
|
119304
|
+
.getByTestId(COMMON_SELECTORS.paneBody)
|
|
119305
|
+
.getByTestId(ADMIN_PANEL_SELECTORS.expiryDateInput);
|
|
119306
|
+
const nextYearBtn = this.page.getByLabel(DATE_TEXTS.nextYear, {
|
|
119307
|
+
exact: true,
|
|
119308
|
+
});
|
|
119309
|
+
await this.page
|
|
119310
|
+
.getByTestId(COMMON_SELECTORS.checkboxInput("never-expires"))
|
|
119311
|
+
.uncheck();
|
|
119312
|
+
await expiryDateInput.click();
|
|
119313
|
+
await test.expect(nextYearBtn).toBeVisible();
|
|
119314
|
+
await expiryDateInput.pressSequentially(formattedExpiryDate, {
|
|
119315
|
+
delay: 250,
|
|
119316
|
+
});
|
|
119317
|
+
await Promise.all([
|
|
119318
|
+
test.expect(expiryDateInput).toHaveValue(formattedExpiryDate),
|
|
119319
|
+
test.expect(this.page.getByRole("button", { name: CALENDAR_LABELS.month })).toHaveText(normalizedDate.format(DATE_FORMATS.month)),
|
|
119320
|
+
test.expect(this.page.getByRole("button", { name: CALENDAR_LABELS.year })).toHaveText(normalizedDate.format(DATE_FORMATS.year)),
|
|
119321
|
+
test.expect(this.page.getByTitle(normalizedDate.format(DATE_FORMATS.calendarDate))).toHaveClass(RegExp(DATE_PICKER_SELECTORS.selectedDateInCalendarClass)),
|
|
119322
|
+
]);
|
|
119323
|
+
await this.page.keyboard.press("Enter");
|
|
119324
|
+
await test.expect(nextYearBtn).toBeHidden();
|
|
119325
|
+
};
|
|
119253
119326
|
this.fillApiKeyDetails = async ({ label, expiryDate }) => {
|
|
119254
119327
|
await this.page
|
|
119255
119328
|
.getByTestId(COMMON_SELECTORS.paneBody)
|
|
119256
119329
|
.getByTestId(COMMON_SELECTORS.customInputField("label"))
|
|
119257
119330
|
.fill(label);
|
|
119258
|
-
|
|
119259
|
-
|
|
119260
|
-
.getByTestId(COMMON_SELECTORS.checkboxInput("never-expires"))
|
|
119261
|
-
.uncheck();
|
|
119262
|
-
const expiryDateInput = this.page
|
|
119263
|
-
.getByTestId(COMMON_SELECTORS.paneBody)
|
|
119264
|
-
.getByTestId(ADMIN_PANEL_SELECTORS.expiryDateInput);
|
|
119265
|
-
await expiryDateInput.click();
|
|
119266
|
-
await test.expect(this.page.getByLabel(DATE_TEXTS.nextYear, { exact: true })).toBeVisible();
|
|
119267
|
-
await expiryDateInput.pressSequentially(expiryDate, { delay: 250 });
|
|
119268
|
-
dayjs.extend(customParseFormat);
|
|
119269
|
-
const parsedExpiryDate = dayjs(expiryDate, DATE_FORMATS.date);
|
|
119270
|
-
await Promise.all([
|
|
119271
|
-
test.expect(expiryDateInput).toHaveValue(expiryDate),
|
|
119272
|
-
test.expect(this.page.getByRole("button", { name: CALENDAR_LABELS.month })).toHaveText(parsedExpiryDate.format(DATE_FORMATS.month)),
|
|
119273
|
-
test.expect(this.page.getByRole("button", { name: CALENDAR_LABELS.year })).toHaveText(parsedExpiryDate.format(DATE_FORMATS.year)),
|
|
119274
|
-
test.expect(this.page.getByTitle(parsedExpiryDate.format(DATE_FORMATS.calendarDate))).toHaveClass(RegExp(DATE_PICKER_SELECTORS.selectedDateInCalendarClass)),
|
|
119275
|
-
]);
|
|
119276
|
-
await this.page.keyboard.press("Enter");
|
|
119277
|
-
await test.expect(this.page.getByLabel(DATE_TEXTS.nextYear, { exact: true })).toBeHidden();
|
|
119278
|
-
}
|
|
119279
|
-
await this.page.getByTestId(COMMON_SELECTORS.saveChangesButton).click();
|
|
119280
|
-
await this.neetoPlaywrightUtilities.verifyToast();
|
|
119331
|
+
neetoCist.isPresent(expiryDate) && (await this.enableExpiryDate(expiryDate));
|
|
119332
|
+
await this.neetoPlaywrightUtilities.saveChanges({ isPane: true });
|
|
119281
119333
|
};
|
|
119282
119334
|
this.verifyApiKey = ({ targetRow, label, date }) => Promise.all([
|
|
119283
119335
|
test.expect(targetRow.getByRole("cell", { name: label })).toBeVisible(),
|
|
@@ -119306,8 +119358,6 @@ class ApiKeysPage {
|
|
|
119306
119358
|
await this.neetoPlaywrightUtilities.verifyToast();
|
|
119307
119359
|
await test.expect(targetRow).toBeHidden();
|
|
119308
119360
|
};
|
|
119309
|
-
this.page = page;
|
|
119310
|
-
this.neetoPlaywrightUtilities = neetoPlaywrightUtilities;
|
|
119311
119361
|
this.t = playwrightI18nextFixture.getI18nInstance().t;
|
|
119312
119362
|
}
|
|
119313
119363
|
}
|
|
@@ -119405,7 +119455,9 @@ class CustomDomainPage {
|
|
|
119405
119455
|
]);
|
|
119406
119456
|
await this.neetoPlaywrightUtilities.waitForPageLoad();
|
|
119407
119457
|
await validateButton.click();
|
|
119408
|
-
await test.expect
|
|
119458
|
+
await test.expect
|
|
119459
|
+
.soft(this.page.getByTestId(COMMON_SELECTORS.calloutElement))
|
|
119460
|
+
.toBeVisible({ timeout: 15000 });
|
|
119409
119461
|
let isCertificateLimitExceeded = false;
|
|
119410
119462
|
await test.expect(async () => {
|
|
119411
119463
|
isCertificateLimitExceeded = await this.isCertificateLimitExceeded();
|
|
@@ -119924,6 +119976,11 @@ const TEAM_MEMBER_TEXTS = {
|
|
|
119924
119976
|
emailSubject: "Your team members export is here",
|
|
119925
119977
|
};
|
|
119926
119978
|
|
|
119979
|
+
const KEYBOARD_SHORTCUT_TEST_CASES = [
|
|
119980
|
+
{ os: "windows", agent: USER_AGENTS.windows },
|
|
119981
|
+
{ os: "mac", agent: USER_AGENTS.mac },
|
|
119982
|
+
];
|
|
119983
|
+
|
|
119927
119984
|
const PHONE_NUMBER_FORMATS = [
|
|
119928
119985
|
{ name: "Afghanistan", code: "+93", format: "70#######", flag: "🇦🇫" },
|
|
119929
119986
|
{ name: "Aland", code: "+358", format: "5####", flag: "🇦🇽" },
|
|
@@ -125413,6 +125470,7 @@ exports.ImageUploader = ImageUploader;
|
|
|
125413
125470
|
exports.IntegrationBase = IntegrationBase;
|
|
125414
125471
|
exports.IpRestrictionsApi = IpRestrictionsApi;
|
|
125415
125472
|
exports.KEYBOARD_SHORTCUTS_SELECTORS = KEYBOARD_SHORTCUTS_SELECTORS;
|
|
125473
|
+
exports.KEYBOARD_SHORTCUT_TEST_CASES = KEYBOARD_SHORTCUT_TEST_CASES;
|
|
125416
125474
|
exports.LIST_MODIFIER_SELECTORS = LIST_MODIFIER_SELECTORS;
|
|
125417
125475
|
exports.LIST_MODIFIER_TAGS = LIST_MODIFIER_TAGS;
|
|
125418
125476
|
exports.LOGIN_SELECTORS = LOGIN_SELECTORS;
|