Piezīmes
Lai piekļūtu šai lapai, ir nepieciešama autorizācija. Varat mēģināt pierakstīties vai mainīt direktorijus.
Lai piekļūtu šai lapai, ir nepieciešama autorizācija. Varat mēģināt mainīt direktorijus.
Šī Power Platform Playwright rīkkopas API atsauce dokumentē publiskās klases, metodes un tipus, kurus varat izmantot, lai automatizētu audekla un modeļa vadītu programmu pilnīgu testēšanu.
AppProvider
Ieejas punkts Power Platform programmu palaišanai. Instancējiet vienu reizi testā, pēc tam zvaniet launch().
class AppProvider {
constructor(page: Page, context: BrowserContext)
launch(options: AppLaunchOptions): Promise<void>
getModelDrivenAppPage(): ModelDrivenAppPage
getCanvasAppPage(): CanvasAppPage
getGenUxPage(): GenUxPage
}
AppLaunchOptions
Opcijas nodotas AppProvider.launch() , lai konfigurētu, kuru programmu atvērt un kā.
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
Norāda palaižamās Power Platform programmas tipu.
enum AppType {
Canvas = 'canvas',
ModelDriven = 'model-driven',
}
AppLaunchMode
Nosaka, vai programma tiek atvērta atskaņošanas vai rediģēšanas režīmā.
enum AppLaunchMode {
Play = 'play',
Edit = 'edit',
}
ModelDrivenAppPage
Atgrieza .AppProvider.getModelDrivenAppPage() Nodrošina navigāciju un piekļuvi komponentiem.
class ModelDrivenAppPage {
readonly grid: GridComponent
readonly form: FormComponent
readonly commanding: CommandingComponent
navigateToGridView(entityLogicalName: string): Promise<void>
navigateToFormView(entityLogicalName: string): Promise<void>
}
GridComponent
Aplauza AG režģi , kas tiek izmantots modeļa vadītos saraksta skatos. Pieejams, izmantojot 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
Opcijas, lai identificētu, kuru ierakstu atvērt no režģa.
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
Aizpilda Dynamics 365 veidlapas izpildlaiku. Pieejams, izmantojot 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()
Palaiž patvaļīgu kodu pārlūkprogrammas veidlapas kontekstā ar pilnu piekļuvi Xrm klienta API:
const value = await mda.form.execute(
(ctx) => ctx.getAttribute('nwind_ordernumber')?.getValue()
);
Detalizētu lietojumu skatiet sadaļā API testēšana, izmantojot veidlapas kontekstu .
CommandingComponent
Tiek aplauzta modeļa vadītas programmas komandjosla. Pieejams, izmantojot ModelDrivenAppPage.commanding.
class CommandingComponent {
clickButton(ariaLabel: string): Promise<void>
clickMoreCommands(): Promise<void>
}
CanvasAppPage
Atgrieza .AppProvider.getCanvasAppPage() Nodrošina audekla iframe rāmja meklētāju.
class CanvasAppPage {
getFrame(): FrameLocator
waitForLoad(controlName?: string): Promise<void>
}
GenUxPage
Atgrieza .AppProvider.getGenUxPage() Nodrošina mijiedarbību ar Power Apps Maker portāla GenUX AI noformētāju, lai izveidotu, ģenerētu, pārbaudītu un publicētu modeļa vadītas programmas no AI uzvednēm.
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
Atklāj FrameLocator UCI priekšskatījuma iframe. Izmantojiet šo rekvizītu, lai tieši vaicātu ģenerētos veidlapas elementus:
const input = genUxPage.previewFrame.getByRole('textbox', { name: 'First Name' });
await expect(input).toBeVisible();
GenUxPage.verifyThoughtStreaming()
Pārbauda īslaicīgus GenUX straumēšanas indikatorus, piemēram, domu tekstu, apturēšanas pogu un aģenta domas. Katra pārbaude ir vislabākā - ģenerēšana var tikt pabeigta, pirms parādās visi rādītāji. Vienīgais stingrais apgalvojums ir tas, ka straumēšana notiek vai "Your page is now generated" ir redzama.
GenUxPage.searchAndPlayApp()
Atgriežas null , ja atskaņošana ir atspējota (lietotne vēl nav publicēta), nevis tiek parādīta kļūda. Izmantošana test.skip()null atpakaļ:
const appPage = await genUxPage.searchAndPlayApp(appName, context);
if (!appPage) test.skip();
Utilītu funkcijas
Savrupas palīga funkcijas bieži sastopamiem iestatīšanas un konfigurēšanas uzdevumiem.
buildCanvasAppUrlFromEnv
Lasāms no vides CANVAS_APP_URL :
function buildCanvasAppUrlFromEnv(): string
getStorageStatePath
Atgriež ceļu uz Power Apps glabāšanas stāvokļa failu norādītajam e-pasta ziņojumam:
function getStorageStatePath(email: string): string
// Returns: packages/e2e-tests/.playwright-ms-auth/state-<email>.json
ConfigHelper
Nodrošina konfigurācijas palīglīdzekļus, piemēram, pārbauda, vai kešatmiņas krātuves statuss ir beidzies.
class ConfigHelper {
static checkStorageStateExpiration(
statePath: string
): { expired: boolean; expiresOn?: number }
}
Lokatora komunālie pakalpojumi
Palīgmetodes Power Apps vadīklu atrašanai iframes.
LocatorUtils
Statiskās metodes audekla programmas vadīklu un galerijas vienumu atrašanai pēc nosaukuma.
class LocatorUtils {
static getByControlName(frame: FrameLocator, controlName: string): Locator
static getGalleryItem(frame: FrameLocator, titleText: string): Locator
}
Veids eksports
Eksportējiet visus veidus no pakotnes saknes:
import {
AppProvider,
AppType,
AppLaunchMode,
AppLaunchOptions,
ModelDrivenAppPage,
GridComponent,
FormComponent,
CommandingComponent,
CanvasAppPage,
GenUxPage,
buildCanvasAppUrlFromEnv,
getStorageStatePath,
ConfigHelper,
LocatorUtils,
} from 'power-platform-playwright-toolkit';