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
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 !