Loading...
23-10-2021

Afgelopen periode is de langverwachte update van Selenium.WebDriver vrijgegeven. Inmiddels is hij alweer ge-update naar versie 4.0.1. In ieder geval een goed moment om alle testen weer eens onder de loop te nemen.

Selenium.WebDriver

Waar ik voorheen Selenium zal in Docker liet draaien, met een Chrome instantie, heb ik er nu voor gekozen om de Selenium.WebDriver.ChromeDriver package te gebruiken. Een handigheid is dat deze packages zorgen voor de juiste browser instantie voor het OS waarop je draait. Zo kan ik deze packages net zo goed onder MacOS gebruiken, als onder Linux.

De code die ik hiervoor gebruikte is vooral gericht op de remoteDriver voor Selenium, maar nu wilde ik alles integreren. Dus Selenium, met Chrome (later ook nog andere browsers) waarbij het test project ook de website start en alles aan elkaar knoopt.

Dat klonk in ieder geval simpel zat. Of er nou een webHost.UseTestServer() wordt aangeschoten, of via ConfigureKestrel() de hele site 'publiek' beschikbaar wordt gemaakt is niet zo'n groot verschil. Hiervoor heb ik een nieuwe xunite project aangemaakt en alle projecten toegevoegd. Nog even het ChromeDriver extra toegevoegd en na wat aanpassingen starte de site netjes op. Een nieuwe test startup class, die de oorspronkelijke portal startup class override, zorgt voor een dummy database in Sqlite, waardoor er bij elke run een nette en schone database beschikbaar is.

Starten met testen

Allemaal prima. Tot het punt, dat ik een action probeerde aan te roepen. Het blijkt na wat te proberen, dat de gestarte site alleen de static content herkend. De views zijn wel terug te vinden, maar totaal niet benaderbaar, laat staan dat er een api aan te roepen is. Ik heb gezocht in het feit of het ContentPath, of het WebRootPath het probleem was, of de dll wel beschikbaar waren etc etc, maar de oplossing was heel simpel...

Bij het maken van een nieuw xunit project wordt er een csproj file aangemaakt die begint met:

<Project Sdk="Microsoft.NET.Sdk">

Uiteraard heb ik hier verder totaal niet naar gekeken, maar naar het aanpassen van de sdk naar Microsoft.NET.Sdk.Web, starte de site volledig op:

<Project Sdk="Microsoft.NET.Sdk.Web">
  • Asp.Net Core
  • Chrome
  • Microsoft.NET.Sdk.Web
  • Selenium
  • XUnit