Integrasi Test Engine dan Playwright (tidak digunakan lagi)

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:

  1. Buat sebuah .csx file dengan logika Playwright kustom Anda
  2. Referensi rakitan Playwright yang diperlukan
  3. Menerapkan struktur kelas yang diperlukan
  4. 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