Poznámka
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete sa skúsiť prihlásiť alebo zmeniť adresáre.
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete skúsiť zmeniť adresáre.
Toto rozhranie API platformy Playwright platformy obsahuje referenčné dokumenty o verejných triedach, metódach a typoch, ktoré môžete použiť na automatizáciu komplexného testovania plátnových aplikácií a modelom riadených aplikácií.
AppProvider
Vstupný bod na spustenie aplikácií Power Platformy. Vytvorte inštanciu raz za test a potom zavolajte .launch()
class AppProvider {
constructor(page: Page, context: BrowserContext)
launch(options: AppLaunchOptions): Promise<void>
getModelDrivenAppPage(): ModelDrivenAppPage
getCanvasAppPage(): CanvasAppPage
getGenUxPage(): GenUxPage
}
AppLaunchOptions
Možnosti prenesené do AppProvider.launch() časti Konfigurujte, ktorú aplikáciu chcete otvoriť a ako.
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
Určuje typ aplikácie Power Platform, ktorá sa má spustiť.
enum AppType {
Canvas = 'canvas',
ModelDriven = 'model-driven',
}
AppLaunchMode
Určuje, či sa aplikácia otvorí v režime prehrávania alebo režime úprav.
enum AppLaunchMode {
Play = 'play',
Edit = 'edit',
}
ModelDrivenAppPage
Vrátené funkciou AppProvider.getModelDrivenAppPage(). Poskytuje prístup k navigácii a súčasti.
class ModelDrivenAppPage {
readonly grid: GridComponent
readonly form: FormComponent
readonly commanding: CommandingComponent
navigateToGridView(entityLogicalName: string): Promise<void>
navigateToFormView(entityLogicalName: string): Promise<void>
}
GridComponent
Zalomí mriežku AG používanú v zobrazeniach zoznamu riadených modelom. Prístupné prostredníctvom 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 na určenie záznamu, ktorý sa má otvoriť v mriežke.
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
Zalomí čas runtime formulára Dynamics 365. Prístupné prostredníctvom 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()
Spustí ľubovoľný kód v kontexte formulára prehliadača s úplným prístupom k rozhraniu Xrm Client API:
const value = await mda.form.execute(
(ctx) => ctx.getAttribute('nwind_ordernumber')?.getValue()
);
Podrobné použitie nájdete v téme Testovanie rozhrania API prostredníctvom kontextu formulára .
CommandingComponent
Zalomí panel príkazov modelom riadenej aplikácie. Prístupné prostredníctvom ModelDrivenAppPage.commanding.
class CommandingComponent {
clickButton(ariaLabel: string): Promise<void>
clickMoreCommands(): Promise<void>
}
CanvasAppPage
Vrátené funkciou AppProvider.getCanvasAppPage(). Poskytuje lokalizáciu rámu iframe na plátne.
class CanvasAppPage {
getFrame(): FrameLocator
waitForLoad(controlName?: string): Promise<void>
}
GenUxPage
Vrátené funkciou AppProvider.getGenUxPage(). Poskytuje interakcie s návrhárom služby Power Apps Maker Portal GenUX AI na vytváranie, generovanie, kontrolu a publikovanie modelom riadených aplikácií z výziev AI.
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
Sprístupňuje FrameLocator hodnotu pre iframe ukážky UCI. Pomocou tejto vlastnosti môžete priamo dotazovať vygenerované prvky formulára:
const input = genUxPage.previewFrame.getByRole('textbox', { name: 'First Name' });
await expect(input).toBeVisible();
GenUxPage.verifyThoughtStreaming()
Kontroluje prechodné indikátory streamovania GenUX, ako je napríklad myšlienkový text, tlačidlo Stop a myšlienky Agenta. Každá kontrola je maximálne úsilie – generovanie sa môže dokončiť ešte predtým, ako sa zobrazia všetky indikátory. Jediným pevným kontrolným výrazom je, že buď streamovanie prebieha, alebo "Your page is now generated" je viditeľné.
GenUxPage.searchAndPlayApp()
Vráti hodnotu null , keď je funkcia Prehrať zakázaná (aplikácia ešte nie je publikovaná) namiesto vyvolania chyby. Použiť test.skip() pri vrátení null :
const appPage = await genUxPage.searchAndPlayApp(appName, context);
if (!appPage) test.skip();
Pomocné funkcie
Samostatné pomocné funkcie pre bežné úlohy nastavenia a konfigurácie.
buildCanvasAppUrlFromEnv
Číta CANVAS_APP_URL z prostredia:
function buildCanvasAppUrlFromEnv(): string
getStorageStatePath
Vráti cestu k Power Apps súboru stavu úložiska pre daný e-mail:
function getStorageStatePath(email: string): string
// Returns: packages/e2e-tests/.playwright-ms-auth/state-<email>.json
ConfigHelper
Poskytuje pomocné služby konfigurácie, ako napríklad kontrolu uplynutia platnosti stavu úložiska vo vyrovnávacej pamäti.
class ConfigHelper {
static checkStorageStateExpiration(
statePath: string
): { expired: boolean; expiresOn?: number }
}
Locator utilities
Pomocné metódy na vyhľadanie ovládacích prvkov Power Apps v rámci prvkov iframe.
LocatorUtils
Statické metódy na vyhľadanie ovládacích prvkov aplikácie plátna a položiek galérie podľa názvu.
class LocatorUtils {
static getByControlName(frame: FrameLocator, controlName: string): Locator
static getGalleryItem(frame: FrameLocator, titleText: string): Locator
}
Export typu
Exportujte všetky typy z koreňa balíka:
import {
AppProvider,
AppType,
AppLaunchMode,
AppLaunchOptions,
ModelDrivenAppPage,
GridComponent,
FormComponent,
CommandingComponent,
CanvasAppPage,
GenUxPage,
buildCanvasAppUrlFromEnv,
getStorageStatePath,
ConfigHelper,
LocatorUtils,
} from 'power-platform-playwright-toolkit';