Chia sẻ qua


Tích hợp Test Engine và Playwright (xem trước)

Lưu ý

Các tính năng xem trước không được dùng cho sản xuất và có thể có chức năng bị hạn chế. Những tính năng này khả dụng trước khi có bản phát hành chính thức để khách hàng có thể truy cập sớm và cung cấp phản hồi.

Tổng quan

Power Apps Test Engine sử dụng Playwright làm công nghệ tự động hóa trình duyệt cốt lõi. Sự tích hợp này cung cấp cho Test Engine khả năng thử nghiệm mạnh mẽ, đáng tin cậy và đa trình duyệt, đồng thời thêm nhiều lớp trừu tượng để đơn giản hóa việc tạo thử nghiệm cho Power Platform ứng dụng.

Test Engine nâng cao Playwright như thế nào

Trong khi Playwright cung cấp khả năng tự động hóa trình duyệt tuyệt vời, Test Engine mở rộng các khả năng này cụ thể cho: Power Platform

Cải tiến công cụ thử nghiệm Description
Trừu tượng cấp ứng dụng Công cụ kiểm tra hoạt động với các đối tượng cấp ứng dụng thay vì các thành phần DOM, giúp các bài kiểm tra có khả năng phục hồi tốt hơn với các thay đổi về UI
Power Fx Tích hợp Công cụ kiểm tra bổ sung Power Fx hỗ trợ, cho phép sử dụng phương pháp mã thấp để biên soạn bài kiểm tra
Xác thực tích hợp Cơ chế xác thực được xây dựng sẵn xử lý Microsoft Entra và các tình huống truy cập có điều kiện
Dataverse Tích hợp Tích hợp trực tiếp với Dataverse cho phép thử nghiệm toàn diện từ đầu đến cuối
Nhà cung cấp chuyên biệt Các nhà cung cấp được tối ưu hóa cho ứng dụng Canvasứng dụng dựa trên mô hình

Triển khai kỹ thuật

Các phần sau đây mô tả cách Test Engine xây dựng trên nền tảng tự động hóa trình duyệt của Playwright và tích hợp nó với các khái niệm trừu tượng cụ thể, cho phép tự động hóa thử nghiệm mạnh mẽ và dễ bảo trì. Power Platform

Nền tảng tự động hóa trình duyệt

Test Engine sử dụng các khả năng cốt lõi của Playwright để tự động hóa trình duyệt một cách nhất quán:

  • Hỗ trợ đa trình duyệt cho Chrome, Firefox, và Microsoft Edge
  • Cơ chế chờ đáng tin cậy tự động chờ các phần tử sẵn sàng
  • Chặn yêu cầu mạng để mô phỏng phản hồi API
  • Công cụ theo dõi và gỡ lỗi để chẩn đoán lỗi thử nghiệm

Tích hợp kiến trúc của Test Engine

  • Lớp nhà cung cấp: Lớp nhà cung cấp trong Test Engine giao diện trực tiếp với API Playwright để kiểm soát hành vi của trình duyệt
  • Mô hình đối tượng: Thay vì làm việc với các phần tử DOM thô, Test Engine ánh xạ tới các mô hình đối tượng cụ thể của ứng dụng
  • Power Fx Lớp: Các bước kiểm tra được viết trong Power Fx được diễn giải và thực hiện thông qua lớp nhà cung cấp

Các tính năng kỹ thuật chính

Các phần sau đây nêu bật các tính năng kỹ thuật quan trọng mà Test Engine bổ sung vào Playwright, bao gồm bộ chọn dành riêng cho ứng dụng, quản lý ngữ cảnh trình duyệt và quyền truy cập trực tiếp vào các chức năng Playwright cho các tình huống nâng cao.

Bộ chọn dành riêng cho ứng dụng

Công cụ kiểm tra sử dụng bộ chọn dành riêng cho ứng dụng thay vì bộ chọn CSS hoặc 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();

Quản lý ngữ cảnh trình duyệt

Test Engine quản lý các ngữ cảnh trình duyệt để hỗ trợ nhiều tình huống xác thực khác nhau:

# Test Engine handles browser context automatically
pac test run `
   --provider canvas `
   --test-plan-file testplan.te.yaml `
   --tenant $tenantId `
   --environment-id $environmentId

Chức năng của Nhà viết kịch trực tiếp

Trong khi Test Engine tóm tắt nhiều tương tác của Playwright, vẫn có những trường hợp mà việc truy cập trực tiếp vào các khả năng của Playwright có thể mang lại giá trị. Test Engine cung cấp một số chức năng xem trước cho phép tương tác trực tiếp với Playwright từ trong các bước thử nghiệm của bạn. Power Fx

Sử dụng các hàm Playwright trong Test Engine

Test Engine bao gồm các chức năng xem trước sau đây cho phép bạn áp dụng khả năng lựa chọn thành phần của Playwright:

