Playwright Tests End to End dans GitLab CI avec un projet .Net

Playwright est un excellent outil pour tester votre application, mais comment exécuter vos tests depuis votre environnement Gitlab CI avec un projet de test .Net ?
Banner Image Blog/1_UiIjrLIw30NnW1db67xrUw.webp
Posted by phnogues on July 29, 2024

Playwright est un excellent outil pour tester votre application, mais comment exécuter vos tests depuis votre environnement Gitlab CI avec un projet de test .Net ?

1- Créez votre projet de test .Net

Avec Nunit ou MsTest :

dotnet new nunit -n PlaywrightTests 
dotnet add package Microsoft.Playwright.NUnit

dotnet new mstest -n PlaywrightTests
dotnet add package Microsoft.Playwright.MSTest

Puis, ajouter le package JunitXml.TestLogger

Il sera utilisé ultérieurement pour générer votre rapport XML

dotnet add package JunitXml.TestLogger

Écrivez votre premier test comme dans l'exemple suivant :

namespace PlaywrightTests;

[TestClass]
public class TitleShouldContainsPlaywright : PageTest
{
    [TestMethod]
    public async Task Apply_On_Carreer_Site()
    {
        await Page.GotoAsync("https://playwright.dev");

        await Expect(Page).ToHaveTitleAsync(new Regex("Playwright"));
    }
}

2- Écrivez votre pipeline GitLab

playwright-e2e-tests:
  stage: test
  image: mcr.microsoft.com/playwright/dotnet:v1.38.0-jammy
  variables:
    CSPROJ_FILE_PATH: "./PlaywrightTests/PlaywrightTests.csproj"
  script:
    - curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --version 7.0.401 --install-dir /usr/share/dotnet
    - dotnet tool install --global PowerShell
    - dotnet tool install --global Microsoft.Playwright.CLI
    - dotnet restore $CSPROJ_FILE_PATH
    - dotnet build $CSPROJ_FILE_PATH -c Release --no-restore
    - pwsh ./PlaywrightTests/bin/Release/net7.0/playwright.ps1 install --with-deps
    - 'dotnet test $CSPROJ_FILE_PATH -c Release --logger:"junit;LogFilePath=..\artifacts\{assembly}-test-result.xml;MethodFormat=Class;FailureBodyFormat=Verbose"'
  artifacts:
    when: always
    reports:
      junit:
        - ./**/*test-result.xml
    expire_in: 4 days  
  only:
    refs:
      - merge_requests
  when: manual

Détails, explications de la pipeline :

Télécharge le conteneur Playwright :

image: mcr.microsoft.com/playwright/dotnet:v1.38.0-jammy

Télécharge .Net 7, seulement .Net 6 est supporté (au moment où j'écris cet article)

- curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --version 7.0.401 --install-dir /usr/share/dotnet

Configure PowerShell afin de configurer Playwright :

- dotnet tool install --global PowerShell
- dotnet tool install --global Microsoft.Playwright.CLI

Exécutez votre test avec la sortie Junit afin d'utiliser les résultats GitLab :

- 'dotnet test $CSPROJ_FILE_PATH -c Release --logger:"junit;LogFilePath=..\artifacts\{assembly}-test-result.xml;MethodFormat=Class;FailureBodyFormat=Verbose"'

Votre pipeline est prête 🚀 :

Revenez à votre Merge Request, vous pouvez voir le résumé de votre test :

Bon test !

Playwright
Tests Playwright

Comments :