Pastaba.
Prieigai prie šio puslapio reikalingas įgaliojimas. Galite bandyti prisijungti arba pakeisti katalogus.
Prieigai prie šio puslapio reikalingas įgaliojimas. Galite bandyti pakeisti katalogus.
Ši "Power Platform Playwright" įrankių rinkinio API nurodo dokumentus, viešąsias klases, metodus ir tipus, kuriuos galite naudoti norėdami automatizuoti drobės ir modeliu pagrįstų programėlių tikrinimą.
AppProvider
"Power Platform" programų paleidimo įvesties vieta. Sukurkite egzempliorių vieną kartą per testą, tada iškvieskite launch().
class AppProvider {
constructor(page: Page, context: BrowserContext)
launch(options: AppLaunchOptions): Promise<void>
getModelDrivenAppPage(): ModelDrivenAppPage
getCanvasAppPage(): CanvasAppPage
getGenUxPage(): GenUxPage
}
AppLaunchOptions
Perduotos parinktys, kad būtų AppProvider.launch() galima konfigūruoti, kurią programą atidaryti ir kaip.
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
Nurodo "Power Platform" taikomosios programos, kurią norite paleisti, tipą.
enum AppType {
Canvas = 'canvas',
ModelDriven = 'model-driven',
}
AppLaunchMode
Nustatoma, ar programa atidaroma paleidimo, ar redagavimo režimu.
enum AppLaunchMode {
Play = 'play',
Edit = 'edit',
}
ModelDrivenAppPage
Grąžino AppProvider.getModelDrivenAppPage(). Suteikia naršymo ir komponento prieigą.
class ModelDrivenAppPage {
readonly grid: GridComponent
readonly form: FormComponent
readonly commanding: CommandingComponent
navigateToGridView(entityLogicalName: string): Promise<void>
navigateToFormView(entityLogicalName: string): Promise<void>
}
GridComponent
Apvyniojamas AG tinklelis , naudojamas modelio valdomų sąrašo rodiniuose. Pasiekiama per 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
Parinktys, skirtos nustatyti, kurį įrašą atidaryti tinklelyje.
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
Kelia Dynamics 365 formos vykdyklę. Pasiekiama per 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()
Paleidžia savavališką kodą naršyklės formos kontekste su visiška prieiga prie "Xrm Client" API:
const value = await mda.form.execute(
(ctx) => ctx.getAttribute('nwind_ordernumber')?.getValue()
);
Išsamų naudojimą žr. API tikrinimas naudojant formos kontekstą .
CommandingComponent
Kelia modeliu pagrįstos programos komandų juostą. Pasiekiama per ModelDrivenAppPage.commanding.
class CommandingComponent {
clickButton(ariaLabel: string): Promise<void>
clickMoreCommands(): Promise<void>
}
CanvasAppPage
Grąžino AppProvider.getCanvasAppPage(). Suteikia drobės "iframe" rėmelio lokatorių.
class CanvasAppPage {
getFrame(): FrameLocator
waitForLoad(controlName?: string): Promise<void>
}
GenUxPage
Grąžino AppProvider.getGenUxPage(). Pateikia sąveiką su Power Apps maker portal GenUX AI dizaino įrankiu kuriant, generuojant, tikrinant ir publikuojant modeliu pagrįstas programas iš DI raginimų.
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 Atskleidžia "UCI Preview" "iframe". Naudokite šią ypatybę tiesiogiai užklausai apie sugeneruotus formos elementus:
const input = genUxPage.previewFrame.getByRole('textbox', { name: 'First Name' });
await expect(input).toBeVisible();
GenUxPage.verifyThoughtStreaming()
Tikrina, ar nėra trumpalaikių "GenUX" srautinio perdavimo indikatorių, pvz., minčių teksto, stabdymo mygtuko ir agento minčių. Kiekviena patikra yra geriausia – generavimas gali būti baigtas, kol pasirodys visi indikatoriai. Vienintelis griežtas teiginys yra tai, kad vykdomas srautinis perdavimas arba "Your page is now generated" jis matomas.
GenUxPage.searchAndPlayApp()
Grąžina null , kai funkcija Leisti išjungta (programa dar nepublikuota), o ne pateikia klaidą. Naudoti test.skip() grąžinant null :
const appPage = await genUxPage.searchAndPlayApp(appName, context);
if (!appPage) test.skip();
Naudingumo funkcijos
Atskiros pagalbinio priemonės funkcijos įprastoms sąrankos ir konfigūravimo užduotims atlikti.
buildCanvasAppUrlFromEnv
CANVAS_APP_URL Skaito iš aplinkos:
function buildCanvasAppUrlFromEnv(): string
getStorageStatePath
Grąžina nurodyto el. laiško Power Apps saugojimo būsenos failo kelią:
function getStorageStatePath(email: string): string
// Returns: packages/e2e-tests/.playwright-ms-auth/state-<email>.json
ConfigHelper
Pateikia konfigūravimo pagalbinius elementus, pvz., tikrina, ar talpyklos saugyklos būsena nebegalioja.
class ConfigHelper {
static checkStorageStateExpiration(
statePath: string
): { expired: boolean; expiresOn?: number }
}
Locator utilities
Pagalbiniai būdai, kaip rasti Power Apps valdiklius "iFrame".
LocatorUtils
Statiniai drobės programos valdiklių ir galerijos elementų radimo pagal pavadinimą metodai.
class LocatorUtils {
static getByControlName(frame: FrameLocator, controlName: string): Locator
static getGalleryItem(frame: FrameLocator, titleText: string): Locator
}
Tipų eksportavimas
Eksportuoti visus tipus iš šakninio paketo:
import {
AppProvider,
AppType,
AppLaunchMode,
AppLaunchOptions,
ModelDrivenAppPage,
GridComponent,
FormComponent,
CommandingComponent,
CanvasAppPage,
GenUxPage,
buildCanvasAppUrlFromEnv,
getStorageStatePath,
ConfigHelper,
LocatorUtils,
} from 'power-platform-playwright-toolkit';