Hàm Description Ví dụ:
Xem trước.Nhà viết kịchHành động Thực hiện hành động trên các phần tử bằng cách sử dụng CSS hoặc bộ chọn DOM Preview.PlaywrightAction("//button", "click")
Xem Các hoạt động hành động phổ biến của nhà viết kịch
Xem trước.Nhà viết kịchHành độngGiá trị Thực hiện một hành động yêu cầu tham số giá trị Preview.PlaywrightActionValue("//input[@data-id='1']", "fill", "Hello")
Xem Các hoạt động giá trị hành động chung của nhà viết kịch
Xem trước.Kịch bản Thực hiện một tập lệnh C# tùy chỉnh giao diện với Playwright Preview.PlaywrightScript("sample.csx")
Xem Nâng cao: Kịch bản viết kịch tùy chỉnh
Xem trước.Tạm dừng Tạm dừng thực hiện kiểm tra và hiển thị Trình kiểm tra nhà viết kịch Preview.Pause()

Lưu ý

Để sử dụng các chức năng xem trước này, bạn phải thêm các chức năng xem trước vào danh sách được phép trong phần cài đặt thử nghiệm của mình.

Các hoạt động hành động chung của nhà viết kịch

Các thao tác sau đây có thể được thực hiện với Preview.PlaywrightAction:

Hành động Description Ví dụ:
click Lựa chọn một phần tử bằng sự kiện nhấp chuột Preview.PlaywrightAction("//button[@id='submit']", "click")
exists Kiểm tra xem một phần tử có tồn tại không Preview.PlaywrightAction("//div[@class='error-message']", "exists")
wait Chờ cho đến khi một phần tử có sẵn Preview.PlaywrightAction("//table[@data-loading='false']", "wait")

Các hoạt động giá trị hành động của Nhà viết kịch phổ biến

Các thao tác sau đây có thể được thực hiện với Preview.PlaywrightActionValue:

Hành động Description Ví dụ:
fill Điền văn bản vào trường biểu mẫu Preview.PlaywrightActionValue("//input[@name='search']", "fill", "Product name")
select Chọn một tùy chọn từ danh sách lựa chọn Preview.PlaywrightActionValue("//select", "select", "Option2")
setAttribute Đặt thuộc tính cho một phần tử Preview.PlaywrightActionValue("//div", "setAttribute", "data-custom='value'")

Khi nào sử dụng các chức năng Playwright trực tiếp

Mặc dù các khái niệm trừu tượng ở cấp ứng dụng được ưu tiên, các hàm Playwright trực tiếp lại hữu ích trong các trường hợp sau:

  • Tương tác UI phức tạp không được bao phủ bởi các chức năng Test Engine tiêu chuẩn
  • Các thành phần của bên thứ ba trong Power Platform các ứng dụng cần xử lý đặc biệt
  • Gỡ lỗi các tình huống thử nghiệm phức tạp khi cần kiểm soát nhiều hơn
  • Xác thực nâng cao của các trạng thái hoặc thuộc tính của phần tử

Ví dụ: Phương pháp kết hợp

Ví dụ này minh họa việc kết hợp các khái niệm trừu tượng cấp ứng dụng với các hành động Playwright trực tiếp:

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");

Nâng cao: Kịch bản viết kịch bản tùy chỉnh

Đối với các tình huống có tính chuyên môn cao, bạn có thể tạo kịch bản Nhà viết kịch tùy chỉnh:

  1. Tạo một tệp .csx với logic Playwright tùy chỉnh của bạn
  2. Tài liệu tham khảo bắt buộc Các hội đồng nhà viết kịch
  3. Triển khai cấu trúc lớp học cần thiết
  4. Gọi tập lệnh từ các bước kiểm tra của bạn
// 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
    }
}

Lưu ý

Preview.PlaywrightScript chỉ được triển khai cho bản dựng gỡ lỗi của Test Engine được xây dựng từ nguồn, không có trong công cụ pac test run đã phát hành.

Tích hợp với quá trình phát triển

Các phần sau đây mô tả cách Test Engine và Playwright có thể được sử dụng trong cả môi trường phát triển cục bộ và CI/CD, hỗ trợ nhiều quy trình công việc từ gỡ lỗi tương tác đến thực thi đường ống tự động.

Phát triển địa phương

Đối với phát triển cục bộ, Test Engine cung cấp một môi trường hoàn chỉnh:

  • Thực thi trình duyệt cục bộ với khả năng hiển thị UI
  • Thực hiện thử nghiệm từng bước
  • Nhật ký chi tiết và chẩn đoán

Tích hợp CI/CD

Trong môi trường CI/CD, Test Engine có thể chạy Playwright ở chế độ không giao diện:

# 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)"

Thực tiễn tốt nhất

Khi làm việc với tích hợp Playwright của Test Engine:

  • Tập trung vào các đối tượng cấp ứng dụng thay vì các phần tử DOM
  • Sử dụng Power Fx các hàm cho logic phức tạp thay vì JavaScript thô
  • Tận dụng cơ chế xác thực tích hợp
  • Dành riêng các chức năng Playwright trực tiếp cho các tình huống mà mức độ trừu tượng của ứng dụng là không đủ
  • Xem lại các bài kiểm tra được tạo ra để tối ưu hóa khả năng đọc và bảo trì