Белешка
Приступ овој страници захтева ауторизацију. Можете покушати да се пријавите или промените директоријуме.
Приступ овој страници захтева ауторизацију. Можете покушати да промените директоријуме.
Овај АПИ референтни алат Повер Платформ Плаyвригхт документује јавне класе, методе и типове које можете користити за аутоматизацију енд-то-енд тестирања платна и апликација заснованих на моделу.
AppProvider
Улазна тачка за покретање апликација Повер Платформ. Инстанцирајте једном по тесту, а затим позовите launch().
class AppProvider {
constructor(page: Page, context: BrowserContext)
launch(options: AppLaunchOptions): Promise<void>
getModelDrivenAppPage(): ModelDrivenAppPage
getCanvasAppPage(): CanvasAppPage
getGenUxPage(): GenUxPage
}
AppLaunchOptions
Опције су прослеђене AppProvider.launch() да бисте конфигурисали коју апликацију да отворите и како.
interface AppLaunchOptions {
app: string; // Display name of the app
type: AppType; // Canvas | ModelDriven
mode: AppLaunchMode; // Play | Edit
skipMakerPortal?: boolean; // true: use directUrl, skip make.powerapps.com navigation
directUrl?: string; // Full URL when skipMakerPortal is true
}
AppType
Одређује врсту апликације Повер Платформ за покретање.
enum AppType {
Canvas = 'canvas',
ModelDriven = 'model-driven',
}
AppLaunchMode
Одређује да ли се апликација отвара у режиму репродукције или режиму уређивања.
enum AppLaunchMode {
Play = 'play',
Edit = 'edit',
}
ModelDrivenAppPage
Вратио . AppProvider.getModelDrivenAppPage() Обезбеђује навигацију и приступ компонентама.
class ModelDrivenAppPage {
readonly grid: GridComponent
readonly form: FormComponent
readonly commanding: CommandingComponent
navigateToGridView(entityLogicalName: string): Promise<void>
navigateToFormView(entityLogicalName: string): Promise<void>
}
GridComponent
Обавија АГ мрежу која се користи у приказима листе заснованих на моделу. Приступљено преко ModelDrivenAppPage.grid.
class GridComponent {
waitForGridLoad(): Promise<void>
filterByKeyword(keyword: string): Promise<void>
filterByColumn(columnName: string, value: string): Promise<void>
getCellValue(rowIndex: number, columnName: string): Promise<string | null>
getRowCount(): Promise<number>
isGridEmpty(): Promise<boolean>
openRecord(options: OpenRecordOptions): Promise<void>
selectRow(rowIndex: number): Promise<void>
selectRows(rowIndexes: number[]): Promise<void>
}
OpenRecordOptions
Опције за идентификацију који запис да се отвори из мреже.
interface OpenRecordOptions {
rowNumber?: number; // 0-based row index
columnName?: string; // column to match (display name or schema name)
columnValue?: string; // value to match in the column
}
FormComponent
Обавија < ДИЦТ__Дyнамицс ⚐ 365 > Дyнамицс 365 форму рунтиме. Приступљено преко ModelDrivenAppPage.form.
class FormComponent {
getAttribute(fieldName: string): Promise<string | null>
setAttribute(fieldName: string, value: string): Promise<void>
save(): Promise<void>
isDirty(): Promise<boolean>
isValid(): Promise<boolean>
navigateToTab(tabName: string): Promise<void>
setFieldVisibility(fieldName: string, visible: boolean): Promise<void>
setFieldDisabled(fieldName: string, disabled: boolean): Promise<void>
setFieldRequiredLevel(
fieldName: string,
level: 'none' | 'recommended' | 'required'
): Promise<void>
execute<T>(
fn: (formContext: Xrm.FormContext) => T | Promise<T>
): Promise<T>
}
FormComponent.execute()
Покреће произвољни код у контексту обрасца претраживача са пуним приступом КСРМ Цлиент АПИ-ју:
const value = await mda.form.execute(
(ctx) => ctx.getAttribute('nwind_ordernumber')?.getValue()
);
Погледајте АПИ тестирање кроз контекст обрасца за детаљну употребу.
CommandingComponent
Обавија командну траку апликације засновану на моделу. Приступљено преко ModelDrivenAppPage.commanding.
class CommandingComponent {
clickButton(ariaLabel: string): Promise<void>
clickMoreCommands(): Promise<void>
}
CanvasAppPage
Вратио . AppProvider.getCanvasAppPage() Обезбеђује платно ифраме оквир локатор.
class CanvasAppPage {
getFrame(): FrameLocator
waitForLoad(controlName?: string): Promise<void>
}
GenUxPage
Вратио . AppProvider.getGenUxPage() Обезбеђује интеракцију са < ДИЦТ__Поwер ⚐ Аппс > Поwер Аппс Макер Портал ГенУКС АИ дизајнером за креирање, генерисање, инспекцију и објављивање апликација заснованих на моделу из АИ упита.
class GenUxPage {
readonly previewFrame: FrameLocator // UCI Preview iframe locator
// Power Apps navigation
goToAppsPage(): Promise<void>
navigateToStartWithPageDesign(): Promise<void>
createAppWithName(appName: string): Promise<void>
addNewPage(): Promise<void>
// AI generation
waitForUCIPreviewFrameAndFillPrompt(prompt: string): Promise<void>
waitForUCIPreviewFrameAndSelectTemplate(templateText: string): Promise<void>
verifyThoughtStreaming(): Promise<void>
verifyCodeAndPreviewTabsAvailable(): Promise<void>
verifyCodeStreaming(): Promise<void>
// Inspection
clickPreviewTab(): Promise<void>
clickCodeTab(): Promise<void>
waitForGeneratedContent(): Promise<void>
waitForCodeTabContent(): Promise<void>
getPreviewTabDom(): Promise<string>
getCodeTabContent(): Promise<string>
// Publishing
publishApp(): Promise<void>
buildCanvasPlayUrl(): string
// Form interaction
submitForm(): Promise<void>
waitForSubmitSuccess(timeout?: number): Promise<void>
// App management
getAppIdFromUrl(): string
searchAndPlayApp(appName: string, context: BrowserContext): Promise<Page | null>
deleteAppsMatchingPrefix(prefix: string): Promise<void>
deleteAppFromAppListIfFound(appName: string): Promise<void>
}
GenUxPage.previewFrame
Излаже FrameLocator за УЦИ Превиев ифраме. Користите ову особину за директни упит генерисаних елемената форме:
const input = genUxPage.previewFrame.getByRole('textbox', { name: 'First Name' });
await expect(input).toBeVisible();
GenUxPage.verifyThoughtStreaming()
Проверава пролазне ГенУКС индикаторе стреаминга, као што су мисаони текст, дугме Стоп и Агент Тхоугхтс. Свака провера је најбољи напор - генерисање може да се заврши пре него што се појаве сви индикатори. Једина тешка тврдња је да је или стреаминг у току или "Your page is now generated" је видљив.
GenUxPage.searchAndPlayApp()
Враћа се null када је игра онемогућена (апликација још није објављена) уместо да баца грешку. Користите test.skip() на повратку null :
const appPage = await genUxPage.searchAndPlayApp(appName, context);
if (!appPage) test.skip();
Функције услужног програма
Самосталне помоћне функције за уобичајене задатке подешавања и конфигурације.
buildCanvasAppUrlFromEnv
Чита CANVAS_APP_URL из околине:
function buildCanvasAppUrlFromEnv(): string
getStorageStatePath
Враћа путању до датотеке стања складиштења &лт;c0&гт;< ДИЦТ__Поwер ⚐ Аппс > Поwер Аппс &лт; / c0&гт; за дату е-пошту:
function getStorageStatePath(email: string): string
// Returns: packages/e2e-tests/.playwright-ms-auth/state-<email>.json
ConfigHelper
Обезбеђује помагаче за конфигурацију, као што је провера да ли је кеширано стање складиштења истекло.
class ConfigHelper {
static checkStorageStateExpiration(
statePath: string
): { expired: boolean; expiresOn?: number }
}
Локатор комуналије
Помоћне методе за лоцирање < ДИЦТ__Поwер ⚐ Аппс > Поwер Аппс контрола унутар ифраме-а.
LocatorUtils
Статичке методе за проналажење контрола апликација на платну и ставки галерије по имену.
class LocatorUtils {
static getByControlName(frame: FrameLocator, controlName: string): Locator
static getGalleryItem(frame: FrameLocator, titleText: string): Locator
}
Тип извоз
Извоз свих типова из корена пакета:
import {
AppProvider,
AppType,
AppLaunchMode,
AppLaunchOptions,
ModelDrivenAppPage,
GridComponent,
FormComponent,
CommandingComponent,
CanvasAppPage,
GenUxPage,
buildCanvasAppUrlFromEnv,
getStorageStatePath,
ConfigHelper,
LocatorUtils,
} from 'power-platform-playwright-toolkit';