Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Denne Power Platform Playwright-verktøysettet API-referanse dokumenterer offentlige klasser, metoder og typer du kan bruke til å automatisere ende-til-ende-testing av lerrets- og modelldrevne apper.
AppProvider
Inngangspunkt for å starte Power Platform-apper. Start én gang per test, og ring launch()deretter .
class AppProvider {
constructor(page: Page, context: BrowserContext)
launch(options: AppLaunchOptions): Promise<void>
getModelDrivenAppPage(): ModelDrivenAppPage
getCanvasAppPage(): CanvasAppPage
getGenUxPage(): GenUxPage
}
AppLaunchOptions
Alternativer som sendes til for å AppProvider.launch() konfigurere hvilken app som skal åpnes og hvordan.
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
Angir hvilken type Power Platform-app som skal startes.
enum AppType {
Canvas = 'canvas',
ModelDriven = 'model-driven',
}
AppLaunchMode
Bestemmer om appen åpnes i avspillingsmodus eller redigeringsmodus.
enum AppLaunchMode {
Play = 'play',
Edit = 'edit',
}
ModelDrivenAppPage
Returnert av AppProvider.getModelDrivenAppPage(). Gir tilgang til navigasjon og komponenter.
class ModelDrivenAppPage {
readonly grid: GridComponent
readonly form: FormComponent
readonly commanding: CommandingComponent
navigateToGridView(entityLogicalName: string): Promise<void>
navigateToFormView(entityLogicalName: string): Promise<void>
}
GridComponent
Bryter ag-rutenettet som brukes i modelldrevne listevisninger. Tilgang via 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
Alternativer for å identifisere hvilken post som skal åpnes fra rutenettet.
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
Bryter Dynamics 365 kjøretid for skjema. Tilgang via 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()
Kjører tilfeldig kode i nettleserens skjemakontekst med full tilgang til Xrm Client API:
const value = await mda.form.execute(
(ctx) => ctx.getAttribute('nwind_ordernumber')?.getValue()
);
Se API-testing gjennom skjemakontekst for detaljert bruk.
CommandingComponent
Bryter kommandolinjen for modelldrevne apper. Tilgang via ModelDrivenAppPage.commanding.
class CommandingComponent {
clickButton(ariaLabel: string): Promise<void>
clickMoreCommands(): Promise<void>
}
CanvasAppPage
Returnert av AppProvider.getCanvasAppPage(). Gir lerretet iframe frame locator.
class CanvasAppPage {
getFrame(): FrameLocator
waitForLoad(controlName?: string): Promise<void>
}
GenUxPage
Returnert av AppProvider.getGenUxPage(). Gir samhandlinger med Power Apps Utviklerportal GenUX AI designer for å opprette, generere, inspisere og publisere modelldrevne apper fra AI-ledetekster.
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
Viser FrameLocator iframe for UCI Preview. Bruk denne egenskapen til å spørre genererte skjemaelementer direkte:
const input = genUxPage.previewFrame.getByRole('textbox', { name: 'First Name' });
await expect(input).toBeVisible();
GenUxPage.verifyThoughtStreaming()
Ser etter midlertidige GenUX-strømmingsindikatorer, for eksempel tanketekst, Stopp-knapp og Agenttanker. Hver kontroll er best innsats – generering kan fullføres før alle indikatorer vises. Den eneste harde deklarasjonen er at strømming pågår eller "Your page is now generated" er synlig.
GenUxPage.searchAndPlayApp()
Returnerer null når Avspilling er deaktivert (appen er ennå ikke publisert) i stedet for å kaste en feil. Bruk test.skip() ved retur null :
const appPage = await genUxPage.searchAndPlayApp(appName, context);
if (!appPage) test.skip();
Verktøyfunksjoner
Frittstående hjelpefunksjoner for vanlige konfigurasjons- og konfigurasjonsoppgaver.
buildCanvasAppUrlFromEnv
Leser CANVAS_APP_URL fra miljøet:
function buildCanvasAppUrlFromEnv(): string
getStorageStatePath
Returnerer banen til Power Apps lagringsstatusfilen for den angitte e-postmeldingen:
function getStorageStatePath(email: string): string
// Returns: packages/e2e-tests/.playwright-ms-auth/state-<email>.json
ConfigHelper
Gir konfigurasjonshjelpere, for eksempel kontroller om den bufrede lagringstilstanden er utløpt.
class ConfigHelper {
static checkStorageStateExpiration(
statePath: string
): { expired: boolean; expiresOn?: number }
}
Locator-verktøy
Hjelpemetoder for å finne Power Apps kontroller i iframes.
LocatorUtils
Statiske metoder for å finne lerretsappkontroller og gallerielementer etter navn.
class LocatorUtils {
static getByControlName(frame: FrameLocator, controlName: string): Locator
static getGalleryItem(frame: FrameLocator, titleText: string): Locator
}
Typeeksport
Eksporter alle typer fra pakkeroten:
import {
AppProvider,
AppType,
AppLaunchMode,
AppLaunchOptions,
ModelDrivenAppPage,
GridComponent,
FormComponent,
CommandingComponent,
CanvasAppPage,
GenUxPage,
buildCanvasAppUrlFromEnv,
getStorageStatePath,
ConfigHelper,
LocatorUtils,
} from 'power-platform-playwright-toolkit';