Testen van adaptieve formulieren automatiseren automate-testing-of-adaptive-forms
Overzicht overview
Adaptieve formulieren zijn een integraal onderdeel van de interactie van uw klant. Het is belangrijk dat u uw aangepaste formulieren test met elke wijziging die u erin aanbrengt, bijvoorbeeld tijdens het uitrollen van een nieuw fixeerpakket of het wijzigen van een regel in het formulier. Het kan echter vervelend zijn om adaptieve formulieren en alle velden erin te testen.
Met Calvin kunt u het testen van uw adaptieve formulieren automatiseren in de webbrowser. Calvin gebruikt HobbesDe gebruikersinterface van de gebruiker voor het uitvoeren van de tests en verstrekt de volgende hulpmiddelen:
- Een JavaScript API voor het maken van tests.
- Een gebruikersinterface voor het uitvoeren van tests.
Met Calvin kunt u testgevallen maken in CRXDE en UI-tests rechtstreeks uitvoeren in de webbrowser om de volgende aspecten van uw adaptieve formulieren grondig te testen:
Vereisten prerequisites
Voordat u dit artikel kunt gebruiken voor het maken van testcase, moet u het volgende weten:
- Testsuites maken en testcase uitvoeren met behulp van Hobbes
- JavaScript-API's blokkeren
- JavaScript-API's Calvin
Voorbeeld: Een testsuite maken voor een adaptief formulier met Hobbes als testframework example-create-a-test-suite-for-an-adaptive-form-using-hobbes-as-testing-framework
In het volgende voorbeeld wordt het maken van een testsuite voor het testen van meerdere adaptieve formulieren besproken. U moet een afzonderlijk testcase maken voor elk formulier dat u moet testen. Als u in stap 11 vergelijkbare stappen uitvoert en de JavaScript-code wijzigt, kunt u uw eigen testsuite maken om uw aangepaste formulieren te testen.
-
Ga naar CRXDE Lite in uw webbrowser:
https://[server]:[port]/crx/de
. -
Klik met de rechtermuisknop op de submap /etc/clientlibs en klik op Create > Create Node. Voer een naam in (hier afTestRegistration), geef het type knooppunt op als cq:ClientLibraryFolder en klik op OK.
De clientlibs-map bevat het registratieaspect van uw toepassing (JS en Init). U wordt aangeraden alle Hobbes-testreekobjecten te registreren die specifiek zijn voor een formulier in de clientlibs-map.
-
Geef de volgende eigenschapswaarden op in het nieuwe knooppunt (hier afTestRegistration) en klik vervolgens op Save All. Met deze eigenschappen herkent Hobbes de map als een test. Om deze cliëntbibliotheek als gebiedsdeel in andere cliëntbibliotheken opnieuw te gebruiken, noem het als granite.testing.calvin.tests.
-
Klik met de rechtermuisknop op het testknooppunt (hier) afTestRegistration) en klik vervolgens op Create > Create File. Geef het bestand de naam js.txt en klik op OK.
-
Voeg de volgende tekst toe aan het bestand js.txt:
code language-none #base=. js.txt
-
Klikken Save All en sluit vervolgens het bestand js.txt.
-
Klik met de rechtermuisknop op het testknooppunt (hier) afTestRegistration) en klik op Create > Create File. Geef het bestand een naam in it.js en klik op OK.
-
Kopieer de volgende code naar het bestand init.js en klik op Save All:
code language-none (function(window, hobs) { 'use strict'; window.testsuites = window.testsuites || {}; // Registering the test form suite to the sytem // If there are other forms, all registration should be done here window.testsuites.testForm = new hobs.TestSuite("Adaptive Form - Demo Test", { path: '/etc/clientlibs/afTestRegistration/init.js', register: true }); // window.testsuites.testForm1 = new hobs.TestSuite("testForm1"); }(window, window.hobs));
De bovenstaande code maakt een testsuite met de naam Adaptieve vorm - Demo testen. Als u een testsuite met een andere naam wilt maken, wijzigt u de naam.
-
Klikken Create > Knooppunt maken om een knooppunt onder de clientlib-map te maken voor elk formulier dat u wilt testen. In dit voorbeeld wordt een knooppunt met de naam testForm om een adaptief formulier met de naam testForm
.
Geef de volgende eigenschappen op en klik op OK:- Naam: testForm (uw formuliernaam)
- Type: cq:ClientLibraryFolder
-
Voeg de volgende eigenschappen toe aan het nieuwe knooppunt (hier testForm) om een adaptief formulier te testen:
table 0-row-3 1-row-3 2-row-3 Eigenschap Type Waarde categorieën String[] granite.testing.hobbes.tests, granite.testing.hobbes.tests.testForm afhankelijkheden String[] granite.testing.calvin.tests note note NOTE Dit voorbeeld gebruikt een gebiedsdeel op de cliënt lib granite.testing.calvin.tests voor beter beheer. In dit voorbeeld wordt ook de client-lib-categorie "granite.testing.hobbes.tests.testForm" toegevoegd om deze client-lib indien nodig opnieuw te gebruiken. -
Klik met de rechtermuisknop op de map die u voor het testformulier hebt gemaakt (hier testForm) en selecteer Create > Create File. Geef het bestand scriptingTest.js een naam en voeg de volgende code toe aan het bestand en klik op Save All.
Als u de volgende code wilt gebruiken om een ander adaptief formulier te testen, wijzigt u het pad en de naam van het formulier in navigateTo (lijnen 11, 36 en 62) en de respectieve testgevallen. Zie voor meer informatie over API's voor het testen van verschillende aspecten van formulieren en formulierobjecten Calvin-API's.
code language-none (function(window, hobs) { 'use strict'; var ts = new hobs.TestSuite("Script Test", { path: '/etc/clientlibs/testForm/scriptingTest.js', register: false }) .addTestCase(new hobs.TestCase("Checking execution of calculate script") // navigate to the testForm which is to be tested .navigateTo("/content/forms/af/testForm.html?wcmmode=disabled") // check if adaptive form is loaded .asserts.isTrue(function () { return calvin.isFormLoaded() }) .execSyncFct(function () { // create a spy before checking for the expression calvin.spyOnExpression("panel1.textbox1"); // setValue would trigger enter, set the value and exit from the field calvin.setValueInDOM("panel1.textbox", "5"); }) // if the calculate expression was setting "textbox1" value to "5", let's also check that .asserts.isTrue(function () { return calvin.isExpressionExecuted("panel1.textbox1", "Calculate"); }) .execSyncFct(function () { calvin.destroySpyOnExpression("panel1.textbox1"); }) .asserts.isTrue(function () { return calvin.model("panel1.textbox1").value == "5" }) ) .addTestCase(new hobs.TestCase("Calculate script Test") // navigate to the testForm which is to be tested .navigateTo("/content/forms/af/cal/demoform.html?wcmmode=disabled&dataRef=crx:///content/forms/af/cal/prefill.xml") // check if adaptive form is loaded .asserts.isTrue(function () { return calvin.isFormLoaded() }) .execSyncFct(function () { // create a spy before checking for the expression calvin.spyOnExpression("panel2.panel1488218690733.downPayment"); // setValue would trigger enter, set the value and exit from the field calvin.setValueInDOM("panel2.panel1488218690733.priceProperty", "1000000"); }) .asserts.isTrue(function () { return calvin.isExpressionExecuted("panel2.panel1488218690733.downPayment", "Calculate"); }) .execSyncFct(function () { calvin.destroySpyOnExpression("panel2.panel1488218690733.downPayment"); }) .asserts.isTrue(function () { // if the calculate expression was setting "downPayment" value to "10000", let's also check that return calvin.model("panel2.panel1488218690733.downPayment").value == 10000 }) ) .addTestCase(new hobs.TestCase("Checking execution of Value commit script") // navigate to the testForm which is to be tested .navigateTo("/content/forms/af/cal/demoform.html?wcmmode=disabled&dataRef=crx:///content/forms/af/cal/prefill.xml") // check if adaptive form is loaded .asserts.isTrue(function () { return calvin.isFormLoaded() }) .execSyncFct(function () { // create a spy before checking for the expression calvin.spyOnExpression("panel2.panel1488218690733.priceProperty"); // setValue would trigger enter, set the value and exit from the field calvin.setValueInDOM("panel2.panel1488218690733.priceProperty", "100"); }) .asserts.isTrue(function () { return calvin.isExpressionExecuted("panel2.panel1488218690733.priceProperty", "Value Commit"); }) .execSyncFct(function () { calvin.destroySpyOnExpression("panel2.panel1488218690733.priceProperty"); }) .asserts.isTrue(function () { // if the value commit expression was setting "textbox1488215618594" value to "0", let's also check that return calvin.model("panel2.panel1488218690733.textbox1488215618594").value == 0 }) ); // register the test suite with testForm window.testsuites.testForm.add(ts); }(window, window.hobs));
De testcase wordt gemaakt. Voer de testcase uit om adaptieve formulieren via Hobbes te testen. Voor stappen voor het uitvoeren van de testgevallen raadpleegt u Tests uitvoeren in uw gebruikersinterface testen met behulp van automatische tests.
U kunt het pakket ook installeren in het bijgevoegde bestand SampleTestPackage.zip om dezelfde resultaten te bereiken als met de stappen die in het voorbeeld worden beschreven: Maak een testsuite voor een adaptief formulier met Hobbes als testframework.
Uw gebruikersinterface testen met behulp van automatische tests testing-your-ui-using-automated-tests
Eén testsuite uitvoeren running-a-single-test-suite
Testsets kunnen afzonderlijk worden uitgevoerd. Wanneer u een testsuite uitvoert, verandert de pagina terwijl de testcase wordt uitgevoerd en de bijbehorende handelingen worden uitgevoerd. De resultaten verschijnen na afloop van de test. Pictogrammen geven de resultaten aan.
Een vinkje geeft aan dat een test is geslaagd:
Een X-pictogram geeft aan dat een test is mislukt:
Een testsuite uitvoeren:
-
Klik of tik in het deelvenster Tests op de naam van de testcase die u wilt uitvoeren om de details van de handelingen uit te vouwen.
-
Klik of tik de knoop van de tests van de Looppas.
-
De tijdelijke aanduiding wordt tijdens de test vervangen door pagina-inhoud.
-
Bekijk de resultaten van de testcase door op de beschrijving te tikken of te klikken om het resultatenvenster te openen. Als u in het deelvenster Resultaat op de naam van uw testcase tikt of erop klikt, worden alle details weergegeven.
De stappen voor het testen van uw AEM adaptieve formulieren zijn vergelijkbaar met die voor het testen van de gebruikersinterface van uw AEM. Raadpleeg voor meer informatie over het testen van uw aangepaste formulieren de volgende onderwerpen in Uw gebruikersinterface testen:
- Testuiteinden weergeven
- Meerdere tests uitvoeren