Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Note
Mesin Uji tidak digunakan lagi dan akan dihapus dalam rilis mendatang. Gunakan sampel Power Platform Playwright untuk kemampuan otomatisasi pengujian di Power Platform dan layanan Dynamics 365.
Ikhtisar
Power Apps Test Engine menggunakan Playwright sebagai teknologi otomatisasi browser intinya. Integrasi ini memberi Test Engine kemampuan pengujian yang kuat, andal, dan lintas browser sambil menambahkan beberapa lapisan abstraksi untuk menyederhanakan pembuatan pengujian untuk Power Platform aplikasi.
Bagaimana Test Engine menyempurnakan Playwright
Meskipun Playwright menawarkan kemampuan otomatisasi browser yang sangat baik, Test Engine memperluas kemampuan ini secara khusus untuk Power Platform:
| Peningkatan Mesin Uji | Deskripsi |
|---|---|
| Abstraksi Tingkat Aplikasi | Test Engine bekerja dengan objek tingkat aplikasi, bukan elemen DOM, membuat pengujian lebih tahan terhadap perubahan UI |
| Integrasi Power Fx | Test Engine menambahkan dukungan untuk Power Fx, memungkinkan pendekatan low-code dalam penulisan pengujian |
| Otentikasi Bawaan | Mekanisme autentikasi bawaan menangani skenario akses Microsoft Entra dan akses bersyarat |
| Dataverse Integrasi | Integrasi langsung dengan Dataverse memungkinkan pengujian end-to-end yang komprehensif |
| Penyedia Khusus | Penyedia yang dioptimalkan untuk aplikasi Canvas dan aplikasi berbasis Model |
Implementasi teknis
Bagian berikut menjelaskan bagaimana Test Engine membangun fondasi otomatisasi browser Playwright dan mengintegrasikannya dengan abstraksi spesifik Power Platform, memungkinkan otomatisasi pengujian yang tangguh dan mudah dipelihara.
Fondasi otomatisasi peramban
Test Engine menggunakan kemampuan inti Playwright untuk otomatisasi browser yang konsisten:
- dukungan lintas browser untuk Chrome, Firefox, dan Microsoft Edge
- Mekanisme penungguan andal yang secara otomatis menunggu elemen siap
- Pemantauan permintaan jaringan untuk menyimulasikan respons API
- Alat pelacakan dan debugging untuk mendiagnosis kegagalan pengujian
Integrasi arsitektur Test Engine
- Lapisan Penyedia: Lapisan penyedia di Test Engine berinteraksi langsung dengan API Playwright untuk mengontrol perilaku browser
- Model Objek: Alih-alih bekerja dengan elemen DOM mentah, Test Engine memetakan ke model objek khusus aplikasi
- Lapisan Power Fx: Langkah-langkah pengujian yang ditulis dalam Power Fx ditafsirkan dan dijalankan melalui lapisan penyedia
Fitur teknis utama
Bagian berikut menyoroti fitur teknis penting yang ditambahkan Test Engine di atas Playwright, termasuk pemilih khusus aplikasi, manajemen konteks browser, dan akses langsung ke fungsi Playwright untuk skenario lanjutan.
Pemilih khusus aplikasi
Test Engine menggunakan pemilih khusus aplikasi, bukan pemilih CSS atau XPath.
# Test Engine (using app-level selectors)
- testSteps: |
Select(Button1)
# Equivalent in raw Playwright (using DOM selectors)
Select(Button1)
# page.locator('div[data-control-name="Button1"]').click();
Manajemen konteks browser
Test Engine mengelola konteks browser untuk mendukung berbagai skenario autentikasi:
# Test Engine handles browser context automatically
pac test run `
--provider canvas `
--test-plan-file testplan.te.yaml `
--tenant $tenantId `
--environment-id $environmentId
Fungsi Playwright Langsung
Meskipun Test Engine mengabstraksi banyak interaksi Playwright, ada skenario di mana mengakses kemampuan Playwright secara langsung bisa berharga. Test Engine menyediakan beberapa fungsi pratinjau yang memungkinkan interaksi langsung dengan Playwright dari dalam langkah pengujian Power Fx Anda.
Menggunakan fungsi Playwright di Test Engine
Test Engine menyertakan fungsi pratinjau berikut yang memungkinkan Anda menerapkan kemampuan pemilihan elemen Playwright:
| Function | Deskripsi | Example |
|---|---|---|
| Pratinjau.PlaywrightAction | Menjalankan tindakan pada elemen menggunakan CSS atau pemilih DOM | Preview.PlaywrightAction("//button", "click") Lihat Operasi Tindakan Playwright Umum |
| Pratinjau.PlaywrightActionValue | Menjalankan tindakan yang memerlukan parameter nilai | Preview.PlaywrightActionValue("//input[@data-id='1']", "fill", "Hello") Lihat Operasi Nilai Tindakan Playwright Umum |
| Pratinjau.PlaywrightScript | Eksekusi skrip C# kustom yang berinteraksi dengan Playwright | Preview.PlaywrightScript("sample.csx") Lihat Tingkat Lanjut: Skrip Playwright Kustom |
| Preview.Pause | Jeda pelaksanaan pengujian dan tampilkan Playwright Inspector | Preview.Pause() |
Note
Untuk menggunakan fungsi pratinjau ini, Anda harus menambahkan fungsi pratinjau ke daftar yang diizinkan di bagian pengaturan pengujian Anda.
Operasi tindakan Playwright Umum
Operasi berikut dapat dilakukan dengan Preview.PlaywrightAction:
| Action | Deskripsi | Example |
|---|---|---|
click |
Pemilihan elemen menggunakan peristiwa klik | Preview.PlaywrightAction("//button[@id='submit']", "click") |
exists |
Memeriksa apakah ada elemen | Preview.PlaywrightAction("//div[@class='error-message']", "exists") |
wait |
Tunggu elemen tersedia | Preview.PlaywrightAction("//table[@data-loading='false']", "wait") |
Operasi nilai tindakan Playwright Umum
Operasi berikut dapat dilakukan dengan Preview.PlaywrightActionValue:
| Action | Deskripsi | Example |
|---|---|---|
fill |
Mengisi bidang formulir dengan teks | Preview.PlaywrightActionValue("//input[@name='search']", "fill", "Product name") |
select |
Pilih opsi dari daftar pilihan | Preview.PlaywrightActionValue("//select", "select", "Option2") |
setAttribute |
Mengatur atribut pada elemen | Preview.PlaywrightActionValue("//div", "setAttribute", "data-custom='value'") |
Kapan menggunakan fungsi Playwright langsung
Meskipun abstraksi tingkat aplikasi lebih disukai, fungsi penulis drama langsung berguna dalam skenario berikut:
- Interaksi UI kompleks yang tidak tercakup dalam fungsi Test Engine standar
- Komponen pihak ketiga dalam aplikasi Power Platform yang memerlukan penanganan khusus
- Penelusuran kesalahan skenario pengujian kompleks di mana diperlukan kontrol lebih besar
- Validasi lanjutan status atau properti elemen
Contoh: Pendekatan gabungan
Contoh ini menunjukkan menggabungkan abstraksi tingkat aplikasi dengan tindakan Playwright langsung:
testSteps: |
# Use app-level abstraction for Power Apps control
Select(SubmitButton);
# Use direct Playwright action for a third-party component
Preview.PlaywrightAction("//div[@class='custom-calendar']//button[@data-day='15']", "click");
# Wait for a specific condition using Playwright
Preview.PlaywrightAction("//div[@data-status='complete']", "wait");
# Resume using app-level abstractions
Assert(Label1.Text = "Submission Complete");
Tingkat Lanjut: Skrip Playwright Kustom
Untuk skenario yang sangat khusus, Anda dapat membuat skrip Playwright kustom:
- Buat sebuah
.csxfile dengan logika Playwright kustom Anda - Referensi rakitan Playwright yang diperlukan
- Menerapkan struktur kelas yang diperlukan
- Panggil skrip dari langkah pengujian Anda
// sample.csx
#r "Microsoft.Playwright.dll"
#r "Microsoft.Extensions.Logging.dll"
using Microsoft.Playwright;
using Microsoft.Extensions.Logging;
public class PlaywrightScript {
public static void Run(IBrowserContext context, ILogger logger) {
Execute(context, logger).Wait();
}
public static async Task Execute(IBrowserContext context, ILogger logger) {
var page = context.Pages.First();
// Custom Playwright logic here
}
}
Note
Preview.PlaywrightScript hanya diimplementasikan untuk versi debug dari Test Engine yang dibangun dari sumber, bukan pada alat versi rilis pac test run.
Integrasi dengan proses pengembangan
Bagian berikut menjelaskan bagaimana Test Engine dan Playwright dapat digunakan di pengembangan lokal dan lingkungan CI/CD, mendukung berbagai alur kerja mulai dari penelusuran kesalahan interaktif hingga eksekusi alur otomatis.
Pengembangan lokal
Untuk pengembangan lokal, Test Engine menyediakan lingkungan yang lengkap:
- Eksekusi browser lokal dengan visibilitas antarmuka pengguna
- Eksekusi pengujian langkah demi langkah
- Log dan diagnostik terperinci
Integrasi CI/CD
Di lingkungan CI/CD, Test Engine dapat menjalankan Playwright dalam mode tanpa kepala:
# Example Azure DevOps pipeline step
- task: PowerShell@2
displayName: 'Run Test Engine Tests'
inputs:
script: |
pac test run `
--provider canvas `
--test-plan-file "$(Build.SourcesDirectory)/tests/testplan.te.yaml" `
--tenant "$(TenantId)" `
--environment-id "$(EnvironmentId)"
Praktik terbaik
Saat bekerja dengan integrasi Playwright dalam Test Engine:
- Berfokus pada objek tingkat aplikasi, bukan elemen DOM
- Gunakan Power Fx fungsi untuk logika kompleks daripada JavaScript mentah
- Manfaatkan mekanisme autentikasi bawaan
- Gunakan fungsi Playwright secara langsung dalam skenario ketika abstraksi pada tingkat aplikasi tidak mencukupi
- Tinjau tes yang dihasilkan untuk mengoptimalkan keterbacaan dan pemeliharaan