Udostępnij za pośrednictwem


Integracja z silnikiem testowym i narzędziem Playwright (wersja zapoznawcza)

Notatka

Funkcje w wersji zapoznawczej nie są przeznaczone do użytku w środowiskach produkcyjnych i mogą mieć ograniczoną funkcjonalność. Te funkcje są udostępniane przed oficjalnym wydaniem, dzięki czemu klienci mogą szybciej uzyskać do nich dostęp i przekazać opinie na ich temat.

Omówienie

Power Apps Test Engine używa Playwright jako podstawowej technologii automatyzacji przeglądarki. Ta integracja zapewnia aparatowi testowemu potężne, niezawodne i wieloprzeglądarkowe możliwości testowania, jednocześnie dodając kilka warstw abstrakcji, aby uprościć tworzenie testów dla Power Platform aplikacji.

Jak silnik testowy usprawnia Playwright

Podczas gdy Playwright oferuje doskonałe możliwości automatyzacji przeglądarki, Test Engine rozszerza te możliwości w szczególności dla Power Platform:

Ulepszenie silnika testowego Opis
Abstrakcje na poziomie aplikacji Test Engine współpracuje z obiektami na poziomie aplikacji, a nie z elementami DOM, dzięki czemu testy są bardziej odporne na zmiany interfejsu użytkownika
Integracja Power Fx Test Engine dodaje Power Fx wsparcie, umożliwiając niskokodowe podejście do tworzenia testów
Wbudowane uwierzytelnianie Wbudowane mechanizmy uwierzytelniania obsługują scenariusze Microsoft Entra i dostępu warunkowego.
Dataverse Integracja Bezpośrednia integracja z Dataverse pozwala na kompleksowe testowanie end-to-end
Wyspecjalizowani dostawcy Dostawcy zoptymalizowani dla Canvas apps i Model-driven apps

Implementacja techniczna

W poniższych sekcjach opisano, w jaki sposób Test Engine opiera się na fundamencie automatyzacji przeglądarki Playwright i integruje go z abstrakcjami specyficznymi dla Power Platform, zapewniając solidną i łatwą do utrzymania automatyzację testów.

Fundament automatyzacji przeglądarki

Test Engine wykorzystuje podstawowe możliwości Playwright do spójnej automatyzacji przeglądarki:

  • Obsługa przeglądarek Chrome, Firefox i Microsoft Edge
  • Niezawodne mechanizmy oczekiwania, które automatycznie oczekują, aż elementy będą gotowe
  • Przechwytywanie żądań sieciowych w celu symulowania odpowiedzi interfejsu API
  • Narzędzia do śledzenia i debugowania w celu diagnozowania niepowodzeń testów

Integracja architektury Test Engine

  • Warstwa dostawcy: Warstwa dostawcy w module Test Engine łączy się bezpośrednio z interfejsami API Playwright w celu kontrolowania zachowania przeglądarki
  • Model obiektowy: Zamiast pracować z nieprzetworzonymi elementami DOM, Test Engine mapuje na modele obiektów specyficzne dla aplikacji
  • Warstwa Power Fx: Kroki testu zapisane w Power Fx są interpretowane i wykonywane za pośrednictwem warstwy dostawcy

Najważniejsze cechy techniczne

W poniższych sekcjach przedstawiono ważne funkcje techniczne, które Test Engine dodaje do Playwright, w tym selektory specyficzne dla aplikacji, zarządzanie kontekstem przeglądarki i bezpośredni dostęp do funkcji Playwright dla zaawansowanych scenariuszy.

Selektory specyficzne dla aplikacji

Test Engine używa selektorów specyficznych dla aplikacji zamiast CSS selektorów lub XPath selektorów:

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

Zarządzanie kontekstem przeglądarki

Test Engine zarządza kontekstami przeglądarki w celu obsługi różnych scenariuszy uwierzytelniania:

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

Funkcje bezpośredniego dramaturga

Chociaż Test Engine abstrahuje wiele interakcji z dramaturgiem, istnieją scenariusze, w których bezpośredni dostęp do możliwości dramaturga może być cenny. Test Engine udostępnia kilka funkcji podglądu, które umożliwiają bezpośrednią interakcję z Playwright podczas wykonywania testów w Power Fx.

Korzystanie z funkcji Playwright w Test Engine

Test Engine zawiera następujące funkcje podglądu, które umożliwiają zastosowanie możliwości wyboru elementów Playwright:

Funkcja Opis Przykład
Preview.PlaywrightAction Wykonaj akcję na elementach za pomocą selektorów CSS lub DOM Preview.PlaywrightAction("//button", "click")
Zobacz typowe operacje akcji dramaturga
Preview.PlaywrightActionValue Wykonywanie akcji, która wymaga parametru value Preview.PlaywrightActionValue("//input[@data-id='1']", "fill", "Hello")
Zobacz typowe operacje na wartościach akcji w Playwright
Preview.PlaywrightScript Wykonywanie niestandardowego skryptu języka C#, który łączy się z usługą Playwright Preview.PlaywrightScript("sample.csx")
Zobacz Zaawansowane: Niestandardowe skrypty Playwright
Preview.Pause Wstrzymaj wykonywanie testu i wyświetl Playwright Inspector Preview.Pause()

Notatka

Aby korzystać z tych funkcji podglądu, należy dodać funkcje podglądu do listy dozwolonych w sekcji ustawień testu.

Typowe operacje akcji dramaturga

Następujące operacje można wykonać za pomocą Preview.PlaywrightAction:

Czynność Opis Przykład
click Wybór elementu za pomocą zdarzenia kliknięcia Preview.PlaywrightAction("//button[@id='submit']", "click")
exists Sprawdzanie, czy element istnieje Preview.PlaywrightAction("//div[@class='error-message']", "exists")
wait Poczekaj, aż element będzie dostępny Preview.PlaywrightAction("//table[@data-loading='false']", "wait")

Typowe operacje na wartościach akcji w Playwright

Za pomocą metody Preview.PlaywrightActionValue można wykonać następujące operacje:

Czynność Opis Przykład
fill Wypełnianie pola formularza tekstem Preview.PlaywrightActionValue("//input[@name='search']", "fill", "Product name")
select Wybieranie opcji z listy wyboru Preview.PlaywrightActionValue("//select", "select", "Option2")
setAttribute Ustawianie atrybutu w elemencie Preview.PlaywrightActionValue("//div", "setAttribute", "data-custom='value'")

Kiedy używać funkcji bezpośredniego dramaturga

Chociaż abstrakcje na poziomie aplikacji są preferowane, bezpośrednie funkcje Playwright są przydatne w następujących scenariuszach:

  • Złożone interakcje interfejsu użytkownika, które nie są objęte standardowymi funkcjami silnika testowego
  • Komponenty innych firm w aplikacjach Power Platform, które wymagają specjalnej obsługi
  • Debugowanie złożonych scenariuszy testowych , w których potrzebna jest większa kontrola
  • Zaawansowana walidacja stanów lub właściwości elementów

Przykład: Podejście łączone

W tym przykładzie pokazano łączenie abstrakcji na poziomie aplikacji z bezpośrednimi akcjami Playwright:

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

Zaawansowane: Niestandardowe skrypty Playwright

W przypadku wysoce wyspecjalizowanych scenariuszy można tworzyć niestandardowe skrypty dramaturga:

  1. Utwórz plik .csx z niestandardową logiką Playwright
  2. Odniesienie do wymaganych zestawów Playwright
  3. Implementowanie wymaganej struktury klas
  4. Wywołaj skrypt jako część kroków testowych
// 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
    }
}

Notatka

Preview.PlaywrightScript jest implementowany tylko dla kompilacji debug silnika testowego zbudowanego ze źródła i nie jest dostępny w wydanej wersji narzędzia pac test run.

Integracja z procesem rozwoju

W poniższych sekcjach opisano, jak można używać narzędzia Test Engine i Playwright zarówno w lokalnych środowiskach programistycznych, jak i w środowiskach CI/CD, obsługując różnorodne przepływy pracy, od interaktywnego debugowania po automatyczne wykonywanie potoków.

Rozwój lokalny

Do lokalnego programowania Test Engine zapewnia kompletne środowisko:

  • Lokalne wykonywanie w przeglądarce z widocznością interfejsu użytkownika
  • Wykonywanie testów krok po kroku
  • Szczegółowe dzienniki i diagnostyka

Integracja CI/CD

W środowiskach CI/CD silnik testowy może uruchamiać Playwright w trybie bezgłowym.

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

Najlepsze rozwiązania

Podczas pracy z integracją Playwright w Test Engine:

  • Skoncentruj się na obiektach na poziomie aplikacji, a nie na elementach DOM
  • Używaj Power Fx funkcji dla złożonej logiki, a nie surowego kodu JavaScript
  • Korzystaj z wbudowanych mechanizmów uwierzytelniania
  • Zarezerwuj bezpośrednie funkcje Playwright dla scenariuszy, w których abstrakcje na poziomie aplikacji są niewystarczające
  • Przeglądanie wygenerowanych testów w celu optymalizacji pod kątem czytelności i konserwacji