Referenčné informácie o rozhraní API

Toto rozhranie API platformy Playwright platformy obsahuje referenčné dokumenty o verejných triedach, metódach a typoch, ktoré môžete použiť na automatizáciu komplexného testovania plátnových aplikácií a modelom riadených aplikácií.

AppProvider

Vstupný bod na spustenie aplikácií Power Platformy. Vytvorte inštanciu raz za test a potom zavolajte .launch()

class AppProvider {
  constructor(page: Page, context: BrowserContext)

  launch(options: AppLaunchOptions): Promise<void>
  getModelDrivenAppPage(): ModelDrivenAppPage
  getCanvasAppPage(): CanvasAppPage
  getGenUxPage(): GenUxPage
}

AppLaunchOptions

Možnosti prenesené do AppProvider.launch() časti Konfigurujte, ktorú aplikáciu chcete otvoriť a ako.

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

Určuje typ aplikácie Power Platform, ktorá sa má spustiť.

enum AppType {
  Canvas = 'canvas',
  ModelDriven = 'model-driven',
}

AppLaunchMode

Určuje, či sa aplikácia otvorí v režime prehrávania alebo režime úprav.

enum AppLaunchMode {
  Play = 'play',
  Edit = 'edit',
}

ModelDrivenAppPage

Vrátené funkciou AppProvider.getModelDrivenAppPage(). Poskytuje prístup k navigácii a súčasti.

class ModelDrivenAppPage {
  readonly grid: GridComponent
  readonly form: FormComponent
  readonly commanding: CommandingComponent

  navigateToGridView(entityLogicalName: string): Promise<void>
  navigateToFormView(entityLogicalName: string): Promise<void>
}

GridComponent

Zalomí mriežku AG používanú v zobrazeniach zoznamu riadených modelom. Prístupné prostredníctvom 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

Možnosti na určenie záznamu, ktorý sa má otvoriť v mriežke.

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

Zalomí čas runtime formulára Dynamics 365. Prístupné prostredníctvom 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()

Spustí ľubovoľný kód v kontexte formulára prehliadača s úplným prístupom k rozhraniu Xrm Client API:

const value = await mda.form.execute(
  (ctx) => ctx.getAttribute('nwind_ordernumber')?.getValue()
);

Podrobné použitie nájdete v téme Testovanie rozhrania API prostredníctvom kontextu formulára .


CommandingComponent

Zalomí panel príkazov modelom riadenej aplikácie. Prístupné prostredníctvom ModelDrivenAppPage.commanding.

class CommandingComponent {
  clickButton(ariaLabel: string): Promise<void>
  clickMoreCommands(): Promise<void>
}

CanvasAppPage

Vrátené funkciou AppProvider.getCanvasAppPage(). Poskytuje lokalizáciu rámu iframe na plátne.

class CanvasAppPage {
  getFrame(): FrameLocator
  waitForLoad(controlName?: string): Promise<void>
}

GenUxPage

Vrátené funkciou AppProvider.getGenUxPage(). Poskytuje interakcie s návrhárom služby Power Apps Maker Portal GenUX AI na vytváranie, generovanie, kontrolu a publikovanie modelom riadených aplikácií z výziev AI.

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

Sprístupňuje FrameLocator hodnotu pre iframe ukážky UCI. Pomocou tejto vlastnosti môžete priamo dotazovať vygenerované prvky formulára:

const input = genUxPage.previewFrame.getByRole('textbox', { name: 'First Name' });
await expect(input).toBeVisible();

GenUxPage.verifyThoughtStreaming()

Kontroluje prechodné indikátory streamovania GenUX, ako je napríklad myšlienkový text, tlačidlo Stop a myšlienky Agenta. Každá kontrola je maximálne úsilie – generovanie sa môže dokončiť ešte predtým, ako sa zobrazia všetky indikátory. Jediným pevným kontrolným výrazom je, že buď streamovanie prebieha, alebo "Your page is now generated" je viditeľné.

GenUxPage.searchAndPlayApp()

Vráti hodnotu null , keď je funkcia Prehrať zakázaná (aplikácia ešte nie je publikovaná) namiesto vyvolania chyby. Použiť test.skip() pri vrátení null :

const appPage = await genUxPage.searchAndPlayApp(appName, context);
if (!appPage) test.skip();

Pomocné funkcie

Samostatné pomocné funkcie pre bežné úlohy nastavenia a konfigurácie.

buildCanvasAppUrlFromEnv

Číta CANVAS_APP_URL z prostredia:

function buildCanvasAppUrlFromEnv(): string

getStorageStatePath

Vráti cestu k Power Apps súboru stavu úložiska pre daný e-mail:

function getStorageStatePath(email: string): string
// Returns: packages/e2e-tests/.playwright-ms-auth/state-<email>.json

ConfigHelper

Poskytuje pomocné služby konfigurácie, ako napríklad kontrolu uplynutia platnosti stavu úložiska vo vyrovnávacej pamäti.

class ConfigHelper {
  static checkStorageStateExpiration(
    statePath: string
  ): { expired: boolean; expiresOn?: number }
}

Locator utilities

Pomocné metódy na vyhľadanie ovládacích prvkov Power Apps v rámci prvkov iframe.

LocatorUtils

Statické metódy na vyhľadanie ovládacích prvkov aplikácie plátna a položiek galérie podľa názvu.

class LocatorUtils {
  static getByControlName(frame: FrameLocator, controlName: string): Locator
  static getGalleryItem(frame: FrameLocator, titleText: string): Locator
}

Export typu

Exportujte všetky typy z koreňa balíka:

import {
  AppProvider,
  AppType,
  AppLaunchMode,
  AppLaunchOptions,
  ModelDrivenAppPage,
  GridComponent,
  FormComponent,
  CommandingComponent,
  CanvasAppPage,
  GenUxPage,
  buildCanvasAppUrlFromEnv,
  getStorageStatePath,
  ConfigHelper,
  LocatorUtils,
} from 'power-platform-playwright-toolkit';

Ďalšie kroky

Pozrite tiež