Bagikan melalui


Integrasi Test Engine dan Playwright (pratinjau)

Catatan

Fitur pratinjau tidak dibuat untuk penggunaan produksi dan mungkin memiliki fungsionalitas yang dibatasi. Fitur ini tersedia sebelum rilis resmi agar pelanggan bisa memperoleh akses awal dan memberikan tanggapan.

Gambaran Umum

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 Description
Abstraksi Tingkat Aplikasi Test Engine bekerja dengan objek tingkat aplikasi, bukan elemen DOM, membuat pengujian lebih tahan terhadap perubahan UI
Power Fx Integrasi Test Engine menambahkan Power Fx dukungan, memungkinkan pendekatan low-code untuk penulisan pengujian
Otentikasi Bawaan Menangani Microsoft Entra mekanisme autentikasi bawaan dan skenario 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 dibangun di atas fondasi otomatisasi browser Playwright dan mengintegrasikannya dengan Power Platform abstraksi tertentu, memungkinkan otomatisasi pengujian yang kuat dan dapat dipelihara.

Fondasi otomatisasi browser

Test Engine menggunakan kemampuan inti Playwright untuk otomatisasi browser yang konsisten:

  • Dukungan lintas browser untuk Chrome, Firefox, dan Microsoft Edge
  • Mekanisme tunggu andal yang secara otomatis menunggu elemen siap
  • Intersepsi permintaan jaringan untuk mensimulasikan respons API
  • Alat pelacakan dan penelusuran kesalahan 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
  • Power Fx Lapisan: Langkah-langkah pengujian yang ditulis ditafsirkan Power Fx 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 CSS pemilih 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 Penulis Drama 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 Anda Power Fx .

Menggunakan fungsi Playwright di Test Engine

Test Engine menyertakan fungsi pratinjau berikut yang memungkinkan Anda menerapkan kemampuan pemilihan elemen Playwright:

Function Description Contoh
Pratinjau.Penulis DramaAksi Menjalankan tindakan pada elemen menggunakan CSS atau pemilih DOM Preview.PlaywrightAction("//button", "click")
Lihat Operasi Aksi Penulis Drama Umum
Pratinjau.PlaywrightActionValue Menjalankan tindakan yang memerlukan parameter nilai Preview.PlaywrightActionValue("//input[@data-id='1']", "fill", "Hello")
Lihat Operasi Nilai Aksi Penulis Drama Umum
Pratinjau.Penulis DramaSkrip Eksekusi skrip C# kustom yang berinteraksi dengan Playwright Preview.PlaywrightScript("sample.csx")
Lihat Lanjutan: Skrip Penulis Drama Kustom
Pratinjau.Jeda Jeda eksekusi pengujian dan tampilkan Inspektur Penulis Drama Preview.Pause()

Catatan

Untuk menggunakan fungsi pratinjau ini, Anda harus menambahkan fungsi pratinjau ke daftar yang diizinkan di bagian pengaturan pengujian Anda.

Operasi aksi Penulis Drama Umum

Operasi berikut dapat dilakukan dengan Preview.PlaywrightAction:

Tindakan Description Contoh
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 aksi Playwright umum

Operasi berikut dapat dilakukan dengan Preview.PlaywrightActionValue:

Tindakan Description Contoh
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 penulis drama 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 Power Platform aplikasi yang memerlukan penanganan khusus
  • Men-debug skenario pengujian kompleks di mana diperlukan lebih banyak kontrol
  • 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");

Lanjutan: Skrip Penulis Drama Kustom

Untuk skenario yang sangat khusus, Anda dapat membuat skrip Playwright kustom:

  1. Buat .csx file dengan logika Playwright kustom Anda
  2. Referensi yang diperlukan Rakitan Playwright
  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
    }
}

Catatan

Preview.PlaywrightScript hanya diimplementasikan untuk build debug Test Engine yang dibuat dari sumber, bukan di alat yang dirilis 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.

Pembangunan lokal

Untuk pengembangan lokal, Test Engine menyediakan lingkungan yang lengkap:

  • Eksekusi browser lokal dengan visibilitas UI
  • 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 Test Engine:

  • Berfokus pada objek tingkat aplikasi, bukan elemen DOM
  • Gunakan Power Fx fungsi untuk logika kompleks daripada JavaScript mentah
  • Manfaatkan mekanisme autentikasi bawaan
  • Cadangkan fungsi Playwright langsung untuk skenario di mana abstraksi tingkat aplikasi tidak mencukupi
  • Tinjau pengujian yang dihasilkan untuk mengoptimalkan keterbacaan dan pemeliharaan