Napomena
Za pristup ovoj stranici potrebna je autorizacija. Možete se pokušati prijaviti ili promijeniti direktorije.
Za pristup ovoj stranici potrebna je autorizacija. Možete pokušati promijeniti direktorije.
Ovaj API komplet alata Power Platform Playwright referencira dokumente javnih klasa, metoda i vrsta koje možete koristiti za automatizaciju testiranja platna i aplikacija utemeljenih na modelu.
AppProvider
Ulazna točka za pokretanje aplikacija platforme Power Platform. Instancirajte jednom po testu, a zatim nazovite launch().
class AppProvider {
constructor(page: Page, context: BrowserContext)
launch(options: AppLaunchOptions): Promise<void>
getModelDrivenAppPage(): ModelDrivenAppPage
getCanvasAppPage(): CanvasAppPage
getGenUxPage(): GenUxPage
}
AppLaunchOptions
Mogućnosti proslijeđene AppProvider.launch() da bi se konfigurirala koja se aplikacija otvara i kako.
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
Određuje vrstu aplikacije Power Platform koja će se pokrenuti.
enum AppType {
Canvas = 'canvas',
ModelDriven = 'model-driven',
}
AppLaunchMode
Određuje otvara li se aplikacija u načinu reprodukcije ili načinu uređivanja.
enum AppLaunchMode {
Play = 'play',
Edit = 'edit',
}
ModelDrivenAppPage
AppProvider.getModelDrivenAppPage()Vratio . Omogućuje navigaciju i pristup komponentama.
class ModelDrivenAppPage {
readonly grid: GridComponent
readonly form: FormComponent
readonly commanding: CommandingComponent
navigateToGridView(entityLogicalName: string): Promise<void>
navigateToFormView(entityLogicalName: string): Promise<void>
}
GridComponent
Prelama rešetku AG koja se koristi u prikazima popisa utemeljenima na modelu. Pristupa se putem .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
Mogućnosti prepoznavanja zapisa koji će se otvoriti iz rešetke.
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
Prelama Dynamics 365 izvođenja obrasca. Pristupa se putem .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()
Pokreće proizvoljni kod u kontekstu obrasca preglednika s potpunim pristupom Xrm klijentskom API-ju:
const value = await mda.form.execute(
(ctx) => ctx.getAttribute('nwind_ordernumber')?.getValue()
);
Detaljne informacije o korištenju potražite u članku Testiranje API-ja putem konteksta obrasca.
CommandingComponent
Prelama traku naredbi aplikacije utemeljene na modelu. Pristupa se putem .ModelDrivenAppPage.commanding
class CommandingComponent {
clickButton(ariaLabel: string): Promise<void>
clickMoreCommands(): Promise<void>
}
CanvasAppPage
AppProvider.getCanvasAppPage()Vratio . Pruža lokator okvira iframe platna.
class CanvasAppPage {
getFrame(): FrameLocator
waitForLoad(controlName?: string): Promise<void>
}
GenUxPage
AppProvider.getGenUxPage()Vratio . Pruža interakcije s dizajnerom Power Apps GenUX AI dizajnera za stvaranje, generiranje, provjeru i objavljivanje aplikacija utemeljenih na modelu iz upita AI-ja.
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
Izlaže FrameLocator okvir iframe pretpregleda za UCI. Koristite ovo svojstvo za izravno slanje upita generiranim elementima obrasca:
const input = genUxPage.previewFrame.getByRole('textbox', { name: 'First Name' });
await expect(input).toBeVisible();
GenUxPage.verifyThoughtStreaming()
Provjerava prolazne genUX pokazatelje strujanja, kao što su tekst koji se misli, gumb Zaustavi i Misli agenta. Svaka provjera je najbolji napor – generiranje se može dovršiti prije nego što se pojave svi pokazatelji. Jedina tvrda tvrdnja je da je strujanje u tijeku ili je "Your page is now generated" vidljivo.
GenUxPage.searchAndPlayApp()
Vraća null kada je reprodukcija onemogućena (aplikacija još nije objavljena) umjesto da se prikazuje pogreška. Koristi test.skip() se za null povrat:
const appPage = await genUxPage.searchAndPlayApp(appName, context);
if (!appPage) test.skip();
Uslužne funkcije
Samostalne funkcije pomoćnog programa za uobičajene zadatke postavljanja i konfiguracije.
buildCanvasAppUrlFromEnv
Čita iz CANVAS_APP_URL okruženja:
function buildCanvasAppUrlFromEnv(): string
getStorageStatePath
Vraća put do datoteke stanja Power Apps za navedenu poruku e-pošte:
function getStorageStatePath(email: string): string
// Returns: packages/e2e-tests/.playwright-ms-auth/state-<email>.json
ConfigHelper
Nudi pomoć za konfiguraciju, kao što je provjera je li predmemorirano stanje pohrane isteklo.
class ConfigHelper {
static checkStorageStateExpiration(
statePath: string
): { expired: boolean; expiresOn?: number }
}
Lokator uslužni programi
Načini pomoći za pronalaženje Power Apps unutar okvira iframes.
LocatorUtils
Statički načini pronalaženja kontrola aplikacije platna i stavki galerije po nazivu.
class LocatorUtils {
static getByControlName(frame: FrameLocator, controlName: string): Locator
static getGalleryItem(frame: FrameLocator, titleText: string): Locator
}
Vrsta izvoza
Izvoz svih vrsta iz korijenskog paketa:
import {
AppProvider,
AppType,
AppLaunchMode,
AppLaunchOptions,
ModelDrivenAppPage,
GridComponent,
FormComponent,
CommandingComponent,
CanvasAppPage,
GenUxPage,
buildCanvasAppUrlFromEnv,
getStorageStatePath,
ConfigHelper,
LocatorUtils,
} from 'power-platform-playwright-toolkit';