Automatic Merge
Этот коммит содержится в:
Julien Tant
2025-01-31 19:50:08 -07:00
коммит произвёл GitHub
родитель c079020e9e
Коммит 8fdb9ad358
7 изменённых файлов: 48 добавлений и 19 удалений

Просмотреть файл

@@ -32,7 +32,7 @@ export async function shouldHaveFeatureFlag(name: string, value: string | boolea
export async function shouldRunInLinux() {
const platform = os.platform();
await expect(platform, 'Run in Linux or Playwright docker image only').toBe('linux');
expect(platform, 'Run in Linux or Playwright docker image only').toBe('linux');
}
export async function ensureLicense() {
@@ -41,7 +41,7 @@ export async function ensureLicense() {
if (license?.IsLicensed !== 'true') {
const config = await adminClient.getClientConfigOld();
await expect(
expect(
config.ServiceEnvironment === 'dev',
'The trial license request fails in the local development environment. Please manually upload the test license.',
).toBeFalsy();
@@ -51,7 +51,7 @@ export async function ensureLicense() {
license = await adminClient.getClientLicenseOld();
}
await expect(license?.IsLicensed === 'true', 'Ensure server has license').toBeTruthy();
expect(license?.IsLicensed === 'true', 'Ensure server has license').toBeTruthy();
}
export async function requestTrialLicense() {
@@ -75,3 +75,10 @@ export async function skipIfNoLicense() {
test.skip(license.IsLicensed === 'false', 'Skipping test - server not licensed');
}
export async function skipIfFeatureFlagNotSet(name: string, value: string | boolean) {
const {adminClient} = await getAdminClient();
const cfg = await adminClient.getConfig();
test.skip(cfg.FeatureFlags[name] !== value, `Skipping test - Feature Flag ${name} needs to be set to ${value}`);
}

Просмотреть файл

@@ -3,7 +3,14 @@ import {AxeResults} from 'axe-core';
import AxeBuilder from '@axe-core/playwright';
import {TestBrowser} from './browser_context';
import {shouldHaveCallsEnabled, shouldHaveFeatureFlag, shouldRunInLinux, ensureLicense, skipIfNoLicense} from './flag';
import {
shouldHaveCallsEnabled,
shouldHaveFeatureFlag,
shouldRunInLinux,
ensureLicense,
skipIfNoLicense,
skipIfFeatureFlagNotSet,
} from './flag';
import {initSetup, getAdminClient} from './server';
import {hideDynamicChannelsContent, waitForAnimationEnd, waitUntil} from './test_action';
import pages from './ui/pages';
@@ -46,6 +53,7 @@ class PlaywrightExtended {
readonly shouldRunInLinux;
readonly ensureLicense;
readonly skipIfNoLicense;
readonly skipIfFeatureFlagNotSet;
// ./server
readonly getAdminClient;
@@ -81,6 +89,7 @@ class PlaywrightExtended {
this.shouldRunInLinux = shouldRunInLinux;
this.ensureLicense = ensureLicense;
this.skipIfNoLicense = skipIfNoLicense;
this.skipIfFeatureFlagNotSet = skipIfFeatureFlagNotSet;
// ./server
this.initSetup = initSetup;

Просмотреть файл

@@ -47,6 +47,7 @@ export default class ScheduledDraftModal {
await this.dateInput.click();
const pacificDate = this.getPacificDate();
const originDate = new Date(pacificDate.getTime());
// If dayFromToday is provided, add days to the current date
if (dayFromToday) {
@@ -57,7 +58,13 @@ export default class ScheduledDraftModal {
const month = pacificDate.toLocaleString('default', {month: 'long'});
const dayOfWeek = pacificDate.toLocaleDateString('en-US', {weekday: 'long'});
await this.dateLocator(day, month, dayOfWeek).click();
const dl = this.dateLocator(day, month, dayOfWeek);
// If the date is not visible and the month has changed, click the next month button
if (!(await dl.isVisible()) && pacificDate.getMonth() !== originDate.getMonth()) {
this.container.locator('button[aria-label="Go to next month"]').click();
}
await dl.click();
}
async confirm() {

Просмотреть файл

@@ -12,6 +12,7 @@ export default class SearchPopover {
readonly searchBoxClose;
readonly selectedSuggestion;
readonly searchHints;
readonly clearButton;
constructor(container: Locator) {
this.container = container;
@@ -22,6 +23,16 @@ export default class SearchPopover {
this.searchBoxClose = container.getByTestId('searchBoxClose');
this.selectedSuggestion = container.locator('.suggestion--selected').locator('.suggestion-list__main');
this.searchHints = container.locator('#searchHints');
this.clearButton = container.locator('.input-clear-x');
}
// clearIfPossible clears the search input if the clear button is visible. Returns true if the clear button was clicked.
async clearIfPossible() {
if (await this.clearButton.isVisible()) {
await this.clearButton.click();
return true;
}
return false;
}
async toBeVisible() {

Просмотреть файл

@@ -29,7 +29,8 @@ export default class ChannelsSidebarRight {
this.scheduledDraftChannelInfoMessageText = container.locator('span:has-text("Message scheduled for")');
this.rhsPostBody = container.locator('.post-message__text');
this.postCreate = new components.ChannelsPostCreate(container.getByTestId('comment-create'), true);
this.closeButton = container.locator('#rhsCloseButton');
this.closeButton = container.locator('.sidebar--right__close');
this.editTextbox = container.locator('#edit_textbox');
this.postEdit = new components.ChannelsPostEdit(container.locator('.post-edit__container'));
this.currentVersionEditedPosttext = (postID: any) => container.locator(`#rhsPostMessageText_${postID} p`);