API atsauce

Šī Power Platform Playwright rīkkopas API atsauce dokumentē publiskās klases, metodes un tipus, kurus varat izmantot, lai automatizētu audekla un modeļa vadītu programmu pilnīgu testēšanu.

AppProvider

Ieejas punkts Power Platform programmu palaišanai. Instancējiet vienu reizi testā, pēc tam zvaniet launch().

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

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

AppLaunchOptions

Opcijas nodotas AppProvider.launch() , lai konfigurētu, kuru programmu atvērt un kā.

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

Norāda palaižamās Power Platform programmas tipu.

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

AppLaunchMode

Nosaka, vai programma tiek atvērta atskaņošanas vai rediģēšanas režīmā.

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

ModelDrivenAppPage

Atgrieza .AppProvider.getModelDrivenAppPage() Nodrošina navigāciju un piekļuvi komponentiem.

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

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

GridComponent

Aplauza AG režģi , kas tiek izmantots modeļa vadītos saraksta skatos. Pieejams, izmantojot 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

Opcijas, lai identificētu, kuru ierakstu atvērt no režģa.

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

Aizpilda Dynamics 365 veidlapas izpildlaiku. Pieejams, izmantojot 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()

Palaiž patvaļīgu kodu pārlūkprogrammas veidlapas kontekstā ar pilnu piekļuvi Xrm klienta API:

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

Detalizētu lietojumu skatiet sadaļā API testēšana, izmantojot veidlapas kontekstu .


CommandingComponent

Tiek aplauzta modeļa vadītas programmas komandjosla. Pieejams, izmantojot ModelDrivenAppPage.commanding.

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

CanvasAppPage

Atgrieza .AppProvider.getCanvasAppPage() Nodrošina audekla iframe rāmja meklētāju.

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

GenUxPage

Atgrieza .AppProvider.getGenUxPage() Nodrošina mijiedarbību ar Power Apps Maker portāla GenUX AI noformētāju, lai izveidotu, ģenerētu, pārbaudītu un publicētu modeļa vadītas programmas no AI uzvednēm.

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

Atklāj FrameLocator UCI priekšskatījuma iframe. Izmantojiet šo rekvizītu, lai tieši vaicātu ģenerētos veidlapas elementus:

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

GenUxPage.verifyThoughtStreaming()

Pārbauda īslaicīgus GenUX straumēšanas indikatorus, piemēram, domu tekstu, apturēšanas pogu un aģenta domas. Katra pārbaude ir vislabākā - ģenerēšana var tikt pabeigta, pirms parādās visi rādītāji. Vienīgais stingrais apgalvojums ir tas, ka straumēšana notiek vai "Your page is now generated" ir redzama.

GenUxPage.searchAndPlayApp()

Atgriežas null , ja atskaņošana ir atspējota (lietotne vēl nav publicēta), nevis tiek parādīta kļūda. Izmantošana test.skip()null atpakaļ:

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

Utilītu funkcijas

Savrupas palīga funkcijas bieži sastopamiem iestatīšanas un konfigurēšanas uzdevumiem.

buildCanvasAppUrlFromEnv

Lasāms no vides CANVAS_APP_URL :

function buildCanvasAppUrlFromEnv(): string

getStorageStatePath

Atgriež ceļu uz Power Apps glabāšanas stāvokļa failu norādītajam e-pasta ziņojumam:

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

ConfigHelper

Nodrošina konfigurācijas palīglīdzekļus, piemēram, pārbauda, vai kešatmiņas krātuves statuss ir beidzies.

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

Lokatora komunālie pakalpojumi

Palīgmetodes Power Apps vadīklu atrašanai iframes.

LocatorUtils

Statiskās metodes audekla programmas vadīklu un galerijas vienumu atrašanai pēc nosaukuma.

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

Veids eksports

Eksportējiet visus veidus no pakotnes saknes:

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

Nākamās darbības

Skatiet arī: