Kongsi melalui


Penyepaduan Enjin Ujian dan Penulis Drama (pratonton)

Nota

Ciri pratonton bukan untuk kegunaan pengeluaran dan kefungsian mungkin terbatas. Ciri ini tersedia sebelum keluaran rasmi agar pelanggan boleh mendapat akses awal dan memberikan maklum balas.

Gambaran keseluruhan

Power Apps Test Engine menggunakan Playwright sebagai teknologi automasi penyemak imbas terasnya. Penyepaduan ini menyediakan Test Engine dengan keupayaan ujian yang berkuasa, boleh dipercayai dan merentas penyemak imbas sambil menambah beberapa lapisan abstraksi untuk memudahkan penciptaan ujian untuk Power Platform aplikasi.

Bagaimana Enjin Ujian meningkatkan Penulis Drama

Walaupun Playwright menawarkan keupayaan automasi penyemak imbas yang sangat baik, Test Engine memperluaskan keupayaan ini khusus untuk Power Platform:

Peningkatan Enjin Ujian Description
Abstraksi Peringkat Apl Test Engine berfungsi dengan objek peringkat aplikasi dan bukannya elemen DOM, menjadikan ujian lebih berdaya tahan terhadap perubahan UI
Power Fx Integrasi Test Engine menambah Power Fx sokongan, membolehkan pendekatan kod rendah untuk pengarang ujian
Pengesahan Terbina Dalam Mekanisme Microsoft Entra pengesahan prabina mengendalikan senario capaian bersyarat dan
Dataverse Integrasi Penyepaduan langsung dengan Dataverse membolehkan ujian hujung ke hujung yang komprehensif
Pembekal Khusus Pembekal yang dioptimumkan untuk apl Kanvas dan apl dipacu Model

Pelaksanaan teknikal

Bahagian berikut menerangkan cara Test Engine dibina berdasarkan asas automasi penyemak imbas Playwright dan menyepadukannya dengan Power Platform abstraksi tertentu, membolehkan automasi ujian yang teguh dan boleh diselenggara.

Asas automasi penyemak imbas

Test Engine menggunakan keupayaan teras Playwright untuk automasi penyemak imbas yang konsisten:

  • Sokongan merentas penyemak imbas untuk Chrome, Firefox, dan Microsoft Edge
  • Mekanisme menunggu yang boleh dipercayai yang secara automatik menunggu elemen siap
  • Pemintasan permintaan rangkaian untuk mensimulasikan respons API
  • Alat pengesanan dan penyahpepijatan untuk mendiagnosis kegagalan ujian

Integrasi seni bina Test Engine

  • Lapisan Pembekal: Lapisan pembekal dalam Enjin Ujian antara muka terus dengan API Playwright untuk mengawal tingkah laku penyemak imbas
  • Model Objek: Daripada bekerja dengan elemen DOM mentah, Enjin Ujian memetakan kepada model objek khusus aplikasi
  • Power Fx Lapisan: Langkah ujian yang ditulis ditafsirkan Power Fx dan dilaksanakan melalui lapisan pembekal

Ciri-ciri teknikal utama

Bahagian berikut menyerlahkan ciri teknikal penting yang ditambahkan oleh Test Engine di atas Playwright, termasuk pemilih khusus apl, pengurusan konteks penyemak imbas dan akses terus kepada fungsi Playwright untuk senario lanjutan.

Pemilih khusus apl

Test Engine menggunakan pemilih khusus apl dan bukannya CSS atau XPath pemilih:

# 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();

Pengurusan konteks penyemak imbas

Test Engine menguruskan konteks penyemak imbas untuk menyokong pelbagai senario pengesahan:

# 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

Walaupun Test Engine mengabstraksi banyak interaksi Playwright, terdapat senario di mana mengakses keupayaan Playwright secara langsung boleh menjadi berharga. Test Engine menyediakan beberapa fungsi pratonton yang membolehkan interaksi langsung dengan Playwright dari dalam langkah ujian anda Power Fx .

Menggunakan fungsi Playwright dalam Test Engine

Test Engine termasuk fungsi pratonton berikut yang membolehkan anda menggunakan keupayaan pemilihan elemen Playwright:

