Automatisera testning av anpassningsbara formulär automate-testing-of-adaptive-forms
Översikt overview
Anpassningsbara formulär är en väsentlig del av kundinteraktionen. Det är viktigt att testa dina anpassningsbara formulär med varje ändring du gör i dem, till exempel när du distribuerar ett nytt korrigeringspaket eller ändrar en regel i formuläret. Funktionstestning av adaptiva formulär och alla fält i dem kan dock vara långsamma.
Med Calvin kan du automatisera testningen av dina anpassade formulär i webbläsaren. Calvin använder HobbesAnvändargränssnittet för testkörning och innehåller följande verktyg:
- Ett JavaScript-API för att skapa tester.
- Ett användargränssnitt för att köra tester.
Med Calvin kan du skapa testfall i CRXDE och köra gränssnittstester direkt i webbläsaren för att testa följande aspekter av de adaptiva formulären:
Förutsättningar prerequisites
Innan du använder den här artikeln för att skapa testfall måste du känna till följande:
- Skapa testsviter och köra testfall med Hobbes
- Hobbes JavaScript API:er
- Calvin JavaScript API:er
Exempel: Skapa en testsvit för ett adaptivt formulär med Hobbes som testramverk example-create-a-test-suite-for-an-adaptive-form-using-hobbes-as-testing-framework
Följande exempel visar hur du skapar en testsvit för att testa flera adaptiva formulär. Du måste skapa ett separat testfall för varje formulär som du behöver testa. Genom att följa de här stegen och ändra JavaScript-koden i steg 11 kan du skapa en egen testsvit för att testa dina adaptiva formulär.
-
Gå till CRXDE Lite i webbläsaren:
https://[server]:[port]/crx/de
. -
Högerklicka på undermappen /etc/clientlibs och klicka på Create > Create Node. Ange ett namn (här afTestRegistration), ange typen av nod som cq:ClientLibraryFolder och klicka på OK.
Mappen clientlibs innehåller registreringsaspekten för programmet (JS och Init). Vi rekommenderar att du registrerar alla Hobbes testsvitsobjekt som är specifika för ett formulär i mappen clientlibs.
-
Ange följande egenskapsvärden i den nyligen skapade noden (här afTestRegistration) och klicka sedan på Save All. Dessa egenskaper hjälper Hobbes att identifiera mappen som ett test. Om du vill återanvända det här klientbiblioteket som ett beroende i andra klientbibliotek ger du det namnet granite.testing.calvin.tests.
-
Högerklicka på testnoden (här) afTestRegistration) och sedan klicka Create > Create File. Namnge filen js.txt och klicka på OK.
-
Lägg till följande text i filen js.txt:
code language-none #base=. js.txt
-
Klicka Save All och stäng sedan filen js.txt.
-
Högerklicka på testnoden (här) afTestRegistration) och klicka Create > Create File. Ge filen namnet init.js och klicka på OK.
-
Kopiera följande kod till filen init.js och klicka på 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));
Ovanstående kod skapar en testsvit med namnet Adaptiv form - Demo-test. Om du vill skapa en testsvit med ett annat namn ändrar du namnet.
-
Klicka Create > Skapa nod för att skapa en nod under mappen clientlib för varje formulär som du vill testa. I det här exemplet används en nod med namnet testForm testa ett adaptivt formulär med namnet testForm
.
Ange följande egenskaper och klicka på OK:- Namn: testForm (ditt formulärnamn)
- Typ: cq:ClientLibraryFolder
-
Lägg till följande egenskaper i den nya noden (här testForm) för att testa ett adaptivt formulär:
table 0-row-3 1-row-3 2-row-3 Egenskap Typ Värde kategorier Sträng[] granite.testing.hobbes.tests, granite.testing.hobbes.tests.testForm beroenden Sträng[] granite.testing.calvin.tests note note NOTE I det här exemplet används ett beroende av klientens lib granite.testing.calvin.tests för bättre hantering. I det här exemplet läggs även en klientbibliotekskategori, granite.testing.hobbes.tests.testForm, till för att återanvända det här klientbiblioteket, om det behövs. -
Högerklicka på mappen som du har skapat för testformuläret (här testformulär) och välj Create > Create File. Namnge filen scriptingTest.js och lägg till följande kod i filen och klicka på Save All.
Om du vill använda följande kod för att testa ett annat adaptivt formulär ändrar du sökvägen och namnet på formuläret i navigateTo (raderna 11, 36 och 62) och respektive testfall. Mer information om API:er för att testa olika aspekter av formulär och formulärobjekt finns i Calvin-API:er.
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));
Testfallet skapas. Fortsätt att köra testfallet för att testa adaptiva formulär via Hobbes. Anvisningar om hur du kör testfall finns i Testa användargränssnittet med automatiserade tester.
Du kan också installera paketet i den bifogade filen SampleTestPackage.zip för att få samma resultat som i stegen som förklaras i exemplet: Skapa en testsvit för ett adaptivt formulär med Hobbes som testramverk.
Testa användargränssnittet med automatiserade tester testing-your-ui-using-automated-tests
Köra en testsvit running-a-single-test-suite
Testsviter kan köras individuellt. När du kör en testsvit ändras sidan allt eftersom testärenden och deras åtgärder körs och resultaten visas när testet har slutförts. Ikoner anger resultatet.
En bockmarkeringsikon anger att testet har slutförts:
En X-ikon anger att testet misslyckades:
Så här kör du en testsvit:
-
Klicka på eller tryck på namnet på det testfall som du vill köra för att utöka detaljerna för åtgärderna.
-
Klicka eller tryck på knappen Kör test.
-
Platshållaren ersätts med sidinnehåll när testet utförs.
-
Granska resultatet av testfallet genom att trycka på eller klicka på beskrivningen för att öppna panelen Resultat. Om du trycker eller klickar på namnet på testfallet på resultatpanelen visas all information.
Stegen för testning av AEM adaptiva formulär liknar stegen för testning av AEM användargränssnitt. Mer information om hur du testar adaptiva formulär finns i följande avsnitt i Testa användargränssnittet:
- Visa testsviter
- Köra flera tester