Αναφορά API

Αυτό το κιτ εργαλείων API Playwright του Power Platform αναφέρει έγγραφα δημόσιων κλάσεων, μεθόδων και τύπων που μπορείτε να χρησιμοποιήσετε για να αυτοματοποιήσετε, από άκρο σε άκρο, τις δοκιμές καμβά και τις εφαρμογές βάσει μοντέλου.

AppProvider

Σημείο εισόδου για την εκκίνηση εφαρμογών Power Platform. Να ξεκινά μία φορά ανά δοκιμή και, στη συνέχεια, καλέστε 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

Καθορίζει τον τύπο της εφαρμογής Power Platform προς εκκίνηση.

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

Αναδιπλώνει το πλέγμα AG που χρησιμοποιείται σε προβολές λίστας βάσει μοντέλου. Πρόσβαση μέσω 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

Αναδιπλώνει τον χρόνο εκτέλεσης Dynamics 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()

Εκτελεί αυθαίρετο κώδικα στο περιβάλλον φόρμας του προγράμματος περιήγησης με πλήρη πρόσβαση στο API προγράμματος-πελάτη Xrm:

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

Ανατρέξτε στο θέμα Δοκιμή API μέσω περιβάλλοντος φόρμας για λεπτομερή χρήση.


CommandingComponent

Αναδιπλώνει τη γραμμή εντολών εφαρμογής βάσει μοντέλου. Πρόσβαση μέσω ModelDrivenAppPage.commanding.

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

CanvasAppPage

Επιστρέφεται από το AppProvider.getCanvasAppPage(). Παρέχει τον προσαυξητή πλαισίου iframe καμβά.

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

GenUxPage

Επιστρέφεται από το AppProvider.getGenUxPage(). Παρέχει αλληλεπιδράσεις με το εργαλείο σχεδίασης AI του Power Apps Maker Portal GenUX για τη δημιουργία, τη δημιουργία, τον έλεγχο και τη δημοσίευση εφαρμογών βάσει μοντέλου από προτροπές 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

Εμφανίζει το FrameLocator για το iframe προεπισκόπησης UCI. Χρησιμοποιήστε αυτήν την ιδιότητα για να υποβάλετε ερωτήματα απευθείας σε στοιχεία φόρμας που δημιουργήθηκαν:

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

GenUxPage.verifyThoughtStreaming()

Ελέγχει για μεταβατικούς δείκτες ροής GenUX, όπως κείμενο σκέψης, κουμπί Διακοπή και Σκέψεις παράγοντα. Κάθε έλεγχος είναι η καλύτερη δυνατή προσπάθεια - η δημιουργία μπορεί να ολοκληρωθεί προτού εμφανιστούν όλοι οι δείκτες. Ο μόνος σκληρός ισχυρισμός είναι ότι είτε η ροή είναι σε εξέλιξη είτε "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

Επιστρέφει τη διαδρομή προς το Power Apps αρχείο κατάστασης αποθήκευσης για το δεδομένο μήνυμα ηλεκτρονικού ταχυδρομείου:

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

ConfigHelper

Παρέχει βοηθητικά στοιχεία ρύθμισης παραμέτρων, όπως ο έλεγχος αν η κατάσταση αποθήκευσης στο cache έχει λήξει.

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

Βοηθητικά προγράμματα εντοπισμού

Μέθοδοι βοηθητικών στοιχείων για τον εντοπισμό Power Apps στοιχείων ελέγχου εντός iframe.

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';

Επόμενα βήματα

Δείτε επίσης