Terwijl ik en mijn testers geavanceerde kennis hebben opgedaan over Salesforce Automated testing, het opzetten van educatief materiaal, wilde ik ook dieper in de dynamiek van Microsoft duiken en leren hoe je een geautomatiseerde test instelt.
Bekijk gerust de Microsoft-pagina, maar ik heb deze enigszins verbeterd in mijn eigen repo om relatieve paden en andere kleine dingen te ondersteunen.
https://learn.microsoft.com/en-us/dynamics365/guidance/resources/test-automation-setup
Waarom Microsoft Dynamics met toneelschrijver
Het gebruik van Playwright met Dynamics 365 voor testautomatisering is om verschillende belangrijke redenen voordelig, omdat het een weerspiegeling is van bredere trends in moderne webontwikkelings- en testpraktijken:
Het document waarnaar wordt gelinkt vanuit Microsoft Dynamics 365 Guidance richt zich op het instellen van testautomatisering, waarbij specifiek wordt verwezen naar het gebruik van Playwright voor het automatiseren van webtests. Het gebruik van Playwright met Dynamics 365 voor testautomatisering is om verschillende belangrijke redenen voordelig, omdat het een weerspiegeling is van bredere trends in moderne webontwikkelings- en testpraktijken:
Waarom toneelschrijver met Microsoft Dynamics
- Testen via meerdere browsers
Compatibiliteit: Playwright ondersteunt testen in meerdere browsers (Chromium, Firefox en WebKit), wat cruciaal is om ervoor te zorgen dat Dynamics 365-applicaties naadloos werken in verschillende omgevingen van waaruit gebruikers toegang hebben tot de applicaties.
- Geautomatiseerde UI-testen
Uitgebreide UI-interacties: Dynamics 365-toepassingen hebben vaak complexe gebruikersinterfaces. Playwright biedt een uitgebreide set API’s voor het simuleren van gebruikersacties (klikken, typen, navigeren, enz.) op een manier die de echte gebruikersinteracties nauw nabootst.
- Consistentie en betrouwbaarheid
Stabiele tests: de automatische wachtfuncties van Playwright en de mogelijkheid om efficiënt met dynamische inhoud te werken, helpen bij het maken van stabielere en betrouwbaardere tests door het verminderen van de schilfering die gepaard gaat met laadtoestanden en asynchrone bewerkingen.
- Authenticatie en staatsbeheer
Efficiëntie: Dynamics 365-tests vereisen vaak installatiestappen zoals authenticatie. De mogelijkheid van Playwright om browserstatussen (opslagstatus) op te slaan en opnieuw te gebruiken, maakt het mogelijk om sessies en statussen tussen tests efficiënt te beheren, waardoor de testsuite aanzienlijk wordt versneld.
- Testen zonder hoofd en hoofd
CI/CD-integratie: Playwright kan tests uitvoeren in headless-modus voor snellere uitvoering in CI/CD-pipelines, evenals in headless-modus voor foutopsporing. Deze flexibiliteit is belangrijk voor het ontwikkelen en onderhouden van Dynamics 365-toepassingen in verschillende fasen van de ontwikkelingscyclus.
Voor testautomation Microsoft Dynamics promoten ze natuurlijk toneelschrijver en dat snap ik helemaal, want dit is ook een product van Microsoft. Als ik dieper in de toneelschrijver duik, leer ik enkele functies kennen die beter werken dan in Selenium, wat ik in dit blog wil benadrukken (opslagstatus)
Wat ik echt geweldig vind, is de functie voor staatsopslag in Playwright waarmee je browseropslag kunt vastleggen en hergebruiken. Dit omvat cookies, lokale opslag en sessieopslag) tijdens testruns. Deze functie in Playwright is met name handig om inlogschermen te omzeilen en snel tests in te stellen door de sessiestatus te behouden.
Voorbeeld
sync function globalSetup(config) {
// Ensure the storage state directory exists
if (!fs.existsSync(storageStateDirectory)) {
fs.mkdirSync(storageStateDirectory, { recursive: true });
}
const browser = await chromium.launch({ headless: false });
const page = await browser.newPage();
console.log(username);
await login(page, orgurl, username, password);
// Save the storage state to the relative path
await page.context().storageState({
path: authFile,
});
await browser.close();
}
export default globalSetup;
Voor welk doel kun je dit gebruiken
1. Persistentie van sessies tijdens verschillende tests
Authenticatie: De meest voorkomende toepassing voor het opslaan van een opslagstatus is gebruikersauthenticatie. Inloggen op een webapplicatie kan tijdrovend en repetitief zijn als u dat voor elke afzonderlijke testcase moet doen. Door na het inloggen de opslagstatus op te slaan (waaronder cookies, lokale opslag en sessieopslag), kunt u het aanmeldingsproces bij volgende tests omzeilen, waardoor de testsuite aanzienlijk wordt versneld.
2. Consistentie
Omgevingsinstellingen: De opslagstatus zorgt ervoor dat elke test begint met dezelfde vooraf gedefinieerde omgevingsconfiguratie. Dit omvat niet alleen authenticatietokens, maar ook eventuele gebruikersvoorkeuren, instellingen of statelijke interacties die in de browser zijn opgeslagen. Uitgaan van een bekende toestand helpt bij het verminderen van de schilfering van de test en zorgt voor consistentie tijdens de testruns.
3. Efficiëntie testen
Snelheid: Het rechtstreeks laden van een opgeslagen opslagstatus gaat veel sneller dan het navigeren door een reeks UI-interacties om handmatig een bepaalde status te bereiken. Deze efficiëntie is met name gunstig in CI/CD-pijpleidingen waar tijd een cruciale factor is.
Gebruik van bronnen: Door het aantal interacties met de server te verminderen door repetitieve taken zoals inloggen te vermijden, wordt ook de testinfrastructuur minder belast, wat leidt tot een efficiëntere testuitvoering.
4. Simulatie van echte gebruikerservaring
Stateful Interaction: Moderne webapplicaties zijn vaak afhankelijk van opslag aan de clientzijde voor het beheren van verschillende aspecten van de gebruikerservaring. Door een specifieke opslagstatus vast te leggen en opnieuw te gebruiken, kunnen tests de interacties en scenario’s van gebruikers in de praktijk nauwkeuriger simuleren, zodat de toepassing zich niet alleen in een „schone” toestand gedraagt zoals verwacht, maar ook in complexere, statelijke scenario’s.
5. Beveiliging en naleving van regelgeving
Gevoelige informatie: Het rechtstreeks verwerken van inloggegevens en andere gevoelige informatie in testscripts brengt veiligheidsrisico’s met zich mee. Door een opslagstatus te gebruiken, kunnen gevoelige gegevens worden geabstraheerd. De opslagstatus kan één keer worden gegenereerd en vervolgens veilig worden opgeslagen en opnieuw worden gebruikt, waardoor de blootstelling van inloggegevens tot een minimum wordt beperkt.
6. Flexibiliteit in testontwerp
Verschillende staten voor verschillende tests: U kunt verschillende opslagstatussen maken en gebruiken voor verschillende testscenario’s. De ene staat kan bijvoorbeeld een nieuw geregistreerde gebruiker vertegenwoordigen, terwijl een andere staat een gebruiker met een gevuld winkelwagentje kan vertegenwoordigen. Deze flexibiliteit maakt uitgebreidere en doelgerichtere teststrategieën mogelijk.
Hoe zit het met staatsopslag met cipres en selenium
Om te benadrukken dat dit een fantastische functie is, is dat voor selenium-toepassingen zoals webdriverio en/of katalon het ook mogelijk is om staatsopslag in te stellen, maar niet standaard en dit is omslachtiger. Dit is ook het geval voor Cypress. Maar desalniettemin probeer ik objectief te zijn, en hoewel ik denk dat toneelschrijver zijn recht heeft in het ecosysteem en echt een fantastisch product is, blijft mijn persoonlijke voorkeur bij het wdio-project, dat ik super gaaf vind, vooral met de toekomstige bidi-ondersteuning en alle andere functies die helemaal van het onderwerp zijn voor dit blog :-)
Hoe zit het met het script van de toneelschrijver zelf
Het Playwright-script automatiseert het proces van het aanmaken van een nieuwe case in de Customer Service Hub-applicatie, die deel uitmaakt van Microsoft Dynamics 365, een suite van softwaretoepassingen voor enterprise resource planning (ERP) en klantrelatiebeheer (CRM). Het script voert de volgende stappen uit:
Omgevingsinstellingen:
Het begint met het importeren van noodzakelijke afhankelijkheden, waaronder de testfuncties van Playwright, omgevingsvariabelen via dotenv voor gevoelige of omgevingsspecifieke informatie (zoals applicatie-ID’s) en een set vooraf gedefinieerde selectors en hulpprogramma’s uit lokale bestanden. Deze selectors en hulpprogramma’s zijn waarschijnlijk op maat gemaakt om effectief te navigeren en te communiceren met de gebruikersinterface van de Customer Service Hub. Vergeet niet .env niet te publiceren, dit moet altijd in .gitignore staan (Best practice)
Definitie van de test:
Het definieert een test met de titel „Create Case” met behulp van de testfunctie van Playwright. Deze test bevat de stappen die nodig zijn om een nieuwe case te creëren binnen de Customer Service Hub.
Naar de Customer Service Hub-app navigeren:
Haalt de toepassings-ID voor de Customer Service Hub op uit omgevingsvariabelen.
Gebruikt een hulpfunctie NavigateToApps om de Customer Service Hub-applicatie te openen op een browserpagina die wordt beheerd door Playwright. Deze stap houdt waarschijnlijk in dat u naar de juiste URL navigeert en wacht tot de toepassing is geladen.
De sectie Cases openen:
Lokaliseert en klikt op de menuoptie om het gedeelte ‘Cases’ in de applicatie te openen. Dit wordt gedaan met een combinatie van aangepaste selectors (gedefinieerd in commonselectors.json) en een hulpprogramma-functie StringFormat om de selector dynamisch te construeren op basis van de structuur van de toepassing.
Een nieuwe case aanmaken:
- Klik op een knop om een nieuw hoesje aan te maken.
- Vult de titel van de zaak in met een dynamisch gegenereerde tekenreeks om de uniciteit te garanderen („TEST CASE AUTOMATION -" gevolgd door een willekeurig getal).
- Zoekt naar een klant op naam („Learnautomatedtesting”) in een opzoekveld en selecteert deze. Dit omvat interactie met UI-componenten die worden geïdentificeerd aan de hand van hun rollen (knop en boomitem) en specifieke namen.
Casusgegevens invullen:
- Voegt een beschrijving in voor de case, waarin een probleem met het inschakelen van een koffiezetapparaat wordt beschreven.
De zaak opslaan:
- Klik op de knop Opslaan om de nieuwe case in te dienen.
- Verificatie:
- Wacht tot de toepassing inactief is (waarschijnlijk om er zeker van te zijn dat het opslaan is voltooid en de case volledig is aangemaakt).
- Haalt het dossiernummer van de nieuw aangemaakte case op en registreert, waarbij wordt gecontroleerd of het proces voor het aanmaken van de case met succes is voltooid.
- Loggen:
Het dossiernummer van de nieuw aangemaakte case wordt op de console afgedrukt en dient als bevestiging van de actie die door het script is ondernomen.
De eerste repo is te vinden
hier https://github.com/learn-automated-testing/dynamics_playwright/ een opleiding hierover zal ik de komende maanden op mijn website publiceren
Een videovoorbeeld is hier te vinden