Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
Power Platform Playwright toolkit APIaren erreferentzia honek klase publikoak, metodoak eta motak dokumentatzen ditu, mihiseen eta ereduetan oinarritutako aplikazioen amaierako probak automatizatzeko erabil ditzakezunak.
AppProvider
Power Platform aplikazioak abiarazteko sarrera puntua. Instantiatu behin proba bakoitzeko, eta gero deitu launch().
class AppProvider {
constructor(page: Page, context: BrowserContext)
launch(options: AppLaunchOptions): Promise<void>
getModelDrivenAppPage(): ModelDrivenAppPage
getCanvasAppPage(): CanvasAppPage
getGenUxPage(): GenUxPage
}
AppLaunchOptions
Aukerak pasatu dira AppProvider.launch() zein aplikazio ireki eta nola konfiguratzeko.
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
Abiarazi beharreko Power Platform aplikazio mota zehazten du.
enum AppType {
Canvas = 'canvas',
ModelDriven = 'model-driven',
}
AppLaunchMode
Aplikazioa erreproduzitzeko moduan edo editatzeko moduan irekiko den zehazten du.
enum AppLaunchMode {
Play = 'play',
Edit = 'edit',
}
ModelDrivenAppPage
itzuli da AppProvider.getModelDrivenAppPage(). Nabigazioa eta osagaien sarbidea eskaintzen ditu.
class ModelDrivenAppPage {
readonly grid: GridComponent
readonly form: FormComponent
readonly commanding: CommandingComponent
navigateToGridView(entityLogicalName: string): Promise<void>
navigateToFormView(entityLogicalName: string): Promise<void>
}
GridComponent
Ereduan oinarritutako zerrenda-ikuspegietan erabilitako AG sareta itzulbiratzen du. Bidez ModelDrivenAppPage.gridsartuta.
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
Saretik ireki beharreko erregistroa zein den identifikatzeko aukerak.
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
Dynamics 365 inprimakiaren exekuzio-denbora itzultzen du. Bidez ModelDrivenAppPage.formsartuta.
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()
Kode arbitrarioa exekutatzen du arakatzailearen inprimakiaren testuinguruan, Xrm bezeroaren APIrako sarbide osoarekin:
const value = await mda.form.execute(
(ctx) => ctx.getAttribute('nwind_ordernumber')?.getValue()
);
Ikusi API probak inprimakiaren testuinguruan erabilera zehatza lortzeko.
CommandingComponent
Ereduan oinarritutako aplikazioaren komando-barra itzulbiratzen du. Bidez ModelDrivenAppPage.commandingsartuta.
class CommandingComponent {
clickButton(ariaLabel: string): Promise<void>
clickMoreCommands(): Promise<void>
}
CanvasAppPage
itzuli da AppProvider.getCanvasAppPage(). Mihisearen iframe fotogramen lokalizatzailea eskaintzen du.
class CanvasAppPage {
getFrame(): FrameLocator
waitForLoad(controlName?: string): Promise<void>
}
GenUxPage
itzuli da AppProvider.getGenUxPage(). Power Apps Maker Portal GenUX AI diseinatzailearekin elkarrekintzak eskaintzen ditu AI gonbidapenetatik ereduetan oinarritutako aplikazioak sortzeko, sortzeko, ikuskatzeko eta argitaratzeko.
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
UCIren aurrebistaren FrameLocator iframea bistaratzen du. Erabili propietate hau sortutako inprimaki-elementuak zuzenean kontsultatzeko:
const input = genUxPage.previewFrame.getByRole('textbox', { name: 'First Name' });
await expect(input).toBeVisible();
GenUxPage.verifyThoughtStreaming()
GenUX streaming adierazle iragankorrak egiaztatzen ditu, hala nola pentsamendu-testua, Gelditu botoia eta Agentearen pentsamenduak. Egiaztapen bakoitza ahalegin onena da - adierazle guztiak agertu aurretik amaituko da. Baieztapen gogor bakarra da streaming-a martxan dagoela edo "Your page is now generated" ikusgai dagoela.
GenUxPage.searchAndPlayApp()
Play desgaituta dagoenean itzultzen null da (aplikazioa oraindik argitaratu gabe), errorea bota beharrean. Erabili test.skip() itzulera batean null :
const appPage = await genUxPage.searchAndPlayApp(appName, context);
if (!appPage) test.skip();
Zerbitzu-funtzioak
Laguntzaile funtzio autonomoak konfigurazio eta konfigurazio zeregin arruntetarako.
buildCanvasAppUrlFromEnv
Ingurunearen irakurketa:CANVAS_APP_URL
function buildCanvasAppUrlFromEnv(): string
getStorageStatePath
Emandako mezu elektronikoaren Power Apps biltegiratze-egoeraren fitxategiaren bide-izena itzultzen du:
function getStorageStatePath(email: string): string
// Returns: packages/e2e-tests/.playwright-ms-auth/state-<email>.json
ConfigHelper
Konfigurazio-laguntzaileak eskaintzen ditu, hala nola cachean gordetako biltegiratze-egoera iraungita dagoen ala ez egiaztatzea.
class ConfigHelper {
static checkStorageStateExpiration(
statePath: string
): { expired: boolean; expiresOn?: number }
}
Lokalizatzailearen utilitateak
Power Apps kontrolak iframe-etan kokatzeko metodo laguntzaileak.
LocatorUtils
Oihalezko aplikazioen kontrolak eta galeriako elementuak izenaren arabera aurkitzeko metodo estatikoak.
class LocatorUtils {
static getByControlName(frame: FrameLocator, controlName: string): Locator
static getGalleryItem(frame: FrameLocator, titleText: string): Locator
}
Esportazio motak
Esportatu mota guztiak paketearen errotik:
import {
AppProvider,
AppType,
AppLaunchMode,
AppLaunchOptions,
ModelDrivenAppPage,
GridComponent,
FormComponent,
CommandingComponent,
CanvasAppPage,
GenUxPage,
buildCanvasAppUrlFromEnv,
getStorageStatePath,
ConfigHelper,
LocatorUtils,
} from 'power-platform-playwright-toolkit';