Function Description Contoh
Pratonton.Penulis DramaTindakan Laksanakan tindakan pada elemen menggunakan CSS atau pemilih DOM Preview.PlaywrightAction("//button", "click")
Lihat Operasi Tindakan Penulis Drama Biasa
Pratonton.PlaywrightActionValue Laksanakan tindakan yang memerlukan parameter nilai Preview.PlaywrightActionValue("//input[@data-id='1']", "fill", "Hello")
Lihat Operasi Nilai Tindakan Penulis Drama Biasa
Pratonton.Penulis DramaSkrip Laksanakan skrip C# tersuai yang antara muka dengan Playwright Preview.PlaywrightScript("sample.csx")
Lihat Lanjutan: Skrip Penulis Drama Tersuai
Pratonton.Jeda Jeda pelaksanaan ujian dan paparkan Pemeriksa Penulis Drama Preview.Pause()

Nota

Untuk menggunakan fungsi pratonton ini, anda mesti menambah fungsi pratonton pada senarai yang dibenarkan dalam bahagian tetapan ujian anda.

Operasi tindakan Penulis Drama biasa

Operasi berikut boleh dilakukan dengan Preview.PlaywrightAction:

Tindakan Description Contoh
click Pemilihan elemen menggunakan peristiwa klik Preview.PlaywrightAction("//button[@id='submit']", "click")
exists Semak sama ada elemen wujud Preview.PlaywrightAction("//div[@class='error-message']", "exists")
wait Tunggu sehingga elemen tersedia Preview.PlaywrightAction("//table[@data-loading='false']", "wait")

Operasi nilai tindakan penulis drama biasa

Operasi berikut boleh dilakukan dengan Preview.PlaywrightActionValue:

Tindakan Description Contoh
fill Isi medan borang dengan teks Preview.PlaywrightActionValue("//input[@name='search']", "fill", "Product name")
select Pilih pilihan daripada senarai pilihan Preview.PlaywrightActionValue("//select", "select", "Option2")
setAttribute Tetapkan atribut pada elemen Preview.PlaywrightActionValue("//div", "setAttribute", "data-custom='value'")

Bila hendak menggunakan fungsi Playwright langsung

Walaupun abstraksi peringkat aplikasi lebih diutamakan, fungsi Playwright langsung berguna dalam senario ini:

  • Interaksi UI kompleks tidak dilindungi oleh fungsi Enjin Ujian standard
  • Komponen pihak ketiga dalam Power Platform aplikasi yang memerlukan pengendalian khas
  • Penyahpepijatan senario ujian kompleks di mana lebih kawalan diperlukan
  • Pengesahan lanjutan keadaan atau sifat elemen

Contoh: Pendekatan gabungan

Contoh ini menunjukkan menggabungkan abstraksi peringkat apl dengan tindakan Penulis Drama 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 Tersuai

Untuk senario yang sangat khusus, anda boleh mencipta skrip Penulis Drama tersuai:

  1. Cipta .csx fail dengan logik Penulis Drama tersuai anda
  2. Rujukan diperlukan perhimpunan Penulis Drama
  3. Laksanakan struktur kelas yang diperlukan
  4. Panggil skrip daripada langkah ujian 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
    }
}

Nota

Preview.PlaywrightScript hanya dilaksanakan untuk binaan nyahpepijat Test Engine yang dibina daripada sumber, bukan dalam alat yang dikeluarkan pac test run .

Integrasi dengan proses pembangunan

Bahagian berikut menerangkan cara Test Engine dan Playwright boleh digunakan dalam kedua-dua pembangunan tempatan dan persekitaran CI/CD, menyokong pelbagai aliran kerja daripada penyahpepijatan interaktif kepada pelaksanaan saluran paip automatik.

Pembangunan tempatan

Untuk pembangunan tempatan, Test Engine menyediakan persekitaran yang lengkap:

  • Pelaksanaan penyemak imbas tempatan dengan keterlihatan UI
  • Pelaksanaan ujian langkah demi langkah
  • Log dan diagnostik terperinci

Penyepaduan CI/CD

Dalam persekitaran CI/CD, Test Engine boleh menjalankan Playwright dalam mod 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)"

Amalan terbaik

Apabila bekerja dengan penyepaduan Penulis Drama Test Engine:

  • Fokus pada objek peringkat apl dan bukannya elemen DOM
  • Gunakan Power Fx fungsi untuk logik kompleks dan bukannya JavaScript mentah
  • Manfaatkan mekanisme pengesahan terbina dalam
  • Simpan fungsi penulis drama langsung untuk senario di mana abstraksi peringkat aplikasi tidak mencukupi
  • Semak ujian yang dijana untuk mengoptimumkan kebolehbacaan dan penyelenggaraan