@bigbinary/neeto-playwright-commons 1.8.39 → 1.8.40

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.d.ts CHANGED
@@ -5,6 +5,7 @@ import MailosaurClient from 'mailosaur';
5
5
  import { I18nPlaywrightFixture } from 'playwright-i18next-fixture';
6
6
  import { TFunction } from 'i18next';
7
7
  import { Protocol } from 'playwright-core/types/protocol';
8
+ import * as ts_toolbelt_out_Function_Curry from 'ts-toolbelt/out/Function/Curry';
8
9
  import * as playwright_core from 'playwright-core';
9
10
  import { Secret, TOTP } from 'otpauth';
10
11
 
@@ -230,7 +231,7 @@ declare class HelpAndProfilePage {
230
231
 
231
232
  type Integration = "dailyco" | "github" | "google-calendar" | "google-analytics" | "google-sheets" | "microsoft-teams" | "neeto-chat" | "neeto-crm" | "slack" | "twilio" | "whereby" | "zapier" | "zoom";
232
233
  type IntegrationStatus = "connected" | "disconnected";
233
- type PartialInterceptMultipleResponsesParams = Partial<InterceptMultipleResponsesParams>;
234
+ type PartialInterceptMultipleResponsesParams$1 = Partial<InterceptMultipleResponsesParams>;
234
235
  interface IntegrationBaseParams {
235
236
  page: Page;
236
237
  neetoPlaywrightUtilities: CustomCommands;
@@ -239,7 +240,7 @@ interface IntegrationBaseParams {
239
240
  connectHeader?: string;
240
241
  pageloaderTimeout?: number;
241
242
  integrationRouteIndex?: string;
242
- integrationRouteResponsesParams?: PartialInterceptMultipleResponsesParams;
243
+ integrationRouteResponsesParams?: PartialInterceptMultipleResponsesParams$1;
243
244
  }
244
245
  declare class IntegrationBase {
245
246
  readonly page: Page;
@@ -251,17 +252,24 @@ declare class IntegrationBase {
251
252
  readonly connectedHeader: string;
252
253
  pageloaderTimeout: number;
253
254
  integrationRouteIndex: string;
254
- integrationRouteResponsesParams: PartialInterceptMultipleResponsesParams;
255
+ integrationRouteResponsesParams: PartialInterceptMultipleResponsesParams$1;
255
256
  constructor({ page, neetoPlaywrightUtilities, integration, connectHeader, connectedHeader, pageloaderTimeout, integrationRouteIndex, integrationRouteResponsesParams, }: IntegrationBaseParams);
256
- disconnect: (interceptMultipleResponsesParams?: PartialInterceptMultipleResponsesParams) => Promise<void>;
257
+ disconnect: (interceptMultipleResponsesParams?: PartialInterceptMultipleResponsesParams$1) => Promise<void>;
257
258
  connect: (skipGoTo?: boolean) => Promise<void>;
258
259
  verifyIntegrationStatus: (status?: IntegrationStatus) => Promise<void>;
259
260
  clickOnIntegrationCard: () => Promise<void>;
260
- private gotoIntegrationIndex;
261
+ gotoIntegrationIndex: () => Promise<void>;
261
262
  }
262
263
 
263
264
  type AsyncNoArgsFunction = () => Promise<void>;
264
265
  type RedirectUrl = string | RegExp | ((url: URL) => boolean);
266
+ type PartialInterceptMultipleResponsesParams = Partial<InterceptMultipleResponsesParams>;
267
+ type UpdateConfigureSlackChannelParams = {
268
+ newSlackChannel: string;
269
+ interceptMultipleResponsesParams?: PartialInterceptMultipleResponsesParams;
270
+ refreshInterceptMultipleResponsesParams?: PartialInterceptMultipleResponsesParams;
271
+ refreshChannelList?: boolean;
272
+ };
265
273
  type SlackPageParams = {
266
274
  page: Page;
267
275
  neetoPlaywrightUtilities: CustomCommands;
@@ -269,16 +277,20 @@ type SlackPageParams = {
269
277
  };
270
278
  declare class SlackPage extends IntegrationBase {
271
279
  slackWebappPage: Page;
280
+ slackWebappPageDataQa: (dataQa: string | [string, string]) => Locator;
272
281
  constructor({ page, neetoPlaywrightUtilities, integrationRouteIndex, }: SlackPageParams);
273
- connectAndVerifyIntegration: (redirectUrl: RedirectUrl, customSteps?: AsyncNoArgsFunction) => Promise<void>;
282
+ connectAndVerifyIntegration: (redirectUrl: RedirectUrl, customSteps?: AsyncNoArgsFunction, channelToConfigure?: string) => Promise<void>;
274
283
  disconnectAndVerifyIntegration: () => Promise<void>;
275
- updateConfigureSlackChannel: ({ newSlackChannel, interceptMultipleResponsesParams, }: {
276
- newSlackChannel: string;
277
- interceptMultipleResponsesParams?: Partial<InterceptMultipleResponsesParams> | undefined;
278
- }) => Promise<void>;
279
- loginToSlackWebapp: (slackWebappPage: Page) => Promise<void>;
284
+ updateConfigureSlackChannel: ({ newSlackChannel, interceptMultipleResponsesParams, refreshInterceptMultipleResponsesParams, refreshChannelList, }: UpdateConfigureSlackChannelParams) => Promise<void>;
285
+ clickOnChannelListRefreshButton: (refreshInterceptMultipleResponsesParams?: PartialInterceptMultipleResponsesParams) => Promise<void>;
286
+ loginToSlackWebapp: (slackWebappPage: Page, customCredentials?: Record<"workspace" | "loginPassword" | "loginEmail", string | undefined>) => Promise<void>;
280
287
  logoutFromSlackWebApp: () => Promise<void>;
281
288
  goToSlackChannel: (slackChannel: string) => Promise<void>;
289
+ createNewSlackChannel: ({ channelName, kind, }: {
290
+ channelName: string;
291
+ kind?: "public" | "private" | undefined;
292
+ }) => Promise<void>;
293
+ deleteSlackChannel: (channel: string) => Promise<void>;
282
294
  }
283
295
 
284
296
  interface WebhooksPageParams {
@@ -667,6 +679,21 @@ declare const SLACK_SELECTORS: {
667
679
  replyBar: string;
668
680
  markdownElement: string;
669
681
  virtualListItem: string;
682
+ channelItems: string;
683
+ };
684
+ declare const SLACK_DATA_QA_SELECTORS: {
685
+ sectionHeadingButton: string;
686
+ channelSectionSubmenuCreate: string;
687
+ channelSectionMenuCreateChannel: string;
688
+ skModalContent: string;
689
+ infiniteSpinner: string;
690
+ channelNameOptionsList: string;
691
+ channelNameInput: string;
692
+ createChannelNextButton: string;
693
+ inviteToWorkspaceSkipButton: string;
694
+ menuItems: string;
695
+ channelDetailsModal: string;
696
+ channelDetailsSettingsTab: string;
670
697
  };
671
698
 
672
699
  declare const INTEGRATION_SELECTORS: {
@@ -692,6 +719,10 @@ declare const SLACK_WEB_TEXTS: {
692
719
  signOut: string;
693
720
  allow: string;
694
721
  loadingThread: string;
722
+ name: string;
723
+ deleteThisChannel: string;
724
+ permanentlyDeleteTheChannel: string;
725
+ deleteChannel: string;
695
726
  };
696
727
 
697
728
  declare const initializeCredentials: (product: string) => void;
@@ -733,6 +764,7 @@ declare const skipTest: {
733
764
  declare const shouldSkipSetupAndTeardown: () => boolean | "";
734
765
  declare const squish: (text: string) => string;
735
766
  declare const toCamelCase: (string: string) => string;
767
+ declare const getByDataQA: ts_toolbelt_out_Function_Curry.Curry<(page: Page, dataQa: string | [string, string]) => playwright_core.Locator>;
736
768
 
737
769
  interface LoginProps {
738
770
  page: Page;
@@ -840,4 +872,4 @@ interface Overrides {
840
872
  }
841
873
  declare const definePlaywrightConfig: (overrides: Overrides) => _playwright_test.PlaywrightTestConfig<{}, {}>;
842
874
 
843
- export { API_ROUTES, BASE_URL, CHANGELOG_WIDGET_SELECTORS, CHAT_WIDGET_SELECTORS, CHAT_WIDGET_TEXTS, COMMON_SELECTORS, CREDENTIALS, CustomCommands, type CustomFixture, ENVIRONMENT, EmbedBase, GLOBAL_TRANSLATIONS_PATTERN, HELP_CENTER_SELECTORS, HelpAndProfilePage, INTEGRATIONS_TEXTS, INTEGRATION_SELECTORS, IS_STAGING_ENV, IntegrationBase, KEYBOARD_SHORTCUTS_SELECTORS, LOGIN_SELECTORS, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MailosaurUtils, NEETO_AUTH_BASE_URL, NEETO_EDITOR_SELECTORS, NEETO_FILTERS_SELECTORS, OTP_EMAIL_PATTERN, OrganizationPage, PROFILE_SECTION_SELECTORS, PROJECT_TRANSLATIONS_PATH, ROLES_SELECTORS, ROUTES, SIGNUP_SELECTORS, SLACK_DEFAULT_CHANNEL, SLACK_SELECTORS, SLACK_WEB_TEXTS, STORAGE_STATE, SlackPage, TAGS_SELECTORS, THIRD_PARTY_ROUTES, USER_AGENTS, WebhooksPage, clearCredentials, commands, cpuThrottlingUsingCDP, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, generateStagingData, getGlobalUserState, headerUtils, hyphenize, i18nFixture, initializeCredentials, initializeTotp, joinHyphenCase, joinString, login, loginWithoutSSO, memberUtils, networkConditions, networkThrottlingUsingCDP, readFileSyncIfExists, removeCredentialFile, shouldSkipSetupAndTeardown, skipTest, squish, _default as stealthTest, tableUtils, toCamelCase, updateCredentials, writeDataToFile };
875
+ export { API_ROUTES, BASE_URL, CHANGELOG_WIDGET_SELECTORS, CHAT_WIDGET_SELECTORS, CHAT_WIDGET_TEXTS, COMMON_SELECTORS, CREDENTIALS, CustomCommands, type CustomFixture, ENVIRONMENT, EmbedBase, GLOBAL_TRANSLATIONS_PATTERN, HELP_CENTER_SELECTORS, HelpAndProfilePage, INTEGRATIONS_TEXTS, INTEGRATION_SELECTORS, IS_STAGING_ENV, IntegrationBase, KEYBOARD_SHORTCUTS_SELECTORS, LOGIN_SELECTORS, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MailosaurUtils, NEETO_AUTH_BASE_URL, NEETO_EDITOR_SELECTORS, NEETO_FILTERS_SELECTORS, OTP_EMAIL_PATTERN, OrganizationPage, PROFILE_SECTION_SELECTORS, PROJECT_TRANSLATIONS_PATH, ROLES_SELECTORS, ROUTES, SIGNUP_SELECTORS, SLACK_DATA_QA_SELECTORS, SLACK_DEFAULT_CHANNEL, SLACK_SELECTORS, SLACK_WEB_TEXTS, STORAGE_STATE, SlackPage, TAGS_SELECTORS, THIRD_PARTY_ROUTES, USER_AGENTS, WebhooksPage, clearCredentials, commands, cpuThrottlingUsingCDP, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, generateStagingData, getByDataQA, getGlobalUserState, headerUtils, hyphenize, i18nFixture, initializeCredentials, initializeTotp, joinHyphenCase, joinString, login, loginWithoutSSO, memberUtils, networkConditions, networkThrottlingUsingCDP, readFileSyncIfExists, removeCredentialFile, shouldSkipSetupAndTeardown, skipTest, squish, _default as stealthTest, tableUtils, toCamelCase, updateCredentials, writeDataToFile };
package/index.js CHANGED
@@ -2,7 +2,7 @@ import test$1, { expect, test as test$2, defineConfig, devices } from '@playwrig
2
2
  import { execSync } from 'child_process';
3
3
  import * as fs$d from 'fs';
4
4
  import fs__default, { writeFileSync as writeFileSync$1, unlinkSync, readFileSync } from 'fs';
5
- import { not, isEmpty as isEmpty$1, isNil, isNotNil, mergeDeepLeft, mergeAll } from 'ramda';
5
+ import { curry, not, isEmpty as isEmpty$1, isNil, isNotNil, mergeDeepLeft, mergeAll } from 'ramda';
6
6
  import require$$0$2 from 'util';
7
7
  import { faker } from '@faker-js/faker';
8
8
  import MailosaurClient from 'mailosaur';
@@ -126,6 +126,16 @@ const shouldSkipSetupAndTeardown = () => { var _a; return ((_a = getGlobalUserSt
126
126
  // trims and replaces multiple whitespace characters in a string with a single space
127
127
  const squish = (text) => text.trim().replace(/\s+/g, " ");
128
128
  const toCamelCase = (string) => string.toLowerCase().replace(/( \w)/g, letter => letter[1].toUpperCase());
129
+ const getByDataQA = curry((page, dataQa) => {
130
+ if (typeof dataQa === "string") {
131
+ // eslint-disable-next-line playwright/no-raw-locators
132
+ return page.locator(`[data-qa='${dataQa}']`);
133
+ }
134
+ // eslint-disable-next-line playwright/no-raw-locators
135
+ return page
136
+ .locator(`[data-qa='${dataQa[0]}']`)
137
+ .locator(`[data-qa='${dataQa[1]}']`);
138
+ });
129
139
 
130
140
  const COMMON_SELECTORS = {
131
141
  copyButton: "copy-button",
@@ -12539,6 +12549,10 @@ const SLACK_WEB_TEXTS = {
12539
12549
  signOut: "Sign out",
12540
12550
  allow: "Allow",
12541
12551
  loadingThread: "Loading thread",
12552
+ name: "Name",
12553
+ deleteThisChannel: "Delete this channel",
12554
+ permanentlyDeleteTheChannel: "Yes, permanently delete the channel",
12555
+ deleteChannel: "Delete channel",
12542
12556
  };
12543
12557
 
12544
12558
  const HELP_CENTER_SELECTORS = {
@@ -12887,6 +12901,21 @@ const SLACK_SELECTORS = {
12887
12901
  replyBar: "[data-qa='reply_bar']",
12888
12902
  markdownElement: "[data-qa='bk_markdown_element']",
12889
12903
  virtualListItem: "[data-qa='virtual-list-item']",
12904
+ channelItems: '[role="treeitem"][data-qa="virtual-list-item"]',
12905
+ };
12906
+ const SLACK_DATA_QA_SELECTORS = {
12907
+ sectionHeadingButton: "section_heading_button__channels",
12908
+ channelSectionSubmenuCreate: "channel_section_submenu_create",
12909
+ channelSectionMenuCreateChannel: "channel_section_menu__create_channel",
12910
+ skModalContent: "sk-modal-content",
12911
+ infiniteSpinner: "infinite-spinner",
12912
+ channelNameOptionsList: "channel-name-options-list",
12913
+ channelNameInput: "channel-name-input",
12914
+ createChannelNextButton: "create-channel-next-button",
12915
+ inviteToWorkspaceSkipButton: "invite_to_workspace_skip_button",
12916
+ menuItems: "menu_items",
12917
+ channelDetailsModal: "channel_details_modal",
12918
+ channelDetailsSettingsTab: "channel_details_settings_tab",
12890
12919
  };
12891
12920
 
12892
12921
  /* eslint-disable playwright/no-raw-locators */
@@ -12898,7 +12927,7 @@ class SlackPage extends IntegrationBase {
12898
12927
  integration: "slack",
12899
12928
  integrationRouteIndex,
12900
12929
  });
12901
- this.connectAndVerifyIntegration = async (redirectUrl, customSteps) => {
12930
+ this.connectAndVerifyIntegration = async (redirectUrl, customSteps, channelToConfigure = SLACK_DEFAULT_CHANNEL) => {
12902
12931
  await this.connect();
12903
12932
  await this.page
12904
12933
  .getByRole("button", {
@@ -12921,7 +12950,11 @@ class SlackPage extends IntegrationBase {
12921
12950
  teamName: currentWorkspace,
12922
12951
  }),
12923
12952
  })).toBeVisible();
12924
- await expect(this.page.getByTestId(COMMON_SELECTORS.selectValueContainer)).toContainText(SLACK_DEFAULT_CHANNEL);
12953
+ await this.neetoPlaywrightUtilities.selectOptionFromDropdown({
12954
+ value: channelToConfigure,
12955
+ selectValueContainer: COMMON_SELECTORS.selectValueContainer,
12956
+ selectMenu: COMMON_SELECTORS.dropdownMenu,
12957
+ });
12925
12958
  await this.page
12926
12959
  .getByRole("button", { name: this.t("neetoSlack.common.continue") })
12927
12960
  .click();
@@ -12944,11 +12977,14 @@ class SlackPage extends IntegrationBase {
12944
12977
  await this.disconnect();
12945
12978
  await this.verifyIntegrationStatus("disconnected");
12946
12979
  };
12947
- this.updateConfigureSlackChannel = async ({ newSlackChannel = "random", interceptMultipleResponsesParams = {}, }) => {
12980
+ this.updateConfigureSlackChannel = async ({ newSlackChannel = "random", interceptMultipleResponsesParams = {}, refreshInterceptMultipleResponsesParams = {}, refreshChannelList = false, }) => {
12948
12981
  await this.page.getByTestId(INTEGRATION_SELECTORS.manageButton).click();
12949
12982
  await this.page
12950
12983
  .getByRole("button", { name: this.t("neetoSlack.common.edit") })
12951
12984
  .click();
12985
+ if (refreshChannelList) {
12986
+ await this.clickOnChannelListRefreshButton(refreshInterceptMultipleResponsesParams);
12987
+ }
12952
12988
  await this.page.getByTestId(COMMON_SELECTORS.selectContainer).click();
12953
12989
  await this.page
12954
12990
  .getByTestId(COMMON_SELECTORS.dropdownMenu)
@@ -12963,25 +12999,41 @@ class SlackPage extends IntegrationBase {
12963
12999
  .click();
12964
13000
  await savePromise;
12965
13001
  };
12966
- this.loginToSlackWebapp = async (slackWebappPage) => {
13002
+ this.clickOnChannelListRefreshButton = async (refreshInterceptMultipleResponsesParams) => {
13003
+ const refreshChannelPromise = this.neetoPlaywrightUtilities.interceptMultipleResponses({
13004
+ times: 0,
13005
+ ...refreshInterceptMultipleResponsesParams,
13006
+ });
13007
+ await this.page
13008
+ .getByRole("button", {
13009
+ name: this.t("neetoSlack.slack.channelListRefreshButton"),
13010
+ })
13011
+ .click();
13012
+ await refreshChannelPromise;
13013
+ };
13014
+ this.loginToSlackWebapp = async (slackWebappPage, customCredentials) => {
12967
13015
  this.slackWebappPage = slackWebappPage;
12968
- if (isNotNil(process.env.SLACK_WORKSPACE) &&
12969
- isNotNil(process.env.SLACK_LOGIN_PASSWORD) &&
12970
- isNotNil(process.env.SLACK_LOGIN_EMAIL)) {
12971
- await slackWebappPage.goto(THIRD_PARTY_ROUTES.slack.loginWithPassword(process.env.SLACK_WORKSPACE));
13016
+ this.slackWebappPageDataQa = getByDataQA(this.slackWebappPage);
13017
+ const slackWorkspace = (customCredentials === null || customCredentials === void 0 ? void 0 : customCredentials.workspace) || process.env.SLACK_WORKSPACE;
13018
+ const slackLoginPassword = (customCredentials === null || customCredentials === void 0 ? void 0 : customCredentials.loginPassword) || process.env.SLACK_LOGIN_PASSWORD;
13019
+ const slackLoginEmail = (customCredentials === null || customCredentials === void 0 ? void 0 : customCredentials.loginEmail) || process.env.SLACK_LOGIN_EMAIL;
13020
+ if (isNotNil(slackWorkspace) &&
13021
+ isNotNil(slackLoginPassword) &&
13022
+ isNotNil(slackLoginEmail)) {
13023
+ await slackWebappPage.goto(THIRD_PARTY_ROUTES.slack.loginWithPassword(slackWorkspace));
12972
13024
  await slackWebappPage
12973
13025
  .locator(SLACK_SELECTORS.loginEmail)
12974
- .pressSequentially(process.env.SLACK_LOGIN_EMAIL, { delay: 10 });
13026
+ .pressSequentially(slackLoginEmail, { delay: 10 });
12975
13027
  await slackWebappPage
12976
13028
  .locator(SLACK_SELECTORS.loginPassword)
12977
- .pressSequentially(process.env.SLACK_LOGIN_PASSWORD, { delay: 10 });
13029
+ .pressSequentially(slackLoginPassword, { delay: 10 });
12978
13030
  await slackWebappPage.locator(SLACK_SELECTORS.signInButton).click();
12979
13031
  await slackWebappPage
12980
13032
  .locator(SLACK_SELECTORS.redirectOpenInBrowser)
12981
13033
  .click();
12982
13034
  }
12983
13035
  else {
12984
- throw new Error("ENV variable SLACK_LOGIN_EMAIL or SLACK_LOGIN_PASSWORD or SLACK_WORKSPACE is not defined. Please add the API key to use this fixture.");
13036
+ throw new Error("ENV variable SLACK_LOGIN_EMAIL or SLACK_LOGIN_PASSWORD or SLACK_WORKSPACE is not defined.");
12985
13037
  }
12986
13038
  };
12987
13039
  this.logoutFromSlackWebApp = async () => {
@@ -13000,6 +13052,49 @@ class SlackPage extends IntegrationBase {
13000
13052
  .locator(SLACK_SELECTORS.virtualListItem, { hasText: slackChannel })
13001
13053
  .click();
13002
13054
  };
13055
+ this.createNewSlackChannel = async ({ channelName, kind = "public", }) => {
13056
+ await this.slackWebappPageDataQa(SLACK_DATA_QA_SELECTORS.sectionHeadingButton).click();
13057
+ await this.slackWebappPageDataQa(SLACK_DATA_QA_SELECTORS.channelSectionSubmenuCreate).click();
13058
+ await this.slackWebappPageDataQa(SLACK_DATA_QA_SELECTORS.channelSectionMenuCreateChannel).click();
13059
+ await expect(this.slackWebappPageDataQa(SLACK_DATA_QA_SELECTORS.skModalContent)).toBeVisible();
13060
+ await expect(this.slackWebappPageDataQa(SLACK_DATA_QA_SELECTORS.infiniteSpinner)).toBeHidden();
13061
+ await expect(this.slackWebappPageDataQa(SLACK_DATA_QA_SELECTORS.channelNameOptionsList)).toBeHidden({ timeout: 5000 });
13062
+ await this.slackWebappPageDataQa(SLACK_DATA_QA_SELECTORS.skModalContent)
13063
+ .getByText(SLACK_WEB_TEXTS.name, { exact: true })
13064
+ .click();
13065
+ await this.slackWebappPageDataQa([
13066
+ SLACK_DATA_QA_SELECTORS.skModalContent,
13067
+ SLACK_DATA_QA_SELECTORS.channelNameInput,
13068
+ ]).pressSequentially(channelName);
13069
+ await expect(this.slackWebappPageDataQa(SLACK_DATA_QA_SELECTORS.infiniteSpinner)).toBeHidden();
13070
+ await expect(this.slackWebappPageDataQa(SLACK_DATA_QA_SELECTORS.createChannelNextButton)).toBeEnabled();
13071
+ await this.slackWebappPageDataQa(SLACK_DATA_QA_SELECTORS.createChannelNextButton).click();
13072
+ await this.slackWebappPageDataQa(SLACK_DATA_QA_SELECTORS.skModalContent)
13073
+ .getByRole("radio", { name: kind })
13074
+ .check();
13075
+ await this.slackWebappPageDataQa(SLACK_DATA_QA_SELECTORS.createChannelNextButton).click();
13076
+ await this.slackWebappPageDataQa(SLACK_DATA_QA_SELECTORS.inviteToWorkspaceSkipButton).click();
13077
+ };
13078
+ this.deleteSlackChannel = async (channel) => {
13079
+ const channelItem = this.slackWebappPage.locator(SLACK_SELECTORS.channelItems, { hasText: channel });
13080
+ await channelItem.click({ button: "right" });
13081
+ await this.slackWebappPageDataQa([
13082
+ SLACK_DATA_QA_SELECTORS.menuItems,
13083
+ SLACK_DATA_QA_SELECTORS.channelDetailsModal,
13084
+ ]).click();
13085
+ await expect(this.slackWebappPageDataQa(SLACK_DATA_QA_SELECTORS.channelDetailsModal)).toBeVisible();
13086
+ await this.slackWebappPageDataQa(SLACK_DATA_QA_SELECTORS.channelDetailsSettingsTab).click();
13087
+ await this.slackWebappPageDataQa(SLACK_DATA_QA_SELECTORS.skModalContent)
13088
+ .getByRole("button", { name: SLACK_WEB_TEXTS.deleteThisChannel })
13089
+ .click();
13090
+ await this.slackWebappPage
13091
+ .getByLabel(SLACK_WEB_TEXTS.permanentlyDeleteTheChannel)
13092
+ .check();
13093
+ await this.slackWebappPage
13094
+ .getByRole("button", { name: SLACK_WEB_TEXTS.deleteChannel })
13095
+ .click();
13096
+ await expect(channelItem).toBeHidden();
13097
+ };
13003
13098
  }
13004
13099
  }
13005
13100
 
@@ -147005,5 +147100,5 @@ const definePlaywrightConfig = (overrides) => {
147005
147100
  });
147006
147101
  };
147007
147102
 
147008
- export { API_ROUTES, BASE_URL, CHANGELOG_WIDGET_SELECTORS, CHAT_WIDGET_SELECTORS, CHAT_WIDGET_TEXTS, COMMON_SELECTORS, CREDENTIALS, CustomCommands, ENVIRONMENT, EmbedBase, GLOBAL_TRANSLATIONS_PATTERN, HELP_CENTER_SELECTORS, HelpAndProfilePage, INTEGRATIONS_TEXTS, INTEGRATION_SELECTORS, IS_STAGING_ENV, IntegrationBase, KEYBOARD_SHORTCUTS_SELECTORS, LOGIN_SELECTORS, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MailosaurUtils, NEETO_AUTH_BASE_URL, NEETO_EDITOR_SELECTORS, NEETO_FILTERS_SELECTORS, OTP_EMAIL_PATTERN, OrganizationPage, PROFILE_SECTION_SELECTORS, PROJECT_TRANSLATIONS_PATH, ROLES_SELECTORS, ROUTES, SIGNUP_SELECTORS, SLACK_DEFAULT_CHANNEL, SLACK_SELECTORS, SLACK_WEB_TEXTS, STORAGE_STATE, SlackPage, TAGS_SELECTORS, THIRD_PARTY_ROUTES, USER_AGENTS, WebhooksPage, clearCredentials, commands, cpuThrottlingUsingCDP, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, generateStagingData, getGlobalUserState, headerUtils, hyphenize, i18nFixture, initializeCredentials, initializeTotp, joinHyphenCase, joinString, login, loginWithoutSSO, memberUtils, networkConditions, networkThrottlingUsingCDP, readFileSyncIfExists, removeCredentialFile, shouldSkipSetupAndTeardown, skipTest, squish, stealth as stealthTest, tableUtils, toCamelCase, updateCredentials, writeDataToFile };
147103
+ export { API_ROUTES, BASE_URL, CHANGELOG_WIDGET_SELECTORS, CHAT_WIDGET_SELECTORS, CHAT_WIDGET_TEXTS, COMMON_SELECTORS, CREDENTIALS, CustomCommands, ENVIRONMENT, EmbedBase, GLOBAL_TRANSLATIONS_PATTERN, HELP_CENTER_SELECTORS, HelpAndProfilePage, INTEGRATIONS_TEXTS, INTEGRATION_SELECTORS, IS_STAGING_ENV, IntegrationBase, KEYBOARD_SHORTCUTS_SELECTORS, LOGIN_SELECTORS, MEMBER_FORM_SELECTORS, MEMBER_SELECTORS, MEMBER_TEXTS, MERGE_TAGS_SELECTORS, MailosaurUtils, NEETO_AUTH_BASE_URL, NEETO_EDITOR_SELECTORS, NEETO_FILTERS_SELECTORS, OTP_EMAIL_PATTERN, OrganizationPage, PROFILE_SECTION_SELECTORS, PROJECT_TRANSLATIONS_PATH, ROLES_SELECTORS, ROUTES, SIGNUP_SELECTORS, SLACK_DATA_QA_SELECTORS, SLACK_DEFAULT_CHANNEL, SLACK_SELECTORS, SLACK_WEB_TEXTS, STORAGE_STATE, SlackPage, TAGS_SELECTORS, THIRD_PARTY_ROUTES, USER_AGENTS, WebhooksPage, clearCredentials, commands, cpuThrottlingUsingCDP, decodeQRCodeFromFile, definePlaywrightConfig, executeWithThrottledResources, extractSubdomainFromError, generateStagingData, getByDataQA, getGlobalUserState, headerUtils, hyphenize, i18nFixture, initializeCredentials, initializeTotp, joinHyphenCase, joinString, login, loginWithoutSSO, memberUtils, networkConditions, networkThrottlingUsingCDP, readFileSyncIfExists, removeCredentialFile, shouldSkipSetupAndTeardown, skipTest, squish, stealth as stealthTest, tableUtils, toCamelCase, updateCredentials, writeDataToFile };
147009
147104
  //# sourceMappingURL=index.js.map