Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a Power Platform Playwright eszközkészlet API-referenciadokumentumok nyilvános osztályait, metódusait és típusait ismerteti, amelyekkel automatizálhatja a vászon- és modellalapú alkalmazások végpontok közötti tesztelését.
AppProvider
Belépési pont a Power Platform-alkalmazások elindításához. Példányosítás tesztenként egyszer, majd hívás launch().
class AppProvider {
constructor(page: Page, context: BrowserContext)
launch(options: AppLaunchOptions): Promise<void>
getModelDrivenAppPage(): ModelDrivenAppPage
getCanvasAppPage(): CanvasAppPage
getGenUxPage(): GenUxPage
}
AppLaunchOptions
A megnyíló AppProvider.launch() alkalmazás és a megnyitás módjának konfigurálásához megadott beállítások.
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
Megadja az indítandó Power Platform-alkalmazás típusát.
enum AppType {
Canvas = 'canvas',
ModelDriven = 'model-driven',
}
AppLaunchMode
Meghatározza, hogy az alkalmazás lejátszás módban vagy szerkesztési módban nyílik-e meg.
enum AppLaunchMode {
Play = 'play',
Edit = 'edit',
}
ModelDrivenAppPage
Visszaadta: AppProvider.getModelDrivenAppPage(). Navigációt és összetevő-hozzáférést biztosít.
class ModelDrivenAppPage {
readonly grid: GridComponent
readonly form: FormComponent
readonly commanding: CommandingComponent
navigateToGridView(entityLogicalName: string): Promise<void>
navigateToFormView(entityLogicalName: string): Promise<void>
}
GridComponent
A modellalapú listanézetekben használt AG Grid körbefuttatása. Elérhető ezen keresztül: 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
A rácsról megnyitni kívánt rekord azonosításának beállításai.
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
Az Dynamics 365 űrlap futtatókörnyezetének körbefuttatása. Elérhető ezen keresztül: 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()
Tetszőleges kódot futtat a böngésző formában, teljes hozzáféréssel az Xrm Client API-hoz:
const value = await mda.form.execute(
(ctx) => ctx.getAttribute('nwind_ordernumber')?.getValue()
);
A részletes használatért tekintse meg az API-tesztelést űrlapkörnyezeten keresztül .
CommandingComponent
Körbefuttatja a modellalapú alkalmazás parancssávját. Elérhető ezen keresztül: ModelDrivenAppPage.commanding.
class CommandingComponent {
clickButton(ariaLabel: string): Promise<void>
clickMoreCommands(): Promise<void>
}
CanvasAppPage
Visszaadta: AppProvider.getCanvasAppPage(). A vászon iframe keretének lokátorát biztosítja.
class CanvasAppPage {
getFrame(): FrameLocator
waitForLoad(controlName?: string): Promise<void>
}
GenUxPage
Visszaadta: AppProvider.getGenUxPage(). Interakciókat biztosít a Power Apps Maker Portal GenUX AI-tervezőjével a modellalapú alkalmazások AI-kérésekből való létrehozásához, létrehozásához, vizsgálatához és közzétételéhez.
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
Elérhetővé teszi az FrameLocator UCI előzetes verziójú iframe-et. Ezzel a tulajdonságpal közvetlenül lekérdezheti a létrehozott űrlapelemeket:
const input = genUxPage.previewFrame.getByRole('textbox', { name: 'First Name' });
await expect(input).toBeVisible();
GenUxPage.verifyThoughtStreaming()
Ellenőrzi az átmeneti GenUX-streamjelzőket, például a gondolatszöveget, a Leállítás gombot és az Ügynök gondolatait. Minden ellenőrzés a legjobb munkamennyiség – a generálás az összes mutató megjelenése előtt befejeződhet. Az egyetlen kemény állítás az, hogy a streamelés folyamatban van, vagy "Your page is now generated" látható.
GenUxPage.searchAndPlayApp()
Azt adja null vissza, ha a Lejátszás le van tiltva (az alkalmazás még nincs közzétéve) ahelyett, hogy hibát jelez. Használat test.skip() visszatéréskor null :
const appPage = await genUxPage.searchAndPlayApp(appName, context);
if (!appPage) test.skip();
Hasznossági funkciók
Önálló segédfüggvények a gyakori beállítási és konfigurációs feladatokhoz.
buildCanvasAppUrlFromEnv
Olvasás a CANVAS_APP_URL környezetből:
function buildCanvasAppUrlFromEnv(): string
getStorageStatePath
A megadott e-mail Power Apps tárolási állapotfájljának elérési útját adja vissza:
function getStorageStatePath(email: string): string
// Returns: packages/e2e-tests/.playwright-ms-auth/state-<email>.json
ConfigHelper
Konfigurációs segítőket biztosít, például annak ellenőrzését, hogy a gyorsítótárazott tároló állapota lejárt-e.
class ConfigHelper {
static checkStorageStateExpiration(
statePath: string
): { expired: boolean; expiresOn?: number }
}
Lokátor segédprogramok
Segédmetegrálási módszerek Power Apps vezérlők iframe-eken belüli helyének meghatározásához.
LocatorUtils
Statikus metódusok a vászonalapú alkalmazásvezérlők és katalóguselemek név szerinti kereséséhez.
class LocatorUtils {
static getByControlName(frame: FrameLocator, controlName: string): Locator
static getGalleryItem(frame: FrameLocator, titleText: string): Locator
}
Típusexportok
Az összes típus exportálása a csomag gyökeréből:
import {
AppProvider,
AppType,
AppLaunchMode,
AppLaunchOptions,
ModelDrivenAppPage,
GridComponent,
FormComponent,
CommandingComponent,
CanvasAppPage,
GenUxPage,
buildCanvasAppUrlFromEnv,
getStorageStatePath,
ConfigHelper,
LocatorUtils,
} from 'power-platform-playwright-toolkit';