opomba,
Dostop do te strani zahteva pooblastilo. Poskusite se vpisati alispremeniti imenike.
Dostop do te strani zahteva pooblastilo. Poskusite lahko spremeniti imenike.
Ta programski vmesnik API kompleta orodij Playwright za Power Platform se sklicuje na javne razrede, metode in vrste, s katerimi lahko avtomatizirate končno preskušanje platna in aplikacij, ki jih poganja model.
AppProvider
Vstopna točka za zagon aplikacij platforme Power Platform. Ustvarite enkrat na preskus, nato pa pokličite launch().
class AppProvider {
constructor(page: Page, context: BrowserContext)
launch(options: AppLaunchOptions): Promise<void>
getModelDrivenAppPage(): ModelDrivenAppPage
getCanvasAppPage(): CanvasAppPage
getGenUxPage(): GenUxPage
}
AppLaunchOptions
Podane možnosti za AppProvider.launch() konfiguracijo aplikacije, ki jo želite odpreti in 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
Določa vrsto aplikacije Power Platform, ki jo želite zagnati.
enum AppType {
Canvas = 'canvas',
ModelDriven = 'model-driven',
}
AppLaunchMode
Določa, ali se aplikacija odpre v načinu predvajanja ali načinu urejanja.
enum AppLaunchMode {
Play = 'play',
Edit = 'edit',
}
ModelDrivenAppPage
Vrnil .AppProvider.getModelDrivenAppPage() Omogoča krmarjenje in dostop do komponent.
class ModelDrivenAppPage {
readonly grid: GridComponent
readonly form: FormComponent
readonly commanding: CommandingComponent
navigateToGridView(entityLogicalName: string): Promise<void>
navigateToFormView(entityLogicalName: string): Promise<void>
}
GridComponent
Prelomi mrežo AG, ki se uporablja v pogledih seznama, ki temeljijo na modelu. Dostop prek 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 za določanje zapisa, ki ga želite odpreti v mreži.
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
Prelomi Dynamics 365 izvajanje obrazca. Dostop prek 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()
Zažene poljubno kodo v kontekstu obrazca brskalnika s polnim dostopom do API-ja odjemalca Xrm:
const value = await mda.form.execute(
(ctx) => ctx.getAttribute('nwind_ordernumber')?.getValue()
);
Za podrobno uporabo glejte Preskušanje API-ja prek konteksta obrazca.
CommandingComponent
Prelomi ukazno vrstico aplikacije, ki temelji na modelu. Dostop prek ModelDrivenAppPage.commanding.
class CommandingComponent {
clickButton(ariaLabel: string): Promise<void>
clickMoreCommands(): Promise<void>
}
CanvasAppPage
Vrnil .AppProvider.getCanvasAppPage() Zagotavlja lokator okvirjev iframe na platnu.
class CanvasAppPage {
getFrame(): FrameLocator
waitForLoad(controlName?: string): Promise<void>
}
GenUxPage
Vrnil .AppProvider.getGenUxPage() Zagotavlja interakcije z oblikovalnikom portala Power Apps GenUX AI za ustvarjanje, ustvarjanje, pregledovanje in objavljanje aplikacij, ki temeljijo na modelu, iz pozivov umetne uporabniške izkušnje.
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
Izpostavi za FrameLocator okvir iframe predogleda UCI. To lastnost uporabite za neposredno poizvedbo po ustvarjenih elementih obrazca:
const input = genUxPage.previewFrame.getByRole('textbox', { name: 'First Name' });
await expect(input).toBeVisible();
GenUxPage.verifyThoughtStreaming()
Preveri, ali so na voljo prehodni pretočni indikatorji GenUX, kot so miselno besedilo, gumb Ustavi in Misli posrednika. Vsako preverjanje je najboljša izbira – ustvarjanje se lahko dokonča, preden se prikažejo vsi indikatorji. Edina trditev je, da je pretočni prenos v teku ali pa "Your page is now generated" je viden.
GenUxPage.searchAndPlayApp()
Vrne, null ko je funkcija predvajanja onemogočena (aplikacija še ni objavljena), namesto da prikaže napako. Uporabi test.skip() za null vračilo:
const appPage = await genUxPage.searchAndPlayApp(appName, context);
if (!appPage) test.skip();
Pomožne funkcije
Samostojne funkcije za pomoč pri pogostih opravilih nastavitve in konfiguracije.
buildCanvasAppUrlFromEnv
Bere CANVAS_APP_URL iz okolja:
function buildCanvasAppUrlFromEnv(): string
getStorageStatePath
Vrne pot do datoteke stanja shrambe Power Apps za dano e-pošto:
function getStorageStatePath(email: string): string
// Returns: packages/e2e-tests/.playwright-ms-auth/state-<email>.json
ConfigHelper
Nudi pomoč za konfiguracijo, na primer preverjanje, ali je stanje predpomnjenega prostora za shranjevanje poteklo.
class ConfigHelper {
static checkStorageStateExpiration(
statePath: string
): { expired: boolean; expiresOn?: number }
}
Pripomočki za iskanje
Načini za pomoč pri iskanju kontrolnikov Power Apps v okvirih »iframe«.
LocatorUtils
Statični načini za iskanje kontrolnikov aplikacije za platno in elementov galerije po imenu.
class LocatorUtils {
static getByControlName(frame: FrameLocator, controlName: string): Locator
static getGalleryItem(frame: FrameLocator, titleText: string): Locator
}
Izvoz vrste
Izvozi vse vrste iz korena paketa:
import {
AppProvider,
AppType,
AppLaunchMode,
AppLaunchOptions,
ModelDrivenAppPage,
GridComponent,
FormComponent,
CommandingComponent,
CanvasAppPage,
GenUxPage,
buildCanvasAppUrlFromEnv,
getStorageStatePath,
ConfigHelper,
LocatorUtils,
} from 'power-platform-playwright-toolkit';